blob: ac424e72bfb02bbf37c6f4d7a8938c5f5e439b4c [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Rajeev Kumar Sirasanagandla4c068d42019-02-22 21:39:36 +05302 * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved.
Kiet Lam1ed83fc2014-02-19 01:15:45 -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
22/*
Kiet Lama7f454d2014-07-24 12:04:06 -070023 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
Kiet Lam1ed83fc2014-02-19 01:15:45 -080026 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028
Kiet Lama7f454d2014-07-24 12:04:06 -070029
30
Jeff Johnson295189b2012-06-20 16:38:30 -070031/*===========================================================================
32
33 W L A N _ Q C T _ W D I. C
34
35 OVERVIEW:
36
Jeff Johnsone7245742012-09-05 17:12:55 -070037 This software unit holds the implementation of the WLAN Device Abstraction
Jeff Johnson295189b2012-06-20 16:38:30 -070038 Layer Interface.
39
Jeff Johnsone7245742012-09-05 17:12:55 -070040 The functions externalized by this module are to be called by any upper
Jeff Johnson295189b2012-06-20 16:38:30 -070041 MAC implementation that wishes to use the WLAN Device.
42
43 DEPENDENCIES:
44
45 Are listed for each API below.
46
47
Jeff Johnson295189b2012-06-20 16:38:30 -070048===========================================================================*/
49
50/*===========================================================================
51
52 EDIT HISTORY FOR FILE
53
54
55 This section contains comments describing changes made to the module.
56 Notice that changes are listed in reverse chronological order.
57
58
59 $Header$$DateTime$$Author$
60
61
62 when who what, where, why
63---------- --- --------------------------------------------------------
6410/05/11 hap Adding support for Keep Alive
652010-08-09 lti Created module
66
67===========================================================================*/
68
69/*----------------------------------------------------------------------------
70 * Include Files
71 * -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070072#include "wlan_qct_wdi.h"
73#include "wlan_qct_wdi_i.h"
74#include "wlan_qct_wdi_sta.h"
75#include "wlan_qct_wdi_dp.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070076
Jeff Johnsone7245742012-09-05 17:12:55 -070077#include "wlan_qct_wdi_cts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070078
79#include "wlan_qct_pal_api.h"
80#include "wlan_qct_pal_type.h"
81#include "wlan_qct_pal_status.h"
82#include "wlan_qct_pal_sync.h"
83#include "wlan_qct_pal_msg.h"
84#include "wlan_qct_pal_trace.h"
85#include "wlan_qct_pal_packet.h"
86
Jeff Johnsone7245742012-09-05 17:12:55 -070087#include "wlan_qct_wdi_dts.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070088
89#include "wlan_hal_msg.h"
90
Jeff Johnson295189b2012-06-20 16:38:30 -070091#include "pttMsgApi.h"
Srikant Kuppa64eae792013-08-29 15:27:56 -070092#include "vos_trace.h"
Kapil Gupta04897452017-03-13 12:50:35 +053093#include "vos_diag_core_event.h"
Jeff Johnson295189b2012-06-20 16:38:30 -070094
Girish Gowli55caa852015-01-19 16:09:49 +053095#include "vos_api.h"
Girish Gowli55caa852015-01-19 16:09:49 +053096
Jeff Johnson295189b2012-06-20 16:38:30 -070097/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070098 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070099 ===========================================================================*/
100#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
101
Jeff Johnsone7245742012-09-05 17:12:55 -0700102#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
103#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
104
Yue Mad8cac142013-03-28 11:33:46 -0700105#define FEATURE_NOT_SUPPORTED 127
Sachin Ahuja69bfa982015-04-24 17:02:57 +0530106#define MAX_FW_HOST_CAP_SIZE 1024
Jeff Johnson295189b2012-06-20 16:38:30 -0700107#ifdef FEATURE_WLAN_SCAN_PNO
108#define WDI_PNO_VERSION_MASK 0x8000
109#endif
110
111/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700112static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700113/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700114static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700115/* array of features supported. Need to add a new feature
116 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
117 */
118static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800119 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800120#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700121 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800122#else
123 ,FEATURE_NOT_SUPPORTED
124#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800125#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700126 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800127#else
128 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800129#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700130 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800131#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700132 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800133#else
134 ,FEATURE_NOT_SUPPORTED
135#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700136 ,FEATURE_NOT_SUPPORTED //9
137 ,FEATURE_NOT_SUPPORTED //10
138 ,FEATURE_NOT_SUPPORTED //11
139 ,FEATURE_NOT_SUPPORTED //12
140 ,FEATURE_NOT_SUPPORTED //13
141 ,FEATURE_NOT_SUPPORTED //14
142 ,FEATURE_NOT_SUPPORTED //15
143 ,FEATURE_NOT_SUPPORTED //16
144 ,FEATURE_NOT_SUPPORTED //17
145 ,FEATURE_NOT_SUPPORTED //18
146 ,FEATURE_NOT_SUPPORTED //19
147 ,FEATURE_NOT_SUPPORTED //20
148 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700149 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700150#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700151 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700152#else
153 ,FEATURE_NOT_SUPPORTED
154#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700155 ,FEATURE_NOT_SUPPORTED //24
156 ,FEATURE_NOT_SUPPORTED //25
157 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700158 ,FEATURE_NOT_SUPPORTED //27
159 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530160#ifdef FEATURE_WLAN_TDLS
161 ,ADVANCE_TDLS //29
162#else
163 ,FEATURE_NOT_SUPPORTED //29
164#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530165 ,FEATURE_NOT_SUPPORTED //30
166 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530167 ,EXTENDED_NSOFFLOAD_SLOT //32
168 ,CH_SWITCH_V1 //33
169 ,HT40_OBSS_SCAN //34
170 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530171 ,FEATURE_NOT_SUPPORTED //36
172 ,FEATURE_NOT_SUPPORTED //37
173 ,FEATURE_NOT_SUPPORTED //38
174#ifdef FEATURE_WLAN_TDLS
175 ,TDLS_SCAN_COEXISTENCE //39
176#else
177 ,FEATURE_NOT_SUPPORTED //39
178#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530179#ifdef WLAN_FEATURE_LINK_LAYER_STATS
180 ,LINK_LAYER_STATS_MEAS //40
181#else
182 ,FEATURE_NOT_SUPPORTED //40
183#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530184 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530185#ifdef WLAN_FEATURE_EXTSCAN
186 ,EXTENDED_SCAN //42
187#else
188 ,FEATURE_NOT_SUPPORTED //42
189#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530190 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800191
Siddharth Bhal171788a2014-09-29 21:02:40 +0530192 ,MAC_SPOOFED_SCAN //44
Sravan Kumar Kairam50b3d752016-02-03 16:01:03 +0530193 ,BMU_ERROR_GENERIC_RECOVERY //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530194 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530195 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530196 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530197 ,BCN_IE_FLT_DELTA //49
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +0530198 ,FEATURE_NOT_SUPPORTED //50
199#ifdef FEATURE_WLAN_TDLS
200 ,TDLS_OFF_CHANNEL //51
201#else
202 ,FEATURE_NOT_SUPPORTED //51
203#endif
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +0530204 ,RTT3 //52
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530205 ,MGMT_FRAME_LOGGING //53
Ganesh Kondabattinib18b3292015-03-16 16:59:26 +0530206 ,ENHANCED_TXBD_COMPLETION //54
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530207 ,LOGGING_ENHANCEMENT //55
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +0530208#ifdef WLAN_FEATURE_EXTSCAN
209 ,EXT_SCAN_ENHANCED //56
210#else
211 ,FEATURE_NOT_SUPPORTED //56
212#endif
c_manjeecfd1efb2015-09-25 19:32:34 +0530213 ,MEMORY_DUMP_SUPPORTED //57
Sushant Kaushik33200572015-08-05 16:46:20 +0530214 ,PER_PKT_STATS_SUPPORTED //58
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530215 ,FEATURE_NOT_SUPPORTED //59
Mukul Sharmaf1bd9322015-10-20 16:03:42 +0530216#ifdef FEATURE_EXT_LL_STAT
217 ,EXT_LL_STAT //60
218#else
219 ,FEATURE_NOT_SUPPORTED
220#endif
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530221 ,WIFI_CONFIG //61
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530222 ,ANTENNA_DIVERSITY_SELECTION //62
Kapil Guptab3a981b2016-06-26 13:36:51 +0530223 ,PER_BASED_ROAMING //63
Anurag Chouhan1deaa252016-12-05 15:48:47 +0530224 ,SAP_MODE_WOW //64
225 ,SAP_OFFLOADS //65
Sravan Kumar Kairam9ba5f5b2016-12-13 13:50:46 +0530226 ,SAP_BUFF_ALLOC //66
Padma, Santhosh Kumar5c317832017-01-20 15:53:00 +0530227 ,MAKE_BEFORE_BREAK //67
Anurag Chouhan6ee81542017-02-09 18:09:27 +0530228 ,NUD_DEBUG //68
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +0530229 ,FEATURE_NOT_SUPPORTED //69 reserved for FATAL_EVENT_LOGGING
230 ,FEATURE_NOT_SUPPORTED //70 reserved for WIFI_DUAL_BAND_ENABLE
231 ,PROBE_RSP_TEMPLATE_VER1 //71
Rajeev Kumar Sirasanagandla8f11d542017-11-14 17:56:55 +0530232 ,STA_MONITOR_SCC //72
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530233};
Jeff Johnson295189b2012-06-20 16:38:30 -0700234
235/*--------------------------------------------------------------------------
236 WLAN DAL State Machine
237 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700238WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700239{
240 /*WDI_INIT_ST*/
241 {{
242 WDI_MainStart, /*WDI_START_EVENT*/
243 NULL, /*WDI_STOP_EVENT*/
244 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
245 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
246 WDI_MainClose, /*WDI_CLOSE_EVENT*/
247 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
248 }},
249
250 /*WDI_STARTED_ST*/
251 {{
252 WDI_MainStartStarted, /*WDI_START_EVENT*/
253 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
254 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
255 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
256 NULL, /*WDI_CLOSE_EVENT*/
257 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
258 }},
259
260 /*WDI_STOPPED_ST*/
261 {{
262 WDI_MainStart, /*WDI_START_EVENT*/
263 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
264 NULL, /*WDI_REQUEST_EVENT*/
265 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
266 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700267 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700268 }},
269
270 /*WDI_BUSY_ST*/
271 {{
272 WDI_MainStartBusy, /*WDI_START_EVENT*/
273 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
274 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
275 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
276 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
277 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
278 }}
279};
280
Jeff Johnsone7245742012-09-05 17:12:55 -0700281/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 DAL Request Processing Array - the functions in this table will only be
283 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700284 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700285 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700286WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700287{
288 /*INIT*/
289 WDI_ProcessStartReq, /* WDI_START_REQ */
290 WDI_ProcessStopReq, /* WDI_STOP_REQ */
291 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
292
293 /*SCAN*/
294 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
295 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
296 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
297 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
298
299 /*ASSOCIATION*/
300 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
301 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
302 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
303 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
304 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
305
306 /* Security */
307 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
308 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
309 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
310 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
311
312 /* QoS and BA APIs */
313 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
314 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
315 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
316 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
317 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
318
319 /* Miscellaneous Control APIs */
320 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
321 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
322 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
323 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
324 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
325
326 /*BA APIs*/
327 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
328 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
329
330 /*Beacon processing APIs*/
331 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
332 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
333
334 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
335 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
336 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
337 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700338 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700339 /* PowerSave APIs */
340 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
341 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
342 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
343 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
344 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
345 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
346 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
347 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
348 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
349 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
350 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
351 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
352 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
353 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
354 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
355 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
356 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
357 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
358 /*NV Download APIs*/
359 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
360 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
361 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
362#ifdef WLAN_FEATURE_VOWIFI_11R
363 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
364#else
365 NULL,
366#endif /* WLAN_FEATURE_VOWIFI_11R */
367 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
368 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700369 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700370
371#ifdef FEATURE_OEM_DATA_SUPPORT
372 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
373#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700374 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700375#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700376 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700377
378 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700379
380#ifdef FEATURE_WLAN_SCAN_PNO
381 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
382 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
383 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
384#else
385 NULL,
386 NULL,
387 NULL,
388#endif /* FEATURE_WLAN_SCAN_PNO */
389
390 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700391
Jeff Johnson295189b2012-06-20 16:38:30 -0700392#ifdef WLAN_FEATURE_PACKET_FILTERING
393 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700394 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700395 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700396 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700397 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700398 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700399 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700400 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700401#else
402 NULL,
403 NULL,
404 NULL,
405 NULL,
406#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700407 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700408 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
409 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
410
411 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800412#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700413 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
414#else
415 NULL,
416#endif
417
418#ifdef WLAN_FEATURE_GTK_OFFLOAD
419 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
420 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
421#else
422 NULL,
423 NULL,
424#endif // WLAN_FEATURE_GTK_OFFLOAD
425
426 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
427 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700428#ifdef WLAN_FEATURE_11AC
429 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800430#else
431 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700432#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800433#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800434 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
435#else
schang86c22c42013-03-13 18:41:24 -0700436 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800437#endif
schang86c22c42013-03-13 18:41:24 -0700438 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700439#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700440 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700441#else
442 NULL,
443#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530444#ifdef FEATURE_WLAN_TDLS
445 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
446#else
447 NULL,
448#endif
Leo Chang9056f462013-08-01 19:21:11 -0700449#ifdef FEATURE_WLAN_LPHB
450 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
451#else
452 NULL,
453#endif /* FEATURE_WLAN_LPHB */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530454#ifdef WLAN_FEATURE_RMC
455 WDI_ProcessRMCRulerReq, /* WDI_LBP_RULER_REQ */
456 WDI_ProcessIbssPeerInfoReq, /* WDI_HAL_IBSS_PEER_INFO_REQ */
457#else
458 NULL,
459 NULL,
460#endif /* WLAN_FEATURE_RMC */
Rajeev79dbe4c2013-10-05 11:03:42 +0530461
462#ifdef FEATURE_WLAN_BATCH_SCAN
463 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
464#else
465 NULL,
466#endif /* FEATURE_WLAN_BATCH_SCAN */
467
Arif Hussaina5ebce02013-08-09 15:09:58 -0700468 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800469
470 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530471
472 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530473
474#ifdef WLAN_FEATURE_LINK_LAYER_STATS
475 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
476 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
477 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
478#else
479 NULL,
480 NULL,
481 NULL,
482#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530483#ifdef WLAN_FEATURE_EXTSCAN
484 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
485 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
486 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
487 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
488 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
489 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
Hanumanth Reddy Pothula9b4aa682015-08-21 19:58:01 +0530490 NULL, /* maintain synchronization though SSID_HOTLIST is deprecated */
491 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530492#else
493 NULL,
494 NULL,
495 NULL,
496 NULL,
497 NULL,
498 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530499 NULL,
500 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530501#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530502 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530503
504 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530505
506 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530507
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530508 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530509 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530510
511 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
512
Katya Nigamf0511f62015-05-05 16:40:57 +0530513 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
514 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530515 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530516 WDI_ProcessFwrMemDumpReq, /* WDI_FWR_MEM_DUMP_REQ*/
517
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530518 WDI_ProcessRssiMonitorStartReq, /* WDI_START_RSSI_MONITOR_REQ */
519 WDI_ProcessRssiMonitorStopReq, /* WDI_STOP_RSSI_MONITOR_REQ */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530520
521 WDI_ProcessWifiConfigReq, /*WDI_WIFI_CONFIG_SET_REQ*/
Kapil Guptab3a981b2016-06-26 13:36:51 +0530522#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
523 WDI_ProcessPERRoamScanOffloadReq, /* WDI_PER_ROAM_SCAN_OFFLOAD_REQ */
524 WDI_ProcessPERRoamScanTriggerReq, /* WDI_PER_ROAM_SCAN_TRIGGER_REQ */
525#else
526 NULL,
527 NULL,
528#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Anurag Chouhan83026002016-12-13 22:46:21 +0530529#ifdef DHCP_SERVER_OFFLOAD
530 wdi_dhcp_server_offload_req, /* WDI_DHCP_SERVER_OFFLOAD_REQ */
531#else
532 NULL,
533#endif /* DHCP_SERVER_OFFLOAD */
Anurag Chouhan0b29de02016-12-16 13:18:40 +0530534#ifdef MDNS_OFFLOAD
535 wdi_mdns_enable_offload_req, /* WDI_MDNS_ENABLE_OFFLOAD_REQ */
536 wdi_mdns_fqdn_offload_req, /* WDI_MDNS_FQDN_OFFLOAD_REQ */
537 wdi_mdns_resp_offload_req, /* WDI_MDNS_RESP_OFFLOAD_REQ */
538 wdi_get_mdns_stats_offload_req, /* WDI_GET_MDNS_STATS_OFFLOAD_REQ */
539#else
540 NULL,
541 NULL,
542 NULL,
543 NULL,
544#endif /* MDNS_OFFLOAD */
Manjeet Singh3ed79242017-01-11 19:04:32 +0530545 wdi_cap_tsf_req, /* WDI_CAP_TSF_REQ */
546 wdi_get_tsf_req, /* WDI_GET_TSF_REQ */
Anurag Chouhan83026002016-12-13 22:46:21 +0530547
Anurag Chouhan6ee81542017-02-09 18:09:27 +0530548 WDI_ProcessSetArpStatsReq, /* WDI_FW_ARP_STATS_REQ */
549 WDI_ProcessGetArpStatsReq, /* WDI_FW_GET_ARP_STATS_REQ */
550
schang86c22c42013-03-13 18:41:24 -0700551 /*-------------------------------------------------------------------------
552 Indications
553 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700554 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800555 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530556 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
557 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700558#ifdef WLAN_FEATURE_11W
559 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
560#else
561 NULL,
562#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700563 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
564 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530565#ifdef WLAN_FEATURE_RMC
566 WDI_ProcessRMCUpdateInd, /* WDI_RMC_UPDATE_IND */
567#else
568 NULL,
569#endif /* WLAN_FEATURE_RMC */
570 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530571#ifdef FEATURE_WLAN_BATCH_SCAN
572 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
573 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
574#else
575 NULL,
576 NULL,
577#endif /* FEATURE_WLAN_BATCH_SCAN */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530578#ifdef WLAN_FEATURE_RMC
579 WDI_ProcessTXFailMonitor,
580#else
581 NULL,
582#endif
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800583
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530584 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800585 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
586
587 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530588#ifdef FEATURE_WLAN_TDLS
589 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
590#else
591 NULL,
592#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530593 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530594 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +0530595 WDI_ProcessEnableDisableCAEventInd, /* WDI_SEND_FREQ_RANGE_CONTROL_IND */
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +0530596
597#ifdef WLAN_FEATURE_EXTSCAN
598 WDI_ProcessHighPriorityDataInfoInd, /* WDI_HIGH_PRIORITY_DATA_INFO_IND */
599#else
600 NULL,
601#endif /* WLAN_FEATURE_EXTSCAN */
602
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530603#ifdef FEATURE_OEM_DATA_SUPPORT
604 WDI_ProcessStartOemDataReqIndNew, /* WDI_START_OEM_DATA_REQ_IND_NEW */
605#else
606 NULL,
607#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530608 WDI_ProcessGetCurrentAntennaIndex, /* WDI_ANTENNA_DIVERSITY_SELECTION_REQ */
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +0530609 WDI_ProcessBcnMissPenaltyCount, /* WDI_MODIFY_ROAM_PARAMS_IND */
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +0530610 WDI_ProcessSetAllowedActionFramesInd, /* WDI_SET_ALLOWED_ACTION_FRAMES_IND */
Agrawal Ashish17ef5082016-10-17 18:33:21 +0530611#ifdef SAP_AUTH_OFFLOAD
612 WDI_ProcessSapAuthOffloadInd, /* WDI_PROCESS_SAP_AUTH_OFFLOAD_IND */
613#endif
Kapil Gupta3d923fb2016-12-20 18:59:27 +0530614#ifdef WLAN_FEATURE_APFIND
615 WDI_ProcessApFindInd, /* WDI_SET_AP_FIND_IND */
Sourav Mohapatra2416e0e2018-03-05 18:44:21 +0530616#else
617 NULL,
Kapil Gupta3d923fb2016-12-20 18:59:27 +0530618#endif
Sourav Mohapatra2416e0e2018-03-05 18:44:21 +0530619 WDI_process_vowifi_request, /* WDI_SET_VOWIFI_IND */
Ashish Kumar Dhanotiyaf59c7762018-04-10 17:54:25 +0530620 WDI_process_qpower_request, /* WDI_SET_QPOWER */
Sourav Mohapatra2416e0e2018-03-05 18:44:21 +0530621
Jeff Johnson295189b2012-06-20 16:38:30 -0700622};
623
624
Jeff Johnsone7245742012-09-05 17:12:55 -0700625/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700626 DAL Request Processing Array - the functions in this table will only be
627 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700628 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700629 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700630WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700631{
632 /*INIT*/
633 WDI_ProcessStartRsp, /* WDI_START_RESP */
634 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
635 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
636
637 /*SCAN*/
638 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
639 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
640 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
641 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
642
643 /* ASSOCIATION*/
644 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
645 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
646 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
647 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
648 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
649
650 /* Security */
651 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
652 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
653 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
654 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
655
656 /* QoS and BA APIs */
657 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
658 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
659 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
660 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
661 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
662
663 /* Miscellaneous Control APIs */
664 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
665 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
666 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
667 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
668 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
669
670 /* BA APIs*/
671 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
672 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700673
Jeff Johnson295189b2012-06-20 16:38:30 -0700674 /* IBSS APIs*/
675 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
676 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
677
678 /*Soft AP APIs*/
679 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
680 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
681 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
682 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
683
684 /* PowerSave APIs */
685 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
686 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
687 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
688 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
689 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
690 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
691 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
692 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
693 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
694 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
695 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
696 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
697 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
698 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
699 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
700 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
701 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
702 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700703
Jeff Johnson295189b2012-06-20 16:38:30 -0700704
705 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
706
707 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
708 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
709#ifdef WLAN_FEATURE_VOWIFI_11R
710 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
711#else
712 NULL,
713#endif /* WLAN_FEATURE_VOWIFI_11R */
714 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
715 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700716#ifdef FEATURE_OEM_DATA_SUPPORT
717 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
718#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700719 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700720#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700721 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
722
Jeff Johnson295189b2012-06-20 16:38:30 -0700723 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700724
Jeff Johnson295189b2012-06-20 16:38:30 -0700725 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700726
Jeff Johnsone7245742012-09-05 17:12:55 -0700727 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
728
Jeff Johnson295189b2012-06-20 16:38:30 -0700729#ifdef FEATURE_WLAN_SCAN_PNO
730 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
731 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
732 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
733#else
734 NULL,
735 NULL,
736 NULL,
737#endif // FEATURE_WLAN_SCAN_PNO
738
739 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700740 /*---------------------------------------------------------------------
741 Indications
742 ---------------------------------------------------------------------*/
743#ifdef WLAN_FEATURE_PACKET_FILTERING
744 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700745 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700746 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700747 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700748 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700749 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700750 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700751 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700752#else
753 NULL,
754 NULL,
755 NULL,
756 NULL,
757#endif // WLAN_FEATURE_PACKET_FILTERING
758
759 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
760 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
761
762 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800763#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700764 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
765#else
766 NULL,
767#endif
768
769#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700770 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
771 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700772#else
773 NULL,
774 NULL,
775#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700776 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
777 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700778#ifdef WLAN_FEATURE_11AC
779 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700780#else
781 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700782#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800783#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800784 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
785#else
786 NULL,
787#endif
schang86c22c42013-03-13 18:41:24 -0700788 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700789#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700790 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700791#else
792 NULL,
793#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530794#ifdef FEATURE_WLAN_TDLS
795 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
796#else
797 NULL,
798#endif
Leo Chang9056f462013-08-01 19:21:11 -0700799#ifdef FEATURE_WLAN_LPHB
800 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
801#else
802 NULL,
803#endif /* FEATURE_WLAN_LPHB */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530804#ifdef WLAN_FEATURE_RMC
805 WDI_ProcessRMCRulerResp, /* WDI_RMC_RULER_RESP */
806#else
807 NULL,
808#endif /* WLAN_FEATURE_RMC */
809
810#ifdef WLAN_FEATURE_RMC
811 WDI_ProcessIbssPeerInfoRsp, /* WDI_HAL_GET_IBSS_PEER_INFO_RSP */
812#else
813 NULL,
814#endif /* WLAN_FEATURE_RMC */
Rajeev79dbe4c2013-10-05 11:03:42 +0530815
816#ifdef FEATURE_WLAN_BATCH_SCAN
817 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
818#else
819 NULL,
820#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800821 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530822
c_hpothu92367912014-05-01 15:18:17 +0530823 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800824
c_hpothu92367912014-05-01 15:18:17 +0530825 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
826
827 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800828
Sunil Duttbd736ed2014-05-26 21:19:41 +0530829
830#ifdef WLAN_FEATURE_LINK_LAYER_STATS
831 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
832 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
833 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
834#else
835 NULL,
836 NULL,
837 NULL,
838#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530839#ifdef WLAN_FEATURE_EXTSCAN
840 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
841 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
842 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
843 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
844 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
845 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Hanumanth Reddy Pothula9b4aa682015-08-21 19:58:01 +0530846 NULL, /* maintain synchronization though SSID_HOTLIST is deprecated */
847 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530848#else
849 NULL,
850 NULL,
851 NULL,
852 NULL,
853 NULL,
854 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530855 NULL,
856 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530857#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530858 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530859
860 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530861
862 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530863 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530864 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530865
Srinivas Dasari32a79262015-02-19 13:04:49 +0530866 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
867
Katya Nigamf0511f62015-05-05 16:40:57 +0530868 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
869 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530870 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530871 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530872 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
873 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530874
875 WDI_ProcessWificonfigSetRsp, /* /WDI_WIFI_CONFIG_SET_RSP*/
Kapil Guptab3a981b2016-06-26 13:36:51 +0530876#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
877 WDI_ProcessPERRoamScanOffloadRsp, /* WDI_PER_ROAM_SCAN_OFFLOAD_RSP */
878 WDI_ProcessPERRoamScanTriggerRsp, /* WDI_PER_ROAM_SCAN_TRIGGER_RSP */
879#else
880 NULL,
881 NULL,
882#endif
Anurag Chouhan83026002016-12-13 22:46:21 +0530883#ifdef DHCP_SERVER_OFFLOAD
884 wdi_dhcp_server_offload_rsp, /* WDI_DHCP_SERVER_OFFLOAD_RSP */
885#else
886 NULL,
887#endif /* DHCP_SERVER_OFFLOAD */
Anurag Chouhan0b29de02016-12-16 13:18:40 +0530888#ifdef MDNS_OFFLOAD
889 wdi_mdns_enable_offload_rsp, /* WDI_MDNS_ENABLE_OFFLOAD_RSP */
890 wdi_mdns_fqdn_offload_rsp, /* WDI_MDNS_FQDN_OFFLOAD_RSP */
891 wdi_mdns_resp_offload_rsp, /* WDI_MDNS_RESP_OFFLOAD_RSP */
892 wdi_get_mdns_stats_offload_rsp, /* WDI_MDNS_STATS_OFFLOAD_RSP */
893#else
894 NULL,
895 NULL,
896 NULL,
897 NULL,
Manjeet Singh3ed79242017-01-11 19:04:32 +0530898#endif /* MDNS_OFFLOAD */
899 wdi_get_tsf_rsp, /* WDI_CAPTURE_GET_TSF_TSTAMP_RSP */
900
Anurag Chouhan6ee81542017-02-09 18:09:27 +0530901 /* ARP Debug Stats*/
902 WDI_ProcessSetArpStatsResp, /* WDI_FW_ARP_STATS_RSP */
903 WDI_ProcessGetArpStatsResp, /* WDI_FW_GET_ARP_STATS_RSP */
904
Jeff Johnson295189b2012-06-20 16:38:30 -0700905 /*---------------------------------------------------------------------
906 Indications
907 ---------------------------------------------------------------------*/
908 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
909 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
910 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
911 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
912 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
913 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
914
915 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
916
917 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
918
Jeff Johnson295189b2012-06-20 16:38:30 -0700919 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700920
921#ifdef FEATURE_WLAN_SCAN_PNO
922 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
923#else
924 NULL,
925#endif // FEATURE_WLAN_SCAN_PNO
926
927#ifdef WLAN_WAKEUP_EVENTS
928 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
929#else // WLAN_WAKEUP_EVENTS
930 NULL,
931#endif // WLAN_WAKEUP_EVENTS
932
933 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800934
Viral Modid86bde22012-12-10 13:09:21 -0800935 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530936#ifdef FEATURE_WLAN_TDLS
937 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
938#else
939 NULL,
940#endif
Leo Chang9056f462013-08-01 19:21:11 -0700941
942#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700943 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700944#else
945 NULL,
946#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700947
948 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700949
950 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530951
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530952#ifdef WLAN_FEATURE_RMC
953 WDI_ProcessRMCUpdateIndToHost, /* WDI_RMC_UPDATE_IND_TO_HOST */
954#else
955 NULL,
956#endif /* WLAN_FEATURE_RMC */
957
Rajeev79dbe4c2013-10-05 11:03:42 +0530958#ifdef FEATURE_WLAN_BATCH_SCAN
959 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
960#else
961 NULL,
962#endif
963
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530964#ifdef WLAN_FEATURE_RMC
965 WDI_ProcessTXFailInd, /*WDI_HAL_TX_FAIL_IND*/
966#else
967 NULL,
968#endif /* WLAN_FEATURE_RMC */
969
Leo Chang0b0e45a2013-12-15 15:18:55 -0800970#ifdef FEATURE_WLAN_CH_AVOID
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530971 WDI_ProcessChAvoidInd, /* WDI_HAL_CH_AVOID_IND */
Leo Chang0b0e45a2013-12-15 15:18:55 -0800972#else
973 NULL,
974#endif /* FEATURE_WLAN_CH_AVOID */
975
Sunil Duttbd736ed2014-05-26 21:19:41 +0530976 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
977#ifdef WLAN_FEATURE_LINK_LAYER_STATS
978 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
979#else
980 NULL,
981#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530982#ifdef WLAN_FEATURE_EXTSCAN
983 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
984 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
985 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
986 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Hanumanth Reddy Pothula9b4aa682015-08-21 19:58:01 +0530987 NULL, /* maintain synchronization though SSID_HOTLIST is deprecated */
Dino Mycle41bdc942014-06-10 11:30:24 +0530988#else
989 NULL,
990 NULL,
991 NULL,
992 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530993 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530994#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530995#ifdef FEATURE_WLAN_TDLS
996 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
997#else
998 NULL,
999#endif
Abhishek Singh66c16762014-08-14 19:13:19 +05301000 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +05301001 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +05301002 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301003 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301004#ifdef FEATURE_OEM_DATA_SUPPORT
1005 WDI_ProcessStartOemDataRspIndNew, /* WDI_HAL_START_OEM_DATA_RSP_IND_NEW */
1006#else
1007 NULL,
1008#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301009 WDI_ProcessGetCurrentAntennaIndexRsp, /* WDI_ANTENNA_DIVERSITY_SELECTION_RSP */
Kapil Gupta7a3d9b12016-12-20 20:36:38 +05301010#ifdef WLAN_FEATURE_APFIND
1011 WDI_ProcessQRFPrefNetworkFoundInd, /* WDI_HAL_QRF_PREF_NETWORK_FOUND_IND */
1012#else
1013 NULL,
1014#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001015};
1016
1017
Jeff Johnsone7245742012-09-05 17:12:55 -07001018/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -07001019 WLAN DAL Global Control Block
1020 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001021WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07001022static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
1023
Jeff Johnsone7245742012-09-05 17:12:55 -07001024const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -07001025
1026/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001027WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -07001028void* WDI_GET_PAL_CTX( void )
1029{
Jeff Johnsone7245742012-09-05 17:12:55 -07001030 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -07001031}/*WDI_GET_PAL_CTX*/
1032
Jeff Johnsone7245742012-09-05 17:12:55 -07001033/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -07001034 Helper inline converters
1035 ============================================================================*/
1036/*Convert WDI driver type into HAL driver type*/
1037WPT_STATIC WPT_INLINE WDI_Status
1038WDI_HAL_2_WDI_STATUS
1039(
1040 eHalStatus halStatus
1041);
1042
1043/*Convert WDI request type into HAL request type*/
1044WPT_STATIC WPT_INLINE tHalHostMsgType
1045WDI_2_HAL_REQ_TYPE
1046(
1047 WDI_RequestEnumType wdiReqType
1048);
1049
1050/*Convert WDI response type into HAL response type*/
1051WPT_STATIC WPT_INLINE WDI_ResponseEnumType
1052HAL_2_WDI_RSP_TYPE
1053(
1054 tHalHostMsgType halMsg
1055);
1056
1057/*Convert WDI driver type into HAL driver type*/
1058WPT_STATIC WPT_INLINE tDriverType
1059WDI_2_HAL_DRV_TYPE
1060(
1061 WDI_DriverType wdiDriverType
1062);
1063
1064/*Convert WDI stop reason into HAL stop reason*/
1065WPT_STATIC WPT_INLINE tHalStopType
1066WDI_2_HAL_STOP_REASON
1067(
1068 WDI_StopType wdiStopType
1069);
1070
1071/*Convert WDI scan mode type into HAL scan mode type*/
1072WPT_STATIC WPT_INLINE eHalSysMode
1073WDI_2_HAL_SCAN_MODE
1074(
1075 WDI_ScanMode wdiScanMode
1076);
1077
1078/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001079WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -07001080WDI_2_HAL_SEC_CH_OFFSET
1081(
1082 WDI_HTSecondaryChannelOffset wdiSecChOffset
1083);
1084
1085/*Convert WDI BSS type into HAL BSS type*/
1086WPT_STATIC WPT_INLINE tSirBssType
1087WDI_2_HAL_BSS_TYPE
1088(
1089 WDI_BssType wdiBSSType
1090);
1091
1092/*Convert WDI NW type into HAL NW type*/
1093WPT_STATIC WPT_INLINE tSirNwType
1094WDI_2_HAL_NW_TYPE
1095(
1096 WDI_NwType wdiNWType
1097);
1098
1099/*Convert WDI chanel bonding type into HAL cb type*/
1100WPT_STATIC WPT_INLINE ePhyChanBondState
1101WDI_2_HAL_CB_STATE
1102(
1103 WDI_PhyChanBondState wdiCbState
1104);
1105
1106/*Convert WDI chanel bonding type into HAL cb type*/
1107WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
1108WDI_2_HAL_HT_OPER_MODE
1109(
1110 WDI_HTOperatingMode wdiHTOperMode
1111);
1112
1113/*Convert WDI mimo PS type into HAL mimo PS type*/
1114WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
1115WDI_2_HAL_MIMO_PS
1116(
1117 WDI_HTMIMOPowerSaveState wdiHTOperMode
1118);
1119
1120/*Convert WDI ENC type into HAL ENC type*/
1121WPT_STATIC WPT_INLINE tAniEdType
1122WDI_2_HAL_ENC_TYPE
1123(
1124 WDI_EncryptType wdiEncType
1125);
1126
1127/*Convert WDI WEP type into HAL WEP type*/
1128WPT_STATIC WPT_INLINE tAniWepType
1129WDI_2_HAL_WEP_TYPE
1130(
1131 WDI_WepType wdiWEPType
1132);
1133
1134/*Convert WDI Link State into HAL Link State*/
1135WPT_STATIC WPT_INLINE tSirLinkState
1136WDI_2_HAL_LINK_STATE
1137(
1138 WDI_LinkStateType wdiLinkState
1139);
1140
Jeff Johnsone7245742012-09-05 17:12:55 -07001141/*Translate a STA Context from WDI into HAL*/
1142WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -07001143void
1144WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -07001145(
Jeff Johnson295189b2012-06-20 16:38:30 -07001146 tConfigStaParams* phalConfigSta,
1147 WDI_ConfigStaReqInfoType* pwdiConfigSta
1148);
Jeff Johnsone7245742012-09-05 17:12:55 -07001149
1150/*Translate a Rate set info from WDI into HAL*/
1151WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -07001152WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -07001153(
Jeff Johnson295189b2012-06-20 16:38:30 -07001154 tSirMacRateSet* pHalRateSet,
1155 WDI_RateSet* pwdiRateSet
1156);
1157
1158/*Translate an EDCA Parameter Record from WDI into HAL*/
1159WPT_STATIC WPT_INLINE void
1160WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -07001161(
Jeff Johnson295189b2012-06-20 16:38:30 -07001162 tSirMacEdcaParamRecord* phalEdcaParam,
1163 WDI_EdcaParamRecord* pWDIEdcaParam
1164);
1165
1166/*Copy a management frame header from WDI fmt into HAL fmt*/
1167WPT_STATIC WPT_INLINE void
1168WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1169(
1170 tSirMacMgmtHdr* pmacMgmtHdr,
1171 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1172);
1173
1174/*Copy config bss parameters from WDI fmt into HAL fmt*/
1175WPT_STATIC WPT_INLINE void
1176WDI_CopyWDIConfigBSSToHALConfigBSS
1177(
1178 tConfigBssParams* phalConfigBSS,
1179 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1180);
1181
Jeff Johnsone7245742012-09-05 17:12:55 -07001182/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001183 pointed to by user data */
1184WPT_STATIC WPT_INLINE void
1185WDI_ExtractRequestCBFromEvent
1186(
1187 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001188 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001189 void** ppUserData
1190);
1191
1192wpt_uint8
1193WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001194(
Jeff Johnson295189b2012-06-20 16:38:30 -07001195 WDI_ControlBlockType* pWDICtx,
1196 WDI_BSSSessionType** ppSession
1197);
1198
1199void
1200WDI_AddBcastSTAtoSTATable
1201(
1202 WDI_ControlBlockType* pWDICtx,
1203 WDI_AddStaParams * staParams,
1204 wpt_uint16 usBcastStaIdx
1205);
1206
1207WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001208(
Jeff Johnson295189b2012-06-20 16:38:30 -07001209 WDI_ControlBlockType* pWDICtx,
1210 WDI_EventInfoType* pEventData
1211);
1212
1213void
1214WDI_SetPowerStateCb
1215(
1216 wpt_status status,
1217 unsigned int dxePhyAddr,
1218 void *pContext
1219);
1220
Jeff Johnson295189b2012-06-20 16:38:30 -07001221/**
1222 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001223
1224 @param wdiReqMsgId: WDI Message request Id
1225
1226 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001227 @return Result of the function call
1228*/
1229static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1230{
1231 switch (wdiReqMsgId)
1232 {
1233 CASE_RETURN_STRING( WDI_START_REQ );
1234 CASE_RETURN_STRING( WDI_STOP_REQ );
1235 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1236 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1237 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1238 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1239 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1240 CASE_RETURN_STRING( WDI_JOIN_REQ );
1241 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1242 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1243 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1244 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1245 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1246 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1247 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1248 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1249 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1250 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1251 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1252 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1253 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1254 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001255 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001256 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1257 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1258 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1259 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1260 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1261 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1262 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1263 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1264 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1265 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1266 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1267 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001268 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001269 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301270#ifdef FEATURE_WLAN_TDLS
1271 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301272 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301273#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001274 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1275 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1276 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1277 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1278 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1279 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1280 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1281 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1282 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1283 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1284 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1285 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1286 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1287 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1288 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1289 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1290 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1291 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1292 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1293 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1294 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1295 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1296 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1297 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1298 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001299 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001300 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1301 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1302 #ifdef FEATURE_WLAN_SCAN_PNO
1303 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1304 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1305 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1306 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001307#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001308 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001309#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001310 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1311 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1312 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1313 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1314 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1315 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1316 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1317 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1318 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301319 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001320 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001321 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001322#ifdef WLAN_FEATURE_11W
1323 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1324#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301325#ifdef FEATURE_WLAN_BATCH_SCAN
1326 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1327 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1328 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1329#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +05301330#ifdef WLAN_FEATURE_RMC
1331 CASE_RETURN_STRING( WDI_TX_FAIL_MONITOR_IND );
1332#endif /* WLAN_FEATURE_RMC */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301333 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1334 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001335 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301336#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1337 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1338 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1339 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1340#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301341#ifdef WLAN_FEATURE_EXTSCAN
1342 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1343 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1344 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1345 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1346 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1347 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +05301348 CASE_RETURN_STRING( WDI_HIGH_PRIORITY_DATA_INFO_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301349#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301350 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301351 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301352 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301353 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301354 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301355 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301356 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301357 CASE_RETURN_STRING( WDI_MON_START_REQ );
1358 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301359 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301360 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301361 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301362 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1363 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301364 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ_IND_NEW );
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301365 CASE_RETURN_STRING( WDI_ANTENNA_DIVERSITY_SELECTION_REQ );
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +05301366 CASE_RETURN_STRING( WDI_MODIFY_ROAM_PARAMS_IND );
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +05301367 CASE_RETURN_STRING( WDI_SET_ALLOWED_ACTION_FRAMES_IND );
Agrawal Ashish17ef5082016-10-17 18:33:21 +05301368#ifdef SAP_AUTH_OFFLOAD
1369 CASE_RETURN_STRING( WDI_PROCESS_SAP_AUTH_OFFLOAD_IND);
1370#endif
Anurag Chouhan83026002016-12-13 22:46:21 +05301371#ifdef DHCP_SERVER_OFFLOAD
1372 CASE_RETURN_STRING( WDI_DHCP_SERVER_OFFLOAD_REQ );
1373#endif /* DHCP_SERVER_OFFLOAD */
Anurag Chouhan0b29de02016-12-16 13:18:40 +05301374#ifdef MDNS_OFFLOAD
1375 CASE_RETURN_STRING( WDI_MDNS_ENABLE_OFFLOAD_REQ );
1376 CASE_RETURN_STRING( WDI_MDNS_FQDN_OFFLOAD_REQ );
1377 CASE_RETURN_STRING( WDI_MDNS_RESP_OFFLOAD_REQ );
1378 CASE_RETURN_STRING( WDI_MDNS_STATS_OFFLOAD_REQ );
1379#endif /* MDNS_OFFLOAD */
Kapil Gupta3d923fb2016-12-20 18:59:27 +05301380#ifdef WLAN_FEATURE_APFIND
1381 CASE_RETURN_STRING( WDI_SET_AP_FIND_IND );
1382#endif
Anurag Chouhan6ee81542017-02-09 18:09:27 +05301383 CASE_RETURN_STRING( WDI_FW_ARP_STATS_REQ );
1384 CASE_RETURN_STRING( WDI_FW_GET_ARP_STATS_REQ );
1385
Jeff Johnson295189b2012-06-20 16:38:30 -07001386 default:
1387 return "Unknown WDI MessageId";
1388 }
1389}
1390
Anurag Chouhan83026002016-12-13 22:46:21 +05301391#ifdef DHCP_SERVER_OFFLOAD
1392/**
1393 * wdi_process_dhcpserver_offload_req() - wdi api to set dhcp server offload
1394 * @dhcp_info: pointer to dhcp server offload
1395 * @wdi_dhcp_srv_offload_rsp_callback: response callback
1396 * @user_data: pointer to user data
1397 *
1398 * Return: WDI_Status
1399 * WDI_STATUS_SUCCESS - success or else failure status
1400 */
1401WDI_Status
1402wdi_process_dhcpserver_offload_req
1403(
1404 wdi_set_dhcp_server_offload_t *dhcp_info,
1405 wdi_dhcp_srv_offload_rsp_cb wdi_dhcp_srv_offload_rsp_callback,
1406 void *user_data
1407)
1408{
1409 WDI_EventInfoType wdi_event_data;
Jeff Johnson295189b2012-06-20 16:38:30 -07001410
Anurag Chouhan83026002016-12-13 22:46:21 +05301411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1412 {
1413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1414 "WDI API call before module is initialized - Fail request");
1415 return WDI_STATUS_E_NOT_ALLOWED;
1416 }
1417
1418 /*-------------------------------------------------------------------
1419 Fill in Event data and post to the Main FSM
1420 -----------------------------------------------------------------*/
1421 wdi_event_data.wdiRequest = WDI_DHCP_SERVER_OFFLOAD_REQ;
1422 wdi_event_data.pEventData = dhcp_info;
1423 wdi_event_data.uEventDataSize = sizeof(*dhcp_info);
1424 wdi_event_data.pCBfnc = wdi_dhcp_srv_offload_rsp_callback;
1425 wdi_event_data.pUserData = user_data;
1426
1427 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdi_event_data);
1428}
1429#endif /* DHCP_SERVER_OFFLOAD */
Jeff Johnson295189b2012-06-20 16:38:30 -07001430
Anurag Chouhan0b29de02016-12-16 13:18:40 +05301431#ifdef MDNS_OFFLOAD
1432/**
1433 * wdi_set_mdns_offload_req() - wdi api to set mdns enable offload
1434 * @mdns_info: pointer to dhcp server offload
1435 * @wdi_mdns_enable_offload_rsp_callback: response callback
1436 * @user_data: pointer to user data
1437 *
1438 * Return: WDI_Status
1439 * WDI_STATUS_SUCCESS - success or else failure status
1440 */
1441WDI_Status
1442wdi_set_mdns_offload_req
1443
1444(
1445 wdi_mdns_enable_offload_cmd_req *mdns_info,
1446 wdi_mdns_enable_rsp_cb wdi_mdns_enable_offload_rsp_callback,
1447 void *user_data
1448)
1449{
1450 WDI_EventInfoType wdi_event_data;
1451
1452 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1453 {
1454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1455 "WDI API call before module is initialized - Fail request");
1456 return WDI_STATUS_E_NOT_ALLOWED;
1457 }
1458
1459 /*-------------------------------------------------------------------
1460 Fill in Event data and post to the Main FSM
1461 -----------------------------------------------------------------*/
1462 wdi_event_data.wdiRequest = WDI_MDNS_ENABLE_OFFLOAD_REQ;
1463 wdi_event_data.pEventData = mdns_info;
1464 wdi_event_data.uEventDataSize = sizeof(*mdns_info);
1465 wdi_event_data.pCBfnc = wdi_mdns_enable_offload_rsp_callback;
1466 wdi_event_data.pUserData = user_data;
1467
1468 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdi_event_data);
1469}
1470
1471/**
1472 * wdi_set_mdns_fqdn_req() - wdi api to set mdns fqdn request
1473 * @fqdn_info: pointer to dhcp server offload
1474 * @wdi_mdns_fqdn_offload_rsp_callback: response callback
1475 * @user_data: pointer to user data
1476 *
1477 * Return: WDI_Status
1478 * WDI_STATUS_SUCCESS - success or else failure status
1479 */
1480WDI_Status
1481wdi_set_mdns_fqdn_req
1482
1483(
1484 wdi_mdns_set_fqdn_cmd_req *fqdn_info,
1485 wdi_mdns_fqdn_rsp_cb wdi_mdns_fqdn_offload_rsp_callback,
1486 void *user_data
1487)
1488{
1489 WDI_EventInfoType wdi_event_data;
1490
1491 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1492 {
1493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1494 "WDI API call before module is initialized - Fail request");
1495 return WDI_STATUS_E_NOT_ALLOWED;
1496 }
1497
1498 /*-------------------------------------------------------------------
1499 Fill in Event data and post to the Main FSM
1500 -----------------------------------------------------------------*/
1501 wdi_event_data.wdiRequest = WDI_MDNS_FQDN_OFFLOAD_REQ;
1502 wdi_event_data.pEventData = fqdn_info;
1503 wdi_event_data.uEventDataSize = sizeof(*fqdn_info);
1504 wdi_event_data.pCBfnc = wdi_mdns_fqdn_offload_rsp_callback;
1505 wdi_event_data.pUserData = user_data;
1506
1507 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdi_event_data);
1508}
1509
1510/**
1511 * wdi_set_mdns_response_req() - wdi api to mdns response
1512 * @resp_info: pointer to mdns response
1513 * @wdi_mdns_resp_offload_rsp_callback: response callback
1514 * @user_data: pointer to user data
1515 *
1516 * Return: WDI_Status
1517 * WDI_STATUS_SUCCESS - success or else failure status
1518 */
1519WDI_Status
1520wdi_set_mdns_response_req
1521
1522(
1523 wdi_mdns_set_resp_req *resp_info,
1524 wdi_mdns_resp_rsp_cb wdi_mdns_resp_offload_rsp_callback,
1525 void *user_data
1526)
1527{
1528 WDI_EventInfoType wdi_event_data;
1529
1530 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1531 {
1532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1533 "WDI API call before module is initialized - Fail request");
1534 return WDI_STATUS_E_NOT_ALLOWED;
1535 }
1536
1537 /*-------------------------------------------------------------------
1538 Fill in Event data and post to the Main FSM
1539 -----------------------------------------------------------------*/
1540 wdi_event_data.wdiRequest = WDI_MDNS_RESP_OFFLOAD_REQ;
1541 wdi_event_data.pEventData = resp_info;
1542 wdi_event_data.uEventDataSize = sizeof(*resp_info);
1543 wdi_event_data.pCBfnc = wdi_mdns_resp_offload_rsp_callback;
1544 wdi_event_data.pUserData = user_data;
1545
1546 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdi_event_data);
1547}
1548
1549/**
1550 * wdi_get_mdns_stats_req() - wdi api to get mdns stats
1551 * @stats_info: pointer to mdns stats info
1552 * @wdi_get_stats_offload_rsp_callback: response callback
1553 * @user_data: pointer to user data
1554 *
1555 * Return: WDI_Status
1556 * WDI_STATUS_SUCCESS - success or else failure status
1557 */
1558WDI_Status
1559wdi_get_mdns_stats_req
1560(
1561 wdi_mdns_get_stats_req *stats_info,
1562 wdi_get_stats_rsp_cb wdi_get_stats_offload_rsp_callback,
1563 void *user_data
1564)
1565{
1566 WDI_EventInfoType wdi_event_data;
1567
1568 if ( eWLAN_PAL_FALSE == gWDIInitialized )
1569 {
1570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1571 "WDI API call before module is initialized - Fail request");
1572 return WDI_STATUS_E_NOT_ALLOWED;
1573 }
1574
1575 /*-------------------------------------------------------------------
1576 Fill in Event data and post to the Main FSM
1577 -----------------------------------------------------------------*/
1578 wdi_event_data.wdiRequest = WDI_MDNS_STATS_OFFLOAD_REQ;
1579 wdi_event_data.pEventData = stats_info;
1580 wdi_event_data.uEventDataSize = sizeof(*stats_info);
1581 wdi_event_data.pCBfnc = wdi_get_stats_offload_rsp_callback;
1582 wdi_event_data.pUserData = user_data;
1583
1584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdi_event_data);
1585}
1586#endif /* MDNS_OFFLOAD */
1587
Jeff Johnson295189b2012-06-20 16:38:30 -07001588/**
Anurag Chouhan6ee81542017-02-09 18:09:27 +05301589 * WDI_ProcessSetArpStatsResp() - WDI api to process set arp stats response
1590 * @wdi_ctx: wdi context
1591 * @event_data: event data
1592 *
1593 * Return: WDI_Status
1594 */
1595WDI_Status
1596WDI_ProcessSetArpStatsResp
1597(
1598 WDI_ControlBlockType *wdi_ctx,
1599 WDI_EventInfoType *event_data
1600)
1601{
1602 wdi_nud_set_arp_rsp_cb nud_set_arp_rsp_callback;
1603
1604 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
1605 "%s: Enter ", __func__);
1606 /*-------------------------------------------------------------------
1607 Sanity check
1608 -----------------------------------------------------------------*/
1609 if ((NULL == wdi_ctx) || (NULL == event_data) ||
1610 (NULL == event_data->pEventData))
1611 {
1612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1613 "%s: Invalid parameters", __func__);
1614 WDI_ASSERT(0);
1615 return WDI_STATUS_E_FAILURE;
1616 }
1617
1618 nud_set_arp_rsp_callback =
1619 (wdi_nud_set_arp_rsp_cb)wdi_ctx->pfncRspCB;
1620
1621 nud_set_arp_rsp_callback((void *) event_data->pEventData,
1622 wdi_ctx->pRspCBUserData);
1623
1624 return WDI_STATUS_SUCCESS;
1625}
1626
1627/**
1628 * WDI_ProcessGetArpStatsResp() - WDI api to process get arp stats response
1629 * @wdi_ctx: wdi context
1630 * @event_data: event data
1631 *
1632 * Return: WDI_Status
1633 */
1634WDI_Status
1635WDI_ProcessGetArpStatsResp
1636(
1637 WDI_ControlBlockType *wdi_ctx,
1638 WDI_EventInfoType *event_data
1639)
1640{
1641 wdi_nud_get_arp_rsp_cb nud_get_arp_rsp_callback;
1642
1643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
1644 "%s: Enter ", __func__);
1645 /*-------------------------------------------------------------------
1646 Sanity check
1647 -----------------------------------------------------------------*/
1648 if ((NULL == wdi_ctx) || (NULL == event_data) ||
1649 (NULL == event_data->pEventData))
1650 {
1651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1652 "%s: Invalid parameters", __func__);
1653 WDI_ASSERT(0);
1654 return WDI_STATUS_E_FAILURE;
1655 }
1656
1657 nud_get_arp_rsp_callback =
1658 (wdi_nud_get_arp_rsp_cb)wdi_ctx->pfncRspCB;
1659
1660 nud_get_arp_rsp_callback((void *) event_data->pEventData,
1661 wdi_ctx->pRspCBUserData);
1662
1663 return WDI_STATUS_SUCCESS;
1664}
1665
1666
1667/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001668 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001669
1670 @param wdiRespMsgId: WDI Message response Id
1671
1672 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001673 @return Result of the function call
1674*/
1675static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1676{
1677 switch (wdiRespMsgId)
1678 {
1679 CASE_RETURN_STRING( WDI_START_RESP );
1680 CASE_RETURN_STRING( WDI_STOP_RESP );
1681 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1682 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1683 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1684 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1685 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1686 CASE_RETURN_STRING( WDI_JOIN_RESP );
1687 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1688 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1689 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1690 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1691 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1692 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1693 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1694 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1695 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1696 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1697 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1698 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1699 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1700 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1701 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1702 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1703 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1704 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1705 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1706 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1707 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1708 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1709 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1710 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1711 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1712 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1713 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301714#ifdef FEATURE_WLAN_TDLS
1715 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301716 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301717 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1718#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001719 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1720 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1721 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1722 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1723 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1724 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1725 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1726 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1727 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1728 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1729 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1730 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1731 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1732 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1733 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1734 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1735 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1736 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1737 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1738 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1739 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1740 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1741 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1742 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1743 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001744 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001745 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1746 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1747 #ifdef FEATURE_WLAN_SCAN_PNO
1748 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1749 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1750 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1751 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001752#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001753 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001754#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1756 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1757 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1758 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1759 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1760 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1761 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1762 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001763 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Abhishek Singh7cd040e2016-01-07 10:51:04 +05301764#ifdef WLAN_FEATURE_RMC
1765 CASE_RETURN_STRING( WDI_RMC_RULER_RESP );
1766 CASE_RETURN_STRING( WDI_RMC_UPDATE_IND_TO_HOST );
1767
1768 CASE_RETURN_STRING( WDI_HAL_IBSS_PEER_INFO_RSP );
1769#endif /* WLAN_FEATURE_RMC */
Rajeev79dbe4c2013-10-05 11:03:42 +05301770#ifdef FEATURE_WLAN_BATCH_SCAN
1771 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1772#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001773 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301774 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301775 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301776#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1777 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1778 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1779 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1780#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301781#ifdef WLAN_FEATURE_EXTSCAN
1782 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1783 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1784 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1785 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1786 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1787 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301788 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1789 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1790 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1791 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301792#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301793 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301794 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301795 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301796 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301797 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301798 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301799 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1800 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Arun Khandavalli7eeb1592015-10-19 21:36:57 +05301801 CASE_RETURN_STRING( WDI_WIFI_CONFIG_SET_RSP);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301802#ifdef FEATURE_OEM_DATA_SUPPORT
1803 CASE_RETURN_STRING (WDI_HAL_START_OEM_DATA_RSP_IND_NEW);
1804#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301805 CASE_RETURN_STRING (WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
Kapil Guptab3a981b2016-06-26 13:36:51 +05301806#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
1807 CASE_RETURN_STRING (WDI_PER_ROAM_SCAN_OFFLOAD_RSP);
1808 CASE_RETURN_STRING (WDI_PER_ROAM_SCAN_TRIGGER_RSP);
1809#endif
Anurag Chouhan83026002016-12-13 22:46:21 +05301810#ifdef DHCP_SERVER_OFFLOAD
1811 CASE_RETURN_STRING (WDI_DHCP_SERVER_OFFLOAD_RSP);
1812#endif /* DHCP_SERVER_OFFLOAD */
Manjeet Singh3ed79242017-01-11 19:04:32 +05301813 CASE_RETURN_STRING (WDI_CAPTURE_GET_TSF_TSTAMP_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001814 default:
1815 return "Unknown WDI MessageId";
1816 }
1817}
1818
1819/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301820 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1821 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301822 @param capabilityBitmap - Base address of a 4 element Bitmap array
1823 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301824 @see
1825 @returns None
1826 */
1827void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1828{
Abhishek Singh08b60122014-02-04 18:05:23 +05301829 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301830 char *pTempCapStr = NULL;
1831 char *pCapStr = NULL;
1832 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1833 if (NULL == pTempCapStr)
1834 {
1835 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1836 "Memory allocation failed for CapStr");
1837 return;
1838 }
1839
1840 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301841 for (j = 0; j < 4; j++) {
1842 for (i = 0; i < 32; i++) {
1843 if ((*(capabilityBitmap + j) & (1 << i))) {
1844 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301845 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1846 pCapStr += strlen("MCC");
1847 break;
1848 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1849 pCapStr += strlen("P2P");
1850 break;
1851 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1852 pCapStr += strlen("DOT11AC");
1853 break;
1854 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1855 pCapStr += strlen("SLM_SESSIONIZATION");
1856 break;
1857 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1858 pCapStr += strlen("DOT11AC_OPMODE");
1859 break;
1860 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1861 pCapStr += strlen("SAP32STA");
1862 break;
1863 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1864 pCapStr += strlen("TDLS");
1865 break;
1866 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1867 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1868 break;
1869 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1870 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1871 break;
1872 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1873 pCapStr += strlen("BEACON_OFFLOAD");
1874 break;
1875 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1876 pCapStr += strlen("SCAN_OFFLOAD");
1877 break;
1878 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1879 pCapStr += strlen("ROAM_OFFLOAD");
1880 break;
1881 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1882 pCapStr += strlen("BCN_MISS_OFFLOAD");
1883 break;
1884 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1885 pCapStr += strlen("STA_POWERSAVE");
1886 break;
1887 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1888 pCapStr += strlen("AP_UAPSD");
1889 break;
1890 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1891 pCapStr += strlen("AP_DFS");
1892 break;
1893 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1894 pCapStr += strlen("BLOCKACK");
1895 break;
1896 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1897 pCapStr += strlen("PHY_ERR");
1898 break;
1899 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1900 pCapStr += strlen("BCN_FILTER");
1901 break;
1902 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1903 pCapStr += strlen("RTT");
1904 break;
1905 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1906 pCapStr += strlen("RATECTRL");
1907 break;
1908 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1909 pCapStr += strlen("WOW");
1910 break;
1911 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1912 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1913 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301914 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1915 pCapStr += strlen("FW_IN_TX_PATH");
1916 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301917 case HT40_OBSS_SCAN:
1918 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1919 "%s", "HT40_OBSS_SCAN");
1920 pCapStr += strlen("HT40_OBSS_SCAN");
1921 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301922 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1923 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1924 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1925 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1926 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301927 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1928 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1929 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301930 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1931 pCapStr += strlen("CH_SWITCH_V1");
1932 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301933#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1934 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1935 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1936 break;
1937#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301938#ifdef WLAN_FEATURE_EXTSCAN
1939 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1940 pCapStr += strlen("EXTENDED_SCAN");
1941 break;
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +05301942 case EXT_SCAN_ENHANCED: snprintf(pCapStr, sizeof("EXT_SCAN_ENHANCED"), "%s", "EXT_SCAN_ENHANCED");
1943 pCapStr += strlen("EXT_SCAN_ENHANCED");
1944 break;
Dino Myclee8843b32014-07-04 14:21:45 +05301945#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301946 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1947 pCapStr += strlen("MU_MIMO");
1948 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301949
Mihir Shetec34258c2014-07-30 17:50:27 +05301950 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1951 pCapStr += strlen("DYNAMIC_WMM_PS");
1952 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301953 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1954 pCapStr += strlen("FW_STATS");
1955 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301956 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1957 pCapStr += strlen("MAC_SPOOFED_SCAN");
1958 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301959 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1960 pCapStr += strlen("WPS_PRBRSP_TMPL");
1961 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301962 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1963 pCapStr += strlen("BCN_IE_FLT_DELTA");
1964 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301965 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1966 pCapStr += strlen("MGMT_FRAME_LOGGING");
1967 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301968 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1969 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1970 break;
1971
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301972 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1973 pCapStr += strlen("DISA");
1974 break;
1975
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301976 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1977 pCapStr += strlen("TDLS_OFF_CHANNEL");
1978 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301979 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1980 pCapStr += strlen("LOGGING_ENHANCEMENT");
1981 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301982 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1983 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1984 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301985 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1986 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1987 break;
Mukul Sharmaf1bd9322015-10-20 16:03:42 +05301988 case EXT_LL_STAT: snprintf(pCapStr, sizeof("EXT_LL_STAT"), "%s", "EXT_LL_STAT");
1989 pCapStr += strlen("EXT_LL_STAT");
1990 break;
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +05301991 case RTT3: snprintf(pCapStr, sizeof("RTT3"), "%s", "RTT3");
1992 pCapStr += strlen("RTT3");
1993 break;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301994 case ANTENNA_DIVERSITY_SELECTION:
1995 snprintf(pCapStr,
1996 sizeof("ANTENNA_DIVERSITY_SELECTION"), "%s",
1997 "ANTENNA_DIVERSITY_SELECTION");
1998 pCapStr += strlen("ANTENNA_DIVERSITY_SELECTION");
1999 break;
Kapil Guptab3a981b2016-06-26 13:36:51 +05302000 case PER_BASED_ROAMING:
2001 snprintf(pCapStr, sizeof("PER_BASED_ROAMING"),
2002 "%s", "PER_BASED_ROAMING");
2003 pCapStr += strlen("PER_BASED_ROAMING");
2004 break;
Anurag Chouhan1deaa252016-12-05 15:48:47 +05302005 case SAP_MODE_WOW:
2006 snprintf(pCapStr, sizeof("SAP_MODE_WOW"),
2007 "%s", "SAP_MODE_WOW");
2008 pCapStr += strlen("SAP_MODE_WOW");
2009 break;
2010 case SAP_OFFLOADS:
2011 snprintf(pCapStr, sizeof("SAP_OFFLOADS"),
2012 "%s", "SAP_OFFLOADS");
2013 pCapStr += strlen("SAP_OFFLOADS");
2014 break;
Sravan Kumar Kairam9ba5f5b2016-12-13 13:50:46 +05302015
2016 case SAP_BUFF_ALLOC:
2017 snprintf(pCapStr, sizeof("SAP_BUFF_ALLOC"),
2018 "%s", "SAP_BUFF_ALLOC");
2019 pCapStr += strlen("SAP_BUFF_ALLOC");
2020 break;
Padma, Santhosh Kumar5c317832017-01-20 15:53:00 +05302021
2022 case MAKE_BEFORE_BREAK:
2023 snprintf(pCapStr, sizeof("MAKE_BEFORE_BREAK"),
2024 "%s", "MAKE_BEFORE_BREAK");
2025 pCapStr += strlen("MAKE_BEFORE_BREAK");
2026 break;
2027
Anurag Chouhan6ee81542017-02-09 18:09:27 +05302028 case NUD_DEBUG:
2029 snprintf(pCapStr, sizeof("NUD_DEBUG"),
2030 "%s", "NUD_DEBUG");
2031 pCapStr += strlen("NUD_DEEBUG");
2032 break;
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +05302033 case PROBE_RSP_TEMPLATE_VER1:
2034 snprintf(pCapStr, sizeof("PROBE_RSP_TEMPLATE_VER1"),
2035 "%s", "PROBE_RSP_TEMPLATE_VER1");
2036 pCapStr += strlen("PROBE_RSP_TEMPLATE_VER1");
2037 break;
Abhishek Singh08b60122014-02-04 18:05:23 +05302038 }
2039 *pCapStr++ = ',';
2040 *pCapStr++ = ' ';
2041 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05302042 }
2043 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05302044 pCapStr -= 2;
2045 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05302046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05302047 if (pTempCapStr)
2048 {
2049 vos_mem_free(pTempCapStr);
2050 pTempCapStr = NULL;
2051 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05302052}
2053
2054/**
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07002056
2057 @param halStatusId: HAL status Id
2058
2059 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07002060 @return Result of the function call
2061*/
2062static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
2063{
2064 switch (halStatusId)
2065 {
2066 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
2067 CASE_RETURN_STRING( PAL_STATUS_INVAL );
2068 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
2069 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
2070 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
2071 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
2072 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
2073 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
2074 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
2075 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
2076 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
2077 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
2078 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
2079 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
2080 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
2081 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
2082 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
2083 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
2084 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
2085 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
2086 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
2087 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
2088 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
2089 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
2090 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
2091 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
2092 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
2093 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
2094 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
2095 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
2096 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
2097 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
2098 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
2099 default:
2100 return "Unknown HAL status";
2101 }
2102}
2103
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05302104/**
2105 * wdi_state_info_dump() - prints state information of wdi layer
2106 */
2107static void wdi_state_info_dump(void)
2108{
2109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2110 "%s pending commands: %d", __func__,
2111 gWDICb.wptPendingQueue.count);
2112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2113 "uGlobalState %d wdiExpectedResponse: %d",
2114 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
2115}
2116
2117
2118/**
2119 * wdi_register_debug_callback() - registration function for wdi layer
2120 * to print WDI state information
2121 */
2122static void wdi_register_debug_callback(void)
2123{
2124 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
2125}
2126
2127
Jeff Johnsone7245742012-09-05 17:12:55 -07002128/*========================================================================
2129
Jeff Johnson295189b2012-06-20 16:38:30 -07002130 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002131
Jeff Johnson295189b2012-06-20 16:38:30 -07002132==========================================================================*/
2133
2134/**
2135 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07002136
Jeff Johnson295189b2012-06-20 16:38:30 -07002137 DAL will allocate all the resources it needs. It will open PAL, it will also
2138 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 DXE/SMD or any other drivers that they need.
2140
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05302141 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07002142 ppWDIGlobalCtx: output pointer of Global Context
2143 pWdiDevCapability: output pointer of device capability
2144
2145 @return Result of the function call
2146*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002147WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002148WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07002149(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05302150 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07002151 void** ppWDIGlobalCtx,
2152 WDI_DeviceCapabilityType* pWdiDevCapability,
2153 unsigned int driverType
2154)
2155{
2156 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07002157 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07002159 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07002160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
2161
2162 /*---------------------------------------------------------------------
2163 Sanity check
2164 ---------------------------------------------------------------------*/
2165 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
2166 {
2167 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2168 "Invalid input parameters in WDI_Init");
2169
Jeff Johnsone7245742012-09-05 17:12:55 -07002170 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07002171 }
2172
2173 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002174 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07002175 ---------------------------------------------------------------------*/
2176 if ( eWLAN_PAL_FALSE != gWDIInitialized )
2177 {
2178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2179 "WDI module already initialized - return");
2180
Jeff Johnsone7245742012-09-05 17:12:55 -07002181 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07002182 }
2183
2184 /*Module is now initialized - this flag is to ensure the fact that multiple
2185 init will not happen on WDI
2186 !! - potential race does exist because read and set are not atomic,
2187 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002188 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07002189
2190 /*Setup the control block */
2191 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05302192 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07002193
2194 /*Setup the STA Table*/
2195 wdiStatus = WDI_STATableInit(&gWDICb);
2196 if ( WDI_STATUS_SUCCESS != wdiStatus )
2197 {
2198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2199 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002200 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002201 goto fail_STATableInit;
2202 }
2203
2204 /*------------------------------------------------------------------------
2205 Open the PAL
2206 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05302207 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07002208 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2209 {
2210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2211 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002212 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002213 goto fail_wpalOpen;
2214 }
2215
2216 /*Initialize main synchro mutex - it will be used to ensure integrity of
2217 the main WDI Control Block*/
2218 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
2219 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2220 {
2221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2222 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002223 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002224 goto fail_mutex;
2225 }
2226
2227 /*Initialize the response timer - it will be used to time all messages
2228 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002229 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
2230 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07002231 &gWDICb);
2232 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2233 {
2234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2235 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002236 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002237 goto fail_timer;
2238 }
2239
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002240 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
2241 WDI_SsrTimerCB,
2242 &gWDICb);
2243 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2244 {
2245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2246 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002247 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002248 goto fail_timer2;
2249 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002250 /* Initialize the WDI Pending Request Queue*/
2251 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
2252 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2253 {
2254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2255 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002256 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002257 goto fail_pend_queue;
2258 }
2259
2260 /*Init WDI Pending Assoc Id Queue */
2261 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
2262 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2263 {
2264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2265 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002266 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 goto fail_assoc_queue;
2268 }
2269
2270 /*Initialize the BSS sessions pending Queue */
2271 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2272 {
2273 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2274 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2275 {
2276 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2277 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002278 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002279 goto fail_bss_queue;
2280 }
2281 }
2282
2283 /*Indicate the control block is sufficiently initialized for callbacks*/
2284 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
2285
2286 /*------------------------------------------------------------------------
2287 Initialize the Data Path Utility Module
2288 ------------------------------------------------------------------------*/
2289 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
2290 if ( WDI_STATUS_SUCCESS != wdiStatus )
2291 {
2292 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2293 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002294 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002295 goto fail_dp_util_init;
2296 }
2297
2298 /* Init Set power state event */
2299 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002300 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002301 {
2302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2303 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002304 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002305 goto fail_power_event;
2306 }
2307
2308 /* Init WCTS action event */
2309 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002310 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002311 {
2312 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
2313 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002314 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002315 goto fail_wcts_event;
2316 }
2317
2318 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002319 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07002320 ------------------------------------------------------------------------*/
2321 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
2322 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07002323 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07002324 wctsCBs.wctsRxMsgCBData = &gWDICb;
2325
Jeff Johnsone7245742012-09-05 17:12:55 -07002326 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07002327 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07002328 WDI_CT_CHANNEL_SIZE,
2329 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07002330
2331 if ( NULL == gWDICb.wctsHandle )
2332 {
2333 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002334 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 goto fail_wcts_open;
2336 }
2337
2338 gWDICb.driverMode = (tDriverType)driverType;
2339 /* FTM mode not need to open Transport Driver */
2340 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07002341 {
Jeff Johnson295189b2012-06-20 16:38:30 -07002342 /*------------------------------------------------------------------------
2343 Open the Data Transport
2344 ------------------------------------------------------------------------*/
2345 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
2346 {
2347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002348 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002349 goto fail_wdts_open;
2350 }
2351 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002352 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07002353 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05302354 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07002355 /*Send the context as a ptr to the global WDI Control Block*/
2356 *ppWDIGlobalCtx = &gWDICb;
2357
2358 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002359 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07002360 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
2361 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05302362
2363 wdi_register_debug_callback();
2364
Kapil Gupta04897452017-03-13 12:50:35 +05302365 vos_wake_lock_init(&gWDICb.find_ap_lock, "find_ap_lock");
2366
Jeff Johnson295189b2012-06-20 16:38:30 -07002367 return WDI_STATUS_SUCCESS;
2368
2369 /* ERROR handlers
2370 Undo everything that completed successfully */
2371
2372 fail_wdts_open:
2373 {
2374 wpt_status eventStatus;
2375
2376 /* Closing WCTS in this scenario is tricky since it has to close
2377 the SMD channel and then we get notified asynchronously when
2378 the channel has been closed. So we take some of the logic from
2379 the "normal" close procedure in WDI_Close()
2380 */
2381
2382 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002383 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002384 {
2385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002386 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002387 }
2388
2389 WCTS_CloseTransport(gWDICb.wctsHandle);
2390
2391 /* Wait for WCTS to close the control transport. If we were able
2392 to reset the event flag, then we'll wait for the event,
2393 otherwise we'll wait for a maximum amount of time required for
2394 the channel to be closed */
2395 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2396 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002397 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 WDI_WCTS_ACTION_TIMEOUT);
2399 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2400 {
2401 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002402 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002403 }
2404 }
2405 else
2406 {
2407 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
2408 }
2409 }
2410 fail_wcts_open:
2411 wpalEventDelete(&gWDICb.wctsActionEvent);
2412 fail_wcts_event:
2413 wpalEventDelete(&gWDICb.setPowerStateEvent);
2414 fail_power_event:
2415 WDI_DP_UtilsExit(&gWDICb);
2416 fail_dp_util_init:
2417 gWDICb.magic = 0;
2418 fail_bss_queue:
2419 /* entries 0 thru i-1 were successfully initialized */
2420 while (0 < i)
2421 {
2422 i--;
2423 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2424 }
2425 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2426 fail_assoc_queue:
2427 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2428 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002429 wpalTimerDelete(&gWDICb.ssrTimer);
2430 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07002431 wpalTimerDelete(&gWDICb.wptResponseTimer);
2432 fail_timer:
2433 wpalMutexDelete(&gWDICb.wptMutex);
2434 fail_mutex:
2435 wpalClose(gWDICb.pPALContext);
2436 fail_wpalOpen:
2437 WDI_STATableClose(&gWDICb);
2438 fail_STATableInit:
2439 gWDIInitialized = eWLAN_PAL_FALSE;
2440
2441 return WDI_STATUS_E_FAILURE;
2442
2443}/*WDI_Init*/;
2444
2445/**
2446 @brief WDI_Start will be called when the upper MAC is ready to
2447 commence operation with the WLAN Device. Upon the call
2448 of this API the WLAN DAL will pack and send a HAL Start
2449 message to the lower RIVA sub-system if the SMD channel
2450 has been fully opened and the RIVA subsystem is up.
2451
2452 If the RIVA sub-system is not yet up and running DAL
2453 will queue the request for Open and will wait for the
2454 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07002455 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07002456
2457 WDI_Init must have been called.
2458
Jeff Johnsone7245742012-09-05 17:12:55 -07002459 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002460 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002461
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 wdiStartRspCb: callback for passing back the response of
2463 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002464
Jeff Johnson295189b2012-06-20 16:38:30 -07002465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002466 callback
2467
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 @see WDI_Start
2469 @return Result of the function call
2470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002472WDI_Start
2473(
2474 WDI_StartReqParamsType* pwdiStartParams,
2475 WDI_StartRspCb wdiStartRspCb,
2476 void* pUserData
2477)
2478{
2479 WDI_EventInfoType wdiEventData;
2480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2481
2482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 ------------------------------------------------------------------------*/
2485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2486 {
2487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2488 "WDI API call before module is initialized - Fail request");
2489
Jeff Johnsone7245742012-09-05 17:12:55 -07002490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002491 }
2492
2493 /*------------------------------------------------------------------------
2494 Fill in Event data and post to the Main FSM
2495 ------------------------------------------------------------------------*/
2496 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002497 wdiEventData.pEventData = pwdiStartParams;
2498 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
2499 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002500 wdiEventData.pUserData = pUserData;
2501
2502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2503
2504}/*WDI_Start*/
2505
2506/**
2507 @brief WDI_Stop will be called when the upper MAC is ready to
2508 stop any operation with the WLAN Device. Upon the call
2509 of this API the WLAN DAL will pack and send a HAL Stop
2510 message to the lower RIVA sub-system if the DAL Core is
2511 in started state.
2512
2513 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07002514
2515 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002516
2517 WDI_Start must have been called.
2518
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002520 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002521
Jeff Johnson295189b2012-06-20 16:38:30 -07002522 wdiStopRspCb: callback for passing back the response of
2523 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002524
Jeff Johnson295189b2012-06-20 16:38:30 -07002525 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002526 callback
2527
Jeff Johnson295189b2012-06-20 16:38:30 -07002528 @see WDI_Start
2529 @return Result of the function call
2530*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002531WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002532WDI_Stop
2533(
2534 WDI_StopReqParamsType* pwdiStopParams,
2535 WDI_StopRspCb wdiStopRspCb,
2536 void* pUserData
2537)
2538{
2539 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002540 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002541 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2542
2543 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002544 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002545 ------------------------------------------------------------------------*/
2546 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2547 {
2548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2549 "WDI API call before module is initialized - Fail request");
2550
Jeff Johnsone7245742012-09-05 17:12:55 -07002551 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002552 }
2553
Jeff Johnson43971f52012-07-17 12:26:56 -07002554 /*Access to the global state must be locked before cleaning */
2555 wpalMutexAcquire(&pWDICtx->wptMutex);
2556
2557 /*Clear all pending request*/
2558 WDI_ClearPendingRequests(pWDICtx);
2559
2560 /*We have completed cleaning unlock now*/
2561 wpalMutexRelease(&pWDICtx->wptMutex);
2562
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 /*------------------------------------------------------------------------
2564 Fill in Event data and post to the Main FSM
2565 ------------------------------------------------------------------------*/
2566 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002567 wdiEventData.pEventData = pwdiStopParams;
2568 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2569 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002570 wdiEventData.pUserData = pUserData;
2571
2572 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2573
2574}/*WDI_Stop*/
2575
2576
2577
2578/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002579 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 needs to interact with DAL. DAL will free its control
2581 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002582
2583 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002584
2585 WDI_Stop must have been called.
2586
2587 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002588
Jeff Johnson295189b2012-06-20 16:38:30 -07002589 @see WDI_Stop
2590 @return Result of the function call
2591*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002592WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002593WDI_Close
2594(
2595 void
2596)
2597{
2598 wpt_uint8 i;
2599 WDI_EventInfoType wdiEventData;
2600 wpt_status wptStatus;
2601 wpt_status eventStatus;
2602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2603
2604 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002605 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002606 ------------------------------------------------------------------------*/
2607 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2608 {
2609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2610 "WDI API call before module is initialized - Fail request");
2611
Jeff Johnsone7245742012-09-05 17:12:55 -07002612 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002613 }
2614
2615 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2616 (the control transport will be closed by the FSM and we'll want
2617 to wait until that completes)*/
2618 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002619 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 {
2621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002622 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002623 /* fall through and try to finish closing via the FSM */
2624 }
2625
2626 /*------------------------------------------------------------------------
2627 Fill in Event data and post to the Main FSM
2628 ------------------------------------------------------------------------*/
2629 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 wdiEventData.pEventData = NULL;
2631 wdiEventData.uEventDataSize = 0;
2632 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002633 wdiEventData.pUserData = NULL;
2634
2635 gWDIInitialized = eWLAN_PAL_FALSE;
2636
2637 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2638
2639 /*Wait for WCTS to close the control transport
2640 (but only if we were able to reset the event flag*/
2641 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2642 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002643 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002644 WDI_WCTS_ACTION_TIMEOUT);
2645 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2646 {
2647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002648 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 }
2650 }
2651
2652 /* Destroy the WCTS action event */
2653 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2654 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2655 {
2656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2657 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002658 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002659 }
2660
2661 /* Destroy the Set Power State event */
2662 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2663 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2664 {
2665 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2666 "WDI Close failed to destroy an event");
2667
Jeff Johnsone7245742012-09-05 17:12:55 -07002668 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 }
2670
2671 /*------------------------------------------------------------------------
2672 Closes the Data Path Utility Module
2673 ------------------------------------------------------------------------*/
2674 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2675 {
2676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2677 "WDI Init failed to close the DP Util Module");
2678
Jeff Johnsone7245742012-09-05 17:12:55 -07002679 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002680 }
2681
2682 /*destroy the BSS sessions pending Queue */
2683 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2684 {
2685 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2686 }
2687
2688 /* destroy the WDI Pending Assoc Id Request Queue*/
2689 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2690
2691 /* destroy the WDI Pending Request Queue*/
2692 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002693
Jeff Johnson295189b2012-06-20 16:38:30 -07002694 /*destroy the response timer */
2695 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2696
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002697 /*destroy the SSR timer */
2698 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2699
Jeff Johnson295189b2012-06-20 16:38:30 -07002700 /*invalidate the main synchro mutex */
2701 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2702 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2703 {
2704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2705 "Failed to delete mutex %d", wptStatus);
2706 WDI_ASSERT(0);
2707 }
Kapil Gupta04897452017-03-13 12:50:35 +05302708 vos_wake_lock_destroy(&gWDICb.find_ap_lock);
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 /*Clear control block. note that this will clear the "magic"
2710 which will inhibit all asynchronous callbacks*/
2711 WDI_CleanCB(&gWDICb);
2712
2713 return wptStatus;
2714
2715}/*WDI_Close*/
2716
2717/**
2718 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2719 This will do most of the WDI stop & close
2720 operations without doing any handshake with Riva
2721
2722 This will also make sure that the control transport
2723 will NOT be closed.
2724
2725 This request will not be queued.
2726
2727
2728 WDI_Start must have been called.
2729
2730 @param closeTransport: Close control channel if this is set
2731
2732 @return Result of the function call
2733*/
2734WDI_Status
2735WDI_Shutdown
2736(
2737 wpt_boolean closeTransport
2738)
2739{
2740 WDI_EventInfoType wdiEventData;
2741 wpt_status wptStatus;
2742 int i = 0;
2743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2744
2745 /*------------------------------------------------------------------------
2746 Sanity Check
2747 ------------------------------------------------------------------------*/
2748 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2749 {
2750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2751 "WDI API call before module is initialized - Fail request");
2752
2753 return WDI_STATUS_E_NOT_ALLOWED;
2754 }
2755
2756 /*------------------------------------------------------------------------
2757 Fill in Event data and post to the Main FSM
2758 ------------------------------------------------------------------------*/
2759 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2760 wdiEventData.pEventData = NULL;
2761 wdiEventData.uEventDataSize = 0;
2762
2763 /* Shutdown will not be queued, if the state is busy timer will be
2764 * stopped & this message will be processed.*/
2765 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2766 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2767 {
2768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002769 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002770 }
2771 /* Destroy the Set Power State event */
2772 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2773 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2774 {
2775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2776 "WDI Close failed to destroy an event");
2777
2778 WDI_ASSERT(0);
2779 }
2780 /*------------------------------------------------------------------------
2781 Closes the Data Path Utility Module
2782 ------------------------------------------------------------------------*/
2783 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2784 {
2785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2786 "WDI Init failed to close the DP Util Module");
2787
2788 WDI_ASSERT(0);
2789 }
2790 if ( closeTransport )
2791 {
2792 /* Close control transport, called from module unload */
2793 WCTS_CloseTransport(gWDICb.wctsHandle);
2794 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002795 else
2796 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002797 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002798 the pending messages in the transport queue */
2799 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2800 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002801 /*destroy the BSS sessions pending Queue */
2802 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2803 {
2804 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2805 }
2806
2807 /* destroy the WDI Pending Assoc Id Request Queue*/
2808 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2809 /* destroy the WDI Pending Request Queue*/
2810 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2811 /*destroy the response timer */
2812 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002813 /*destroy the SSR timer */
2814 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002815
2816 /*invalidate the main synchro mutex */
2817 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2818 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2819 {
2820 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002821 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002822 WDI_ASSERT(0);
2823 }
Kapil Guptaddd4b772017-07-25 15:18:30 +05302824 vos_wake_lock_destroy(&gWDICb.find_ap_lock);
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002825 /* Free the global variables */
2826 wpalMemoryFree(gpHostWlanFeatCaps);
2827 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002828 gpHostWlanFeatCaps = NULL;
2829 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002830 /*Clear control block. note that this will clear the "magic"
2831 which will inhibit all asynchronous callbacks*/
2832 WDI_CleanCB(&gWDICb);
2833 return wptStatus;
2834
2835}/*WDI_Shutdown*/
2836
2837
Jeff Johnsone7245742012-09-05 17:12:55 -07002838/*========================================================================
2839
Jeff Johnson295189b2012-06-20 16:38:30 -07002840 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002841
Jeff Johnson295189b2012-06-20 16:38:30 -07002842==========================================================================*/
2843
2844/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 the WLAN Device to get ready for a scan procedure. Upon
2847 the call of this API the WLAN DAL will pack and send a
2848 HAL Init Scan request message to the lower RIVA
2849 sub-system if DAL is in state STARTED.
2850
2851 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002853
2854 WDI_Start must have been called.
2855
2856 @param wdiInitScanParams: the init scan parameters as specified
2857 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002858
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 wdiInitScanRspCb: callback for passing back the response
2860 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002861
Jeff Johnson295189b2012-06-20 16:38:30 -07002862 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002863 callback
2864
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 @see WDI_Start
2866 @return Result of the function call
2867*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002868WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002869WDI_InitScanReq
2870(
2871 WDI_InitScanReqParamsType* pwdiInitScanParams,
2872 WDI_InitScanRspCb wdiInitScanRspCb,
2873 void* pUserData
2874)
2875{
2876 WDI_EventInfoType wdiEventData;
2877 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2878
2879 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002880 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002881 ------------------------------------------------------------------------*/
2882 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2883 {
2884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2885 "WDI API call before module is initialized - Fail request");
2886
Jeff Johnsone7245742012-09-05 17:12:55 -07002887 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002888 }
2889
2890 /*------------------------------------------------------------------------
2891 Fill in Event data and post to the Main FSM
2892 ------------------------------------------------------------------------*/
2893 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002894 wdiEventData.pEventData = pwdiInitScanParams;
2895 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2896 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002897 wdiEventData.pUserData = pUserData;
2898
2899 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2900
2901}/*WDI_InitScanReq*/
2902
2903/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002904 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002905 wishes to change the Scan channel on the WLAN Device.
2906 Upon the call of this API the WLAN DAL will pack and
2907 send a HAL Start Scan request message to the lower RIVA
2908 sub-system if DAL is in state STARTED.
2909
2910 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002911 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002912
2913 WDI_InitScanReq must have been called.
2914
Jeff Johnsone7245742012-09-05 17:12:55 -07002915 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002916 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002917
Jeff Johnson295189b2012-06-20 16:38:30 -07002918 wdiStartScanRspCb: callback for passing back the
2919 response of the start scan operation received from the
2920 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002921
Jeff Johnson295189b2012-06-20 16:38:30 -07002922 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002923 callback
2924
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 @see WDI_InitScanReq
2926 @return Result of the function call
2927*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002928WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002929WDI_StartScanReq
2930(
2931 WDI_StartScanReqParamsType* pwdiStartScanParams,
2932 WDI_StartScanRspCb wdiStartScanRspCb,
2933 void* pUserData
2934)
2935{
2936 WDI_EventInfoType wdiEventData;
2937 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2938
2939 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002940 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002941 ------------------------------------------------------------------------*/
2942 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2943 {
2944 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2945 "WDI API call before module is initialized - Fail request");
2946
Jeff Johnsone7245742012-09-05 17:12:55 -07002947 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002948 }
2949
2950 /*------------------------------------------------------------------------
2951 Fill in Event data and post to the Main FSM
2952 ------------------------------------------------------------------------*/
2953 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002954 wdiEventData.pEventData = pwdiStartScanParams;
2955 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2956 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002957 wdiEventData.pUserData = pUserData;
2958
2959 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2960
2961}/*WDI_StartScanReq*/
2962
2963
2964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002966 wants to end scanning for a particular channel that it
2967 had set before by calling Scan Start on the WLAN Device.
2968 Upon the call of this API the WLAN DAL will pack and
2969 send a HAL End Scan request message to the lower RIVA
2970 sub-system if DAL is in state STARTED.
2971
2972 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002974
2975 WDI_StartScanReq must have been called.
2976
Jeff Johnsone7245742012-09-05 17:12:55 -07002977 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002978 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002979
Jeff Johnson295189b2012-06-20 16:38:30 -07002980 wdiEndScanRspCb: callback for passing back the response
2981 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002982
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002984 callback
2985
Jeff Johnson295189b2012-06-20 16:38:30 -07002986 @see WDI_StartScanReq
2987 @return Result of the function call
2988*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002989WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002990WDI_EndScanReq
2991(
2992 WDI_EndScanReqParamsType* pwdiEndScanParams,
2993 WDI_EndScanRspCb wdiEndScanRspCb,
2994 void* pUserData
2995)
2996{
2997 WDI_EventInfoType wdiEventData;
2998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2999
3000 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003001 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003002 ------------------------------------------------------------------------*/
3003 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3004 {
3005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3006 "WDI API call before module is initialized - Fail request");
3007
Jeff Johnsone7245742012-09-05 17:12:55 -07003008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003009 }
3010
3011 /*------------------------------------------------------------------------
3012 Fill in Event data and post to the Main FSM
3013 ------------------------------------------------------------------------*/
3014 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003015 wdiEventData.pEventData = pwdiEndScanParams;
3016 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
3017 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003018 wdiEventData.pUserData = pUserData;
3019
3020 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3021
3022}/*WDI_EndScanReq*/
3023
3024
3025/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07003027 completed the scan process on the WLAN Device. Upon the
3028 call of this API the WLAN DAL will pack and send a HAL
3029 Finish Scan Request request message to the lower RIVA
3030 sub-system if DAL is in state STARTED.
3031
3032 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003033 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003034
3035 WDI_InitScanReq must have been called.
3036
Jeff Johnsone7245742012-09-05 17:12:55 -07003037 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003038 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003039
Jeff Johnson295189b2012-06-20 16:38:30 -07003040 wdiFinishScanRspCb: callback for passing back the
3041 response of the finish scan operation received from the
3042 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003043
Jeff Johnson295189b2012-06-20 16:38:30 -07003044 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003045 callback
3046
Jeff Johnson295189b2012-06-20 16:38:30 -07003047 @see WDI_InitScanReq
3048 @return Result of the function call
3049*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003050WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003051WDI_FinishScanReq
3052(
3053 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
3054 WDI_FinishScanRspCb wdiFinishScanRspCb,
3055 void* pUserData
3056)
3057{
3058 WDI_EventInfoType wdiEventData;
3059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3060
3061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003062 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 ------------------------------------------------------------------------*/
3064 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3065 {
3066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3067 "WDI API call before module is initialized - Fail request");
3068
Jeff Johnsone7245742012-09-05 17:12:55 -07003069 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003070 }
3071
3072 /*------------------------------------------------------------------------
3073 Fill in Event data and post to the Main FSM
3074 ------------------------------------------------------------------------*/
3075 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003076 wdiEventData.pEventData = pwdiFinishScanParams;
3077 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
3078 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003079 wdiEventData.pUserData = pUserData;
3080
3081 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3082
3083}/*WDI_FinishScanReq*/
3084
Jeff Johnsone7245742012-09-05 17:12:55 -07003085/*========================================================================
3086
Jeff Johnson295189b2012-06-20 16:38:30 -07003087 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003088
Jeff Johnson295189b2012-06-20 16:38:30 -07003089==========================================================================*/
3090
3091/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003092 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07003093 to start an association procedure to a BSS. Upon the
3094 call of this API the WLAN DAL will pack and send a HAL
3095 Join request message to the lower RIVA sub-system if
3096 DAL is in state STARTED.
3097
3098 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003099 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003100
3101 WDI_Start must have been called.
3102
Jeff Johnsone7245742012-09-05 17:12:55 -07003103 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003105
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 wdiJoinRspCb: callback for passing back the response of
3107 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003108
Jeff Johnson295189b2012-06-20 16:38:30 -07003109 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003110 callback
3111
Jeff Johnson295189b2012-06-20 16:38:30 -07003112 @see WDI_Start
3113 @return Result of the function call
3114*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003115WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003116WDI_JoinReq
3117(
3118 WDI_JoinReqParamsType* pwdiJoinParams,
3119 WDI_JoinRspCb wdiJoinRspCb,
3120 void* pUserData
3121)
3122{
3123 WDI_EventInfoType wdiEventData;
3124 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3125
3126 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003127 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003128 ------------------------------------------------------------------------*/
3129 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3130 {
3131 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3132 "WDI API call before module is initialized - Fail request");
3133
Jeff Johnsone7245742012-09-05 17:12:55 -07003134 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003135 }
3136
3137 /*------------------------------------------------------------------------
3138 Fill in Event data and post to the Main FSM
3139 ------------------------------------------------------------------------*/
3140 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003141 wdiEventData.pEventData = pwdiJoinParams;
3142 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
3143 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003144 wdiEventData.pUserData = pUserData;
3145
3146 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3147
3148}/*WDI_JoinReq*/
3149
3150/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003151 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003152 wishes to configure the newly acquired or in process of
3153 being acquired BSS to the HW . Upon the call of this API
3154 the WLAN DAL will pack and send a HAL Config BSS request
3155 message to the lower RIVA sub-system if DAL is in state
3156 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_JoinReq must have been called.
3162
Jeff Johnsone7245742012-09-05 17:12:55 -07003163 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003164 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003165
Jeff Johnson295189b2012-06-20 16:38:30 -07003166 wdiConfigBSSRspCb: callback for passing back the
3167 response of the config BSS operation received from the
3168 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003169
Jeff Johnson295189b2012-06-20 16:38:30 -07003170 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003171 callback
3172
Jeff Johnson295189b2012-06-20 16:38:30 -07003173 @see WDI_JoinReq
3174 @return Result of the function call
3175*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003176WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003177WDI_ConfigBSSReq
3178(
3179 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
3180 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
3181 void* pUserData
3182)
3183{
3184 WDI_EventInfoType wdiEventData;
3185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3186
3187 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003188 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 ------------------------------------------------------------------------*/
3190 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3191 {
3192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3193 "WDI API call before module is initialized - Fail request");
3194
Jeff Johnsone7245742012-09-05 17:12:55 -07003195 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003196 }
3197
3198 /*------------------------------------------------------------------------
3199 Fill in Event data and post to the Main FSM
3200 ------------------------------------------------------------------------*/
3201 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003202 wdiEventData.pEventData = pwdiConfigBSSParams;
3203 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
3204 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003205 wdiEventData.pUserData = pUserData;
3206
3207 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3208
3209}/*WDI_ConfigBSSReq*/
3210
3211/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 disassociating from the BSS and wishes to notify HW.
3214 Upon the call of this API the WLAN DAL will pack and
3215 send a HAL Del BSS request message to the lower RIVA
3216 sub-system if DAL is in state STARTED.
3217
3218 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003219 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003220
3221 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
3222
Jeff Johnsone7245742012-09-05 17:12:55 -07003223 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07003224 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003225
Jeff Johnson295189b2012-06-20 16:38:30 -07003226 wdiDelBSSRspCb: callback for passing back the response
3227 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003228
Jeff Johnson295189b2012-06-20 16:38:30 -07003229 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003230 callback
3231
3232 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07003233 @return Result of the function call
3234*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003235WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003236WDI_DelBSSReq
3237(
3238 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
3239 WDI_DelBSSRspCb wdiDelBSSRspCb,
3240 void* pUserData
3241)
3242{
3243 WDI_EventInfoType wdiEventData;
3244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3245
3246 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003247 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 ------------------------------------------------------------------------*/
3249 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3250 {
3251 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3252 "WDI API call before module is initialized - Fail request");
3253
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003255 }
3256
3257 /*------------------------------------------------------------------------
3258 Fill in Event data and post to the Main FSM
3259 ------------------------------------------------------------------------*/
3260 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003261 wdiEventData.pEventData = pwdiDelBSSParams;
3262 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
3263 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003264 wdiEventData.pUserData = pUserData;
3265
3266 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3267
3268}/*WDI_DelBSSReq*/
3269
3270/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003271 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07003272 associated to a BSS and wishes to configure HW for
3273 associated state. Upon the call of this API the WLAN DAL
3274 will pack and send a HAL Post Assoc request message to
3275 the lower RIVA sub-system if DAL is in state STARTED.
3276
3277 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003279
3280 WDI_JoinReq must have been called.
3281
3282 @param wdiPostAssocReqParams: the assoc parameters as specified
3283 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003284
Jeff Johnson295189b2012-06-20 16:38:30 -07003285 wdiPostAssocRspCb: callback for passing back the
3286 response of the post assoc operation received from the
3287 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003288
Jeff Johnson295189b2012-06-20 16:38:30 -07003289 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003290 callback
3291
Jeff Johnson295189b2012-06-20 16:38:30 -07003292 @see WDI_JoinReq
3293 @return Result of the function call
3294*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003296WDI_PostAssocReq
3297(
3298 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
3299 WDI_PostAssocRspCb wdiPostAssocRspCb,
3300 void* pUserData
3301)
3302{
3303 WDI_EventInfoType wdiEventData;
3304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3305
3306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003307 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003308 ------------------------------------------------------------------------*/
3309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3310 {
3311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3312 "WDI API call before module is initialized - Fail request");
3313
Jeff Johnsone7245742012-09-05 17:12:55 -07003314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003315 }
3316
3317 /*------------------------------------------------------------------------
3318 Fill in Event data and post to the Main FSM
3319 ------------------------------------------------------------------------*/
3320 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003321 wdiEventData.pEventData = pwdiPostAssocReqParams;
3322 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
3323 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003324 wdiEventData.pUserData = pUserData;
3325
3326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3327
3328}/*WDI_PostAssocReq*/
3329
3330/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003331 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07003332 association with another STA has ended and the station
3333 must be deleted from HW. Upon the call of this API the
3334 WLAN DAL will pack and send a HAL Del STA request
3335 message to the lower RIVA sub-system if DAL is in state
3336 STARTED.
3337
3338 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003340
3341 WDI_PostAssocReq must have been called.
3342
Jeff Johnsone7245742012-09-05 17:12:55 -07003343 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07003344 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003345
Jeff Johnson295189b2012-06-20 16:38:30 -07003346 wdiDelSTARspCb: callback for passing back the response
3347 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003348
Jeff Johnson295189b2012-06-20 16:38:30 -07003349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003350 callback
3351
Jeff Johnson295189b2012-06-20 16:38:30 -07003352 @see WDI_PostAssocReq
3353 @return Result of the function call
3354*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003356WDI_DelSTAReq
3357(
3358 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
3359 WDI_DelSTARspCb wdiDelSTARspCb,
3360 void* pUserData
3361)
3362{
3363 WDI_EventInfoType wdiEventData;
3364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3365
3366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 ------------------------------------------------------------------------*/
3369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3370 {
3371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3372 "WDI API call before module is initialized - Fail request");
3373
Jeff Johnsone7245742012-09-05 17:12:55 -07003374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003375 }
3376
3377 /*------------------------------------------------------------------------
3378 Fill in Event data and post to the Main FSM
3379 ------------------------------------------------------------------------*/
3380 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003381 wdiEventData.pEventData = pwdiDelSTAParams;
3382 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
3383 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003384 wdiEventData.pUserData = pUserData;
3385
3386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3387
3388}/*WDI_DelSTAReq*/
3389
Jeff Johnsone7245742012-09-05 17:12:55 -07003390/*========================================================================
3391
Jeff Johnson295189b2012-06-20 16:38:30 -07003392 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003393
Jeff Johnson295189b2012-06-20 16:38:30 -07003394==========================================================================*/
3395
3396/**
3397 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
3398 install a BSS encryption key on the HW. Upon the call of this
3399 API the WLAN DAL will pack and send a Set BSS Key request
3400 message to the lower RIVA sub-system if DAL is in state
3401 STARTED.
3402
3403 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003404 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003405
3406 WDI_PostAssocReq must have been called.
3407
Jeff Johnsone7245742012-09-05 17:12:55 -07003408 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003409 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003410
Jeff Johnson295189b2012-06-20 16:38:30 -07003411 wdiSetBSSKeyRspCb: callback for passing back the
3412 response of the set BSS Key operation received from the
3413 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003414
Jeff Johnson295189b2012-06-20 16:38:30 -07003415 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003416 callback
3417
Jeff Johnson295189b2012-06-20 16:38:30 -07003418 @see WDI_PostAssocReq
3419 @return Result of the function call
3420*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003421WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003422WDI_SetBSSKeyReq
3423(
3424 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
3425 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
3426 void* pUserData
3427)
3428{
3429 WDI_EventInfoType wdiEventData;
3430 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3431
3432 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003433 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003434 ------------------------------------------------------------------------*/
3435 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3436 {
3437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3438 "WDI API call before module is initialized - Fail request");
3439
Jeff Johnsone7245742012-09-05 17:12:55 -07003440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003441 }
3442
3443 /*------------------------------------------------------------------------
3444 Fill in Event data and post to the Main FSM
3445 ------------------------------------------------------------------------*/
3446 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003447 wdiEventData.pEventData = pwdiSetBSSKeyParams;
3448 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
3449 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003450 wdiEventData.pUserData = pUserData;
3451
3452 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3453
3454}/*WDI_SetBSSKeyReq*/
3455
3456/**
3457 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
3458 uninstall a BSS key from HW. Upon the call of this API the
3459 WLAN DAL will pack and send a HAL Remove BSS Key request
3460 message to the lower RIVA sub-system if DAL is in state
3461 STARTED.
3462
3463 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003464 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003465
3466 WDI_SetBSSKeyReq must have been called.
3467
Jeff Johnsone7245742012-09-05 17:12:55 -07003468 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003469 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003470
Jeff Johnson295189b2012-06-20 16:38:30 -07003471 wdiRemoveBSSKeyRspCb: callback for passing back the
3472 response of the remove BSS key operation received from
3473 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003474
Jeff Johnson295189b2012-06-20 16:38:30 -07003475 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003476 callback
3477
Jeff Johnson295189b2012-06-20 16:38:30 -07003478 @see WDI_SetBSSKeyReq
3479 @return Result of the function call
3480*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003482WDI_RemoveBSSKeyReq
3483(
3484 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
3485 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
3486 void* pUserData
3487)
3488{
3489 WDI_EventInfoType wdiEventData;
3490 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3491
3492 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003493 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003494 ------------------------------------------------------------------------*/
3495 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3496 {
3497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3498 "WDI API call before module is initialized - Fail request");
3499
Jeff Johnsone7245742012-09-05 17:12:55 -07003500 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003501 }
3502
3503 /*------------------------------------------------------------------------
3504 Fill in Event data and post to the Main FSM
3505 ------------------------------------------------------------------------*/
3506 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003507 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
3508 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
3509 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003510 wdiEventData.pUserData = pUserData;
3511
3512 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3513
3514}/*WDI_RemoveBSSKeyReq*/
3515
3516
3517/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003518 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003519 ready to install a STA(ast) encryption key in HW. Upon
3520 the call of this API the WLAN DAL will pack and send a
3521 HAL Set STA Key request message to the lower RIVA
3522 sub-system if DAL is in state STARTED.
3523
3524 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003525 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003526
3527 WDI_PostAssocReq must have been called.
3528
Jeff Johnsone7245742012-09-05 17:12:55 -07003529 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003530 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003531
Jeff Johnson295189b2012-06-20 16:38:30 -07003532 wdiSetSTAKeyRspCb: callback for passing back the
3533 response of the set STA key operation received from the
3534 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003535
Jeff Johnson295189b2012-06-20 16:38:30 -07003536 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003537 callback
3538
Jeff Johnson295189b2012-06-20 16:38:30 -07003539 @see WDI_PostAssocReq
3540 @return Result of the function call
3541*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003542WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003543WDI_SetSTAKeyReq
3544(
3545 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3546 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3547 void* pUserData
3548)
3549{
3550 WDI_EventInfoType wdiEventData;
3551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3552
3553 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003554 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003555 ------------------------------------------------------------------------*/
3556 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3557 {
3558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3559 "WDI API call before module is initialized - Fail request");
3560
Jeff Johnsone7245742012-09-05 17:12:55 -07003561 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003562 }
3563
3564 /*------------------------------------------------------------------------
3565 Fill in Event data and post to the Main FSM
3566 ------------------------------------------------------------------------*/
3567 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3569 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3570 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003571 wdiEventData.pUserData = pUserData;
3572
3573 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3574
3575}/*WDI_SetSTAKeyReq*/
3576
3577
3578/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 wants to uninstall a previously set STA key in HW. Upon
3581 the call of this API the WLAN DAL will pack and send a
3582 HAL Remove STA Key request message to the lower RIVA
3583 sub-system if DAL is in state STARTED.
3584
3585 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003586 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003587
3588 WDI_SetSTAKeyReq must have been called.
3589
Jeff Johnsone7245742012-09-05 17:12:55 -07003590 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003591 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003592
Jeff Johnson295189b2012-06-20 16:38:30 -07003593 wdiRemoveSTAKeyRspCb: callback for passing back the
3594 response of the remove STA key operation received from
3595 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003596
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003598 callback
3599
Jeff Johnson295189b2012-06-20 16:38:30 -07003600 @see WDI_SetSTAKeyReq
3601 @return Result of the function call
3602*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003603WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003604WDI_RemoveSTAKeyReq
3605(
3606 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3607 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3608 void* pUserData
3609)
3610{
3611 WDI_EventInfoType wdiEventData;
3612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3613
3614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003615 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003616 ------------------------------------------------------------------------*/
3617 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3618 {
3619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3620 "WDI API call before module is initialized - Fail request");
3621
Jeff Johnsone7245742012-09-05 17:12:55 -07003622 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 }
3624
3625 /*------------------------------------------------------------------------
3626 Fill in Event data and post to the Main FSM
3627 ------------------------------------------------------------------------*/
3628 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003629 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3630 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3631 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003632 wdiEventData.pUserData = pUserData;
3633
3634 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3635
3636}/*WDI_RemoveSTAKeyReq*/
3637
3638
3639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003640 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003641 wants to install a STA Bcast encryption key on the HW.
3642 Upon the call of this API the WLAN DAL will pack and
3643 send a HAL Start request message to the lower RIVA
3644 sub-system if DAL is in state STARTED.
3645
3646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003648
3649 WDI_PostAssocReq must have been called.
3650
Jeff Johnsone7245742012-09-05 17:12:55 -07003651 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003652 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003653
Jeff Johnson295189b2012-06-20 16:38:30 -07003654 wdiSetSTABcastKeyRspCb: callback for passing back the
3655 response of the set BSS Key operation received from the
3656 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003657
Jeff Johnson295189b2012-06-20 16:38:30 -07003658 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003659 callback
3660
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 @see WDI_PostAssocReq
3662 @return Result of the function call
3663*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003664WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003665WDI_SetSTABcastKeyReq
3666(
3667 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3668 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3669 void* pUserData
3670)
3671
3672{
3673 WDI_EventInfoType wdiEventData;
3674 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3675
3676 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003677 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003678 ------------------------------------------------------------------------*/
3679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3680 {
3681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3682 "WDI API call before module is initialized - Fail request");
3683
Jeff Johnsone7245742012-09-05 17:12:55 -07003684 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003685 }
3686
3687 /*------------------------------------------------------------------------
3688 Fill in Event data and post to the Main FSM
3689 ------------------------------------------------------------------------*/
3690 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003691 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3692 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3693 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003694 wdiEventData.pUserData = pUserData;
3695
3696 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3697
3698}/*WDI_SetSTABcastKeyReq*/
3699
3700/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003701 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 MAC wants to uninstall a STA Bcast key from HW. Upon the
3703 call of this API the WLAN DAL will pack and send a HAL
3704 Remove STA Bcast Key request message to the lower RIVA
3705 sub-system if DAL is in state STARTED.
3706
3707 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003708 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003709
3710 WDI_SetSTABcastKeyReq must have been called.
3711
Jeff Johnsone7245742012-09-05 17:12:55 -07003712 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003713 parameters as specified by the Device
3714 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003715
Jeff Johnson295189b2012-06-20 16:38:30 -07003716 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3717 response of the remove STA Bcast key operation received
3718 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003719
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 callback
3722
Jeff Johnson295189b2012-06-20 16:38:30 -07003723 @see WDI_SetSTABcastKeyReq
3724 @return Result of the function call
3725*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003727WDI_RemoveSTABcastKeyReq
3728(
3729 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3730 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3731 void* pUserData
3732)
3733{
3734 WDI_EventInfoType wdiEventData;
3735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3736
3737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003739 ------------------------------------------------------------------------*/
3740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3741 {
3742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3743 "WDI API call before module is initialized - Fail request");
3744
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 }
3747
3748 /*------------------------------------------------------------------------
3749 Fill in Event data and post to the Main FSM
3750 ------------------------------------------------------------------------*/
3751 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3753 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3754 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 wdiEventData.pUserData = pUserData;
3756
3757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3758
3759}/*WDI_RemoveSTABcastKeyReq*/
3760
3761/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003762 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 MAC wants to set Max Tx Power to HW. Upon the
3764 call of this API the WLAN DAL will pack and send a HAL
3765 Remove STA Bcast Key request message to the lower RIVA
3766 sub-system if DAL is in state STARTED.
3767
3768 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003769 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003770
3771 WDI_SetSTABcastKeyReq must have been called.
3772
Jeff Johnsone7245742012-09-05 17:12:55 -07003773 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003774 parameters as specified by the Device
3775 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003776
Jeff Johnson295189b2012-06-20 16:38:30 -07003777 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3778 response of the remove STA Bcast key operation received
3779 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003780
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003782 callback
3783
Jeff Johnson295189b2012-06-20 16:38:30 -07003784 @see WDI_SetMaxTxPowerReq
3785 @return Result of the function call
3786*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003787WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003788WDI_SetMaxTxPowerReq
3789(
3790 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3791 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3792 void* pUserData
3793)
3794{
3795 WDI_EventInfoType wdiEventData;
3796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3797
3798 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003799 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003800 ------------------------------------------------------------------------*/
3801 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3802 {
3803 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3804 "WDI API call before module is initialized - Fail request");
3805
Jeff Johnsone7245742012-09-05 17:12:55 -07003806 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003807 }
3808
3809 /*------------------------------------------------------------------------
3810 Fill in Event data and post to the Main FSM
3811 ------------------------------------------------------------------------*/
3812 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003813 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3814 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3815 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 wdiEventData.pUserData = pUserData;
3817
3818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3819}
3820
schang86c22c42013-03-13 18:41:24 -07003821/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003822 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3823 MAC wants to set Max Tx Power to HW for specific band.
3824
3825 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3826
3827 wdiReqStatusCb: callback for passing back the
3828 response msg from the device
3829
3830 pUserData: user data will be passed back with the
3831 callback
3832
3833 @see WDI_SetMaxTxPowerPerBandReq
3834 @return Result of the function call
3835*/
3836WDI_Status
3837WDI_SetMaxTxPowerPerBandReq
3838(
3839 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3840 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3841 void* pUserData
3842)
3843{
3844 WDI_EventInfoType wdiEventData;
3845 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3846
3847 /*------------------------------------------------------------------------
3848 Sanity Check
3849 ------------------------------------------------------------------------*/
3850 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3851 {
3852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3853 "WDI API call before module is initialized - Fail request");
3854
3855 return WDI_STATUS_E_NOT_ALLOWED;
3856 }
3857
3858 /*------------------------------------------------------------------------
3859 Fill in Event data and post to the Main FSM
3860 ------------------------------------------------------------------------*/
3861 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3862 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3863 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3864 wdiEventData.pCBfnc = wdiReqStatusCb;
3865 wdiEventData.pUserData = pUserData;
3866
3867 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3868}
3869
3870/**
schang86c22c42013-03-13 18:41:24 -07003871 @brief WDI_SetTxPowerReq will be called when the upper
3872 MAC wants to set Tx Power to HW.
3873 In state BUSY this request will be queued. Request won't
3874 be allowed in any other state.
3875
3876
3877 @param pwdiSetTxPowerParams: set TS Power parameters
3878 BSSID and target TX Power with dbm included
3879
3880 wdiReqStatusCb: callback for passing back the response
3881
3882 pUserData: user data will be passed back with the
3883 callback
3884
3885 @return Result of the function call
3886*/
3887WDI_Status
3888WDI_SetTxPowerReq
3889(
3890 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3891 WDA_SetTxPowerRspCb wdiReqStatusCb,
3892 void* pUserData
3893)
3894{
3895 WDI_EventInfoType wdiEventData;
3896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3897
3898 /*------------------------------------------------------------------------
3899 Sanity Check
3900 ------------------------------------------------------------------------*/
3901 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3902 {
3903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3904 "WDI API call before module is initialized - Fail request");
3905
3906 return WDI_STATUS_E_NOT_ALLOWED;
3907 }
3908
3909 /*------------------------------------------------------------------------
3910 Fill in Event data and post to the Main FSM
3911 ------------------------------------------------------------------------*/
3912 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3913 wdiEventData.pEventData = pwdiSetTxPowerParams;
3914 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3915 wdiEventData.pCBfnc = wdiReqStatusCb;
3916 wdiEventData.pUserData = pUserData;
3917
3918 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3919}
3920
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003921#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003922WDI_Status
3923WDI_TSMStatsReq
3924(
3925 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3926 WDI_TsmRspCb wdiReqStatusCb,
3927 void* pUserData
3928)
3929{
3930 WDI_EventInfoType wdiEventData;
3931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003932 /*------------------------------------------------------------------------
3933 Sanity Check
3934 ------------------------------------------------------------------------*/
3935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3936 {
3937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3938 "WDI API call before module is initialized - Fail request");
3939
3940 return WDI_STATUS_E_NOT_ALLOWED;
3941 }
3942
3943 /*------------------------------------------------------------------------
3944 Fill in Event data and post to the Main FSM
3945 ------------------------------------------------------------------------*/
3946 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3947 wdiEventData.pEventData = pwdiTsmReqParams;
3948 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3949 wdiEventData.pCBfnc = wdiReqStatusCb;
3950 wdiEventData.pUserData = pUserData;
3951
3952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3953
3954}
3955#endif
3956
3957/*========================================================================
3958
3959 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003960
Jeff Johnson295189b2012-06-20 16:38:30 -07003961==========================================================================*/
3962
3963/**
3964 @brief WDI_AddTSReq will be called when the upper MAC to inform
3965 the device of a successful add TSpec negotiation. HW
3966 needs to receive the TSpec Info from the UMAC in order
3967 to configure properly the QoS data traffic. Upon the
3968 call of this API the WLAN DAL will pack and send a HAL
3969 Add TS request message to the lower RIVA sub-system if
3970 DAL is in state STARTED.
3971
3972 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003973 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003974
3975 WDI_PostAssocReq must have been called.
3976
3977 @param wdiAddTsReqParams: the add TS parameters as specified by
3978 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003979
Jeff Johnson295189b2012-06-20 16:38:30 -07003980 wdiAddTsRspCb: callback for passing back the response of
3981 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003982
Jeff Johnson295189b2012-06-20 16:38:30 -07003983 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003984 callback
3985
Jeff Johnson295189b2012-06-20 16:38:30 -07003986 @see WDI_PostAssocReq
3987 @return Result of the function call
3988*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003989WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003990WDI_AddTSReq
3991(
3992 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3993 WDI_AddTsRspCb wdiAddTsRspCb,
3994 void* pUserData
3995)
3996{
3997 WDI_EventInfoType wdiEventData;
3998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3999
4000 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004002 ------------------------------------------------------------------------*/
4003 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4004 {
4005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4006 "WDI API call before module is initialized - Fail request");
4007
Jeff Johnsone7245742012-09-05 17:12:55 -07004008 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004009 }
4010
4011 /*------------------------------------------------------------------------
4012 Fill in Event data and post to the Main FSM
4013 ------------------------------------------------------------------------*/
4014 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004015 wdiEventData.pEventData = pwdiAddTsReqParams;
4016 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
4017 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004018 wdiEventData.pUserData = pUserData;
4019
4020 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4021
4022}/*WDI_AddTSReq*/
4023
4024
4025
4026/**
4027 @brief WDI_DelTSReq will be called when the upper MAC has ended
4028 admission on a specific AC. This is to inform HW that
4029 QoS traffic parameters must be rest. Upon the call of
4030 this API the WLAN DAL will pack and send a HAL Del TS
4031 request message to the lower RIVA sub-system if DAL is
4032 in state STARTED.
4033
4034 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004035 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004036
4037 WDI_AddTSReq must have been called.
4038
4039 @param wdiDelTsReqParams: the del TS parameters as specified by
4040 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004041
Jeff Johnson295189b2012-06-20 16:38:30 -07004042 wdiDelTsRspCb: callback for passing back the response of
4043 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004044
Jeff Johnson295189b2012-06-20 16:38:30 -07004045 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004046 callback
4047
Jeff Johnson295189b2012-06-20 16:38:30 -07004048 @see WDI_AddTSReq
4049 @return Result of the function call
4050*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004051WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004052WDI_DelTSReq
4053(
4054 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
4055 WDI_DelTsRspCb wdiDelTsRspCb,
4056 void* pUserData
4057)
4058{
4059 WDI_EventInfoType wdiEventData;
4060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4061
4062 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004063 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004064 ------------------------------------------------------------------------*/
4065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4066 {
4067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4068 "WDI API call before module is initialized - Fail request");
4069
Jeff Johnsone7245742012-09-05 17:12:55 -07004070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004071 }
4072
4073 /*------------------------------------------------------------------------
4074 Fill in Event data and post to the Main FSM
4075 ------------------------------------------------------------------------*/
4076 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 wdiEventData.pEventData = pwdiDelTsReqParams;
4078 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
4079 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004080 wdiEventData.pUserData = pUserData;
4081
4082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4083
4084}/*WDI_DelTSReq*/
4085
4086
4087
4088/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004089 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004090 wishes to update the EDCA parameters used by HW for QoS
4091 data traffic. Upon the call of this API the WLAN DAL
4092 will pack and send a HAL Update EDCA Params request
4093 message to the lower RIVA sub-system if DAL is in state
4094 STARTED.
4095
4096 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004097 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004098
4099 WDI_PostAssocReq must have been called.
4100
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004103
Jeff Johnson295189b2012-06-20 16:38:30 -07004104 wdiUpdateEDCAParamsRspCb: callback for passing back the
4105 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004106
Jeff Johnson295189b2012-06-20 16:38:30 -07004107 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004108 callback
4109
Jeff Johnson295189b2012-06-20 16:38:30 -07004110 @see WDI_PostAssocReq
4111 @return Result of the function call
4112*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004113WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004114WDI_UpdateEDCAParams
4115(
4116 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
4117 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
4118 void* pUserData
4119)
4120{
4121 WDI_EventInfoType wdiEventData;
4122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4123
4124 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004125 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004126 ------------------------------------------------------------------------*/
4127 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4128 {
4129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4130 "WDI API call before module is initialized - Fail request");
4131
Jeff Johnsone7245742012-09-05 17:12:55 -07004132 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004133 }
4134
4135 /*------------------------------------------------------------------------
4136 Fill in Event data and post to the Main FSM
4137 ------------------------------------------------------------------------*/
4138 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004139 wdiEventData.pEventData = pwdiUpdateEDCAParams;
4140 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
4141 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004142 wdiEventData.pUserData = pUserData;
4143
4144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4145
4146}/*WDI_UpdateEDCAParams*/
4147
4148
4149/**
4150 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
4151 successfully a BA session and needs to notify the HW for
4152 the appropriate settings to take place. Upon the call of
4153 this API the WLAN DAL will pack and send a HAL Add BA
4154 request message to the lower RIVA sub-system if DAL is
4155 in state STARTED.
4156
4157 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004158 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004159
4160 WDI_PostAssocReq must have been called.
4161
4162 @param wdiAddBAReqParams: the add BA parameters as specified by
4163 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004164
Jeff Johnson295189b2012-06-20 16:38:30 -07004165 wdiAddBARspCb: callback for passing back the response of
4166 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004167
Jeff Johnson295189b2012-06-20 16:38:30 -07004168 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 callback
4170
Jeff Johnson295189b2012-06-20 16:38:30 -07004171 @see WDI_PostAssocReq
4172 @return Result of the function call
4173*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004174WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004175WDI_AddBASessionReq
4176(
4177 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
4178 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
4179 void* pUserData
4180)
4181{
4182 WDI_EventInfoType wdiEventData;
4183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4184
4185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004186 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 ------------------------------------------------------------------------*/
4188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4189 {
4190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4191 "WDI API call before module is initialized - Fail request");
4192
Jeff Johnsone7245742012-09-05 17:12:55 -07004193 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 }
4195
4196 /*------------------------------------------------------------------------
4197 Fill in Event data and post to the Main FSM
4198 ------------------------------------------------------------------------*/
4199 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 wdiEventData.pEventData = pwdiAddBASessionReqParams;
4201 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
4202 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004203 wdiEventData.pUserData = pUserData;
4204
4205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4206
4207}/*WDI_AddBASessionReq*/
4208
4209/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004210 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07004211 inform HW that it has deleted a previously created BA
4212 session. Upon the call of this API the WLAN DAL will
4213 pack and send a HAL Del BA request message to the lower
4214 RIVA sub-system if DAL is in state STARTED.
4215
4216 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004218
4219 WDI_AddBAReq must have been called.
4220
4221 @param wdiDelBAReqParams: the del BA parameters as specified by
4222 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004223
Jeff Johnson295189b2012-06-20 16:38:30 -07004224 wdiDelBARspCb: callback for passing back the response of
4225 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004226
Jeff Johnson295189b2012-06-20 16:38:30 -07004227 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004228 callback
4229
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 @see WDI_AddBAReq
4231 @return Result of the function call
4232*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004233WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004234WDI_DelBAReq
4235(
4236 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
4237 WDI_DelBARspCb wdiDelBARspCb,
4238 void* pUserData
4239)
4240{
4241 WDI_EventInfoType wdiEventData;
4242 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4243
4244 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004245 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004246 ------------------------------------------------------------------------*/
4247 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4248 {
4249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4250 "WDI API call before module is initialized - Fail request");
4251
Jeff Johnsone7245742012-09-05 17:12:55 -07004252 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004253 }
4254
4255 /*------------------------------------------------------------------------
4256 Fill in Event data and post to the Main FSM
4257 ------------------------------------------------------------------------*/
4258 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004259 wdiEventData.pEventData = pwdiDelBAReqParams;
4260 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
4261 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 wdiEventData.pUserData = pUserData;
4263
4264 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4265
4266}/*WDI_DelBAReq*/
4267
Jeff Johnsone7245742012-09-05 17:12:55 -07004268/*========================================================================
4269
Jeff Johnson295189b2012-06-20 16:38:30 -07004270 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07004271
Jeff Johnson295189b2012-06-20 16:38:30 -07004272==========================================================================*/
4273
4274/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004275 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004276 wants to set the power save related configurations of
4277 the WLAN Device. Upon the call of this API the WLAN DAL
4278 will pack and send a HAL Update CFG request message to
4279 the lower RIVA sub-system if DAL is in state STARTED.
4280
4281 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004283
4284 WDI_Start must have been called.
4285
Jeff Johnsone7245742012-09-05 17:12:55 -07004286 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004287 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004288
Jeff Johnson295189b2012-06-20 16:38:30 -07004289 wdiSetPwrSaveCfgCb: callback for passing back the
4290 response of the set power save cfg operation received
4291 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004292
Jeff Johnson295189b2012-06-20 16:38:30 -07004293 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004294 callback
4295
Jeff Johnson295189b2012-06-20 16:38:30 -07004296 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07004297 @return Result of the function call
4298*/
4299WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004300WDI_SetPwrSaveCfgReq
4301(
4302 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
4303 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
4304 void* pUserData
4305)
4306{
4307 WDI_EventInfoType wdiEventData;
4308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4309
4310 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004311 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004312 ------------------------------------------------------------------------*/
4313 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4314 {
4315 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4316 "WDI API call before module is initialized - Fail request");
4317
Jeff Johnsone7245742012-09-05 17:12:55 -07004318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 }
4320
4321 /*------------------------------------------------------------------------
4322 Fill in Event data and post to the Main FSM
4323 ------------------------------------------------------------------------*/
4324 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004325 wdiEventData.pEventData = pwdiPowerSaveCfg;
4326 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
4327 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004328 wdiEventData.pUserData = pUserData;
4329
4330 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4331
4332}/*WDI_SetPwrSaveCfgReq*/
4333
4334/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004335 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004336 request the device to get into IMPS power state. Upon
4337 the call of this API the WLAN DAL will send a HAL Enter
4338 IMPS request message to the lower RIVA sub-system if DAL
4339 is in state STARTED.
4340
4341 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004342 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004343
Jeff Johnsone7245742012-09-05 17:12:55 -07004344
4345 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004346 response of the Enter IMPS operation received from the
4347 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004348
Jeff Johnson295189b2012-06-20 16:38:30 -07004349 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 callback
4351
Jeff Johnson295189b2012-06-20 16:38:30 -07004352 @see WDI_Start
4353 @return Result of the function call
4354*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004355WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004356WDI_EnterImpsReq
4357(
Mihir Shetea4306052014-03-25 00:02:54 +05304358 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004359 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
4360 void* pUserData
4361)
4362{
4363 WDI_EventInfoType wdiEventData;
4364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4365
4366 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004368 ------------------------------------------------------------------------*/
4369 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4370 {
4371 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4372 "WDI API call before module is initialized - Fail request");
4373
Jeff Johnsone7245742012-09-05 17:12:55 -07004374 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004375 }
4376
4377 /*------------------------------------------------------------------------
4378 Fill in Event data and post to the Main FSM
4379 ------------------------------------------------------------------------*/
4380 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05304381 wdiEventData.pEventData = pwdiEnterImpsReqParams;
4382 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004383 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004384 wdiEventData.pUserData = pUserData;
4385
4386 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4387
4388}/*WDI_EnterImpsReq*/
4389
4390/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004391 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004392 request the device to get out of IMPS power state. Upon
4393 the call of this API the WLAN DAL will send a HAL Exit
4394 IMPS request message to the lower RIVA sub-system if DAL
4395 is in state STARTED.
4396
4397 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004398 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004399
Jeff Johnson295189b2012-06-20 16:38:30 -07004400
Jeff Johnsone7245742012-09-05 17:12:55 -07004401
4402 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07004403 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004404
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004406 callback
4407
Jeff Johnson295189b2012-06-20 16:38:30 -07004408 @see WDI_Start
4409 @return Result of the function call
4410*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004411WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004412WDI_ExitImpsReq
4413(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05304414 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004415 WDI_ExitImpsRspCb wdiExitImpsRspCb,
4416 void* pUserData
4417)
4418{
4419 WDI_EventInfoType wdiEventData;
4420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4421
4422 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004423 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004424 ------------------------------------------------------------------------*/
4425 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4426 {
4427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4428 "WDI API call before module is initialized - Fail request");
4429
Jeff Johnsone7245742012-09-05 17:12:55 -07004430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004431 }
4432
4433 /*------------------------------------------------------------------------
4434 Fill in Event data and post to the Main FSM
4435 ------------------------------------------------------------------------*/
4436 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05304437 wdiEventData.pEventData = pwdiExitImpsReqParams;
4438 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004439 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004440 wdiEventData.pUserData = pUserData;
4441
4442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4443
4444}/*WDI_ExitImpsReq*/
4445
4446/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004447 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004448 request the device to get into BMPS power state. Upon
4449 the call of this API the WLAN DAL will pack and send a
4450 HAL Enter BMPS request message to the lower RIVA
4451 sub-system if DAL is in state STARTED.
4452
4453 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004454 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004455
4456 WDI_PostAssocReq must have been called.
4457
Jeff Johnsone7245742012-09-05 17:12:55 -07004458 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004459 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004460
Jeff Johnson295189b2012-06-20 16:38:30 -07004461 wdiEnterBmpsRspCb: callback for passing back the
4462 response of the Enter BMPS operation received from the
4463 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004464
Jeff Johnson295189b2012-06-20 16:38:30 -07004465 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004466 callback
4467
Jeff Johnson295189b2012-06-20 16:38:30 -07004468 @see WDI_PostAssocReq
4469 @return Result of the function call
4470*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004471WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004472WDI_EnterBmpsReq
4473(
4474 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
4475 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
4476 void* pUserData
4477)
4478{
4479 WDI_EventInfoType wdiEventData;
4480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4481
4482 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004483 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004484 ------------------------------------------------------------------------*/
4485 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4486 {
4487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4488 "WDI API call before module is initialized - Fail request");
4489
Jeff Johnsone7245742012-09-05 17:12:55 -07004490 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004491 }
4492
4493 /*------------------------------------------------------------------------
4494 Fill in Event data and post to the Main FSM
4495 ------------------------------------------------------------------------*/
4496 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004497 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
4498 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
4499 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004500 wdiEventData.pUserData = pUserData;
4501
4502 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4503
4504}/*WDI_EnterBmpsReq*/
4505
4506/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004507 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004508 request the device to get out of BMPS power state. Upon
4509 the call of this API the WLAN DAL will pack and send a
4510 HAL Exit BMPS request message to the lower RIVA
4511 sub-system if DAL is in state STARTED.
4512
4513 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004514 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004515
4516 WDI_PostAssocReq must have been called.
4517
Jeff Johnsone7245742012-09-05 17:12:55 -07004518 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004519 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004520
Jeff Johnson295189b2012-06-20 16:38:30 -07004521 wdiExitBmpsRspCb: callback for passing back the response
4522 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004523
Jeff Johnson295189b2012-06-20 16:38:30 -07004524 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004525 callback
4526
Jeff Johnson295189b2012-06-20 16:38:30 -07004527 @see WDI_PostAssocReq
4528 @return Result of the function call
4529*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004530WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004531WDI_ExitBmpsReq
4532(
4533 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4534 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4535 void* pUserData
4536)
4537{
4538 WDI_EventInfoType wdiEventData;
4539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4540
4541 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004542 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004543 ------------------------------------------------------------------------*/
4544 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4545 {
4546 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4547 "WDI API call before module is initialized - Fail request");
4548
Jeff Johnsone7245742012-09-05 17:12:55 -07004549 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004550 }
4551
4552 /*------------------------------------------------------------------------
4553 Fill in Event data and post to the Main FSM
4554 ------------------------------------------------------------------------*/
4555 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004556 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4557 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4558 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004559 wdiEventData.pUserData = pUserData;
4560
4561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4562
4563}/*WDI_ExitBmpsReq*/
4564
4565/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004566 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004567 request the device to get into UAPSD power state. Upon
4568 the call of this API the WLAN DAL will pack and send a
4569 HAL Enter UAPSD request message to the lower RIVA
4570 sub-system if DAL is in state STARTED.
4571
4572 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004573 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004574
4575 WDI_PostAssocReq must have been called.
4576 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004577
4578 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004579 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004580
Jeff Johnson295189b2012-06-20 16:38:30 -07004581 wdiEnterUapsdRspCb: callback for passing back the
4582 response of the Enter UAPSD operation received from the
4583 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004584
Jeff Johnson295189b2012-06-20 16:38:30 -07004585 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004586 callback
4587
Jeff Johnson295189b2012-06-20 16:38:30 -07004588 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4589 @return Result of the function call
4590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004592WDI_EnterUapsdReq
4593(
4594 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4595 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4596 void* pUserData
4597)
4598{
4599 WDI_EventInfoType wdiEventData;
4600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4601
4602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004604 ------------------------------------------------------------------------*/
4605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4606 {
4607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4608 "WDI API call before module is initialized - Fail request");
4609
Jeff Johnsone7245742012-09-05 17:12:55 -07004610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004611 }
4612
4613 /*------------------------------------------------------------------------
4614 Fill in Event data and post to the Main FSM
4615 ------------------------------------------------------------------------*/
4616 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004617 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4618 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4619 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004620 wdiEventData.pUserData = pUserData;
4621
4622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4623
4624}/*WDI_EnterUapsdReq*/
4625
4626/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004627 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004628 request the device to get out of UAPSD power state. Upon
4629 the call of this API the WLAN DAL will send a HAL Exit
4630 UAPSD request message to the lower RIVA sub-system if
4631 DAL is in state STARTED.
4632
4633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004635
4636 WDI_PostAssocReq must have been called.
4637
Jeff Johnsone7245742012-09-05 17:12:55 -07004638 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004639 response of the Exit UAPSD operation received from the
4640 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004641
Jeff Johnson295189b2012-06-20 16:38:30 -07004642 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004643 callback
4644
Jeff Johnson295189b2012-06-20 16:38:30 -07004645 @see WDI_PostAssocReq
4646 @return Result of the function call
4647*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004648WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004649WDI_ExitUapsdReq
4650(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004651 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004652 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4653 void* pUserData
4654)
4655{
4656 WDI_EventInfoType wdiEventData;
4657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4658
4659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004660 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004661 ------------------------------------------------------------------------*/
4662 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4663 {
4664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4665 "WDI API call before module is initialized - Fail request");
4666
Jeff Johnsone7245742012-09-05 17:12:55 -07004667 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004668 }
4669
4670 /*------------------------------------------------------------------------
4671 Fill in Event data and post to the Main FSM
4672 ------------------------------------------------------------------------*/
4673 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004674 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4675 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004676 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004677 wdiEventData.pUserData = pUserData;
4678
4679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4680
4681}/*WDI_ExitUapsdReq*/
4682
4683/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004684 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004685 MAC wants to set the UAPSD related configurations
4686 of an associated STA (while acting as an AP) to the WLAN
4687 Device. Upon the call of this API the WLAN DAL will pack
4688 and send a HAL Update UAPSD params request message to
4689 the lower RIVA sub-system if DAL is in state STARTED.
4690
4691 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004692 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004693
4694 WDI_ConfigBSSReq must have been called.
4695
Jeff Johnsone7245742012-09-05 17:12:55 -07004696 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004697 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004698
Jeff Johnson295189b2012-06-20 16:38:30 -07004699 wdiUpdateUapsdParamsCb: callback for passing back the
4700 response of the update UAPSD params operation received
4701 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004702
Jeff Johnson295189b2012-06-20 16:38:30 -07004703 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004704 callback
4705
Jeff Johnson295189b2012-06-20 16:38:30 -07004706 @see WDI_ConfigBSSReq
4707 @return Result of the function call
4708*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004709WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004710WDI_UpdateUapsdParamsReq
4711(
4712 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4713 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4714 void* pUserData
4715)
4716{
4717 WDI_EventInfoType wdiEventData;
4718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4719
4720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004722 ------------------------------------------------------------------------*/
4723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4724 {
4725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4726 "WDI API call before module is initialized - Fail request");
4727
Jeff Johnsone7245742012-09-05 17:12:55 -07004728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004729 }
4730
4731 /*------------------------------------------------------------------------
4732 Fill in Event data and post to the Main FSM
4733 ------------------------------------------------------------------------*/
4734 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004735 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004736 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004737 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004738 wdiEventData.pUserData = pUserData;
4739
4740 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4741
4742}/*WDI_UpdateUapsdParamsReq*/
4743
4744/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004745 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004746 MAC wants to set the UAPSD related configurations before
4747 requesting for enter UAPSD power state to the WLAN
4748 Device. Upon the call of this API the WLAN DAL will pack
4749 and send a HAL Set UAPSD params request message to
4750 the lower RIVA sub-system if DAL is in state STARTED.
4751
4752 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004753 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004754
4755 WDI_PostAssocReq must have been called.
4756
4757 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4758 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004759
Jeff Johnson295189b2012-06-20 16:38:30 -07004760 wdiSetUapsdAcParamsCb: callback for passing back the
4761 response of the set UAPSD params operation received from
4762 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004763
Jeff Johnson295189b2012-06-20 16:38:30 -07004764 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004765 callback
4766
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 @see WDI_PostAssocReq
4768 @return Result of the function call
4769*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004770WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004771WDI_SetUapsdAcParamsReq
4772(
4773 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4774 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4775 void* pUserData
4776)
4777{
4778 WDI_EventInfoType wdiEventData;
4779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4780
4781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 ------------------------------------------------------------------------*/
4784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4785 {
4786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4787 "WDI API call before module is initialized - Fail request");
4788
Jeff Johnsone7245742012-09-05 17:12:55 -07004789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004790 }
4791
4792 /*------------------------------------------------------------------------
4793 Fill in Event data and post to the Main FSM
4794 ------------------------------------------------------------------------*/
4795 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004796 wdiEventData.pEventData = pwdiUapsdInfo;
4797 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4798 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004799 wdiEventData.pUserData = pUserData;
4800
4801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4802
4803}/*WDI_SetUapsdAcParamsReq*/
4804
4805/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304806 @brief WDI_FWLoggingDXEdoneInd
4807
4808 FW Logging DXE done Indication from the upper layer will be sent
4809 down to HAL
4810
4811 @param WDI_FWLoggingDXEdoneIndInfoType
4812
4813 @see
4814
4815 @return Status of the request
4816*/
4817WDI_Status
4818WDI_FWLoggingDXEdoneInd
4819(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304820 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304821)
4822{
4823
4824 WDI_EventInfoType wdiEventData;
4825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4826
4827 /*------------------------------------------------------------------------
4828 Sanity Check
4829 ------------------------------------------------------------------------*/
4830 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4831 {
4832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4833 "WDI API call before module is initialized - Fail request");
4834
4835 return WDI_STATUS_E_NOT_ALLOWED;
4836 }
4837
4838 /*------------------------------------------------------------------------
4839 Fill in Event data and post to the Main FSM
4840 ------------------------------------------------------------------------*/
4841 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304842 wdiEventData.pEventData = (void *)&data;
4843 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304844 wdiEventData.pCBfnc = NULL;
4845 wdiEventData.pUserData = NULL;
4846
4847 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4848
4849}/*WDI_FWLoggingDXEdoneInd*/
4850
4851/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304852 @brief WDI_GetFrameLogReq will be called when the upper
4853 MAC wants to initialize frame logging. Upon the call of
4854 this API the WLAN DAL will pack and send a HAL
4855 Frame logging init request message to
4856 the lower RIVA sub-system.
4857
4858 In state BUSY this request will be queued. Request won't
4859 be allowed in any other state.
4860
4861
4862 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4863 as specified by the Device Interface
4864
4865 wdiGetFrameLogRspCb: callback for passing back the
4866 response of the frame logging init operation received
4867 from the device
4868
4869 pUserData: user data will be passed back with the
4870 callback
4871
4872 @return Result of the function call
4873*/
4874WDI_Status
4875WDI_GetFrameLogReq
4876(
4877 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4878 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4879 void* pUserData
4880)
4881{
4882 WDI_EventInfoType wdiEventData;
4883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4884
4885 /*------------------------------------------------------------------------
4886 Sanity Check
4887 ------------------------------------------------------------------------*/
4888 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4889 {
4890 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4891 "WDI API call before module is initialized - Fail request");
4892
4893 return WDI_STATUS_E_NOT_ALLOWED;
4894 }
4895
4896 /*------------------------------------------------------------------------
4897 Fill in Event data and post to the Main FSM
4898 ------------------------------------------------------------------------*/
4899 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4900 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4901 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4902 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4903 wdiEventData.pUserData = pUserData;
4904
4905 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4906}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304907
4908
4909/**
4910 @brief WDI_FatalEventLogsReq will be called when the upper
4911 MAC wants to send the flush command. Upon the call of
4912 this API the WLAN DAL will pack and send a HAL
4913 Fatal Event Req message to the lower RIVA sub-system.
4914
4915 In state BUSY this request will be queued. Request won't
4916 be allowed in any other state.
4917
4918
4919 @param pwdiFlushLogsReqInfo: the Flush Logs params
4920 as specified by the Device Interface
4921
4922 wdiFlushLogsRspCb: callback for passing back the
4923 response of the Flush Logs operation received
4924 from the device
4925
4926 pUserData: user data will be passed back with the
4927 callback
4928
4929 @return Result of the function call
4930*/
4931
4932WDI_Status
4933WDI_FatalEventLogsReq
4934(
4935 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4936 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4937 void* pUserData
4938)
4939{
4940 WDI_EventInfoType wdiEventData;
4941
4942 /*------------------------------------------------------------------------
4943 Sanity Check
4944 ------------------------------------------------------------------------*/
4945 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4946 {
4947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4948 "WDI API call before module is initialized - Fail request");
4949
4950 return WDI_STATUS_E_NOT_ALLOWED;
4951 }
4952
4953 /*------------------------------------------------------------------------
4954 Fill in Event data and post to the Main FSM
4955 ------------------------------------------------------------------------*/
4956 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4957 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4958 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4959 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4960 wdiEventData.pUserData = pUserData;
4961
4962 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4963
4964}
4965
4966
Siddharth Bhal64246172015-02-27 01:04:37 +05304967/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304968 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304969 MAC wants to initialize frame logging. Upon the call of
4970 this API the WLAN DAL will pack and send a HAL
4971 Frame logging init request message to
4972 the lower RIVA sub-system.
4973
4974 In state BUSY this request will be queued. Request won't
4975 be allowed in any other state.
4976
4977
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304978 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304979 as specified by the Device Interface
4980
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304981 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304982 response of the frame logging init operation received
4983 from the device
4984
4985 pUserData: user data will be passed back with the
4986 callback
4987
4988 @return Result of the function call
4989*/
4990WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304991WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304992(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304993 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4994 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304995 void* pUserData
4996)
4997{
4998 WDI_EventInfoType wdiEventData;
4999
5000 /*------------------------------------------------------------------------
5001 Sanity Check
5002 ------------------------------------------------------------------------*/
5003 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5004 {
5005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5006 "WDI API call before module is initialized - Fail request");
5007
5008 return WDI_STATUS_E_NOT_ALLOWED;
5009 }
5010
5011 /*------------------------------------------------------------------------
5012 Fill in Event data and post to the Main FSM
5013 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05305014 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
5015 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
5016 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
5017 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05305018 wdiEventData.pUserData = pUserData;
5019
5020 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5021}
5022
c_manjeecfd1efb2015-09-25 19:32:34 +05305023
5024/**
5025 @brief WDI_FwrMemDumpReq will be called when the upper
5026 MAC wants to get fwr mem dump. Upon the call of
5027 this API the WLAN DAL will pack and send a HAL
5028 Frame logging init request message to
5029 the lower RIVA sub-system.
5030
5031 In state BUSY this request will be queued. Request won't
5032 be allowed in any other state.
5033
5034
5035 @param pWdiFwrMemDumpReq: the fwr mem dump req params
5036 as specified by the Device Interface
5037
5038 wdiFWLoggingInitReqCb: callback for passing back the
5039 response of the frame logging init operation received
5040 from the device
5041
5042 pUserData: user data will be passed back with the
5043 callback
5044
5045 @return Result of the function call
5046*/
5047
5048WDI_Status
5049WDI_FwrMemDumpReq
5050
5051(
5052 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
5053 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
5054 void* pUserData
5055)
5056{
5057 WDI_EventInfoType wdiEventData;
5058
5059 /*------------------------------------------------------------------------
5060 Sanity Check
5061 ------------------------------------------------------------------------*/
5062 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5063 {
5064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5065 "WDI API call before module is initialized - Fail request");
5066
5067 return WDI_STATUS_E_NOT_ALLOWED;
5068 }
5069
5070 /*------------------------------------------------------------------------
5071 Fill in Event data and post to the Main FSM
5072 ------------------------------------------------------------------------*/
5073 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
5074 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
5075 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
5076 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
5077 wdiEventData.pUserData = pUserData;
5078
5079 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5080}
5081
5082
5083
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05305084/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05305085 @brief WDI_StartRssiMonitorReq will be called when the upper
5086 MAC wants to initialize Rssi Monitor on a bssid.
5087 Upon the call of this API the WLAN DAL will pack and
5088 send a HAL Rssi Monitor init request message to
5089 the lower RIVA sub-system.
5090
5091 In state BUSY this request will be queued. Request won't
5092 be allowed in any other state.
5093
5094
5095 @param pwdiRssiMonitorInfo: the Rssi Monitor params
5096 as specified by the Device Interface
5097
5098 wdiRssiMonitorStartRspCb: callback for passing back the
5099 response of the rssi monitor operation received
5100 from the device
5101
5102 pUserData: user data will be passed back with the
5103 callback
5104
5105 @return Result of the function call
5106*/
5107WDI_Status
5108WDI_StartRssiMonitorReq
5109(
5110 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
5111 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
5112 void* pUserData
5113)
5114{
5115 WDI_EventInfoType wdiEventData;
5116
5117 /*------------------------------------------------------------------------
5118 Sanity Check
5119 ------------------------------------------------------------------------*/
5120 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5121 {
5122 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5123 "WDI API call before module is initialized - Fail request");
5124
5125 return WDI_STATUS_E_NOT_ALLOWED;
5126 }
5127
5128 /*------------------------------------------------------------------------
5129 Fill in Event data and post to the Main FSM
5130 ------------------------------------------------------------------------*/
5131 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
5132 wdiEventData.pEventData = pwdiRssiMonitorInfo;
5133 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
5134 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
5135 wdiEventData.pUserData = pUserData;
5136
5137 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5138}
5139
5140/**
5141 @brief WDI_StopRssiMonitorReq will be called when the upper
5142 MAC wants to stop Rssi Monitor on a bssid.
5143 Upon the call of this API the WLAN DAL will pack and
5144 send a HAL Rssi Monitor stop request message to
5145 the lower RIVA sub-system.
5146
5147 In state BUSY this request will be queued. Request won't
5148 be allowed in any other state.
5149
5150
5151 @param pwdiRssiMonitorInfo: the Rssi Monitor params
5152 as specified by the Device Interface
5153
5154 wdiRssiMonitorStopRspCb: callback for passing back the
5155 response of the rssi monitor operation received
5156 from the device
5157
5158 pUserData: user data will be passed back with the
5159 callback
5160
5161 @return Result of the function call
5162*/
5163WDI_Status
5164WDI_StopRssiMonitorReq
5165(
5166 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
5167 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
5168 void* pUserData
5169)
5170{
5171 WDI_EventInfoType wdiEventData;
5172
5173 /*------------------------------------------------------------------------
5174 Sanity Check
5175 ------------------------------------------------------------------------*/
5176 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5177 {
5178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5179 "WDI API call before module is initialized - Fail request");
5180
5181 return WDI_STATUS_E_NOT_ALLOWED;
5182 }
5183
5184 /*------------------------------------------------------------------------
5185 Fill in Event data and post to the Main FSM
5186 ------------------------------------------------------------------------*/
5187 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
5188 wdiEventData.pEventData = pwdiRssiMonitorInfo;
5189 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
5190 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
5191 wdiEventData.pUserData = pUserData;
5192
5193 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5194}
5195
5196
5197/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 MAC wants to set/reset the RXP filters for received pkts
5200 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
5201 and send a HAL configure RXP filter request message to
5202 the lower RIVA sub-system.
5203
5204 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005205 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005206
Jeff Johnsone7245742012-09-05 17:12:55 -07005207
5208 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07005209 filter as specified by the Device
5210 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005211
Jeff Johnson295189b2012-06-20 16:38:30 -07005212 wdiConfigureRxpFilterCb: callback for passing back the
5213 response of the configure RXP filter operation received
5214 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005215
Jeff Johnson295189b2012-06-20 16:38:30 -07005216 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 callback
5218
Jeff Johnson295189b2012-06-20 16:38:30 -07005219 @return Result of the function call
5220*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005221WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005222WDI_ConfigureRxpFilterReq
5223(
5224 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
5225 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
5226 void* pUserData
5227)
5228{
5229 WDI_EventInfoType wdiEventData;
5230 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5231
5232 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005233 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005234 ------------------------------------------------------------------------*/
5235 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5236 {
5237 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5238 "WDI API call before module is initialized - Fail request");
5239
Jeff Johnsone7245742012-09-05 17:12:55 -07005240 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005241 }
5242
5243 /*------------------------------------------------------------------------
5244 Fill in Event data and post to the Main FSM
5245 ------------------------------------------------------------------------*/
5246 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005247 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
5248 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
5249 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 wdiEventData.pUserData = pUserData;
5251
5252 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5253}/*WDI_ConfigureRxpFilterReq*/
5254
5255/**
5256 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
5257 wants to set the beacon filters while in power save.
5258 Upon the call of this API the WLAN DAL will pack and
5259 send a Beacon filter request message to the
5260 lower RIVA sub-system.
5261
5262 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005263 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005264
Jeff Johnsone7245742012-09-05 17:12:55 -07005265
5266 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07005267 filter as specified by the Device
5268 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005269
Jeff Johnson295189b2012-06-20 16:38:30 -07005270 wdiBeaconFilterCb: callback for passing back the
5271 response of the set beacon filter operation received
5272 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005273
Jeff Johnson295189b2012-06-20 16:38:30 -07005274 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005275 callback
5276
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 @return Result of the function call
5278*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005279WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005280WDI_SetBeaconFilterReq
5281(
5282 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
5283 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
5284 void* pUserData
5285)
5286{
5287 WDI_EventInfoType wdiEventData;
5288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5289
5290 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005291 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 ------------------------------------------------------------------------*/
5293 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5294 {
5295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5296 "WDI API call before module is initialized - Fail request");
5297
Jeff Johnsone7245742012-09-05 17:12:55 -07005298 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005299 }
5300
5301 /*------------------------------------------------------------------------
5302 Fill in Event data and post to the Main FSM
5303 ------------------------------------------------------------------------*/
5304 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005305 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005306 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 wdiEventData.pUserData = pUserData;
5309
5310 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5311}/*WDI_SetBeaconFilterReq*/
5312
5313/**
5314 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
5315 wants to remove the beacon filter for particular IE
5316 while in power save. Upon the call of this API the WLAN
5317 DAL will pack and send a remove Beacon filter request
5318 message to the lower RIVA sub-system.
5319
5320 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005321 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005322
Jeff Johnsone7245742012-09-05 17:12:55 -07005323
5324 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07005325 filter as specified by the Device
5326 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005327
Jeff Johnson295189b2012-06-20 16:38:30 -07005328 wdiBeaconFilterCb: callback for passing back the
5329 response of the remove beacon filter operation received
5330 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005331
Jeff Johnson295189b2012-06-20 16:38:30 -07005332 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005333 callback
5334
Jeff Johnson295189b2012-06-20 16:38:30 -07005335 @return Result of the function call
5336*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005337WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005338WDI_RemBeaconFilterReq
5339(
5340 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
5341 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
5342 void* pUserData
5343)
5344{
5345 WDI_EventInfoType wdiEventData;
5346 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5347
5348 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005349 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005350 ------------------------------------------------------------------------*/
5351 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5352 {
5353 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5354 "WDI API call before module is initialized - Fail request");
5355
Jeff Johnsone7245742012-09-05 17:12:55 -07005356 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005357 }
5358
5359 /*------------------------------------------------------------------------
5360 Fill in Event data and post to the Main FSM
5361 ------------------------------------------------------------------------*/
5362 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005363 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005364 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005366 wdiEventData.pUserData = pUserData;
5367
5368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5369}/*WDI_RemBeaconFilterReq*/
5370
5371/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005372 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07005373 MAC wants to set the RSSI thresholds related
5374 configurations while in power save. Upon the call of
5375 this API the WLAN DAL will pack and send a HAL Set RSSI
5376 thresholds request message to the lower RIVA
5377 sub-system if DAL is in state STARTED.
5378
5379 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005380 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005381
5382 WDI_PostAssocReq must have been called.
5383
5384 @param pwdiUapsdInfo: the UAPSD parameters as specified by
5385 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005386
Jeff Johnson295189b2012-06-20 16:38:30 -07005387 wdiSetUapsdAcParamsCb: callback for passing back the
5388 response of the set UAPSD params operation received from
5389 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005390
Jeff Johnson295189b2012-06-20 16:38:30 -07005391 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 callback
5393
Jeff Johnson295189b2012-06-20 16:38:30 -07005394 @see WDI_PostAssocReq
5395 @return Result of the function call
5396*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005397WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005398WDI_SetRSSIThresholdsReq
5399(
5400 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
5401 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
5402 void* pUserData
5403)
5404{
5405 WDI_EventInfoType wdiEventData;
5406 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5407
5408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005409 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005410 ------------------------------------------------------------------------*/
5411 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5412 {
5413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5414 "WDI API call before module is initialized - Fail request");
5415
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005417 }
5418
5419 /*------------------------------------------------------------------------
5420 Fill in Event data and post to the Main FSM
5421 ------------------------------------------------------------------------*/
5422 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005424 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005425 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 wdiEventData.pUserData = pUserData;
5427
5428 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5429}/* WDI_SetRSSIThresholdsReq*/
5430
5431/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005432 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 wants to set the filter to minimize unnecessary host
5434 wakeup due to broadcast traffic while in power save.
5435 Upon the call of this API the WLAN DAL will pack and
5436 send a HAL host offload request message to the
5437 lower RIVA sub-system if DAL is in state STARTED.
5438
5439 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005440 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005441
5442 WDI_PostAssocReq must have been called.
5443
Jeff Johnsone7245742012-09-05 17:12:55 -07005444 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005445 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005446
Jeff Johnson295189b2012-06-20 16:38:30 -07005447 wdiHostOffloadCb: callback for passing back the response
5448 of the host offload operation received from the
5449 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005450
Jeff Johnson295189b2012-06-20 16:38:30 -07005451 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005452 callback
5453
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 @see WDI_PostAssocReq
5455 @return Result of the function call
5456*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005457WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005458WDI_HostOffloadReq
5459(
5460 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
5461 WDI_HostOffloadCb wdiHostOffloadCb,
5462 void* pUserData
5463)
5464{
5465 WDI_EventInfoType wdiEventData;
5466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5467
5468 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005469 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005470 ------------------------------------------------------------------------*/
5471 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5472 {
5473 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5474 "WDI API call before module is initialized - Fail request");
5475
Jeff Johnsone7245742012-09-05 17:12:55 -07005476 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005477 }
5478
5479 /*------------------------------------------------------------------------
5480 Fill in Event data and post to the Main FSM
5481 ------------------------------------------------------------------------*/
5482 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005483 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005484 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005485 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005486 wdiEventData.pUserData = pUserData;
5487
5488 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5489}/*WDI_HostOffloadReq*/
5490
5491/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005492 @brief WDI_KeepAliveReq will be called when the upper MAC
5493 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07005494 and minimize unnecessary host wakeups due to while in power save.
5495 Upon the call of this API the WLAN DAL will pack and
5496 send a HAL Keep Alive request message to the
5497 lower RIVA sub-system if DAL is in state STARTED.
5498
5499 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005500 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005501
5502 WDI_PostAssocReq must have been called.
5503
Jeff Johnsone7245742012-09-05 17:12:55 -07005504 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005505 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005506
Jeff Johnson295189b2012-06-20 16:38:30 -07005507 wdiKeepAliveCb: callback for passing back the response
5508 of the Keep Alive operation received from the
5509 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005510
Jeff Johnson295189b2012-06-20 16:38:30 -07005511 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005512 callback
5513
Jeff Johnson295189b2012-06-20 16:38:30 -07005514 @see WDI_PostAssocReq
5515 @return Result of the function call
5516*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005517WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005518WDI_KeepAliveReq
5519(
5520 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5521 WDI_KeepAliveCb wdiKeepAliveCb,
5522 void* pUserData
5523)
5524{
5525 WDI_EventInfoType wdiEventData;
5526 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5527
5528 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005529 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 ------------------------------------------------------------------------*/
5531 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5532 {
5533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5534 "WDI_KeepAliveReq: WDI API call before module "
5535 "is initialized - Fail request");
5536
Jeff Johnsone7245742012-09-05 17:12:55 -07005537 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005538 }
5539
5540 /*------------------------------------------------------------------------
5541 Fill in Event data and post to the Main FSM
5542 ------------------------------------------------------------------------*/
5543 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005544 wdiEventData.pEventData = pwdiKeepAliveParams;
5545 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5546 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005547 wdiEventData.pUserData = pUserData;
5548
5549 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5550}/*WDI_KeepAliveReq*/
5551
5552/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005553 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005554 wants to set the Wowl Bcast ptrn to minimize unnecessary
5555 host wakeup due to broadcast traffic while in power
5556 save. Upon the call of this API the WLAN DAL will pack
5557 and send a HAL Wowl Bcast ptrn request message to the
5558 lower RIVA sub-system if DAL is in state STARTED.
5559
5560 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005561 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005562
5563 WDI_PostAssocReq must have been called.
5564
Jeff Johnsone7245742012-09-05 17:12:55 -07005565 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005566 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005567
Jeff Johnson295189b2012-06-20 16:38:30 -07005568 wdiWowlAddBcPtrnCb: callback for passing back the
5569 response of the add Wowl bcast ptrn operation received
5570 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005571
Jeff Johnson295189b2012-06-20 16:38:30 -07005572 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005573 callback
5574
Jeff Johnson295189b2012-06-20 16:38:30 -07005575 @see WDI_PostAssocReq
5576 @return Result of the function call
5577*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005578WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005579WDI_WowlAddBcPtrnReq
5580(
5581 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5582 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5583 void* pUserData
5584)
5585{
5586 WDI_EventInfoType wdiEventData;
5587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5588
5589 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005590 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005591 ------------------------------------------------------------------------*/
5592 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5593 {
5594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5595 "WDI API call before module is initialized - Fail request");
5596
Jeff Johnsone7245742012-09-05 17:12:55 -07005597 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005598 }
5599
5600 /*------------------------------------------------------------------------
5601 Fill in Event data and post to the Main FSM
5602 ------------------------------------------------------------------------*/
5603 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005604 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005605 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005606 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005607 wdiEventData.pUserData = pUserData;
5608
5609 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5610}/*WDI_WowlAddBcPtrnReq*/
5611
5612/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005613 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005614 wants to clear the Wowl Bcast ptrn. Upon the call of
5615 this API the WLAN DAL will pack and send a HAL delete
5616 Wowl Bcast ptrn request message to the lower RIVA
5617 sub-system if DAL is in state STARTED.
5618
5619 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005620 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005621
5622 WDI_WowlAddBcPtrnReq must have been called.
5623
Jeff Johnsone7245742012-09-05 17:12:55 -07005624 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005625 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005626
Jeff Johnson295189b2012-06-20 16:38:30 -07005627 wdiWowlDelBcPtrnCb: callback for passing back the
5628 response of the del Wowl bcast ptrn operation received
5629 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005630
Jeff Johnson295189b2012-06-20 16:38:30 -07005631 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005632 callback
5633
Jeff Johnson295189b2012-06-20 16:38:30 -07005634 @see WDI_WowlAddBcPtrnReq
5635 @return Result of the function call
5636*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005637WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005638WDI_WowlDelBcPtrnReq
5639(
5640 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5641 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5642 void* pUserData
5643)
5644{
5645 WDI_EventInfoType wdiEventData;
5646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5647
5648 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005649 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005650 ------------------------------------------------------------------------*/
5651 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5652 {
5653 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5654 "WDI API call before module is initialized - Fail request");
5655
Jeff Johnsone7245742012-09-05 17:12:55 -07005656 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005657 }
5658
5659 /*------------------------------------------------------------------------
5660 Fill in Event data and post to the Main FSM
5661 ------------------------------------------------------------------------*/
5662 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005663 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005664 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005665 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005666 wdiEventData.pUserData = pUserData;
5667
5668 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5669}/*WDI_WowlDelBcPtrnReq*/
5670
5671/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005672 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005673 wants to enter the Wowl state to minimize unnecessary
5674 host wakeup while in power save. Upon the call of this
5675 API the WLAN DAL will pack and send a HAL Wowl enter
5676 request message to the lower RIVA sub-system if DAL is
5677 in state STARTED.
5678
5679 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005680 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005681
5682 WDI_PostAssocReq must have been called.
5683
Jeff Johnsone7245742012-09-05 17:12:55 -07005684 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005685 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005686
Jeff Johnson295189b2012-06-20 16:38:30 -07005687 wdiWowlEnterReqCb: callback for passing back the
5688 response of the enter Wowl operation received from the
5689 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005690
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 callback
5693
Jeff Johnson295189b2012-06-20 16:38:30 -07005694 @see WDI_PostAssocReq
5695 @return Result of the function call
5696*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005697WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005698WDI_WowlEnterReq
5699(
5700 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5701 WDI_WowlEnterReqCb wdiWowlEnterCb,
5702 void* pUserData
5703)
5704{
5705 WDI_EventInfoType wdiEventData;
5706 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5707
5708 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005709 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005710 ------------------------------------------------------------------------*/
5711 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5712 {
5713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5714 "WDI API call before module is initialized - Fail request");
5715
Jeff Johnsone7245742012-09-05 17:12:55 -07005716 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005717 }
5718
5719 /*------------------------------------------------------------------------
5720 Fill in Event data and post to the Main FSM
5721 ------------------------------------------------------------------------*/
5722 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005723 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005724 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005725 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005726 wdiEventData.pUserData = pUserData;
5727
5728 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5729}/*WDI_WowlEnterReq*/
5730
5731/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005732 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005733 wants to exit the Wowl state. Upon the call of this API
5734 the WLAN DAL will pack and send a HAL Wowl exit request
5735 message to the lower RIVA sub-system if DAL is in state
5736 STARTED.
5737
5738 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005739 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005740
5741 WDI_WowlEnterReq must have been called.
5742
Jeff Johnsone7245742012-09-05 17:12:55 -07005743 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005744 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005745
Jeff Johnson295189b2012-06-20 16:38:30 -07005746 wdiWowlExitReqCb: callback for passing back the response
5747 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005748
Jeff Johnson295189b2012-06-20 16:38:30 -07005749 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005750 callback
5751
Jeff Johnson295189b2012-06-20 16:38:30 -07005752 @see WDI_WowlEnterReq
5753 @return Result of the function call
5754*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005755WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005756WDI_WowlExitReq
5757(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005758 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005759 WDI_WowlExitReqCb wdiWowlExitCb,
5760 void* pUserData
5761)
5762{
5763 WDI_EventInfoType wdiEventData;
5764 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5765
5766 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005767 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005768 ------------------------------------------------------------------------*/
5769 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5770 {
5771 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5772 "WDI API call before module is initialized - Fail request");
5773
Jeff Johnsone7245742012-09-05 17:12:55 -07005774 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005775 }
5776
5777 /*------------------------------------------------------------------------
5778 Fill in Event data and post to the Main FSM
5779 ------------------------------------------------------------------------*/
5780 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005781 wdiEventData.pEventData = pwdiWowlExitParams;
5782 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005783 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005784 wdiEventData.pUserData = pUserData;
5785
5786 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5787}/*WDI_WowlExitReq*/
5788
5789/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005790 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 the upper MAC wants to dynamically adjusts the listen
5792 interval based on the WLAN/MSM activity. Upon the call
5793 of this API the WLAN DAL will pack and send a HAL
5794 configure Apps Cpu Wakeup State request message to the
5795 lower RIVA sub-system.
5796
5797 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005799
Jeff Johnsone7245742012-09-05 17:12:55 -07005800
5801 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005802 Apps Cpu Wakeup State as specified by the
5803 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005804
Jeff Johnson295189b2012-06-20 16:38:30 -07005805 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5806 back the response of the configure Apps Cpu Wakeup State
5807 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005808
Jeff Johnson295189b2012-06-20 16:38:30 -07005809 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005810 callback
5811
Jeff Johnson295189b2012-06-20 16:38:30 -07005812 @return Result of the function call
5813*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005814WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005815WDI_ConfigureAppsCpuWakeupStateReq
5816(
5817 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5818 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5819 void* pUserData
5820)
5821{
5822 WDI_EventInfoType wdiEventData;
5823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5824
5825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005826 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 ------------------------------------------------------------------------*/
5828 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5829 {
5830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5831 "WDI API call before module is initialized - Fail request");
5832
Jeff Johnsone7245742012-09-05 17:12:55 -07005833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005834 }
5835
5836 /*------------------------------------------------------------------------
5837 Fill in Event data and post to the Main FSM
5838 ------------------------------------------------------------------------*/
5839 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005840 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5841 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5842 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 wdiEventData.pUserData = pUserData;
5844
5845 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5846}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5847/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005848 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005849 to to perform a flush operation on a given AC. Upon the
5850 call of this API the WLAN DAL will pack and send a HAL
5851 Flush AC request message to the lower RIVA sub-system if
5852 DAL is in state STARTED.
5853
5854 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005855 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005856
5857 WDI_AddBAReq must have been called.
5858
Jeff Johnsone7245742012-09-05 17:12:55 -07005859 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005860 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005861
Jeff Johnson295189b2012-06-20 16:38:30 -07005862 wdiFlushAcRspCb: callback for passing back the response
5863 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005864
Jeff Johnson295189b2012-06-20 16:38:30 -07005865 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005866 callback
5867
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 @see WDI_AddBAReq
5869 @return Result of the function call
5870*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005871WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005872WDI_FlushAcReq
5873(
5874 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5875 WDI_FlushAcRspCb wdiFlushAcRspCb,
5876 void* pUserData
5877)
5878{
5879 WDI_EventInfoType wdiEventData;
5880 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5881
5882 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005883 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 ------------------------------------------------------------------------*/
5885 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5886 {
5887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5888 "WDI API call before module is initialized - Fail request");
5889
Jeff Johnsone7245742012-09-05 17:12:55 -07005890 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005891 }
5892
5893 /*------------------------------------------------------------------------
5894 Fill in Event data and post to the Main FSM
5895 ------------------------------------------------------------------------*/
5896 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005897 wdiEventData.pEventData = pwdiFlushAcReqParams;
5898 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5899 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005900 wdiEventData.pUserData = pUserData;
5901
5902 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5903
5904}/*WDI_FlushAcReq*/
5905
5906/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005907 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005908 wants to notify the lower mac on a BT AMP event. This is
5909 to inform BTC-SLM that some BT AMP event occurred. Upon
5910 the call of this API the WLAN DAL will pack and send a
5911 HAL BT AMP event request message to the lower RIVA
5912 sub-system if DAL is in state STARTED.
5913
5914 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005915 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005916
Jeff Johnsone7245742012-09-05 17:12:55 -07005917
5918 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005920
Jeff Johnson295189b2012-06-20 16:38:30 -07005921 wdiBtAmpEventRspCb: callback for passing back the
5922 response of the BT AMP event operation received from the
5923 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005924
Jeff Johnson295189b2012-06-20 16:38:30 -07005925 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005926 callback
5927
Jeff Johnson295189b2012-06-20 16:38:30 -07005928 @return Result of the function call
5929*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005930WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005931WDI_BtAmpEventReq
5932(
5933 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5934 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5935 void* pUserData
5936)
5937{
5938 WDI_EventInfoType wdiEventData;
5939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5940
5941 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005943 ------------------------------------------------------------------------*/
5944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5945 {
5946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5947 "WDI API call before module is initialized - Fail request");
5948
Jeff Johnsone7245742012-09-05 17:12:55 -07005949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005950 }
5951
5952 /*------------------------------------------------------------------------
5953 Fill in Event data and post to the Main FSM
5954 ------------------------------------------------------------------------*/
5955 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005956 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5957 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5958 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005959 wdiEventData.pUserData = pUserData;
5960
5961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5962
5963}/*WDI_BtAmpEventReq*/
5964
Jeff Johnsone7245742012-09-05 17:12:55 -07005965#ifdef FEATURE_OEM_DATA_SUPPORT
5966/**
5967 @brief WDI_Start Oem Data Req will be called when the upper MAC
5968 wants to notify the lower mac on a oem data Req event.Upon
5969 the call of this API the WLAN DAL will pack and send a
5970 HAL OEM Data Req event request message to the lower RIVA
5971 sub-system if DAL is in state STARTED.
5972
5973 In state BUSY this request will be queued. Request won't
5974 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005975
5976
Jeff Johnsone7245742012-09-05 17:12:55 -07005977
5978 @param pwdiOemDataReqParams: the Oem Data Req as
5979 specified by the Device Interface
5980
5981 wdiStartOemDataRspCb: callback for passing back the
5982 response of the Oem Data Req received from the
5983 device
5984
5985 pUserData: user data will be passed back with the
5986 callback
5987
5988 @return Result of the function call
5989*/
5990WDI_Status
5991WDI_StartOemDataReq
5992(
5993 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5994 WDI_oemDataRspCb wdiOemDataRspCb,
5995 void* pUserData
5996)
5997{
5998 WDI_EventInfoType wdiEventData;
5999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6000
6001 /*------------------------------------------------------------------------
6002 Sanity Check
6003 ------------------------------------------------------------------------*/
6004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6005 {
6006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6007 "WDI API call before module is initialized - Fail request");
6008
6009 return WDI_STATUS_E_NOT_ALLOWED;
6010 }
6011
6012 /*------------------------------------------------------------------------
6013 Fill in Event data and post to the Main FSM
6014 ------------------------------------------------------------------------*/
6015 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
6016 wdiEventData.pEventData = pwdiOemDataReqParams;
6017 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
6018 wdiEventData.pCBfnc = wdiOemDataRspCb;
6019 wdiEventData.pUserData = pUserData;
6020
6021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6022
6023
6024}
6025
6026#endif
6027
6028
6029/*========================================================================
6030
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07006032
Jeff Johnson295189b2012-06-20 16:38:30 -07006033==========================================================================*/
6034/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006035 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07006036 the WLAN HW to change the current channel of operation.
6037 Upon the call of this API the WLAN DAL will pack and
6038 send a HAL Start request message to the lower RIVA
6039 sub-system if DAL is in state STARTED.
6040
6041 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006042 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006043
6044 WDI_Start must have been called.
6045
Jeff Johnsone7245742012-09-05 17:12:55 -07006046 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006047 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006048
Jeff Johnson295189b2012-06-20 16:38:30 -07006049 wdiSwitchChRspCb: callback for passing back the response
6050 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006051
Jeff Johnson295189b2012-06-20 16:38:30 -07006052 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006053 callback
6054
Jeff Johnson295189b2012-06-20 16:38:30 -07006055 @see WDI_Start
6056 @return Result of the function call
6057*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006058WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006059WDI_SwitchChReq
6060(
6061 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
6062 WDI_SwitchChRspCb wdiSwitchChRspCb,
6063 void* pUserData
6064)
6065{
6066 WDI_EventInfoType wdiEventData;
6067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6068
6069 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006070 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006071 ------------------------------------------------------------------------*/
6072 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6073 {
6074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6075 "WDI API call before module is initialized - Fail request");
6076
Jeff Johnsone7245742012-09-05 17:12:55 -07006077 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006078 }
6079
6080 /*------------------------------------------------------------------------
6081 Fill in Event data and post to the Main FSM
6082 ------------------------------------------------------------------------*/
6083 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006084 wdiEventData.pEventData = pwdiSwitchChReqParams;
6085 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
6086 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006087 wdiEventData.pUserData = pUserData;
6088
6089 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6090
6091}/*WDI_SwitchChReq*/
6092
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08006093/**
6094 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
6095 the WLAN HW to change the current channel of operation.
6096 Upon the call of this API the WLAN DAL will pack and
6097 send a HAL Start request message to the lower RIVA
6098 sub-system if DAL is in state STARTED.
6099 This request message also includes source of channel switch,
6100 like CSA,
6101
6102 In state BUSY this request will be queued. Request won't
6103 be allowed in any other state.
6104
6105 WDI_Start must have been called.
6106
6107 @param wdiSwitchChReqParams: the switch ch parameters as
6108 specified by the Device Interface
6109
6110 wdiSwitchChRspCb: callback for passing back the response
6111 of the switch ch operation received from the device
6112
6113 pUserData: user data will be passed back with the
6114 callback
6115
6116 @see WDI_Start
6117 @return Result of the function call
6118*/
6119WDI_Status
6120WDI_SwitchChReq_V1
6121(
6122 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
6123 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
6124 void* pUserData
6125)
6126{
6127 WDI_EventInfoType wdiEventData;
6128 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
6130 "WDI API call WDI_SwitchChReq_V1");
6131 /*------------------------------------------------------------------------
6132 Sanity Check
6133 ------------------------------------------------------------------------*/
6134 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6135 {
6136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6137 "WDI API call before module is initialized - Fail request");
6138
6139 return WDI_STATUS_E_NOT_ALLOWED;
6140 }
6141
6142 /*------------------------------------------------------------------------
6143 Fill in Event data and post to the Main FSM
6144 ------------------------------------------------------------------------*/
6145 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
6146 wdiEventData.pEventData = pwdiSwitchChReqParams;
6147 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
6148 wdiEventData.pCBfnc = wdiSwitchChRspCb;
6149 wdiEventData.pUserData = pUserData;
6150
6151 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6152
6153}/*WDI_SwitchChReq_V1*/
6154
Jeff Johnson295189b2012-06-20 16:38:30 -07006155
6156/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 wishes to add or update a STA in HW. Upon the call of
6159 this API the WLAN DAL will pack and send a HAL Start
6160 message request message to the lower RIVA sub-system if
6161 DAL is in state STARTED.
6162
6163 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006164 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006165
6166 WDI_Start must have been called.
6167
Jeff Johnsone7245742012-09-05 17:12:55 -07006168 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006169 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006170
Jeff Johnson295189b2012-06-20 16:38:30 -07006171 wdiConfigSTARspCb: callback for passing back the
6172 response of the config STA operation received from the
6173 device
Jeff Johnsone7245742012-09-05 17:12:55 -07006174
Jeff Johnson295189b2012-06-20 16:38:30 -07006175 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006176 callback
6177
Jeff Johnson295189b2012-06-20 16:38:30 -07006178 @see WDI_Start
6179 @return Result of the function call
6180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006182WDI_ConfigSTAReq
6183(
6184 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
6185 WDI_ConfigSTARspCb wdiConfigSTARspCb,
6186 void* pUserData
6187)
6188{
6189 WDI_EventInfoType wdiEventData;
6190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6191
6192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006194 ------------------------------------------------------------------------*/
6195 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6196 {
6197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6198 "WDI API call before module is initialized - Fail request");
6199
Jeff Johnsone7245742012-09-05 17:12:55 -07006200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006201 }
6202
6203 /*------------------------------------------------------------------------
6204 Fill in Event data and post to the Main FSM
6205 ------------------------------------------------------------------------*/
6206 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006207 wdiEventData.pEventData = pwdiConfigSTAReqParams;
6208 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
6209 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006210 wdiEventData.pUserData = pUserData;
6211
6212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6213
6214}/*WDI_ConfigSTAReq*/
6215
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08006216 /**
6217 @brief WDI_UpdateChannelReq will be called when the upper MAC
6218 wants to update the channel list on change in country code.
6219
6220 In state BUSY this request will be queued. Request won't
6221 be allowed in any other state.
6222
6223 WDI_UpdateChannelReq must have been called.
6224
6225 @param wdiUpdateChannelReqParams: the updated channel parameters
6226 as specified by the Device Interface
6227
6228 wdiUpdateChannelRspCb: callback for passing back the
6229 response of the update channel operation received from
6230 the device
6231
6232 pUserData: user data will be passed back with the
6233 callback
6234
6235 @return Result of the function call
6236*/
6237WDI_Status
6238WDI_UpdateChannelReq
6239(
6240 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
6241 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
6242 void* pUserData
6243)
6244{
6245 WDI_EventInfoType wdiEventData = {{0}};
6246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6247
6248 /*------------------------------------------------------------------------
6249 Sanity Check
6250 ------------------------------------------------------------------------*/
6251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6252 {
6253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6254 "WDI API call before module is initialized - Fail request");
6255
6256 return WDI_STATUS_E_NOT_ALLOWED;
6257 }
6258
6259 /*------------------------------------------------------------------------
6260 Fill in Event data and post to the Main FSM
6261 ------------------------------------------------------------------------*/
6262 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
6263 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
6264 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
6265 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
6266 wdiEventData.pUserData = pUserData;
6267
6268 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6269
6270}/*WDI_UpdateChannelReq*/
6271
Jeff Johnson295189b2012-06-20 16:38:30 -07006272/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006273 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006274 wants to change the state of an ongoing link. Upon the
6275 call of this API the WLAN DAL will pack and send a HAL
6276 Start message request message to the lower RIVA
6277 sub-system if DAL is in state STARTED.
6278
6279 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006280 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006281
6282 WDI_JoinStartReq must have been called.
6283
Jeff Johnsone7245742012-09-05 17:12:55 -07006284 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07006285 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006286
Jeff Johnson295189b2012-06-20 16:38:30 -07006287 wdiSetLinkStateRspCb: callback for passing back the
6288 response of the set link state operation received from
6289 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006290
Jeff Johnson295189b2012-06-20 16:38:30 -07006291 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006292 callback
6293
Jeff Johnson295189b2012-06-20 16:38:30 -07006294 @see WDI_JoinStartReq
6295 @return Result of the function call
6296*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006297WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006298WDI_SetLinkStateReq
6299(
6300 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
6301 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
6302 void* pUserData
6303)
6304{
6305 WDI_EventInfoType wdiEventData;
6306 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6307
6308 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006309 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006310 ------------------------------------------------------------------------*/
6311 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6312 {
6313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6314 "WDI API call before module is initialized - Fail request");
6315
Jeff Johnsone7245742012-09-05 17:12:55 -07006316 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006317 }
6318
6319 /*------------------------------------------------------------------------
6320 Fill in Event data and post to the Main FSM
6321 ------------------------------------------------------------------------*/
6322 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006323 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
6324 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
6325 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006326 wdiEventData.pUserData = pUserData;
6327
6328 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6329
6330}/*WDI_SetLinkStateReq*/
6331
6332
6333/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006334 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07006335 to get statistics (MIB counters) from the device. Upon
6336 the call of this API the WLAN DAL will pack and send a
6337 HAL Start request message to the lower RIVA sub-system
6338 if DAL is in state STARTED.
6339
6340 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006341 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006342
6343 WDI_Start must have been called.
6344
Jeff Johnsone7245742012-09-05 17:12:55 -07006345 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07006346 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006347
Jeff Johnson295189b2012-06-20 16:38:30 -07006348 wdiGetStatsRspCb: callback for passing back the response
6349 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006350
Jeff Johnson295189b2012-06-20 16:38:30 -07006351 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006352 callback
6353
Jeff Johnson295189b2012-06-20 16:38:30 -07006354 @see WDI_Start
6355 @return Result of the function call
6356*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006357WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006358WDI_GetStatsReq
6359(
6360 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
6361 WDI_GetStatsRspCb wdiGetStatsRspCb,
6362 void* pUserData
6363)
6364{
6365 WDI_EventInfoType wdiEventData;
6366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6367
6368 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006369 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006370 ------------------------------------------------------------------------*/
6371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6372 {
6373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6374 "WDI API call before module is initialized - Fail request");
6375
Jeff Johnsone7245742012-09-05 17:12:55 -07006376 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006377 }
6378
6379 /*------------------------------------------------------------------------
6380 Fill in Event data and post to the Main FSM
6381 ------------------------------------------------------------------------*/
6382 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006383 wdiEventData.pEventData = pwdiGetStatsReqParams;
6384 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
6385 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006386 wdiEventData.pUserData = pUserData;
6387
6388 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6389
6390}/*WDI_GetStatsReq*/
6391
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08006392#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08006393/**
6394 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
6395 to get roam rssi from the device. Upon
6396 the call of this API the WLAN DAL will pack and send a
6397 HAL Start request message to the lower RIVA sub-system
6398 if DAL is in state STARTED.
6399
6400 In state BUSY this request will be queued. Request won't
6401 be allowed in any other state.
6402
6403 WDI_Start must have been called.
6404
6405 @param wdiGetRoamRssiReqParams: the stats parameters to get as
6406 specified by the Device Interface
6407
6408 wdiGetRoamRssiRspCb: callback for passing back the response
6409 of the get stats operation received from the device
6410
6411 pUserData: user data will be passed back with the
6412 callback
6413
6414 @see WDI_Start
6415 @return Result of the function call
6416*/
6417WDI_Status
6418WDI_GetRoamRssiReq
6419(
6420 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
6421 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
6422 void* pUserData
6423)
6424{
6425 WDI_EventInfoType wdiEventData;
6426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6427
6428 /*------------------------------------------------------------------------
6429 Sanity Check
6430 ------------------------------------------------------------------------*/
6431 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6432 {
6433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6434 "WDI API call before module is initialized - Fail request");
6435
6436 return WDI_STATUS_E_NOT_ALLOWED;
6437 }
6438 /*------------------------------------------------------------------------
6439 Fill in Event data and post to the Main FSM
6440 ------------------------------------------------------------------------*/
6441 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
6442 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
6443 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
6444 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
6445 wdiEventData.pUserData = pUserData;
6446
6447 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6448
6449}/*WDI_GetRoamRssiReq*/
6450#endif
6451
Jeff Johnson295189b2012-06-20 16:38:30 -07006452
6453/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006454 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07006455 it wishes to change the configuration of the WLAN
6456 Device. Upon the call of this API the WLAN DAL will pack
6457 and send a HAL Update CFG request message to the lower
6458 RIVA sub-system if DAL is in state STARTED.
6459
6460 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006461 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006462
6463 WDI_Start must have been called.
6464
Jeff Johnsone7245742012-09-05 17:12:55 -07006465 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006466 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006467
Jeff Johnson295189b2012-06-20 16:38:30 -07006468 wdiUpdateCfgsRspCb: callback for passing back the
6469 response of the update cfg operation received from the
6470 device
Jeff Johnsone7245742012-09-05 17:12:55 -07006471
Jeff Johnson295189b2012-06-20 16:38:30 -07006472 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006473 callback
6474
Jeff Johnson295189b2012-06-20 16:38:30 -07006475 @see WDI_Start
6476 @return Result of the function call
6477*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006478WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006479WDI_UpdateCfgReq
6480(
6481 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
6482 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
6483 void* pUserData
6484)
6485{
6486 WDI_EventInfoType wdiEventData;
6487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6488
6489 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006490 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006491 ------------------------------------------------------------------------*/
6492 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6493 {
6494 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6495 "WDI API call before module is initialized - Fail request");
6496
Jeff Johnsone7245742012-09-05 17:12:55 -07006497 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006498 }
6499
6500 /*------------------------------------------------------------------------
6501 Fill in Event data and post to the Main FSM
6502 ------------------------------------------------------------------------*/
6503 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006504 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
6505 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
6506 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006507 wdiEventData.pUserData = pUserData;
6508
6509 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6510
6511}/*WDI_UpdateCfgReq*/
6512
6513
6514
6515/**
6516 @brief WDI_AddBAReq will be called when the upper MAC has setup
6517 successfully a BA session and needs to notify the HW for
6518 the appropriate settings to take place. Upon the call of
6519 this API the WLAN DAL will pack and send a HAL Add BA
6520 request message to the lower RIVA sub-system if DAL is
6521 in state STARTED.
6522
6523 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006524 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006525
6526 WDI_PostAssocReq must have been called.
6527
6528 @param wdiAddBAReqParams: the add BA parameters as specified by
6529 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006530
Jeff Johnson295189b2012-06-20 16:38:30 -07006531 wdiAddBARspCb: callback for passing back the response of
6532 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006533
Jeff Johnson295189b2012-06-20 16:38:30 -07006534 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006535 callback
6536
Jeff Johnson295189b2012-06-20 16:38:30 -07006537 @see WDI_PostAssocReq
6538 @return Result of the function call
6539*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006540WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006541WDI_AddBAReq
6542(
6543 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6544 WDI_AddBARspCb wdiAddBARspCb,
6545 void* pUserData
6546)
6547{
6548 WDI_EventInfoType wdiEventData;
6549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6550
6551 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006552 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006553 ------------------------------------------------------------------------*/
6554 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6555 {
6556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6557 "WDI API call before module is initialized - Fail request");
6558
Jeff Johnsone7245742012-09-05 17:12:55 -07006559 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006560 }
6561
6562 /*------------------------------------------------------------------------
6563 Fill in Event data and post to the Main FSM
6564 ------------------------------------------------------------------------*/
6565 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006566 wdiEventData.pEventData = pwdiAddBAReqParams;
6567 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6568 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006569 wdiEventData.pUserData = pUserData;
6570
6571 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6572
6573}/*WDI_AddBAReq*/
6574
6575
6576/**
6577 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6578 successfully a BA session and needs to notify the HW for
6579 the appropriate settings to take place. Upon the call of
6580 this API the WLAN DAL will pack and send a HAL Add BA
6581 request message to the lower RIVA sub-system if DAL is
6582 in state STARTED.
6583
6584 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006585 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006586
6587 WDI_PostAssocReq must have been called.
6588
6589 @param wdiAddBAReqParams: the add BA parameters as specified by
6590 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006591
Abhishek Singhe5066502016-02-05 18:07:41 +05306592 baReqParamUserDataSize: user data size of wdiAddBAReqParams
Jeff Johnson295189b2012-06-20 16:38:30 -07006593 wdiAddBARspCb: callback for passing back the response of
6594 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006595
Jeff Johnson295189b2012-06-20 16:38:30 -07006596 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006597 callback
6598
Jeff Johnson295189b2012-06-20 16:38:30 -07006599 @see WDI_PostAssocReq
6600 @return Result of the function call
6601*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006602WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006603WDI_TriggerBAReq
6604(
6605 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
Abhishek Singhe5066502016-02-05 18:07:41 +05306606 wpt_uint8 baReqParamUserDataSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006607 WDI_TriggerBARspCb wdiTriggerBARspCb,
6608 void* pUserData
6609)
6610{
6611 WDI_EventInfoType wdiEventData;
6612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6613
6614 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006615 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006616 ------------------------------------------------------------------------*/
6617 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6618 {
6619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6620 "WDI API call before module is initialized - Fail request");
6621
Jeff Johnsone7245742012-09-05 17:12:55 -07006622 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006623 }
6624
6625 /*------------------------------------------------------------------------
6626 Fill in Event data and post to the Main FSM
6627 ------------------------------------------------------------------------*/
6628 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006629 wdiEventData.pEventData = pwdiTriggerBAReqParams;
Abhishek Singhe5066502016-02-05 18:07:41 +05306630 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams)
6631 + baReqParamUserDataSize;
Jeff Johnsone7245742012-09-05 17:12:55 -07006632 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006633 wdiEventData.pUserData = pUserData;
6634
6635 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6636
6637}/*WDI_AddBAReq*/
6638
6639/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006640 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006641 wishes to update any of the Beacon parameters used by HW.
6642 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6643 message to the lower RIVA sub-system if DAL is in state
6644 STARTED.
6645
6646 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006647 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006648
6649 WDI_PostAssocReq must have been called.
6650
Jeff Johnsone7245742012-09-05 17:12:55 -07006651 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006652 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006653
Jeff Johnson295189b2012-06-20 16:38:30 -07006654 wdiUpdateBeaconParamsRspCb: callback for passing back the
6655 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006656
Jeff Johnson295189b2012-06-20 16:38:30 -07006657 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006658 callback
6659
Jeff Johnson295189b2012-06-20 16:38:30 -07006660 @see WDI_PostAssocReq
6661 @return Result of the function call
6662*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006663WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006664WDI_UpdateBeaconParamsReq
6665(
6666 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6667 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6668 void* pUserData
6669)
6670{
6671 WDI_EventInfoType wdiEventData;
6672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6673
6674 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006675 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006676 ------------------------------------------------------------------------*/
6677 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6678 {
6679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6680 "WDI API call before module is initialized - Fail request");
6681
Jeff Johnsone7245742012-09-05 17:12:55 -07006682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006683 }
6684
6685 /*------------------------------------------------------------------------
6686 Fill in Event data and post to the Main FSM
6687 ------------------------------------------------------------------------*/
6688 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006689 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6690 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6691 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006692 wdiEventData.pUserData = pUserData;
6693
6694 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6695
6696}/*WDI_UpdateBeaconParamsReq*/
6697
6698/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006699 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006700 wishes to update the Beacon template used by HW.
6701 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6702 message to the lower RIVA sub-system if DAL is in state
6703 STARTED.
6704
6705 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006706 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006707
6708 WDI_PostAssocReq must have been called.
6709
Jeff Johnsone7245742012-09-05 17:12:55 -07006710 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006711 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006712
Jeff Johnson295189b2012-06-20 16:38:30 -07006713 wdiSendBeaconParamsRspCb: callback for passing back the
6714 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006715
Jeff Johnson295189b2012-06-20 16:38:30 -07006716 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006717 callback
6718
Jeff Johnson295189b2012-06-20 16:38:30 -07006719 @see WDI_PostAssocReq
6720 @return Result of the function call
6721*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006722WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006723WDI_SendBeaconParamsReq
6724(
6725 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6726 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6727 void* pUserData
6728)
6729{
6730 WDI_EventInfoType wdiEventData;
6731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6732
6733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006734 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006735 ------------------------------------------------------------------------*/
6736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6737 {
6738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6739 "WDI API call before module is initialized - Fail request");
6740
Jeff Johnsone7245742012-09-05 17:12:55 -07006741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 }
6743
6744 /*------------------------------------------------------------------------
6745 Fill in Event data and post to the Main FSM
6746 ------------------------------------------------------------------------*/
6747 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006748 wdiEventData.pEventData = pwdiSendBeaconParams;
6749 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6750 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006751 wdiEventData.pUserData = pUserData;
6752
6753 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6754
6755}/*WDI_SendBeaconParamsReq*/
6756
6757/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006758 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006759 upper MAC wants to update the probe response template to
6760 be transmitted as Soft AP
6761 Upon the call of this API the WLAN DAL will
6762 pack and send the probe rsp template message to the
6763 lower RIVA sub-system if DAL is in state STARTED.
6764
6765 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006766 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006767
6768
Jeff Johnsone7245742012-09-05 17:12:55 -07006769 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006770 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006771
Jeff Johnson295189b2012-06-20 16:38:30 -07006772 wdiSendBeaconParamsRspCb: callback for passing back the
6773 response of the Send Beacon Params operation received
6774 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006775
Jeff Johnson295189b2012-06-20 16:38:30 -07006776 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 callback
6778
Jeff Johnson295189b2012-06-20 16:38:30 -07006779 @see WDI_AddBAReq
6780 @return Result of the function call
6781*/
6782
Jeff Johnsone7245742012-09-05 17:12:55 -07006783WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006784WDI_UpdateProbeRspTemplateReq
6785(
6786 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6787 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6788 void* pUserData
6789)
6790{
6791 WDI_EventInfoType wdiEventData;
6792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6793
6794 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006795 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 ------------------------------------------------------------------------*/
6797 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6798 {
6799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6800 "WDI API call before module is initialized - Fail request");
6801
Jeff Johnsone7245742012-09-05 17:12:55 -07006802 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006803 }
6804
6805 /*------------------------------------------------------------------------
6806 Fill in Event data and post to the Main FSM
6807 ------------------------------------------------------------------------*/
6808 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006809 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6810 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6811 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 wdiEventData.pUserData = pUserData;
6813
6814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6815
6816}/*WDI_UpdateProbeRspTemplateReq*/
6817
6818/**
6819 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6820 to the NV memory.
6821
6822
6823 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6824 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006825
Jeff Johnson295189b2012-06-20 16:38:30 -07006826 wdiNvDownloadRspCb: callback for passing back the response of
6827 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006828
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 callback
6831
Jeff Johnson295189b2012-06-20 16:38:30 -07006832 @see WDI_PostAssocReq
6833 @return Result of the function call
6834*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006835WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006836WDI_NvDownloadReq
6837(
6838 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6839 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6840 void* pUserData
6841)
6842{
6843 WDI_EventInfoType wdiEventData;
6844
6845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 ------------------------------------------------------------------------*/
6848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6849 {
6850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6851 "WDI API call before module is initialized - Fail request");
6852
Jeff Johnsone7245742012-09-05 17:12:55 -07006853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 }
6855
6856 /*------------------------------------------------------------------------
6857 Fill in Event data and post to the Main FSM
6858 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006859 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6860 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6861 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6862 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006863 wdiEventData.pUserData = pUserData;
6864
6865 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6866
6867}/*WDI_NVDownloadReq*/
6868
Jeff Johnson295189b2012-06-20 16:38:30 -07006869/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006870 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006871 upper MAC wants to send Notice of Absence
6872 Upon the call of this API the WLAN DAL will
6873 pack and send the probe rsp template message to the
6874 lower RIVA sub-system if DAL is in state STARTED.
6875
6876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006878
6879
Jeff Johnsone7245742012-09-05 17:12:55 -07006880 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006881 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006882
Jeff Johnson295189b2012-06-20 16:38:30 -07006883 wdiSendBeaconParamsRspCb: callback for passing back the
6884 response of the Send Beacon Params operation received
6885 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006886
Jeff Johnson295189b2012-06-20 16:38:30 -07006887 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006888 callback
6889
Jeff Johnson295189b2012-06-20 16:38:30 -07006890 @see WDI_AddBAReq
6891 @return Result of the function call
6892*/
6893WDI_Status
6894WDI_SetP2PGONOAReq
6895(
6896 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6897 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6898 void* pUserData
6899)
6900{
6901 WDI_EventInfoType wdiEventData;
6902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6903
6904 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006905 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006906 ------------------------------------------------------------------------*/
6907 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6908 {
6909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6910 "WDI API call before module is initialized - Fail request");
6911
Jeff Johnsone7245742012-09-05 17:12:55 -07006912 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006913 }
6914
6915 /*------------------------------------------------------------------------
6916 Fill in Event data and post to the Main FSM
6917 ------------------------------------------------------------------------*/
6918 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006919 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6920 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6921 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006922 wdiEventData.pUserData = pUserData;
6923
6924 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6925
6926}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006927
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306928#ifdef FEATURE_WLAN_TDLS
6929/**
6930 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6931 upper MAC wants to send TDLS Link Establish Request Parameters
6932 Upon the call of this API the WLAN DAL will
6933 pack and send the TDLS Link Establish Request message to the
6934 lower RIVA sub-system if DAL is in state STARTED.
6935
6936 In state BUSY this request will be queued. Request won't
6937 be allowed in any other state.
6938
6939
6940 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6941 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6942
6943 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6944 response of the TDLS Link Establish request received
6945 from the device
6946
6947 pUserData: user data will be passed back with the
6948 callback
6949
6950 @see
6951 @return Result of the function call
6952*/
6953WDI_Status
6954WDI_SetTDLSLinkEstablishReq
6955(
6956 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6957 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6958 void* pUserData
6959)
6960{
6961 WDI_EventInfoType wdiEventData;
6962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6963
6964 /*------------------------------------------------------------------------
6965 Sanity Check
6966 ------------------------------------------------------------------------*/
6967 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6968 {
6969 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6970 "WDI API call before module is initialized - Fail request");
6971
6972 return WDI_STATUS_E_NOT_ALLOWED;
6973 }
6974
6975 /*------------------------------------------------------------------------
6976 Fill in Event data and post to the Main FSM
6977 ------------------------------------------------------------------------*/
6978 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6979 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6980 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6981 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6982 wdiEventData.pUserData = pUserData;
6983
6984 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6985
6986}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306987
6988//tdlsoffchan
6989/**
6990 @brief WDI_SetTDLSChanSwitchReq will be called when the
6991 upper MAC wants to send TDLS Chan Switch Request Parameters
6992 Upon the call of this API the WLAN DAL will
6993 pack and send the TDLS Link Establish Request message to the
6994 lower RIVA sub-system if DAL is in state STARTED.
6995
6996 In state BUSY this request will be queued. Request won't
6997 be allowed in any other state.
6998
6999
7000 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
7001 for Link Establishment (Used for TDLS Off Channel ...)
7002
7003 wdiTDLSChanSwitchReqRspCb: callback for passing back the
7004 response of the TDLS Chan Switch request received
7005 from the device
7006
7007 pUserData: user data will be passed back with the
7008 callback
7009
7010 @see
7011 @return Result of the function call
7012*/
7013WDI_Status
7014WDI_SetTDLSChanSwitchReq
7015(
7016 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
7017 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
7018 void* pUserData
7019)
7020{
7021 WDI_EventInfoType wdiEventData;
7022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7023
7024 /*------------------------------------------------------------------------
7025 Sanity Check
7026 ------------------------------------------------------------------------*/
7027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7028 {
7029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7030 "WDI API call before module is initialized - Fail request");
7031
7032 return WDI_STATUS_E_NOT_ALLOWED;
7033 }
7034
7035 /*------------------------------------------------------------------------
7036 Fill in Event data and post to the Main FSM
7037 ------------------------------------------------------------------------*/
7038 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
7039 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
7040 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
7041 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
7042 wdiEventData.pUserData = pUserData;
7043
7044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7045
7046}/*WDI_SetTDLSChanSwitchReq*/
7047
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05307048#endif
7049
Jeff Johnson295189b2012-06-20 16:38:30 -07007050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007051 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07007052 UMAC wanted to add STA self while opening any new session
7053 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07007054 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07007055
7056
Jeff Johnsone7245742012-09-05 17:12:55 -07007057 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07007058 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07007059
Jeff Johnson295189b2012-06-20 16:38:30 -07007060 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07007061 callback
7062
7063 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07007064 @return Result of the function call
7065*/
7066WDI_Status
7067WDI_AddSTASelfReq
7068(
7069 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
7070 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
7071 void* pUserData
7072)
7073{
7074 WDI_EventInfoType wdiEventData;
7075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7076
7077 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007078 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007079 ------------------------------------------------------------------------*/
7080 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7081 {
7082 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7083 "WDI API call before module is initialized - Fail request");
7084
Jeff Johnsone7245742012-09-05 17:12:55 -07007085 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007086 }
7087
7088 /*------------------------------------------------------------------------
7089 Fill in Event data and post to the Main FSM
7090 ------------------------------------------------------------------------*/
7091 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007092 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
7093 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
7094 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07007095 wdiEventData.pUserData = pUserData;
7096
7097 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7098
7099}/*WDI_AddSTASelfReq*/
7100
7101
Jeff Johnsone7245742012-09-05 17:12:55 -07007102#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07007103/**
7104 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
7105 the device of a successful add TSpec negotiation. HW
7106 needs to receive the TSpec Info from the UMAC in order
7107 to configure properly the QoS data traffic. Upon the
7108 call of this API the WLAN DAL will pack and send a HAL
7109 Add TS request message to the lower RIVA sub-system if
7110 DAL is in state STARTED.
7111
7112 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07007113 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07007114
7115 WDI_PostAssocReq must have been called.
7116
7117 @param wdiAddTsReqParams: the add TS parameters as specified by
7118 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07007119
Jeff Johnson295189b2012-06-20 16:38:30 -07007120 wdiAddTsRspCb: callback for passing back the response of
7121 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07007122
Jeff Johnson295189b2012-06-20 16:38:30 -07007123 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07007124 callback
7125
Jeff Johnson295189b2012-06-20 16:38:30 -07007126 @see WDI_PostAssocReq
7127 @return Result of the function call
7128*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007129WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07007130WDI_AggrAddTSReq
7131(
7132 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
7133 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
7134 void* pUserData
7135)
7136{
7137 WDI_EventInfoType wdiEventData;
7138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7139
7140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007142 ------------------------------------------------------------------------*/
7143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7144 {
7145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7146 "WDI API call before module is initialized - Fail request");
7147
Jeff Johnsone7245742012-09-05 17:12:55 -07007148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007149 }
7150
7151 /*------------------------------------------------------------------------
7152 Fill in Event data and post to the Main FSM
7153 ------------------------------------------------------------------------*/
7154 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007155 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
7156 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
7157 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07007158 wdiEventData.pUserData = pUserData;
7159
7160 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7161
7162}/*WDI_AggrAddTSReq*/
7163
7164#endif /* WLAN_FEATURE_VOWIFI_11R */
7165
Jeff Johnson295189b2012-06-20 16:38:30 -07007166/**
7167 @brief WDI_FTMCommandReq
7168 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007169
7170 @param ftmCommandReq: FTM Command Body
7171 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007172 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007173
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 @see
7175 @return Result of the function call
7176*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007177WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07007178WDI_FTMCommandReq
7179(
7180 WDI_FTMCommandReqType *ftmCommandReq,
7181 WDI_FTMCommandRspCb ftmCommandRspCb,
7182 void *pUserData
7183)
7184{
7185 WDI_EventInfoType wdiEventData;
7186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7187
7188 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007189 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007190 ------------------------------------------------------------------------*/
7191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7192 {
7193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7194 "WDI API call before module is initialized - Fail request");
7195
Jeff Johnsone7245742012-09-05 17:12:55 -07007196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007197 }
7198
7199 /*------------------------------------------------------------------------
7200 Fill in Event data and post to the Main FSM
7201 ------------------------------------------------------------------------*/
7202 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
7203 wdiEventData.pEventData = (void *)ftmCommandReq;
7204 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
7205 wdiEventData.pCBfnc = ftmCommandRspCb;
7206 wdiEventData.pUserData = pUserData;
7207
7208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7209}
Jeff Johnson295189b2012-06-20 16:38:30 -07007210/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007211 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07007212
7213 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07007214 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07007215
7216
7217 @param pwdiResumeReqParams: as specified by
7218 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07007219
Jeff Johnson295189b2012-06-20 16:38:30 -07007220 wdiResumeReqRspCb: callback for passing back the response of
7221 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07007222
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07007224 callback
7225
7226 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07007227 @return Result of the function call
7228*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007229WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07007230WDI_HostResumeReq
7231(
7232 WDI_ResumeParamsType* pwdiResumeReqParams,
7233 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
7234 void* pUserData
7235)
7236{
7237 WDI_EventInfoType wdiEventData;
7238 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7239
7240 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007241 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007242 ------------------------------------------------------------------------*/
7243 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7244 {
7245 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7246 "WDI API call before module is initialized - Fail request");
7247
Jeff Johnsone7245742012-09-05 17:12:55 -07007248 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 }
7250
7251 /*------------------------------------------------------------------------
7252 Fill in Event data and post to the Main FSM
7253 ------------------------------------------------------------------------*/
7254 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007255 wdiEventData.pEventData = pwdiResumeReqParams;
7256 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
7257 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07007258 wdiEventData.pUserData = pUserData;
7259
7260 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7261
7262}/*WDI_HostResumeReq*/
7263
7264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07007266
7267 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07007268 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07007269
7270
7271 @param pwdiDelStaSelfReqParams: as specified by
7272 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07007273
Jeff Johnson295189b2012-06-20 16:38:30 -07007274 wdiDelStaSelfRspCb: callback for passing back the response of
7275 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07007276
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07007278 callback
7279
Jeff Johnson295189b2012-06-20 16:38:30 -07007280 @see WDI_PostAssocReq
7281 @return Result of the function call
7282*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007283WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07007284WDI_DelSTASelfReq
7285(
7286 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
7287 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
7288 void* pUserData
7289)
7290{
7291 WDI_EventInfoType wdiEventData;
7292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7293
7294 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007295 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007296 ------------------------------------------------------------------------*/
7297 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7298 {
7299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7300 "WDI API call before module is initialized - Fail request");
7301
Jeff Johnsone7245742012-09-05 17:12:55 -07007302 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007303 }
7304
7305 /*------------------------------------------------------------------------
7306 Fill in Event data and post to the Main FSM
7307 ------------------------------------------------------------------------*/
7308 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007309 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
7310 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
7311 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07007312 wdiEventData.pUserData = pUserData;
7313
7314 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7315
7316}/*WDI_AggrAddTSReq*/
7317
7318/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
7320 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07007321 Upon the call of this API the WLAN DAL will pack
7322 and send a HAL Set Tx Per Tracking request message to the
7323 lower RIVA sub-system if DAL is in state STARTED.
7324
7325 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07007326 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07007327
Jeff Johnsone7245742012-09-05 17:12:55 -07007328 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07007330
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 pwdiSetTxPerTrackingRspCb: callback for passing back the
7332 response of the set Tx PER Tracking configurations operation received
7333 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07007334
Jeff Johnson295189b2012-06-20 16:38:30 -07007335 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07007336 callback
7337
Jeff Johnson295189b2012-06-20 16:38:30 -07007338 @return Result of the function call
7339*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007340WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07007341WDI_SetTxPerTrackingReq
7342(
7343 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
7344 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
7345 void* pUserData
7346)
7347{
7348 WDI_EventInfoType wdiEventData;
7349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7350
7351 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007352 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007353 ------------------------------------------------------------------------*/
7354 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7355 {
7356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7357 "WDI API call before module is initialized - Fail request");
7358
Jeff Johnsone7245742012-09-05 17:12:55 -07007359 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007360 }
7361
7362 /*------------------------------------------------------------------------
7363 Fill in Event data and post to the Main FSM
7364 ------------------------------------------------------------------------*/
7365 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07007366 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07007368 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 wdiEventData.pUserData = pUserData;
7370
7371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7372
7373}/*WDI_SetTxPerTrackingReq*/
7374
7375/**
7376 @brief WDI_SetTmLevelReq
7377 If HW Thermal condition changed, driver should react based on new
7378 HW thermal condition.
7379
7380 @param pwdiSetTmLevelReq: New thermal condition information
7381
7382 pwdiSetTmLevelRspCb: callback
7383
7384 usrData: user data will be passed back with the
7385 callback
7386
7387 @return Result of the function call
7388*/
7389WDI_Status
7390WDI_SetTmLevelReq
7391(
7392 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
7393 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
7394 void *usrData
7395)
7396{
7397 WDI_EventInfoType wdiEventData;
7398 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7399
7400 /*------------------------------------------------------------------------
7401 Sanity Check
7402 ------------------------------------------------------------------------*/
7403 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7404 {
7405 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7406 "WDI API call before module is initialized - Fail request");
7407
7408 return WDI_STATUS_E_NOT_ALLOWED;
7409 }
7410
7411 /*------------------------------------------------------------------------
7412 Fill in Event data and post to the Main FSM
7413 ------------------------------------------------------------------------*/
7414 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
7415 wdiEventData.pEventData = pwdiSetTmLevelReq;
7416 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
7417 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
7418 wdiEventData.pUserData = usrData;
7419
7420 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7421}
7422
7423/**
7424 @brief WDI_HostSuspendInd
7425
7426 Suspend Indication from the upper layer will be sent
7427 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07007428
Jeff Johnson295189b2012-06-20 16:38:30 -07007429 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07007430
7431 @see
7432
Jeff Johnson295189b2012-06-20 16:38:30 -07007433 @return Status of the request
7434*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007435WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07007436WDI_HostSuspendInd
7437(
7438 WDI_SuspendParamsType* pwdiSuspendIndParams
7439)
7440{
7441
7442 WDI_EventInfoType wdiEventData;
7443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7444
7445 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007446 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007447 ------------------------------------------------------------------------*/
7448 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7449 {
7450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7451 "WDI API call before module is initialized - Fail request");
7452
Jeff Johnsone7245742012-09-05 17:12:55 -07007453 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007454 }
7455
7456 /*------------------------------------------------------------------------
7457 Fill in Event data and post to the Main FSM
7458 ------------------------------------------------------------------------*/
7459 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07007460 wdiEventData.pEventData = pwdiSuspendIndParams;
7461 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
7462 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007463 wdiEventData.pUserData = NULL;
7464
7465 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7466
7467}/*WDI_HostSuspendInd*/
7468
7469/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007470 @brief WDI_TrafficStatsInd
7471 Traffic Stats from the upper layer will be sent
7472 down to HAL
7473
7474 @param WDI_TrafficStatsIndType
7475
7476 @see
7477
7478 @return Status of the request
7479*/
7480WDI_Status
7481WDI_TrafficStatsInd
7482(
7483 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
7484)
7485{
7486
7487 WDI_EventInfoType wdiEventData;
7488 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7489
7490 /*------------------------------------------------------------------------
7491 Sanity Check
7492 ------------------------------------------------------------------------*/
7493 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7494 {
7495 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7496 "WDI API call before module is initialized - Fail request");
7497
7498 return WDI_STATUS_E_NOT_ALLOWED;
7499 }
7500
7501 /*------------------------------------------------------------------------
7502 Fill in Event data and post to the Main FSM
7503 ------------------------------------------------------------------------*/
7504 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
7505 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
7506 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
7507 wdiEventData.pCBfnc = NULL;
7508 wdiEventData.pUserData = NULL;
7509
7510 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7511
7512}/*WDI_TrafficStatsInd*/
7513
Chet Lanctot186b5732013-03-18 10:26:30 -07007514#ifdef WLAN_FEATURE_11W
7515/**
7516 @brief WDI_ExcludeUnencryptedInd
7517 Register with HAL to receive/drop unencrypted frames
7518
7519 @param WDI_ExcludeUnencryptIndType
7520
7521 @see
7522
7523 @return Status of the request
7524*/
7525WDI_Status
7526WDI_ExcludeUnencryptedInd
7527(
7528 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7529)
7530{
7531
7532 WDI_EventInfoType wdiEventData;
7533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7534
7535 /*------------------------------------------------------------------------
7536 Sanity Check
7537 ------------------------------------------------------------------------*/
7538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7539 {
7540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7541 "WDI API call before module is initialized - Fail request");
7542
7543 return WDI_STATUS_E_NOT_ALLOWED;
7544 }
7545
7546 /*------------------------------------------------------------------------
7547 Fill in Event data and post to the Main FSM
7548 ------------------------------------------------------------------------*/
7549 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7550 wdiEventData.pEventData = pWdiExcUnencParams;
7551 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7552 wdiEventData.pCBfnc = NULL;
7553 wdiEventData.pUserData = NULL;
7554
7555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7556
7557}/*WDI_TrafficStatsInd*/
7558#endif
7559
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007560/**
Yue Mab9c86f42013-08-14 15:59:08 -07007561 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7562
7563 @param addPeriodicTxPtrnParams: Add Pattern parameters
7564
7565 @see
7566
7567 @return Status of the request
7568*/
7569WDI_Status
7570WDI_AddPeriodicTxPtrnInd
7571(
7572 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7573)
7574{
7575 WDI_EventInfoType wdiEventData;
7576
7577 /*-------------------------------------------------------------------------
7578 Sanity Check
7579 ------------------------------------------------------------------------*/
7580 if (eWLAN_PAL_FALSE == gWDIInitialized)
7581 {
7582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7583 "WDI API call before module is initialized - Fail request!");
7584
7585 return WDI_STATUS_E_NOT_ALLOWED;
7586 }
7587
7588 /*-------------------------------------------------------------------------
7589 Fill in Event data and post to the Main FSM
7590 ------------------------------------------------------------------------*/
7591 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7592 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7593 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7594 wdiEventData.pCBfnc = NULL;
7595 wdiEventData.pUserData = NULL;
7596
7597 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7598}
7599
7600/**
7601 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7602
7603 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7604
7605 @see
7606
7607 @return Status of the request
7608*/
7609WDI_Status
7610WDI_DelPeriodicTxPtrnInd
7611(
7612 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7613)
7614{
7615 WDI_EventInfoType wdiEventData;
7616
7617 /*-------------------------------------------------------------------------
7618 Sanity Check
7619 ------------------------------------------------------------------------*/
7620 if (eWLAN_PAL_FALSE == gWDIInitialized)
7621 {
7622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7623 "WDI API call before module is initialized - Fail request!");
7624
7625 return WDI_STATUS_E_NOT_ALLOWED;
7626 }
7627
7628 /*-------------------------------------------------------------------------
7629 Fill in Event data and post to the Main FSM
7630 ------------------------------------------------------------------------*/
7631 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7632 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7633 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7634 wdiEventData.pCBfnc = NULL;
7635 wdiEventData.pUserData = NULL;
7636
7637 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7638}
7639
7640/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007641 @brief WDI_HALDumpCmdReq
7642 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007643
7644 @param halDumpCmdReqParams: Hal Dump Command Body
7645 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007646 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007647
Jeff Johnson295189b2012-06-20 16:38:30 -07007648 @see
7649 @return Result of the function call
7650*/
7651WDI_Status WDI_HALDumpCmdReq
7652(
7653 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7654 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7655 void *pUserData
7656)
7657{
7658 WDI_EventInfoType wdiEventData;
7659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7660
7661 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007662 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 ------------------------------------------------------------------------*/
7664 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7665 {
7666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7667 "WDI API call before module is initialized - Fail request");
7668
Jeff Johnsone7245742012-09-05 17:12:55 -07007669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007670 }
7671
7672 /*------------------------------------------------------------------------
7673 Fill in Event data and post to the Main FSM
7674 ------------------------------------------------------------------------*/
7675 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7676 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7677 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7678 wdiEventData.pCBfnc = halDumpCmdRspCb;
7679 wdiEventData.pUserData = pUserData;
7680
7681 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7682}
7683
Jeff Johnsone7245742012-09-05 17:12:55 -07007684/*============================================================================
7685
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007687
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 ============================================================================*/
7689
7690/**
7691 @brief Main FSM Start function for all states except BUSY
7692
Jeff Johnsone7245742012-09-05 17:12:55 -07007693
7694 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007695 wdiEV: event posted to the main DAL FSM
7696 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 structure
7698
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 @see
7700 @return Result of the function call
7701*/
7702WDI_Status
7703WDI_PostMainEvent
7704(
Jeff Johnsone7245742012-09-05 17:12:55 -07007705 WDI_ControlBlockType* pWDICtx,
7706 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007708)
7709{
Jeff Johnsone7245742012-09-05 17:12:55 -07007710 WDI_Status wdiStatus;
7711 WDI_MainFuncType pfnWDIMainEvHdlr;
7712 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307713 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7715
7716 /*-------------------------------------------------------------------------
7717 Sanity check
7718 -------------------------------------------------------------------------*/
7719 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7720 ( wdiEV >= WDI_MAX_EVENT ))
7721 {
7722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7723 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7724 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007725 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 }
7727
7728 /*Access to the global state must be locked */
7729 wpalMutexAcquire(&pWDICtx->wptMutex);
7730
7731 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007732 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007733
7734 wdiOldState = pWDICtx->uGlobalState;
7735
7736 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7738 response comes from CCPU for the request sent by host:
7739 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 -07007740 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 -07007741 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007742 CCPU:
7743 don't change the state */
7744 if ( WDI_RESPONSE_EVENT != wdiEV)
7745 {
7746 /*Transition to BUSY State - the request is now being processed by the FSM,
7747 if the request fails we shall transition back to the old state, if not
7748 the request will manage its own state transition*/
7749 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7750 }
7751 /* If the state function associated with the EV is NULL it means that this
7752 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007753 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007754 {
7755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007756 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007757 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007758 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007759 }
7760 else
7761 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307762 if (!(failCnt & 0xF))
7763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007764 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307766 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007767 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007768 }
7769
7770 /* If a request handles itself well it will end up in a success or in a
7771 pending
7772 Success - means that the request was processed and the proper state
7773 transition already occurred or will occur when the resp is received
7774 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007775
Jeff Johnson295189b2012-06-20 16:38:30 -07007776 Pending - means the request could not be processed at this moment in time
7777 because the FSM was already busy so no state transition or dequeueing
7778 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007779
Jeff Johnson295189b2012-06-20 16:38:30 -07007780 Success for synchronous case means that the transition may occur and
7781 processing of pending requests may continue - so it should go through
7782 and restores the state and continue processing queued requests*/
7783 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7784 ( WDI_STATUS_PENDING != wdiStatus ))
7785 {
7786 if ( WDI_RESPONSE_EVENT != wdiEV)
7787 {
7788 /*The request has failed or could not be processed - transition back to
7789 the old state - check to see if anything was queued and try to execute
7790 The dequeue logic should post a message to a thread and return - no
7791 actual processing can occur */
7792 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7793 }
7794 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007795
Jeff Johnson295189b2012-06-20 16:38:30 -07007796 }
7797
7798 /* we have completed processing the event */
7799 wpalMutexRelease(&pWDICtx->wptMutex);
7800
Jeff Johnsone7245742012-09-05 17:12:55 -07007801 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007802
7803}/*WDI_PostMainEvent*/
7804
7805
7806/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007807 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007808--------------------------------------------------------------------------*/
7809/**
7810 @brief Main FSM Start function for all states except BUSY
7811
Jeff Johnsone7245742012-09-05 17:12:55 -07007812
7813 @param pWDICtx: pointer to the WLAN DAL context
7814 pEventData: pointer to the event information structure
7815
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 @see
7817 @return Result of the function call
7818*/
7819WDI_Status
7820WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007821(
Jeff Johnson295189b2012-06-20 16:38:30 -07007822 WDI_ControlBlockType* pWDICtx,
7823 WDI_EventInfoType* pEventData
7824)
7825{
7826
7827 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007828 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 ----------------------------------------------------------------------*/
7830 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7831 {
7832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07007833 "Invalid parameters on Main Start Started %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07007834 pWDICtx, pEventData);
7835 return WDI_STATUS_E_FAILURE;
7836 }
7837
7838 wpalMutexAcquire(&pWDICtx->wptMutex);
7839
7840 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007842 ----------------------------------------------------------------------*/
7843 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7844 {
7845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7846 "Control Transport not yet Open - queueing the request");
7847
7848 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007849 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007850
7851 wpalMutexRelease(&pWDICtx->wptMutex);
7852 return WDI_STATUS_PENDING;
7853 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007854
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 wpalMutexRelease(&pWDICtx->wptMutex);
7856
7857 /*Return Success*/
7858 return WDI_ProcessRequest( pWDICtx, pEventData );
7859
7860}/*WDI_MainStart*/
7861
7862/**
7863 @brief Main FSM Response function for state INIT
7864
Jeff Johnsone7245742012-09-05 17:12:55 -07007865
7866 @param pWDICtx: pointer to the WLAN DAL context
7867 pEventData: pointer to the event information structure
7868
Jeff Johnson295189b2012-06-20 16:38:30 -07007869 @see
7870 @return Result of the function call
7871*/
7872WDI_Status
7873WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007874(
Jeff Johnson295189b2012-06-20 16:38:30 -07007875 WDI_ControlBlockType* pWDICtx,
7876 WDI_EventInfoType* pEventData
7877)
7878{
7879 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007880 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007881 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007882 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007883
7884 /*Return Success*/
7885 return WDI_STATUS_E_NOT_ALLOWED;
7886}/* WDI_MainRspInit */
7887
7888/**
7889 @brief Main FSM Close function for all states except BUSY
7890
Jeff Johnsone7245742012-09-05 17:12:55 -07007891
7892 @param pWDICtx: pointer to the WLAN DAL context
7893 pEventData: pointer to the event information structure
7894
Jeff Johnson295189b2012-06-20 16:38:30 -07007895 @see
7896 @return Result of the function call
7897*/
7898WDI_Status
7899WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007900(
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 WDI_ControlBlockType* pWDICtx,
7902 WDI_EventInfoType* pEventData
7903)
7904{
7905
7906 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007907 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007908 ----------------------------------------------------------------------*/
7909 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7910 {
7911 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07007912 "Invalid parameters on Main Close %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07007913 pWDICtx, pEventData);
7914 return WDI_STATUS_E_FAILURE;
7915 }
7916
7917 /*Return Success*/
7918 return WDI_ProcessRequest( pWDICtx, pEventData );
7919
7920}/*WDI_MainClose*/
7921/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007922 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007923--------------------------------------------------------------------------*/
7924/**
7925 @brief Main FSM Start function for state STARTED
7926
Jeff Johnsone7245742012-09-05 17:12:55 -07007927
7928 @param pWDICtx: pointer to the WLAN DAL context
7929 pEventData: pointer to the event information structure
7930
Jeff Johnson295189b2012-06-20 16:38:30 -07007931 @see
7932 @return Result of the function call
7933*/
7934WDI_Status
7935WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007936(
Jeff Johnson295189b2012-06-20 16:38:30 -07007937 WDI_ControlBlockType* pWDICtx,
7938 WDI_EventInfoType* pEventData
7939)
7940{
7941 WDI_StartRspCb wdiStartRspCb = NULL;
7942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7943
7944 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007945 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007946 ----------------------------------------------------------------------*/
7947 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7948 {
7949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07007950 "Invalid parameters on Main Start %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07007951 pWDICtx, pEventData);
7952 return WDI_STATUS_E_FAILURE;
7953 }
7954
7955 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007956 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 ----------------------------------------------------------------------*/
7958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007960
7961 wpalMutexAcquire(&pWDICtx->wptMutex);
7962
7963 /*Transition back to started because the post function transitioned us to
7964 busy*/
7965 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7966
7967 /*Check to see if any request is pending*/
7968 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007969
Jeff Johnson295189b2012-06-20 16:38:30 -07007970 wpalMutexRelease(&pWDICtx->wptMutex);
7971
7972 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007973 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7974
Jeff Johnson295189b2012-06-20 16:38:30 -07007975 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307976 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007977
7978 /*Return Success*/
7979 return WDI_STATUS_SUCCESS;
7980
7981}/*WDI_MainStartStarted*/
7982
7983/**
7984 @brief Main FSM Stop function for state STARTED
7985
Jeff Johnsone7245742012-09-05 17:12:55 -07007986
7987 @param pWDICtx: pointer to the WLAN DAL context
7988 pEventData: pointer to the event information structure
7989
Jeff Johnson295189b2012-06-20 16:38:30 -07007990 @see
7991 @return Result of the function call
7992*/
7993WDI_Status
7994WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007995(
Jeff Johnson295189b2012-06-20 16:38:30 -07007996 WDI_ControlBlockType* pWDICtx,
7997 WDI_EventInfoType* pEventData
7998)
7999{
8000 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008001 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 ----------------------------------------------------------------------*/
8003 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8004 {
8005 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008006 "Invalid parameters on Main Stop Started %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008007 pWDICtx, pEventData);
8008 return WDI_STATUS_E_FAILURE;
8009 }
8010
8011 /*State at this point is BUSY - because we enter this state before posting
8012 an event to the FSM in order to prevent potential race conditions*/
8013
8014 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
8015 "Processing stop request in FSM");
8016
8017 /*Return Success*/
8018 return WDI_ProcessRequest( pWDICtx, pEventData );
8019
8020}/*WDI_MainStopStarted*/
8021/**
8022 @brief Main FSM Request function for state started
8023
Jeff Johnsone7245742012-09-05 17:12:55 -07008024
8025 @param pWDICtx: pointer to the WLAN DAL context
8026 pEventData: pointer to the event information structure
8027
Jeff Johnson295189b2012-06-20 16:38:30 -07008028 @see
8029 @return Result of the function call
8030*/
8031WDI_Status
8032WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07008033(
Jeff Johnson295189b2012-06-20 16:38:30 -07008034 WDI_ControlBlockType* pWDICtx,
8035 WDI_EventInfoType* pEventData
8036)
8037{
8038
8039 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07008041 ----------------------------------------------------------------------*/
8042 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8043 {
8044 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008045 "Invalid parameters on Main Req Started %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 pWDICtx, pEventData);
8047 return WDI_STATUS_E_FAILURE;
8048 }
8049
8050 /*State at this point is BUSY - because we enter this state before posting
8051 an event to the FSM in order to prevent potential race conditions*/
8052
8053 /*Return Success*/
8054 return WDI_ProcessRequest( pWDICtx, pEventData );
8055
8056}/*WDI_MainReqStarted*/
8057
8058/**
8059 @brief Main FSM Response function for all states except INIT
8060
Jeff Johnsone7245742012-09-05 17:12:55 -07008061
8062 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07008063 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07008064
Jeff Johnson295189b2012-06-20 16:38:30 -07008065 @see
8066 @return Result of the function call
8067*/
8068WDI_Status
8069WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07008070(
Jeff Johnson295189b2012-06-20 16:38:30 -07008071 WDI_ControlBlockType* pWDICtx,
8072 WDI_EventInfoType* pEventData
8073)
8074{
Jeff Johnsone7245742012-09-05 17:12:55 -07008075 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008076 wpt_boolean expectedResponse;
8077
8078 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008079 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07008080 ----------------------------------------------------------------------*/
8081 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8082 {
8083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008084 "Invalid parameters on Main Response %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 pWDICtx, pEventData);
8086 return WDI_STATUS_E_FAILURE;
8087 }
8088
8089 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
8090 {
8091 /* we received an expected response */
8092 expectedResponse = eWLAN_PAL_TRUE;
8093
8094 /*We expect that we will transition to started after this processing*/
8095 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
8096
8097 /* we are no longer expecting a response */
8098 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
8099 }
8100 else
8101 {
8102 /* we received an indication or unexpected response */
8103 expectedResponse = eWLAN_PAL_FALSE;
8104 /* for indications no need to update state from what it is right
8105 now, unless it explicitly does it in the indication handler (say
8106 for device failure ind) */
8107 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
8108 }
8109
8110 /*Process the response and indication */
8111 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
8112
8113 /*Lock the CB as we are about to do a state transition*/
8114 wpalMutexAcquire(&pWDICtx->wptMutex);
8115
8116 /*Transition to the expected state after the response processing
8117 - this should always be started state with the following exceptions:
8118 1. processing of a failed start response
8119 2. device failure detected while processing response
8120 3. stop response received*/
8121 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07008122
Jeff Johnson295189b2012-06-20 16:38:30 -07008123 /*Dequeue request that may have been queued while we were waiting for the
8124 response */
8125 if ( expectedResponse )
8126 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008127 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07008128 }
8129
8130 wpalMutexRelease(&pWDICtx->wptMutex);
8131
8132 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07008133 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008134
8135}/*WDI_MainRsp*/
8136
8137/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07008139--------------------------------------------------------------------------*/
8140/**
8141 @brief Main FSM Stop function for state STOPPED
8142
Jeff Johnsone7245742012-09-05 17:12:55 -07008143
8144 @param pWDICtx: pointer to the WLAN DAL context
8145 pEventData: pointer to the event information structure
8146
Jeff Johnson295189b2012-06-20 16:38:30 -07008147 @see
8148 @return Result of the function call
8149*/
8150WDI_Status
8151WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07008152(
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 WDI_ControlBlockType* pWDICtx,
8154 WDI_EventInfoType* pEventData
8155)
8156{
8157 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008158 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 ----------------------------------------------------------------------*/
8160 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8161 {
8162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008163 "Invalid parameters on Main Stop Stopped %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 pWDICtx, pEventData);
8165 return WDI_STATUS_E_FAILURE;
8166 }
8167
8168 /*We should normally not get a STOP request if we are already stopped
8169 since we should normally be stopped by the UMAC. However in some
8170 error situations we put ourselves in the stopped state without the
8171 UMAC knowing, so when we get a STOP request in this state we still
8172 process it since we need to clean up the underlying state */
8173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8174 "Processing stop request while stopped in FSM");
8175
8176 /*Return Success*/
8177 return WDI_ProcessRequest( pWDICtx, pEventData );
8178
8179}/*WDI_MainStopStopped*/
8180
8181/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07008183--------------------------------------------------------------------------*/
8184/**
8185 @brief Main FSM Start function for state BUSY
8186
Jeff Johnsone7245742012-09-05 17:12:55 -07008187
8188 @param pWDICtx: pointer to the WLAN DAL context
8189 pEventData: pointer to the event information structure
8190
Jeff Johnson295189b2012-06-20 16:38:30 -07008191 @see
8192 @return Result of the function call
8193*/
8194WDI_Status
8195WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07008196(
Jeff Johnson295189b2012-06-20 16:38:30 -07008197 WDI_ControlBlockType* pWDICtx,
8198 WDI_EventInfoType* pEventData
8199)
8200{
8201 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008202 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07008203 ----------------------------------------------------------------------*/
8204 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8205 {
8206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008207 "Invalid parameters on Main Start in BUSY %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008208 pWDICtx, pEventData);
8209 return WDI_STATUS_E_FAILURE;
8210 }
8211
8212 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008213 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07008214 ----------------------------------------------------------------------*/
8215 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8216 "WDI Busy state - queue start request");
8217
8218 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008219 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008220
8221 /*Return Success*/
8222 return WDI_STATUS_PENDING;
8223}/*WDI_MainStartBusy*/
8224
8225/**
8226 @brief Main FSM Stop function for state BUSY
8227
Jeff Johnsone7245742012-09-05 17:12:55 -07008228
8229 @param pWDICtx: pointer to the WLAN DAL context
8230 pEventData: pointer to the event information structure
8231
Jeff Johnson295189b2012-06-20 16:38:30 -07008232 @see
8233 @return Result of the function call
8234*/
8235WDI_Status
8236WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07008237(
Jeff Johnson295189b2012-06-20 16:38:30 -07008238 WDI_ControlBlockType* pWDICtx,
8239 WDI_EventInfoType* pEventData
8240)
8241{
8242 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008243 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07008244 ----------------------------------------------------------------------*/
8245 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8246 {
8247 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008248 "Invalid parameters on Main Stop in BUSY %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008249 pWDICtx, pEventData);
8250 return WDI_STATUS_E_FAILURE;
8251 }
8252
8253 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008254 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07008255 ----------------------------------------------------------------------*/
8256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8257 "WDI Busy state - queue stop request");
8258
Jeff Johnsone7245742012-09-05 17:12:55 -07008259 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07008261
Jeff Johnson295189b2012-06-20 16:38:30 -07008262}/*WDI_MainStopBusy*/
8263
8264/**
8265 @brief Main FSM Request function for state BUSY
8266
Jeff Johnsone7245742012-09-05 17:12:55 -07008267
8268 @param pWDICtx: pointer to the WLAN DAL context
8269 pEventData: pointer to the event information structure
8270
Jeff Johnson295189b2012-06-20 16:38:30 -07008271 @see
8272 @return Result of the function call
8273*/
8274WDI_Status
8275WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07008276(
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 WDI_ControlBlockType* pWDICtx,
8278 WDI_EventInfoType* pEventData
8279)
8280{
8281 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 ----------------------------------------------------------------------*/
8284 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8285 {
8286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008287 "Invalid parameters on Main Request in BUSY %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 pWDICtx, pEventData);
8289 return WDI_STATUS_E_FAILURE;
8290 }
8291
8292 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008293 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07008294 ----------------------------------------------------------------------*/
8295 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8296 "WDI Busy state - queue request %d because waiting for response %d",
8297 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
8298
Jeff Johnsone7245742012-09-05 17:12:55 -07008299 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008300 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07008301
Jeff Johnson295189b2012-06-20 16:38:30 -07008302}/*WDI_MainReqBusy*/
8303/**
8304 @brief Main FSM Close function for state BUSY
8305
Jeff Johnsone7245742012-09-05 17:12:55 -07008306
8307 @param pWDICtx: pointer to the WLAN DAL context
8308 pEventData: pointer to the event information structure
8309
Jeff Johnson295189b2012-06-20 16:38:30 -07008310 @see
8311 @return Result of the function call
8312*/
8313WDI_Status
8314WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07008315(
Jeff Johnson295189b2012-06-20 16:38:30 -07008316 WDI_ControlBlockType* pWDICtx,
8317 WDI_EventInfoType* pEventData
8318)
8319{
8320 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 ----------------------------------------------------------------------*/
8323 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8324 {
8325 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008326 "Invalid parameters on Main Close in BUSY %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008327 pWDICtx, pEventData);
8328 return WDI_STATUS_E_FAILURE;
8329 }
8330
8331 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008332 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07008333 ----------------------------------------------------------------------*/
8334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8335 "WDI Busy state - queue close request");
8336
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07008339
Jeff Johnson295189b2012-06-20 16:38:30 -07008340}/*WDI_MainCloseBusy*/
8341
8342/**
8343 @brief Main FSM Shutdown function for INIT & STARTED states
8344
8345
8346 @param pWDICtx: pointer to the WLAN DAL context
8347 pEventData: pointer to the event information structure
8348
8349 @see
8350 @return Result of the function call
8351*/
8352WDI_Status
8353WDI_MainShutdown
8354(
8355 WDI_ControlBlockType* pWDICtx,
8356 WDI_EventInfoType* pEventData
8357)
8358{
8359 /*--------------------------------------------------------------------
8360 Sanity Check
8361 ----------------------------------------------------------------------*/
8362 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8363 {
8364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008365 "Invalid parameters on Main Start %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 pWDICtx, pEventData);
8367 return WDI_STATUS_E_FAILURE;
8368 }
8369
8370 /*State at this point is BUSY - because we enter this state before posting
8371 an event to the FSM in order to prevent potential race conditions*/
8372
8373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
8374 "Processing shutdown request in FSM");
8375
8376 /*Return Success*/
8377 return WDI_ProcessRequest( pWDICtx, pEventData );
8378
8379}/*WDI_MainShutdown*/
8380
8381/**
8382 @brief Main FSM Shutdown function for BUSY state
8383
8384
8385 @param pWDICtx: pointer to the WLAN DAL context
8386 pEventData: pointer to the event information structure
8387
8388 @see
8389 @return Result of the function call
8390*/
8391WDI_Status
8392WDI_MainShutdownBusy
8393(
8394 WDI_ControlBlockType* pWDICtx,
8395 WDI_EventInfoType* pEventData
8396)
8397{
8398 /*--------------------------------------------------------------------
8399 Sanity Check
8400 ----------------------------------------------------------------------*/
8401 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8402 {
8403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008404 "Invalid parameters on Main Start %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 pWDICtx, pEventData);
8406 return WDI_STATUS_E_FAILURE;
8407 }
8408
8409 /* If you are waiting for a HAL response at this stage, you are not
8410 * going to get it. Riva is already shutdown/crashed.
8411 */
8412 wpalTimerStop(&gWDICb.wptResponseTimer);
8413
8414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
8415 "Processing shutdown request in FSM: Busy state ");
8416
8417 return WDI_ProcessRequest( pWDICtx, pEventData );
8418
8419}/*WDI_MainShutdownBusy*/
8420
8421
Jeff Johnsone7245742012-09-05 17:12:55 -07008422/*=======================================================================
8423
Jeff Johnson295189b2012-06-20 16:38:30 -07008424 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07008425
Jeff Johnson295189b2012-06-20 16:38:30 -07008426*=======================================================================*/
8427
8428/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008429 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07008430========================================================================*/
8431/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008434
8435 @param pWDICtx: pointer to the WLAN DAL context
8436 pEventData: pointer to the event information structure
8437
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 @see
8439 @return Result of the function call
8440*/
8441WDI_Status
8442WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008443(
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 WDI_ControlBlockType* pWDICtx,
8445 WDI_EventInfoType* pEventData
8446)
8447{
8448 WDI_StartReqParamsType* pwdiStartParams = NULL;
8449 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 wpt_uint16 usDataOffset = 0;
8452 wpt_uint16 usSendSize = 0;
8453
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 tHalMacStartReqMsg halStartReq;
8455 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008456 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8457
8458 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008459 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008460 -------------------------------------------------------------------------*/
8461 if (( NULL == pEventData ) ||
8462 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
8463 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
8464 {
8465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008466 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008467 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008468 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008469 }
8470
8471 /*-----------------------------------------------------------------------
8472 Get message buffer
8473 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008474 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07008475 pwdiStartParams->usConfigBufferLen;
8476
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 usLen,
8479 &pSendBuffer, &usDataOffset, &usSendSize))||
8480 ( usSendSize < (usDataOffset + usLen )))
8481 {
8482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008483 "Unable to get send buffer in start req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 pEventData, pwdiStartParams, wdiStartRspCb);
8485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 }
8488
8489 /*-----------------------------------------------------------------------
8490 Fill in the message
8491 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008492 halStartReq.startReqParams.driverType =
8493 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07008494
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 halStartReq.startReqParams.uConfigBufferLen =
8496 pwdiStartParams->usConfigBufferLen;
8497 wpalMemoryCopy( pSendBuffer+usDataOffset,
8498 &halStartReq.startReqParams,
8499 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008500
Jeff Johnsone7245742012-09-05 17:12:55 -07008501 usDataOffset += sizeof(halStartReq.startReqParams);
8502 wpalMemoryCopy( pSendBuffer+usDataOffset,
8503 pwdiStartParams->pConfigBuffer,
8504 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07008505
8506 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008508
8509 /*Save Low Level Ind CB and associated user data - it will be used further
8510 on when an indication is coming from the lower MAC*/
8511 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008512 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008513
Jeff Johnsone7245742012-09-05 17:12:55 -07008514 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07008515 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008518 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008519 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8520
Jeff Johnsone7245742012-09-05 17:12:55 -07008521
Jeff Johnson295189b2012-06-20 16:38:30 -07008522}/*WDI_ProcessStartReq*/
8523
8524/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008526 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008527
8528 @param pWDICtx: pointer to the WLAN DAL context
8529 pEventData: pointer to the event information structure
8530
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 @see
8532 @return Result of the function call
8533*/
8534WDI_Status
8535WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008536(
Jeff Johnson295189b2012-06-20 16:38:30 -07008537 WDI_ControlBlockType* pWDICtx,
8538 WDI_EventInfoType* pEventData
8539)
8540{
8541 WDI_StopReqParamsType* pwdiStopParams = NULL;
8542 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008543 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008544 wpt_uint16 usDataOffset = 0;
8545 wpt_uint16 usSendSize = 0;
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +05308546 wpt_status status = WDI_STATUS_E_FAILURE;
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8549
8550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008552 -------------------------------------------------------------------------*/
8553 if (( NULL == pEventData ) ||
8554 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8555 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8556 {
8557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008558 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008559 WDI_ASSERT(0);
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +05308560 goto free_wlan_feat_caps;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 }
8562
8563 /*-----------------------------------------------------------------------
8564 Get message buffer
8565 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008566 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 sizeof(halStopReq.stopReqParams),
8568 &pSendBuffer, &usDataOffset, &usSendSize))||
8569 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8570 {
8571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008572 "Unable to get send buffer in stop req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008573 pEventData, pwdiStopParams, wdiStopRspCb);
8574 WDI_ASSERT(0);
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +05308575 goto free_wlan_feat_caps;
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 }
8577
8578 /*-----------------------------------------------------------------------
8579 Fill in the message
8580 -----------------------------------------------------------------------*/
8581 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8582 pwdiStopParams->wdiStopReason);
8583
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 wpalMemoryCopy( pSendBuffer+usDataOffset,
8585 &halStopReq.stopReqParams,
8586 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008587
8588 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008589 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008590
8591 /*! TO DO: stop the data services */
8592 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8593 {
8594 /*Stop the STA Table !UT- check this logic again
8595 It is safer to do it here than on the response - because a stop is imminent*/
8596 WDI_STATableStop(pWDICtx);
8597
8598 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008599 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8600 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 {
8602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8603 "WDI Init failed to reset power state event");
8604
Jeff Johnsone7245742012-09-05 17:12:55 -07008605 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008606 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 }
8608 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008609 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8610 if( eWLAN_PAL_STATUS_SUCCESS != status )
8611 {
8612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008613 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Power Down state", status);
Ravali85acf6b2012-12-12 14:01:38 -08008614 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008615 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008616 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008620 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8621 WDI_SET_POWER_STATE_TIMEOUT);
8622 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 {
Abhishek Singh5edbb9b2016-04-06 11:55:33 +05308624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 "WDI Init failed to wait on an event");
8626
Abhishek Singh5edbb9b2016-04-06 11:55:33 +05308627 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008628 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008629 }
8630 }
8631
8632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008633 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 -------------------------------------------------------------------------*/
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +05308635 status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +05308637 goto free_wlan_feat_caps;
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008638fail:
8639 // Release the message buffer so we don't leak
8640 wpalMemoryFree(pSendBuffer);
8641
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +05308642free_wlan_feat_caps:
8643 /* Free global wlan feature caps variables */
8644 wpalMemoryFree(gpHostWlanFeatCaps);
8645 wpalMemoryFree(gpFwWlanFeatCaps);
8646 gpHostWlanFeatCaps = NULL;
8647 gpFwWlanFeatCaps = NULL;
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008648
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +05308649 //WDA should have failure check to avoid the memory leak
8650 return status;
Jeff Johnson295189b2012-06-20 16:38:30 -07008651}/*WDI_ProcessStopReq*/
8652
8653/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008654 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008655 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008656
8657 @param pWDICtx: pointer to the WLAN DAL context
8658 pEventData: pointer to the event information structure
8659
Jeff Johnson295189b2012-06-20 16:38:30 -07008660 @see
8661 @return Result of the function call
8662*/
8663WDI_Status
8664WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008665(
Jeff Johnson295189b2012-06-20 16:38:30 -07008666 WDI_ControlBlockType* pWDICtx,
8667 WDI_EventInfoType* pEventData
8668)
8669{
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8672
8673 /*Lock control block for cleanup*/
8674 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008675
Jeff Johnson295189b2012-06-20 16:38:30 -07008676 /*Clear all pending request*/
8677 WDI_ClearPendingRequests(pWDICtx);
8678
8679 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008680 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008681
8682 /* Close Data transport*/
8683 /* FTM mode does not open Data Path */
8684 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8685 {
8686 WDTS_Close(pWDICtx);
8687 }
8688
8689 /*Close the STA Table !UT- check this logic again*/
8690 WDI_STATableClose(pWDICtx);
8691
8692 /*close the PAL */
8693 wptStatus = wpalClose(pWDICtx->pPALContext);
8694 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8695 {
8696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8697 "Failed to wpal Close %d", wptStatus);
8698 WDI_ASSERT(0);
8699 }
8700
8701 /*Transition back to init state*/
8702 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8703
8704 wpalMutexRelease(&pWDICtx->wptMutex);
8705
8706 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008708
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008710}/*WDI_ProcessCloseReq*/
8711
8712
8713/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008714 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008715===========================================================================*/
8716
8717/**
8718 @brief Process Init Scan Request function (called when Main FSM
8719 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008720
8721 @param pWDICtx: pointer to the WLAN DAL context
8722 pEventData: pointer to the event information structure
8723
Jeff Johnson295189b2012-06-20 16:38:30 -07008724 @see
8725 @return Result of the function call
8726*/
8727WDI_Status
8728WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008729(
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 WDI_ControlBlockType* pWDICtx,
8731 WDI_EventInfoType* pEventData
8732)
8733{
8734 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8735 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008736 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008737 wpt_uint16 usDataOffset = 0;
8738 wpt_uint16 usSendSize = 0;
8739 wpt_uint8 i = 0;
8740
8741 tHalInitScanReqMsg halInitScanReqMsg;
8742
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 * It shold be removed once host and riva changes are in sync*/
8745 tHalInitScanConReqMsg halInitScanConReqMsg;
8746
8747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8748
8749 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008751 -------------------------------------------------------------------------*/
8752 if (( NULL == pEventData ) ||
8753 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8754 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8755 {
8756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008757 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008759 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008760 }
8761
8762#if 0
8763 wpalMutexAcquire(&pWDICtx->wptMutex);
8764 /*-----------------------------------------------------------------------
8765 Check to see if SCAN is already in progress - if so reject the req
8766 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008767 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008768 -----------------------------------------------------------------------*/
8769 if ( pWDICtx->bScanInProgress )
8770 {
8771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8772 "Scan is already in progress - subsequent scan is not allowed"
8773 " until the first scan completes");
8774
8775 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008777 }
8778
Jeff Johnsone7245742012-09-05 17:12:55 -07008779 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8780 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008781
8782 wpalMutexRelease(&pWDICtx->wptMutex);
8783#endif
Viral Modid86bde22012-12-10 13:09:21 -08008784 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008785 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008786 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008787 * It shold be removed once host and riva changes are in sync*/
8788 /*-----------------------------------------------------------------------
8789 Get message buffer
8790 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008792 sizeof(halInitScanConReqMsg.initScanParams),
8793 &pSendBuffer, &usDataOffset, &usSendSize))||
8794 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8795 {
8796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008797 "Unable to get send buffer in init scan req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008798 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008801 }
8802
8803
8804 /*-----------------------------------------------------------------------
8805 Fill in the message
8806 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008807 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008808 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8809
8810 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8811 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8812
Jeff Johnsone7245742012-09-05 17:12:55 -07008813 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008814 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008815 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008817 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8819
8820 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8821 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8822
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8824 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008825
Jeff Johnsone7245742012-09-05 17:12:55 -07008826 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008827 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8828
8829 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8830 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008831 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008832 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8833 }
8834
Jeff Johnsone7245742012-09-05 17:12:55 -07008835 wpalMemoryCopy( pSendBuffer+usDataOffset,
8836 &halInitScanConReqMsg.initScanParams,
8837 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 }
8839 else
8840 {
8841 /*-----------------------------------------------------------------------
8842 Get message buffer
8843 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008845 sizeof(halInitScanReqMsg.initScanParams),
8846 &pSendBuffer, &usDataOffset, &usSendSize))||
8847 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8848 {
8849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008850 "Unable to get send buffer in init scan req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008851 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8852 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008853 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008854 }
8855
8856
8857 /*-----------------------------------------------------------------------
8858 Fill in the message
8859 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8862
8863 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8864 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8865
Jeff Johnsone7245742012-09-05 17:12:55 -07008866 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008867 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8872
8873 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8874 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8875
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8878
8879 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8880 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8883 }
8884
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 wpalMemoryCopy( pSendBuffer+usDataOffset,
8886 &halInitScanReqMsg.initScanParams,
8887 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008888 }
8889
8890 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008891 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008892
8893 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008894 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008895 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008896 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008897 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8898
8899}/*WDI_ProcessInitScanReq*/
8900
8901/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008902 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008903 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008904
8905 @param pWDICtx: pointer to the WLAN DAL context
8906 pEventData: pointer to the event information structure
8907
Jeff Johnson295189b2012-06-20 16:38:30 -07008908 @see
8909 @return Result of the function call
8910*/
8911WDI_Status
8912WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008913(
Jeff Johnson295189b2012-06-20 16:38:30 -07008914 WDI_ControlBlockType* pWDICtx,
8915 WDI_EventInfoType* pEventData
8916)
8917{
8918 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8919 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008920 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008921 wpt_uint16 usDataOffset = 0;
8922 wpt_uint16 usSendSize = 0;
8923
Jeff Johnsone7245742012-09-05 17:12:55 -07008924 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8926
8927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008929 -------------------------------------------------------------------------*/
8930 if (( NULL == pEventData ) ||
8931 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8932 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8933 {
8934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 }
8939
8940#if 0
8941 wpalMutexAcquire(&pWDICtx->wptMutex);
8942 /*-----------------------------------------------------------------------
8943 Check to see if SCAN is already in progress - start scan is only
8944 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008945 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8949 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8950 {
8951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8952 "Scan start not allowed in this state %d %d",
8953 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008954
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008956 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008957 }
8958
Jeff Johnsone7245742012-09-05 17:12:55 -07008959 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008960
8961 wpalMutexRelease(&pWDICtx->wptMutex);
8962#endif
8963
8964 /*-----------------------------------------------------------------------
8965 Get message buffer
8966 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 sizeof(halStartScanReqMsg.startScanParams),
8969 &pSendBuffer, &usDataOffset, &usSendSize))||
8970 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8971 {
8972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07008973 "Unable to get send buffer in start scan req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07008974 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8975 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008976 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008977 }
8978
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008980 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008981 wpalMemoryCopy( pSendBuffer+usDataOffset,
8982 &halStartScanReqMsg.startScanParams,
8983 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008984
8985 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008986 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008987
8988 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008990 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008992 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8993}/*WDI_ProcessStartScanReq*/
8994
8995
Sourav Mohapatra2416e0e2018-03-05 18:44:21 +05308996WDI_Status
8997WDI_process_vowifi_request(WDI_ControlBlockType* pWDICtx,
8998 WDI_EventInfoType* pEventData)
8999{
9000 wpt_uint8* pSendBuffer = NULL;
9001 wpt_uint16 usDataOffset = 0;
9002 wpt_uint16 usSendSize = 0;
9003 wpt_boolean *enable;
9004 tHalVoWiFiInd hal_vowifi_msg;
9005 WDI_Status wdiStatus;
9006
9007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9008
9009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9010 "%s", __func__);
9011
9012 /*-------------------------------------------------------------------------
9013 Sanity check
9014 -------------------------------------------------------------------------*/
9015 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ) {
9016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
9017 "%s: Invalid parameters", __func__);
9018 WDI_ASSERT(0);
9019 return WDI_STATUS_E_FAILURE;
9020 }
9021 enable = (wpt_boolean*)pEventData->pEventData;
9022
9023 /*-----------------------------------------------------------------------
9024 Get message buffer
9025 -----------------------------------------------------------------------*/
9026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9027 WDI_SET_VOWIFI_IND,
9028 sizeof(tHalVoWiFiIndParams),
9029 &pSendBuffer, &usDataOffset, &usSendSize))||
9030 ( usSendSize < (usDataOffset + sizeof(tHalVoWiFiIndParams) )))
9031 {
9032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
9033 "Unable to get send buffer VOWIFI ind %pK ",
9034 pEventData);
9035 WDI_ASSERT(0);
9036 return WDI_STATUS_E_FAILURE;
9037 }
9038
9039 hal_vowifi_msg.voWiFiIndParams.enable = *enable;
9040
9041 wpalMemoryCopy( pSendBuffer+usDataOffset,
9042 &hal_vowifi_msg.voWiFiIndParams,
9043 sizeof(hal_vowifi_msg.voWiFiIndParams));
9044
9045 pWDICtx->pReqStatusUserData = NULL;
9046 pWDICtx->pfncRspCB = NULL;
9047
9048 /*-------------------------------------------------------------------------
9049 Send VOWIFI mode Request to HAL
9050 -------------------------------------------------------------------------*/
9051 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
9052 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
9053}
9054
Ashish Kumar Dhanotiyaf59c7762018-04-10 17:54:25 +05309055WDI_Status
9056WDI_process_qpower_request(WDI_ControlBlockType* pWDICtx,
9057 WDI_EventInfoType* pEventData)
9058{
9059 wpt_uint8* pSendBuffer = NULL;
9060 wpt_uint16 usDataOffset = 0;
9061 wpt_uint16 usSendSize = 0;
9062 uint8_t *enable;
9063 tHalQpower hal_qpower_msg;
9064 WDI_Status wdiStatus;
9065
9066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9067
9068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9069 "%s", __func__);
9070
9071 /*-------------------------------------------------------------------------
9072 Sanity check
9073 -------------------------------------------------------------------------*/
9074 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ) {
9075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
9076 "%s: Invalid parameters", __func__);
9077 WDI_ASSERT(0);
9078 return WDI_STATUS_E_FAILURE;
9079 }
9080 enable = (uint8_t*)pEventData->pEventData;
9081
9082 /*-----------------------------------------------------------------------
9083 Get message buffer
9084 -----------------------------------------------------------------------*/
9085 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
9086 WDI_SET_QPOWER,
9087 sizeof(tHalQpowerParams),
9088 &pSendBuffer, &usDataOffset, &usSendSize))||
9089 ( usSendSize < (usDataOffset + sizeof(tHalQpowerParams) )))
9090 {
9091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
9092 "Unable to get send buffer QPOWER ind %pK ",
9093 pEventData);
9094 WDI_ASSERT(0);
9095 return WDI_STATUS_E_FAILURE;
9096 }
9097
9098 hal_qpower_msg.qpowerParams.enable = *enable;
9099
9100 wpalMemoryCopy( pSendBuffer+usDataOffset,
9101 &hal_qpower_msg.qpowerParams,
9102 sizeof(hal_qpower_msg.qpowerParams));
9103
9104 pWDICtx->pReqStatusUserData = NULL;
9105 pWDICtx->pfncRspCB = NULL;
9106
9107 /*-------------------------------------------------------------------------
9108 Send QPOWER Request to HAL
9109 -------------------------------------------------------------------------*/
9110 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
9111 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
9112}
9113
Jeff Johnson295189b2012-06-20 16:38:30 -07009114/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009115 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009117
9118 @param pWDICtx: pointer to the WLAN DAL context
9119 pEventData: pointer to the event information structure
9120
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 @see
9122 @return Result of the function call
9123*/
9124WDI_Status
9125WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009126(
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 WDI_ControlBlockType* pWDICtx,
9128 WDI_EventInfoType* pEventData
9129)
9130{
9131 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
9132 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 wpt_uint16 usDataOffset = 0;
9135 wpt_uint16 usSendSize = 0;
9136
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9139
9140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009141 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 -------------------------------------------------------------------------*/
9143 if (( NULL == pEventData ) ||
9144 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
9145 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
9146 {
9147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009148 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 }
9152
Jeff Johnsone7245742012-09-05 17:12:55 -07009153 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
9154 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07009155 * forwarded to HAL and result in hang*/
9156#if 0
9157 wpalMutexAcquire(&pWDICtx->wptMutex);
9158 /*-----------------------------------------------------------------------
9159 Check to see if SCAN is already in progress - end scan is only
9160 allowed when a scan is ongoing and the state of the scan procedure
9161 is started
9162 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009163 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
9165 {
9166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9167 "End start not allowed in this state %d %d",
9168 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07009169
Jeff Johnson295189b2012-06-20 16:38:30 -07009170 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009172 }
9173
Jeff Johnsone7245742012-09-05 17:12:55 -07009174 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009175
9176 wpalMutexRelease(&pWDICtx->wptMutex);
9177#endif
9178
9179 /*-----------------------------------------------------------------------
9180 Get message buffer
9181 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009183 sizeof(halEndScanReqMsg.endScanParams),
9184 &pSendBuffer, &usDataOffset, &usSendSize))||
9185 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
9186 {
9187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07009188 "Unable to get send buffer in start scan req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
9190 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009191 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009192 }
9193
9194 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
9195
Jeff Johnsone7245742012-09-05 17:12:55 -07009196 wpalMemoryCopy( pSendBuffer+usDataOffset,
9197 &halEndScanReqMsg.endScanParams,
9198 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009199
9200 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009201 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009202
9203 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009204 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009206 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
9208}/*WDI_ProcessEndScanReq*/
9209
9210
9211/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009212 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009213 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009214
9215 @param pWDICtx: pointer to the WLAN DAL context
9216 pEventData: pointer to the event information structure
9217
Jeff Johnson295189b2012-06-20 16:38:30 -07009218 @see
9219 @return Result of the function call
9220*/
9221WDI_Status
9222WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009223(
Jeff Johnson295189b2012-06-20 16:38:30 -07009224 WDI_ControlBlockType* pWDICtx,
9225 WDI_EventInfoType* pEventData
9226)
9227{
9228 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
9229 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009230 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009231 wpt_uint16 usDataOffset = 0;
9232 wpt_uint16 usSendSize = 0;
9233 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08009234 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07009235 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9237
9238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009240 -------------------------------------------------------------------------*/
9241 if (( NULL == pEventData ) ||
9242 ( NULL == pEventData->pEventData) ||
9243 ( NULL == pEventData->pCBfnc))
9244 {
9245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009249 }
9250
9251 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
9252 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07009253 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
9254 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07009255 * forwarded to HAL and result in hang*/
9256#if 0
9257 wpalMutexAcquire(&pWDICtx->wptMutex);
9258 /*-----------------------------------------------------------------------
9259 Check to see if SCAN is already in progress
9260 Finish scan gets invoked any scan states. ie. abort scan
9261 It should be allowed in any states.
9262 -----------------------------------------------------------------------*/
9263 if ( !pWDICtx->bScanInProgress )
9264 {
9265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9266 "Finish start not allowed in this state %d",
9267 pWDICtx->bScanInProgress );
9268
9269 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08009270 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 }
9272
9273 /*-----------------------------------------------------------------------
9274 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07009275 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009277 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
9278 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009279 wpalMutexRelease(&pWDICtx->wptMutex);
9280#endif
9281
9282 if ( pWDICtx->bInBmps )
9283 {
9284 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08009285 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
9286 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
9287 {
9288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08009289 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08009290 WDI_ASSERT(0);
9291 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009292 }
9293
9294 /*-----------------------------------------------------------------------
9295 Get message buffer
9296 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 sizeof(halFinishScanReqMsg.finishScanParams),
9299 &pSendBuffer, &usDataOffset, &usSendSize))||
9300 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
9301 {
9302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07009303 "Unable to get send buffer in start scan req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
9305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009307 }
9308
Jeff Johnsone7245742012-09-05 17:12:55 -07009309 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07009310 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
9311
Jeff Johnsone7245742012-09-05 17:12:55 -07009312 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07009313 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
9314
Jeff Johnsone7245742012-09-05 17:12:55 -07009315 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07009316 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
9317
9318 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
9319 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
9320
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
9327
Jeff Johnsone7245742012-09-05 17:12:55 -07009328 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07009329 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
9330
9331 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
9332 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009333 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07009334 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
9335 }
9336
9337 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
9338 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
9339
Jeff Johnsone7245742012-09-05 17:12:55 -07009340 wpalMemoryCopy( pSendBuffer+usDataOffset,
9341 &halFinishScanReqMsg.finishScanParams,
9342 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009343
9344 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009345 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009346
9347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009348 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
9352}/*WDI_ProcessFinishScanReq*/
9353
9354
9355/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009356 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07009357==========================================================================*/
9358/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 @brief Process BSS Join for a given Session
9360
9361 @param pWDICtx: pointer to the WLAN DAL context
9362 pEventData: pointer to the event information structure
9363
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 @see
9365 @return Result of the function call
9366*/
9367WDI_Status
9368WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009369(
Jeff Johnson295189b2012-06-20 16:38:30 -07009370 WDI_ControlBlockType* pWDICtx,
9371 WDI_JoinReqParamsType* pwdiJoinParams,
9372 WDI_JoinRspCb wdiJoinRspCb,
9373 void* pUserData
9374)
9375{
9376 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 wpt_uint16 usDataOffset = 0;
9379 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009380 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009381
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9384
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07009385 wpalMutexAcquire(&pWDICtx->wptMutex);
9386
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 /*------------------------------------------------------------------------
9388 Check to see if we have any session with this BSSID already stored, we
9389 should not
9390 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009391 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9392 pwdiJoinParams->wdiReqInfo.macBSSID,
9393 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009394
9395 if ( NULL != pBSSSes )
9396 {
9397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07009398 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
9399 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009400
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07009401 /*reset the bAssociationInProgress otherwise the next
9402 *join request will be queued*/
9403 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9404 wpalMutexRelease(&pWDICtx->wptMutex);
9405 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009406 }
9407
Jeff Johnson295189b2012-06-20 16:38:30 -07009408 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009410 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009412 if ( NULL == pBSSSes )
9413 {
9414
9415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9416 "DAL has no free sessions - cannot run another join");
9417
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07009418 /*reset the bAssociationInProgress otherwise the next
9419 *join request will be queued*/
9420 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 }
9424
9425 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009426 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9427 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009428 WDI_MAC_ADDR_LEN);
9429
9430 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009431 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009432 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07009433
Jeff Johnson295189b2012-06-20 16:38:30 -07009434 wpalMutexRelease(&pWDICtx->wptMutex);
9435
9436 /*-----------------------------------------------------------------------
9437 Get message buffer
9438 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 sizeof(halJoinReqMsg.joinReqParams),
9441 &pSendBuffer, &usDataOffset, &usSendSize))||
9442 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
9443 {
9444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07009445 "Unable to get send buffer in join req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07009446 pUserData, pwdiJoinParams, wdiJoinRspCb);
9447 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 }
9450
9451 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07009453
9454 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07009455 pwdiJoinParams->wdiReqInfo.macSTASelf,
9456 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07009457
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
9460
9461 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
9462
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07009463#ifdef WLAN_FEATURE_VOWIFI
9464 halJoinReqMsg.joinReqParams.maxTxPower =
9465 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
9466#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009467 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07009468 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
9469#endif
9470
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
9473 wdiSecondaryChannelOffset);
9474
Jeff Johnsone7245742012-09-05 17:12:55 -07009475 wpalMemoryCopy( pSendBuffer+usDataOffset,
9476 &halJoinReqMsg.joinReqParams,
9477 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009478
9479 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009480 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009481
9482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9486 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009487
9488}/*WDI_ProcessBSSSessionJoinReq*/
9489
9490/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009493
9494 @param pWDICtx: pointer to the WLAN DAL context
9495 pEventData: pointer to the event information structure
9496
Jeff Johnson295189b2012-06-20 16:38:30 -07009497 @see
9498 @return Result of the function call
9499*/
9500WDI_Status
9501WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009502(
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 WDI_ControlBlockType* pWDICtx,
9504 WDI_EventInfoType* pEventData
9505)
9506{
9507 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9508 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
9509 WDI_JoinRspCb wdiJoinRspCb = NULL;
9510 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9511
9512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009513 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009514 -------------------------------------------------------------------------*/
9515 if (( NULL == pEventData ) ||
9516 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
9517 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
9518 {
9519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009520 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009523 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009524
Jeff Johnson295189b2012-06-20 16:38:30 -07009525 /*-------------------------------------------------------------------------
9526 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 -------------------------------------------------------------------------*/
9529 wpalMutexAcquire(&pWDICtx->wptMutex);
9530
9531 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
9532 {
9533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9534 "Association is currently in progress, queueing new join req");
9535
9536 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 pwdiJoinParams->wdiReqInfo.macBSSID);
9539
9540 wpalMutexRelease(&pWDICtx->wptMutex);
9541
Jeff Johnsone7245742012-09-05 17:12:55 -07009542 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009543 }
9544
9545 /*Starting a new association */
9546 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
9547 wpalMutexRelease(&pWDICtx->wptMutex);
9548
9549 /*Process the Join Request*/
9550 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
9551 wdiJoinRspCb,pEventData->pUserData);
9552
9553}/*WDI_ProcessJoinReq*/
9554
9555
9556/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009557 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009558 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009559
9560 @param pWDICtx: pointer to the WLAN DAL context
9561 pEventData: pointer to the event information structure
9562
Jeff Johnson295189b2012-06-20 16:38:30 -07009563 @see
9564 @return Result of the function call
9565*/
9566WDI_Status
9567WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009568(
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 WDI_ControlBlockType* pWDICtx,
9570 WDI_EventInfoType* pEventData
9571)
9572{
9573 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
9574 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009575 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009576 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009577 wpt_uint16 uMsgSize = 0;
9578 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 wpt_uint16 usDataOffset = 0;
9580 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009582
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9585
9586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009588 -------------------------------------------------------------------------*/
9589 if (( NULL == pEventData ) ||
9590 ( NULL == pEventData->pEventData ) ||
9591 ( NULL == pEventData->pCBfnc ))
9592 {
9593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 }
9598
Abhishek Singh6927fa02014-06-27 17:19:55 +05309599 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009600 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
9601 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
9602 /*-------------------------------------------------------------------------
9603 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 -------------------------------------------------------------------------*/
9606 wpalMutexAcquire(&pWDICtx->wptMutex);
9607
9608 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9612 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
9613 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009614
Jeff Johnsone7245742012-09-05 17:12:55 -07009615 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009616 {
9617#ifdef WLAN_FEATURE_VOWIFI_11R
9618 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009619 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009620 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009621 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009622 if ( NULL == pBSSSes )
9623 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009624
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9626 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009627
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009629 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009630 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009631
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9634 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009635 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009636
Jeff Johnson295189b2012-06-20 16:38:30 -07009637 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009638 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9640#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009641 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009642 * Request in case of IBSS*/
9643 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9644 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9645 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9646 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9647 {
9648 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009650 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009652 if ( NULL == pBSSSes )
9653 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009654
Jeff Johnson295189b2012-06-20 16:38:30 -07009655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9656 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009657
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009659 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009660 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009661
Jeff Johnson295189b2012-06-20 16:38:30 -07009662 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9664 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009665 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009666
Jeff Johnson295189b2012-06-20 16:38:30 -07009667 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009668 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009669 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9670 }
9671 else
9672 {
9673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009674 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9675 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9676 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9677
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 /* for IBSS testing */
9679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 }
9682#endif
9683 }
9684
9685 /*------------------------------------------------------------------------
9686 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 ------------------------------------------------------------------------*/
9689 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9690 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9692 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9693 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9694 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009695
Jeff Johnsone7245742012-09-05 17:12:55 -07009696 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009697
9698 wpalMutexRelease(&pWDICtx->wptMutex);
9699
Jeff Johnsone7245742012-09-05 17:12:55 -07009700 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009701 }
9702
9703 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009704 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9705 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009706 sizeof(pWDICtx->wdiCachedConfigBssReq));
9707
9708 wpalMutexRelease(&pWDICtx->wptMutex);
9709
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9711#ifdef WLAN_FEATURE_11AC
9712 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009713 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009714 else
9715#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009716 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009717
9718 /*-----------------------------------------------------------------------
9719 Get message buffer
9720 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9723 ( usSendSize < (usDataOffset + uMsgSize )))
9724 {
9725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07009726 "Unable to get send buffer in config bss req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 }
9731
9732 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009733#ifdef WLAN_FEATURE_11AC
9734 if (WDI_getFwWlanFeatCaps(DOT11AC))
9735 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9736 &pwdiConfigBSSParams->wdiReqInfo);
9737 else
9738#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009740 &pwdiConfigBSSParams->wdiReqInfo);
9741
9742 /* Need to fill in the STA Index to invalid, since at this point we have not
9743 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009744 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009745
9746 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009747 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9748
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009749#ifdef WLAN_FEATURE_11AC
9750 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9751 wpalMemoryCopy( pSendBuffer+usDataOffset,
9752 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9753 uMsgSize);
9754 }else
9755#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009756 {
9757 if ( uMsgSize <= sizeof(tConfigBssParams) )
9758 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009759 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009760 &halConfigBssReqMsg.uBssParams.configBssParams,
9761 uMsgSize);
9762 }
9763 else
9764 {
9765 return WDI_STATUS_E_FAILURE;
9766 }
9767 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009768
9769 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009770 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309771 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009775 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9776 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 WDI_CONFIG_BSS_RESP);
9778
9779}/*WDI_ProcessConfigBSSReq*/
9780
9781
9782/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009783 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009784 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009785
9786 @param pWDICtx: pointer to the WLAN DAL context
9787 pEventData: pointer to the event information structure
9788
Jeff Johnson295189b2012-06-20 16:38:30 -07009789 @see
9790 @return Result of the function call
9791*/
9792WDI_Status
9793WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009794(
Jeff Johnson295189b2012-06-20 16:38:30 -07009795 WDI_ControlBlockType* pWDICtx,
9796 WDI_EventInfoType* pEventData
9797)
9798{
9799 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9800 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009801 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009802 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009803 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009804 wpt_uint16 usDataOffset = 0;
9805 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009807
Jeff Johnsone7245742012-09-05 17:12:55 -07009808 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9810
9811 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009812 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009813 -------------------------------------------------------------------------*/
9814 if (( NULL == pEventData ) ||
9815 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9816 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9817 {
9818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009822 }
9823
9824 /*-------------------------------------------------------------------------
9825 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009827 -------------------------------------------------------------------------*/
9828 wpalMutexAcquire(&pWDICtx->wptMutex);
9829
9830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009832 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009833 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9834 pwdiDelBSSParams->ucBssIdx,
9835 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009836
Jeff Johnsone7245742012-09-05 17:12:55 -07009837 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009838 {
9839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 "%s: BSS does not yet exist. ucBssIdx %d",
9841 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009842
9843 wpalMutexRelease(&pWDICtx->wptMutex);
9844
9845 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009846 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009847
9848 /*------------------------------------------------------------------------
9849 Check if this BSS is being currently processed or queued,
9850 if queued - queue the new request as well
9851 ------------------------------------------------------------------------*/
9852 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009853 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9855 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9856 __func__, pwdiDelBSSParams->ucBssIdx);
9857
9858 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9859
9860 wpalMutexRelease(&pWDICtx->wptMutex);
9861
9862 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009863 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009864
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 /*-----------------------------------------------------------------------
9866 If we receive a Del BSS request for an association that is already in
9867 progress, it indicates that the assoc has failed => we no longer have
9868 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009869 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009870 -----------------------------------------------------------------------*/
9871 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9872 {
9873 /*We can switch to false here because even if a subsequent Join comes in
9874 it will only be processed when DAL transitions out of BUSY state which
9875 happens when the Del BSS request comes */
9876 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9877
9878 /*Former association is complete - prepare next pending assoc for
9879 processing */
9880 WDI_DequeueAssocRequest(pWDICtx);
9881 }
9882
9883 wpalMutexRelease(&pWDICtx->wptMutex);
9884 /*-----------------------------------------------------------------------
9885 Get message buffer
9886 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009888 sizeof(halBssReqMsg.deleteBssParams),
9889 &pSendBuffer, &usDataOffset, &usSendSize))||
9890 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9891 {
9892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -07009893 "Unable to get send buffer in start req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -07009894 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 }
9898
9899 /*Fill in the message request structure*/
9900
9901 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009902 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009903
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 wpalMemoryCopy( pSendBuffer+usDataOffset,
9905 &halBssReqMsg.deleteBssParams,
9906 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009907
9908 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009909 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009910
Jeff Johnsone7245742012-09-05 17:12:55 -07009911
Jeff Johnson295189b2012-06-20 16:38:30 -07009912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009914 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009915 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009916 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9917
Jeff Johnsone7245742012-09-05 17:12:55 -07009918
Jeff Johnson295189b2012-06-20 16:38:30 -07009919}/*WDI_ProcessDelBSSReq*/
9920
9921/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009922 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009923 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009924
9925 @param pWDICtx: pointer to the WLAN DAL context
9926 pEventData: pointer to the event information structure
9927
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 @see
9929 @return Result of the function call
9930*/
9931WDI_Status
9932WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009933(
Jeff Johnson295189b2012-06-20 16:38:30 -07009934 WDI_ControlBlockType* pWDICtx,
9935 WDI_EventInfoType* pEventData
9936)
9937{
9938 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9939 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009940 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009941 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 wpt_uint16 usDataOffset = 0;
9944 wpt_uint16 usSendSize = 0;
9945 wpt_uint16 uMsgSize = 0;
9946 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009948
Jeff Johnsone7245742012-09-05 17:12:55 -07009949 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9951
9952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 -------------------------------------------------------------------------*/
9955 if (( NULL == pEventData ) ||
9956 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9957 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9958 {
9959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009962 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009963 }
9964
9965 /*-------------------------------------------------------------------------
9966 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009967 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009968 -------------------------------------------------------------------------*/
9969 wpalMutexAcquire(&pWDICtx->wptMutex);
9970
9971 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009972 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009974 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9975 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9976 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009977
9978 if ( NULL == pBSSSes )
9979 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9981 "%s: Association sequence for this BSS does not yet exist - "
9982 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9983 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009984
9985 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 }
9988
9989 /*------------------------------------------------------------------------
9990 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 ------------------------------------------------------------------------*/
9993 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9994 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9996 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9997 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009998
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010000
10001 wpalMutexRelease(&pWDICtx->wptMutex);
10002
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 }
10005
10006 /*-----------------------------------------------------------------------
10007 If Post Assoc was not yet received - the current association must
10008 be in progress
10009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
10012 {
10013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10014 "Association sequence for this BSS association no longer in "
10015 "progress - not allowed");
10016
10017 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 }
10020
10021 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010022 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070010023 -----------------------------------------------------------------------*/
10024 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
10025 {
10026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10027 "Post Assoc not allowed before JOIN - failing request");
10028
10029 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010031 }
10032
10033 wpalMutexRelease(&pWDICtx->wptMutex);
10034
10035 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
10036 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
10037 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010038 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010041 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
10042 ( usSendSize < (usDataOffset + uMsgSize )))
10043 {
10044 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070010045 "Unable to get send buffer in start req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070010046 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
10047 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010048 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010049 }
10050
10051 /*Copy the STA parameters */
10052 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
10053 &pwdiPostAssocParams->wdiSTAParams );
10054
10055 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010056 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010057 WDI_STATableFindStaidByAddr(pWDICtx,
10058 pwdiPostAssocParams->wdiSTAParams.macSTA,
10059 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
10060 {
10061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010062 MAC_ADDRESS_STR
10063 ": This station does not exist in the WDI Station Table",
10064 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070010065 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080010066 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010067 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010068 }
10069
10070 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 pBSSSes->ucBSSIdx;
10073
10074 /*Copy the BSS parameters */
10075 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
10076 &pwdiPostAssocParams->wdiBSSParams);
10077
10078 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -070010079 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070010080 WDI_STATableFindStaidByAddr(pWDICtx,
10081 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 {
10084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010085 MAC_ADDRESS_STR
10086 ": This station does not exist in the WDI Station Table",
10087 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070010088 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080010089 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 }
10092
10093 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070010094 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010095 pBSSSes->ucBSSIdx;
10096
Jeff Johnsone7245742012-09-05 17:12:55 -070010097
10098 wpalMemoryCopy( pSendBuffer+usDataOffset,
10099 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
10100 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010101
10102 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
10103
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
10105 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
10106 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010107
Jeff Johnsone7245742012-09-05 17:12:55 -070010108
Jeff Johnson295189b2012-06-20 16:38:30 -070010109 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010110 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010111
Jeff Johnsone7245742012-09-05 17:12:55 -070010112
10113 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -070010114 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070010116
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010117 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010119 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010120 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010121 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
10123
Jeff Johnsone7245742012-09-05 17:12:55 -070010124
Jeff Johnson295189b2012-06-20 16:38:30 -070010125}/*WDI_ProcessPostAssocReq*/
10126
10127/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010130
10131 @param pWDICtx: pointer to the WLAN DAL context
10132 pEventData: pointer to the event information structure
10133
Jeff Johnson295189b2012-06-20 16:38:30 -070010134 @see
10135 @return Result of the function call
10136*/
10137WDI_Status
10138WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010139(
Jeff Johnson295189b2012-06-20 16:38:30 -070010140 WDI_ControlBlockType* pWDICtx,
10141 WDI_EventInfoType* pEventData
10142)
10143{
10144 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
10145 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010147 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010148 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010149 wpt_uint16 usDataOffset = 0;
10150 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010151 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
10153
Jeff Johnsone7245742012-09-05 17:12:55 -070010154 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070010155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10156
10157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010159 -------------------------------------------------------------------------*/
10160 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10161 ( NULL == pEventData->pCBfnc ))
10162 {
10163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 }
10168
10169 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
10170 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
10171 /*-------------------------------------------------------------------------
10172 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 -------------------------------------------------------------------------*/
10175 wpalMutexAcquire(&pWDICtx->wptMutex);
10176
10177 /*------------------------------------------------------------------------
10178 Find the BSS for which the request is made and identify WDI session
10179 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010180 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10181 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 &macBSSID))
10183 {
10184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010185 "This station does not exist in the WDI Station Table %d",
10186 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010187 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 }
10190
Jeff Johnsone7245742012-09-05 17:12:55 -070010191 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10192 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010193 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10195 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10196 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010197
10198 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010199 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010200 }
10201
10202 /*------------------------------------------------------------------------
10203 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 ------------------------------------------------------------------------*/
10206 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10207 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10209 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10210 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010211
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 }
10216
10217 wpalMutexRelease(&pWDICtx->wptMutex);
10218 /*-----------------------------------------------------------------------
10219 Get message buffer
10220 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010221 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010222 sizeof(halDelStaReqMsg.delStaParams),
10223 &pSendBuffer, &usDataOffset, &usSendSize))||
10224 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
10225 {
10226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070010227 "Unable to get send buffer in start req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
10229 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010230 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010231 }
10232
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
10234 wpalMemoryCopy( pSendBuffer+usDataOffset,
10235 &halDelStaReqMsg.delStaParams,
10236 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010237
10238 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010239 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010240
10241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010242 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010243 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010244 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
10246
10247}/*WDI_ProcessDelSTAReq*/
10248
10249
10250/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010251 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070010252==========================================================================*/
10253/**
10254 @brief Process Set BSS Key Request function (called when Main FSM
10255 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010256
10257 @param pWDICtx: pointer to the WLAN DAL context
10258 pEventData: pointer to the event information structure
10259
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 @see
10261 @return Result of the function call
10262*/
10263WDI_Status
10264WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010265(
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 WDI_ControlBlockType* pWDICtx,
10267 WDI_EventInfoType* pEventData
10268)
10269{
10270 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
10271 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010272 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010273 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 wpt_uint16 usDataOffset = 0;
10276 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
10279 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010280 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010281
10282 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10283
10284 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 -------------------------------------------------------------------------*/
10287 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10288 ( NULL == pEventData->pCBfnc ))
10289 {
10290 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010291 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010292 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010294 }
10295
10296 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
10297 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
10298 /*-------------------------------------------------------------------------
10299 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010300 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010301 -------------------------------------------------------------------------*/
10302 wpalMutexAcquire(&pWDICtx->wptMutex);
10303
10304 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10308 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
10309 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010310
Jeff Johnsone7245742012-09-05 17:12:55 -070010311 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010312 {
10313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010314 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10315 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010316
10317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
10321 /*------------------------------------------------------------------------
10322 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010323 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 ------------------------------------------------------------------------*/
10325 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10326 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10328 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10329 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010330
Jeff Johnsone7245742012-09-05 17:12:55 -070010331 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010332 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010333 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 }
10335
10336
10337 wpalMutexRelease(&pWDICtx->wptMutex);
10338 /*-----------------------------------------------------------------------
10339 Get message buffer
10340 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010341 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010342 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
10343 &pSendBuffer, &usDataOffset, &usSendSize))||
10344 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
10345 {
10346 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070010347 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070010348 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
10349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010351 }
10352
10353 /*-----------------------------------------------------------------------
10354 Copy the Key parameters into the HAL message
10355 -----------------------------------------------------------------------*/
10356
Jeff Johnsone7245742012-09-05 17:12:55 -070010357 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010358
Jeff Johnsone7245742012-09-05 17:12:55 -070010359 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010360 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
10361
Jeff Johnsone7245742012-09-05 17:12:55 -070010362 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -070010363 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
10364
10365 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
10366 keyIndex++)
10367 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010368 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010369 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
10370 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
10371 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
10372 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
10373 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010374
10375 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10376 {
10377 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10378 {
10379 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
10380 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
10381 }
10382
10383 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
10384 {
10385 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
10386 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
10387 }
10388
10389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10390 "%s: Negated Keys", __func__);
10391 }
10392 else
10393 {
10394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10395 "%s: No change in Keys", __func__);
10396 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010397 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010398 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010399 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
10400 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
10401 WDI_MAX_KEY_LENGTH);
10402 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010403 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010404 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010405 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010406 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010407 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010408
10409 wpalMemoryCopy( pSendBuffer+usDataOffset,
10410 &halSetBssKeyReqMsg.setBssKeyParams,
10411 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010412
10413 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010414 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010415
10416 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010417 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010418 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10420 wdiSetBSSKeyRspCb, pEventData->pUserData,
10421 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010422
10423}/*WDI_ProcessSetBssKeyReq*/
10424
10425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010426 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070010427 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010428
10429 @param pWDICtx: pointer to the WLAN DAL context
10430 pEventData: pointer to the event information structure
10431
Jeff Johnson295189b2012-06-20 16:38:30 -070010432 @see
10433 @return Result of the function call
10434*/
10435WDI_Status
10436WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010437(
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 WDI_ControlBlockType* pWDICtx,
10439 WDI_EventInfoType* pEventData
10440)
10441{
10442 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
10443 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010444 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010445 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010446 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010447 wpt_uint16 usDataOffset = 0;
10448 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010449 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010450 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
10451 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10452
10453 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010455 -------------------------------------------------------------------------*/
10456 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10457 ( NULL == pEventData->pCBfnc ))
10458 {
10459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010460 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010463 }
10464
10465 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
10466 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
10467 /*-------------------------------------------------------------------------
10468 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010469 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010470 -------------------------------------------------------------------------*/
10471 wpalMutexAcquire(&pWDICtx->wptMutex);
10472
10473 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010474 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010476 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10477 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
10478 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010479
Jeff Johnsone7245742012-09-05 17:12:55 -070010480 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010481 {
10482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010483 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10484 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010485
10486 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 }
10489
10490 /*------------------------------------------------------------------------
10491 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010492 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010493 ------------------------------------------------------------------------*/
10494 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10495 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10497 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10498 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010499
Jeff Johnsone7245742012-09-05 17:12:55 -070010500 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 }
10504
10505
10506 wpalMutexRelease(&pWDICtx->wptMutex);
10507
10508 /*-----------------------------------------------------------------------
10509 Get message buffer
10510 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010512 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
10513 &pSendBuffer, &usDataOffset, &usSendSize))||
10514 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
10515 {
10516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070010517 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
10519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010521 }
10522 /*-----------------------------------------------------------------------
10523 Copy the Key parameters into the HAL message
10524 -----------------------------------------------------------------------*/
10525 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
10526
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010528 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
10529
10530 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
10531
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
10534
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 wpalMemoryCopy( pSendBuffer+usDataOffset,
10536 &halRemoveBssKeyReqMsg.removeBssKeyParams,
10537 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010538
10539 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010541
10542 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010543 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010544 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010547 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010548}/*WDI_ProcessRemoveBssKeyReq*/
10549
10550/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010551 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010552 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010553
10554 @param pWDICtx: pointer to the WLAN DAL context
10555 pEventData: pointer to the event information structure
10556
Jeff Johnson295189b2012-06-20 16:38:30 -070010557 @see
10558 @return Result of the function call
10559*/
10560WDI_Status
10561WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010562(
Jeff Johnson295189b2012-06-20 16:38:30 -070010563 WDI_ControlBlockType* pWDICtx,
10564 WDI_EventInfoType* pEventData
10565)
10566{
10567 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10568 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10569 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010570 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010571 wpt_uint16 usDataOffset = 0;
10572 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010574 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10577 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010578 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010579
10580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10581
10582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 -------------------------------------------------------------------------*/
10585 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10586 ( NULL == pEventData->pCBfnc ))
10587 {
10588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 }
10593
10594 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10595 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10596 /*-------------------------------------------------------------------------
10597 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 -------------------------------------------------------------------------*/
10600 wpalMutexAcquire(&pWDICtx->wptMutex);
10601
10602 /*------------------------------------------------------------------------
10603 Find the BSS for which the request is made and identify WDI session
10604 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10606 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 &macBSSID))
10608 {
10609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010610 "This station does not exist in the WDI Station Table %d",
10611 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 wpalMutexRelease(&pWDICtx->wptMutex);
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 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10617 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10620 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10621 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010622
10623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010626
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 /*------------------------------------------------------------------------
10628 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 ------------------------------------------------------------------------*/
10631 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10632 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10634 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10635 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010636
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010639 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 }
10641
10642
10643 wpalMutexRelease(&pWDICtx->wptMutex);
10644 /*-----------------------------------------------------------------------
10645 Get message buffer
10646 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10649 &pSendBuffer, &usDataOffset, &usSendSize))||
10650 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10651 {
10652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070010653 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070010654 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010656 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010657 }
10658 /*-----------------------------------------------------------------------
10659 Copy the STA Key parameters into the HAL message
10660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010662 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10663
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10666
10667 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10668
10669 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10670
10671 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10672
Jeff Johnson295189b2012-06-20 16:38:30 -070010673 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10674 keyIndex++)
10675 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010677 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10678 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10679 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10680 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10681 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010682
10683 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10684 {
10685 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10686 {
10687 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10688 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10689 }
10690
10691 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10692 {
10693 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10694 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10695 }
10696
10697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10698 "%s: Negated Keys", __func__);
10699 }
10700 else
10701 {
10702 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10703 "%s: No change in Keys", __func__);
10704 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010705 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010707 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10708 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10709 WDI_MAX_KEY_LENGTH);
10710 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010715 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010716
Jeff Johnsone7245742012-09-05 17:12:55 -070010717 wpalMemoryCopy( pSendBuffer+usDataOffset,
10718 &halSetStaKeyReqMsg.setStaKeyParams,
10719 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010720
10721 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010723 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010724 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010725 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010726 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010727 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10728 wdiSetSTAKeyRspCb, pEventData->pUserData,
10729 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010730
10731}/*WDI_ProcessSetSTAKeyReq*/
10732
10733/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010736
10737 @param pWDICtx: pointer to the WLAN DAL context
10738 pEventData: pointer to the event information structure
10739
Jeff Johnson295189b2012-06-20 16:38:30 -070010740 @see
10741 @return Result of the function call
10742*/
10743WDI_Status
10744WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010745(
Jeff Johnson295189b2012-06-20 16:38:30 -070010746 WDI_ControlBlockType* pWDICtx,
10747 WDI_EventInfoType* pEventData
10748)
10749{
10750 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10751 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10752 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010753 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010754 wpt_uint16 usDataOffset = 0;
10755 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 wpt_macAddr macBSSID;
10758 wpt_uint8 ucCurrentBSSSesIdx;
10759 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10761
10762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010764 -------------------------------------------------------------------------*/
10765 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10766 ( NULL == pEventData->pCBfnc ))
10767 {
10768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010771 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010772 }
10773
10774 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10775 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10776 /*-------------------------------------------------------------------------
10777 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010779 -------------------------------------------------------------------------*/
10780 wpalMutexAcquire(&pWDICtx->wptMutex);
10781
10782 /*------------------------------------------------------------------------
10783 Find the BSS for which the request is made and identify WDI session
10784 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10786 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010787 &macBSSID))
10788 {
10789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010790 "This station does not exist in the WDI Station Table %d",
10791 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010792 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010794 }
10795
Jeff Johnsone7245742012-09-05 17:12:55 -070010796 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10797 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10800 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10801 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010802
10803 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010804 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010805 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010806
Jeff Johnson295189b2012-06-20 16:38:30 -070010807 /*------------------------------------------------------------------------
10808 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 ------------------------------------------------------------------------*/
10811 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10812 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10814 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10815 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010816
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 }
10821
10822
10823
10824 wpalMutexRelease(&pWDICtx->wptMutex);
10825 /*-----------------------------------------------------------------------
10826 Get message buffer
10827 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010828 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010829 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10830 &pSendBuffer, &usDataOffset, &usSendSize))||
10831 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10832 {
10833 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070010834 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070010835 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10836 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 }
10839
10840 /*-----------------------------------------------------------------------
10841 Copy the Key parameters into the HAL message
10842 -----------------------------------------------------------------------*/
10843
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10846
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10849
Jeff Johnsone7245742012-09-05 17:12:55 -070010850 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010851 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10852
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10855
Jeff Johnsone7245742012-09-05 17:12:55 -070010856 wpalMemoryCopy( pSendBuffer+usDataOffset,
10857 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10858 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010859
10860 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010861 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010862
10863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010864 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010865 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010869
10870}/*WDI_ProcessRemoveSTAKeyReq*/
10871
10872/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010874 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010875
10876 @param pWDICtx: pointer to the WLAN DAL context
10877 pEventData: pointer to the event information structure
10878
Jeff Johnson295189b2012-06-20 16:38:30 -070010879 @see
10880 @return Result of the function call
10881*/
10882WDI_Status
10883WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010884(
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 WDI_ControlBlockType* pWDICtx,
10886 WDI_EventInfoType* pEventData
10887)
10888{
10889 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10890 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10891 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010893 wpt_uint16 usDataOffset = 0;
10894 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10899 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010900 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010901
10902 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10903
10904 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010905 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010906 -------------------------------------------------------------------------*/
10907 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10908 ( NULL == pEventData->pCBfnc ))
10909 {
10910 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010911 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010912 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 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10917 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10918 /*-------------------------------------------------------------------------
10919 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010921 -------------------------------------------------------------------------*/
10922 wpalMutexAcquire(&pWDICtx->wptMutex);
10923
10924 /*------------------------------------------------------------------------
10925 Find the BSS for which the request is made and identify WDI session
10926 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10928 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010929 &macBSSID))
10930 {
10931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010932 "This station does not exist in the WDI Station Table %d",
10933 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 }
10937
Jeff Johnsone7245742012-09-05 17:12:55 -070010938 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10939 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 {
10941 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010942 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010943 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010944
10945 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010948
Jeff Johnson295189b2012-06-20 16:38:30 -070010949 /*------------------------------------------------------------------------
10950 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 ------------------------------------------------------------------------*/
10953 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10954 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10956 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10957 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010958
Jeff Johnsone7245742012-09-05 17:12:55 -070010959 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010961 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010962 }
10963
10964
10965 wpalMutexRelease(&pWDICtx->wptMutex);
10966 /*-----------------------------------------------------------------------
10967 Get message buffer
10968 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10971 &pSendBuffer, &usDataOffset, &usSendSize))||
10972 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10973 {
10974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070010975 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070010976 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10977 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010979 }
10980 /*-----------------------------------------------------------------------
10981 Copy the STA Key parameters into the HAL message
10982 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010983 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010984 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10985
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10988
10989 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10990
10991 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10992
10993 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10994
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10996 keyIndex++)
10997 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010999 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
11000 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
11001 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
11002 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
11003 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053011004
11005 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
11006 {
11007 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
11008 {
11009 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
11010 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
11011 }
11012
11013 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
11014 {
11015 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
11016 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
11017 }
11018
11019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11020 "%s: Negated Keys", __func__);
11021 }
11022 else
11023 {
11024 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
11025 "%s: No change in Keys", __func__);
11026 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070011027 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070011028 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053011029 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
11030 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
11031 WDI_MAX_KEY_LENGTH);
11032 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011033 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070011034 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070011035 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070011036 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053011037 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 wpalMemoryCopy( pSendBuffer+usDataOffset,
11039 &halSetStaKeyReqMsg.setStaKeyParams,
11040 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011041
11042 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011043 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011044
11045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11049 wdiSetSTAKeyRspCb, pEventData->pUserData,
11050 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011051
11052}/*WDI_ProcessSetSTABcastKeyReq*/
11053
11054/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011055 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070011056 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011057
11058 @param pWDICtx: pointer to the WLAN DAL context
11059 pEventData: pointer to the event information structure
11060
Jeff Johnson295189b2012-06-20 16:38:30 -070011061 @see
11062 @return Result of the function call
11063*/
11064WDI_Status
11065WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011066(
Jeff Johnson295189b2012-06-20 16:38:30 -070011067 WDI_ControlBlockType* pWDICtx,
11068 WDI_EventInfoType* pEventData
11069)
11070{
11071 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
11072 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
11073 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011074 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 wpt_uint16 usDataOffset = 0;
11076 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011077 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011078 wpt_macAddr macBSSID;
11079 wpt_uint8 ucCurrentBSSSesIdx;
11080 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
11081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11082
11083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011084 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011085 -------------------------------------------------------------------------*/
11086 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11087 ( NULL == pEventData->pCBfnc ))
11088 {
11089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011093 }
11094
11095 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
11096 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
11097 /*-------------------------------------------------------------------------
11098 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011099 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011100 -------------------------------------------------------------------------*/
11101 wpalMutexAcquire(&pWDICtx->wptMutex);
11102
11103 /*------------------------------------------------------------------------
11104 Find the BSS for which the request is made and identify WDI session
11105 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11107 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011108 &macBSSID))
11109 {
11110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011111 "This station does not exist in the WDI Station Table %d",
11112 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011113 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011114 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 }
11116
Jeff Johnsone7245742012-09-05 17:12:55 -070011117 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11118 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011119 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11121 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11122 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011123
11124 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011127
Jeff Johnson295189b2012-06-20 16:38:30 -070011128 /*------------------------------------------------------------------------
11129 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011130 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011131 ------------------------------------------------------------------------*/
11132 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11133 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11135 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11136 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011137
Jeff Johnsone7245742012-09-05 17:12:55 -070011138 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011139 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011140 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011141 }
11142
11143
11144
11145 wpalMutexRelease(&pWDICtx->wptMutex);
11146 /*-----------------------------------------------------------------------
11147 Get message buffer
11148 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011149 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011150 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
11151 &pSendBuffer, &usDataOffset, &usSendSize))||
11152 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
11153 {
11154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070011155 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
11157 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 }
11160
11161 /*-----------------------------------------------------------------------
11162 Copy the Key parameters into the HAL message
11163 -----------------------------------------------------------------------*/
11164
Jeff Johnsone7245742012-09-05 17:12:55 -070011165 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070011166 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
11167
Jeff Johnsone7245742012-09-05 17:12:55 -070011168 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011169 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
11170
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
11173
Jeff Johnsone7245742012-09-05 17:12:55 -070011174 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070011175 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
11176
Jeff Johnsone7245742012-09-05 17:12:55 -070011177 wpalMemoryCopy( pSendBuffer+usDataOffset,
11178 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
11179 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011180
11181 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011183
11184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011187 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011188 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011190
11191}/*WDI_ProcessRemoveSTABcastKeyReq*/
11192
11193/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070011194 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070011195==========================================================================*/
11196/**
11197 @brief Process Add TSpec Request function (called when Main FSM
11198 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011199
11200 @param pWDICtx: pointer to the WLAN DAL context
11201 pEventData: pointer to the event information structure
11202
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 @see
11204 @return Result of the function call
11205*/
11206WDI_Status
11207WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011208(
Jeff Johnson295189b2012-06-20 16:38:30 -070011209 WDI_ControlBlockType* pWDICtx,
11210 WDI_EventInfoType* pEventData
11211)
11212{
11213 WDI_AddTSReqParamsType* pwdiAddTSParams;
11214 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011215 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011216 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 wpt_uint16 usDataOffset = 0;
11219 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011220 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011221 wpt_macAddr macBSSID;
11222 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070011223
Jeff Johnson295189b2012-06-20 16:38:30 -070011224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11225
11226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011228 -------------------------------------------------------------------------*/
11229 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11230 ( NULL == pEventData->pCBfnc ))
11231 {
11232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011236 }
11237
11238 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
11239 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
11240 /*-------------------------------------------------------------------------
11241 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011243 -------------------------------------------------------------------------*/
11244 wpalMutexAcquire(&pWDICtx->wptMutex);
11245
11246 /*------------------------------------------------------------------------
11247 Find the BSS for which the request is made and identify WDI session
11248 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11250 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 &macBSSID))
11252 {
11253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011254 "This station does not exist in the WDI Station Table %d",
11255 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011256 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011258 }
11259
Jeff Johnsone7245742012-09-05 17:12:55 -070011260 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
11261 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11264 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11265 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011266
11267 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011269 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011270
Jeff Johnson295189b2012-06-20 16:38:30 -070011271 /*------------------------------------------------------------------------
11272 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011274 ------------------------------------------------------------------------*/
11275 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11276 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11278 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11279 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011280
Jeff Johnsone7245742012-09-05 17:12:55 -070011281 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011282 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011283 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011284 }
11285
11286 wpalMutexRelease(&pWDICtx->wptMutex);
11287 /*-----------------------------------------------------------------------
11288 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011289 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011290 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011291 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
11292 sizeof(halAddTsParams),
11293 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 &usSendSize))||
11295 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
11296 {
11297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070011298 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070011299 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
11300 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011301 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 }
11303
11304 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
11305 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
11306
11307 //TSPEC IE
11308 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
11309 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070011310 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070011312 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070011313 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070011314 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011315 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011316 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011317 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011318 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011319 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070011322 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011323 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011325 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011327 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070011328 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011329 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070011330 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070011331 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070011332 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070011333 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070011334 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070011335 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070011336 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070011337 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070011339 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
11340
11341 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070011343 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070011344 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070011345 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070011346 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011347 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070011350 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070011351 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070011352 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070011353 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070011354 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011355 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
11356
11357 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070011358 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
11362
Jeff Johnsone7245742012-09-05 17:12:55 -070011363 wpalMemoryCopy( pSendBuffer+usDataOffset,
11364 &halAddTsParams,
11365 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011366
11367 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011368 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011369
11370 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011371 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011372 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011373 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070011374 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070011375 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011376}/*WDI_ProcessAddTSpecReq*/
11377
11378
11379/**
11380 @brief Process Del TSpec Request function (called when Main FSM
11381 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011382
11383 @param pWDICtx: pointer to the WLAN DAL context
11384 pEventData: pointer to the event information structure
11385
Jeff Johnson295189b2012-06-20 16:38:30 -070011386 @see
11387 @return Result of the function call
11388*/
11389WDI_Status
11390WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011391(
Jeff Johnson295189b2012-06-20 16:38:30 -070011392 WDI_ControlBlockType* pWDICtx,
11393 WDI_EventInfoType* pEventData
11394)
11395{
11396 WDI_DelTSReqParamsType* pwdiDelTSParams;
11397 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011398 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011400 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 wpt_uint16 usDataOffset = 0;
11402 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011403 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011404 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11405
11406 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011407 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 -------------------------------------------------------------------------*/
11409 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11410 ( NULL == pEventData->pCBfnc ))
11411 {
11412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011413 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011415 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011416 }
11417
11418 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
11419 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
11420
11421 /*-------------------------------------------------------------------------
11422 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011423 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011424 -------------------------------------------------------------------------*/
11425 wpalMutexAcquire(&pWDICtx->wptMutex);
11426
11427 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
11431 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
11432 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011433
Jeff Johnsone7245742012-09-05 17:12:55 -070011434 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11437 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11438 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
11439
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011441 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011442 }
11443
11444 /*------------------------------------------------------------------------
11445 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011446 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011447 ------------------------------------------------------------------------*/
11448 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11449 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11451 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11452 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011453
Jeff Johnsone7245742012-09-05 17:12:55 -070011454 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011455 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011456 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011457 }
11458
11459
11460 wpalMutexRelease(&pWDICtx->wptMutex);
11461 /*-----------------------------------------------------------------------
11462 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011463 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011464 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011465 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011466 sizeof(pwdiDelTSParams->wdiDelTSInfo),
11467 &pSendBuffer, &usDataOffset, &usSendSize))||
11468 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
11469 {
11470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070011471 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070011472 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
11473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011475 }
11476
Jeff Johnsone7245742012-09-05 17:12:55 -070011477 wpalMemoryCopy( pSendBuffer+usDataOffset,
11478 &pwdiDelTSParams->wdiDelTSInfo,
11479 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011480
11481 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011482 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011483
11484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011485 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011486 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011487 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11488 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011489}/*WDI_ProcessDelTSpecReq*/
11490
11491/**
11492 @brief Process Update EDCA Params Request function (called when
11493 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011494
11495 @param pWDICtx: pointer to the WLAN DAL context
11496 pEventData: pointer to the event information structure
11497
Jeff Johnson295189b2012-06-20 16:38:30 -070011498 @see
11499 @return Result of the function call
11500*/
11501WDI_Status
11502WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011503(
Jeff Johnson295189b2012-06-20 16:38:30 -070011504 WDI_ControlBlockType* pWDICtx,
11505 WDI_EventInfoType* pEventData
11506)
11507{
11508 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
11509 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011512 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 wpt_uint16 usDataOffset = 0;
11514 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11517
11518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011520 -------------------------------------------------------------------------*/
11521 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11522 ( NULL == pEventData->pCBfnc ))
11523 {
11524 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011528 }
11529
11530 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
11531 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
11532 /*-------------------------------------------------------------------------
11533 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 -------------------------------------------------------------------------*/
11536 wpalMutexAcquire(&pWDICtx->wptMutex);
11537
11538 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011540 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011541 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
11542 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
11543 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011544
Jeff Johnsone7245742012-09-05 17:12:55 -070011545 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011546 {
11547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011548 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
11549 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011550
11551 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 }
11554
11555 /*------------------------------------------------------------------------
11556 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011557 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011558 ------------------------------------------------------------------------*/
11559 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11560 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11562 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
11563 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011564
Jeff Johnsone7245742012-09-05 17:12:55 -070011565 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011566 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011567 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011568 }
11569
11570
11571 wpalMutexRelease(&pWDICtx->wptMutex);
11572 /*-----------------------------------------------------------------------
11573 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011574 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011575 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011576 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
11578 &pSendBuffer, &usDataOffset, &usSendSize))||
11579 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
11580 {
11581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070011582 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070011583 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
11584 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 }
11587
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 wpalMemoryCopy( pSendBuffer+usDataOffset,
11589 &pwdiUpdateEDCAParams->wdiEDCAInfo,
11590 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011591
11592 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011593 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011594
11595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011598 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11599 wdiUpdateEDCARspCb, pEventData->pUserData,
11600 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011601}/*WDI_ProcessUpdateEDCAParamsReq*/
11602
11603/**
Sourav Mohapatra2416e0e2018-03-05 18:44:21 +053011604 * WDI_set_vowifi_mode_ind() - Set VOWIFI mode request
11605 *
11606 * @enable - boolean value that determins the state
11607 *
11608 * Return value: status whether the post is successful or not
11609 */
11610WDI_Status WDI_set_vowifi_mode_ind(wpt_boolean enable)
11611{
11612 WDI_EventInfoType wdiEventData;
11613
11614 if (eWLAN_PAL_FALSE == gWDIInitialized )
11615 {
11616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11617 "WDI API call before module is initialized - Fail request");
11618 return WDI_STATUS_E_NOT_ALLOWED;
11619 }
11620
11621 wdiEventData.wdiRequest = WDI_SET_VOWIFI_IND;
11622 wdiEventData.pEventData = (void *) &enable;
11623 wdiEventData.uEventDataSize = sizeof(wpt_boolean);
11624 wdiEventData.pCBfnc = NULL;
11625 wdiEventData.pUserData = NULL;
11626
11627 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
11628}
11629
Ashish Kumar Dhanotiyaf59c7762018-04-10 17:54:25 +053011630WDI_Status WDI_set_qpower(uint8_t enable)
11631{
11632 WDI_EventInfoType wdiEventData;
11633
11634 if (eWLAN_PAL_FALSE == gWDIInitialized )
11635 {
11636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11637 "WDI API call before module is initialized - Fail request");
11638 return WDI_STATUS_E_NOT_ALLOWED;
11639 }
11640
11641 wdiEventData.wdiRequest = WDI_SET_QPOWER;
11642 wdiEventData.pEventData = (void *) &enable;
11643 wdiEventData.uEventDataSize = sizeof(uint8_t);
11644 wdiEventData.pCBfnc = NULL;
11645 wdiEventData.pUserData = NULL;
11646
11647 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
11648}
11649
Sourav Mohapatra2416e0e2018-03-05 18:44:21 +053011650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011651 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011652 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011653
11654 @param pWDICtx: pointer to the WLAN DAL context
11655 pEventData: pointer to the event information structure
11656
Jeff Johnson295189b2012-06-20 16:38:30 -070011657 @see
11658 @return Result of the function call
11659*/
11660WDI_Status
11661WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011662(
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 WDI_ControlBlockType* pWDICtx,
11664 WDI_EventInfoType* pEventData
11665)
11666{
11667 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
11668 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011669 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011670 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011671 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011672 wpt_uint16 usDataOffset = 0;
11673 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011674 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 wpt_macAddr macBSSID;
11676
11677 tAddBASessionReqMsg halAddBASessionReq;
11678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11679
11680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011681 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011682 -------------------------------------------------------------------------*/
11683 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11684 ( NULL == pEventData->pCBfnc ))
11685 {
11686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 }
11691
Jeff Johnsone7245742012-09-05 17:12:55 -070011692 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011693 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011694 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011695 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11696 /*-------------------------------------------------------------------------
11697 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011698 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011699 -------------------------------------------------------------------------*/
11700 wpalMutexAcquire(&pWDICtx->wptMutex);
11701
11702 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011703 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011704 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011705 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11706 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011707 &macBSSID))
11708 {
11709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011710 "This station does not exist in the WDI Station Table %d",
11711 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011712 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011714 }
11715
11716
Jeff Johnsone7245742012-09-05 17:12:55 -070011717 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011718
Jeff Johnsone7245742012-09-05 17:12:55 -070011719 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11722 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11723 __func__, MAC_ADDR_ARRAY(macBSSID));
11724
Jeff Johnson295189b2012-06-20 16:38:30 -070011725 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 }
11728
11729 /*------------------------------------------------------------------------
11730 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011731 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011732 ------------------------------------------------------------------------*/
11733 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11734 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11736 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11737 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011738
Jeff Johnsone7245742012-09-05 17:12:55 -070011739 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011741 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011742 }
11743
11744
11745 wpalMutexRelease(&pWDICtx->wptMutex);
11746 /*-----------------------------------------------------------------------
11747 Get message buffer
11748 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011749 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11750 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 sizeof(halAddBASessionReq.addBASessionParams),
11752 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011753 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011754 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11755 {
11756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070011757 "Unable to get send buffer in Add BA session req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070011758 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011761 }
11762
11763 halAddBASessionReq.addBASessionParams.staIdx =
11764 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11765 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11766 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11767 WDI_MAC_ADDR_LEN);
11768 halAddBASessionReq.addBASessionParams.baTID =
11769 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11770 halAddBASessionReq.addBASessionParams.baPolicy =
11771 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11772 halAddBASessionReq.addBASessionParams.baBufferSize =
11773 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11774 halAddBASessionReq.addBASessionParams.baTimeout =
11775 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11776 halAddBASessionReq.addBASessionParams.baSSN =
11777 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11778 halAddBASessionReq.addBASessionParams.baDirection =
11779 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11780
Jeff Johnsone7245742012-09-05 17:12:55 -070011781 wpalMemoryCopy( pSendBuffer+usDataOffset,
11782 &halAddBASessionReq.addBASessionParams,
11783 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011784
11785 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011786 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011787
11788 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011789 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011790 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011791 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11792 wdiAddBASessionRspCb, pEventData->pUserData,
11793 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011794}/*WDI_ProcessAddBASessionReq*/
11795
11796/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011797 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011798 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011799
11800 @param pWDICtx: pointer to the WLAN DAL context
11801 pEventData: pointer to the event information structure
11802
Jeff Johnson295189b2012-06-20 16:38:30 -070011803 @see
11804 @return Result of the function call
11805*/
11806WDI_Status
11807WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011808(
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 WDI_ControlBlockType* pWDICtx,
11810 WDI_EventInfoType* pEventData
11811)
11812{
11813 WDI_DelBAReqParamsType* pwdiDelBAParams;
11814 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011818 wpt_uint16 usDataOffset = 0;
11819 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011820 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011821 wpt_macAddr macBSSID;
11822 tDelBAParams halDelBAparam;
11823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11824
11825 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 -------------------------------------------------------------------------*/
11828 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11829 ( NULL == pEventData->pCBfnc ))
11830 {
11831 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011832 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011835 }
11836
11837 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11838 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11839 /*-------------------------------------------------------------------------
11840 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011841 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011842 -------------------------------------------------------------------------*/
11843 wpalMutexAcquire(&pWDICtx->wptMutex);
11844
11845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011847 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011848 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11849 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011850 &macBSSID))
11851 {
11852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011853 "This station does not exist in the WDI Station Table %d",
11854 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011855 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011857 }
11858
Jeff Johnsone7245742012-09-05 17:12:55 -070011859 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011860
Jeff Johnsone7245742012-09-05 17:12:55 -070011861 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11864 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11865 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011866
11867 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011868 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011869 }
11870
11871 /*------------------------------------------------------------------------
11872 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011873 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011874 ------------------------------------------------------------------------*/
11875 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11876 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11878 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11879 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011880
Jeff Johnsone7245742012-09-05 17:12:55 -070011881 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011883 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011884 }
11885
11886 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011888 sizeof(halDelBAparam),
11889 &pSendBuffer, &usDataOffset, &usSendSize))||
11890 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11891 {
11892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070011893 "Unable to get send buffer for DEL BA req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070011894 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011897 }
11898
11899 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11900 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11901 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11902
Jeff Johnsone7245742012-09-05 17:12:55 -070011903 wpalMemoryCopy( pSendBuffer+usDataOffset,
11904 &halDelBAparam,
11905 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011906
11907 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011908 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011909
11910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11914 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011915}/*WDI_ProcessDelBAReq*/
11916
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011917#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011918
11919WDI_Status
11920WDI_ProcessTSMStatsReq
11921(
11922 WDI_ControlBlockType* pWDICtx,
11923 WDI_EventInfoType* pEventData
11924)
11925{
11926 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11927 WDI_TsmRspCb wdiTSMRspCb;
11928 wpt_uint8 ucCurrentBSSSesIdx = 0;
11929 WDI_BSSSessionType* pBSSSes = NULL;
11930 wpt_uint8* pSendBuffer = NULL;
11931 wpt_uint16 usDataOffset = 0;
11932 wpt_uint16 usSendSize = 0;
11933 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11934 tTsmStatsParams halTsmStatsReqParams = {0};
11935
11936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11937
11938 /*-------------------------------------------------------------------------
11939 Sanity check
11940 -------------------------------------------------------------------------*/
11941 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11942 ( NULL == pEventData->pCBfnc ))
11943 {
11944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011945 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011946 WDI_ASSERT(0);
11947 return WDI_STATUS_E_FAILURE;
11948 }
11949
11950 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11951 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11952 /*-------------------------------------------------------------------------
11953 Check to see if we are in the middle of an association, if so queue, if
11954 not it means it is free to process request
11955 -------------------------------------------------------------------------*/
11956 wpalMutexAcquire(&pWDICtx->wptMutex);
11957
11958 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11959 if ( NULL == pBSSSes )
11960 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11962 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11963 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011964
11965 wpalMutexRelease(&pWDICtx->wptMutex);
11966 return WDI_STATUS_E_NOT_ALLOWED;
11967 }
11968
11969 /*------------------------------------------------------------------------
11970 Check if this BSS is being currently processed or queued,
11971 if queued - queue the new request as well
11972 ------------------------------------------------------------------------*/
11973 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11974 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011976 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011977 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011978
11979 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11980 wpalMutexRelease(&pWDICtx->wptMutex);
11981 return wdiStatus;
11982 }
11983
11984 wpalMutexRelease(&pWDICtx->wptMutex);
11985 /*-----------------------------------------------------------------------
11986 Get message buffer
11987 ! TO DO : proper conversion into the HAL Message Request Format
11988 -----------------------------------------------------------------------*/
11989 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11990 sizeof(halTsmStatsReqParams),
11991 &pSendBuffer, &usDataOffset, &usSendSize))||
11992 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11993 {
11994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070011995 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070011996 pEventData, pwdiTSMParams, wdiTSMRspCb);
11997 WDI_ASSERT(0);
11998 return WDI_STATUS_E_FAILURE;
11999 }
12000
12001 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
12002 wpalMemoryCopy(halTsmStatsReqParams.bssId,
12003 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
12004 WDI_MAC_ADDR_LEN);
12005 wpalMemoryCopy( pSendBuffer+usDataOffset,
12006 &halTsmStatsReqParams,
12007 sizeof(halTsmStatsReqParams));
12008
12009 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
12010 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
12011
12012 /*-------------------------------------------------------------------------
12013 Send TSM Stats Request to HAL
12014 -------------------------------------------------------------------------*/
12015 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12016 wdiTSMRspCb, pEventData->pUserData,
12017 WDI_TSM_STATS_RESP);
12018}/*WDI_ProcessTSMStatsReq*/
12019
12020#endif
12021
12022
12023/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012024 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012025 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012026
12027 @param pWDICtx: pointer to the WLAN DAL context
12028 pEventData: pointer to the event information structure
12029
Jeff Johnson295189b2012-06-20 16:38:30 -070012030 @see
12031 @return Result of the function call
12032*/
12033WDI_Status
12034WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012035(
Jeff Johnson295189b2012-06-20 16:38:30 -070012036 WDI_ControlBlockType* pWDICtx,
12037 WDI_EventInfoType* pEventData
12038)
12039{
12040 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
12041 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012042 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012043 wpt_uint16 usDataOffset = 0;
12044 wpt_uint16 usSendSize = 0;
12045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12046
12047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012049 -------------------------------------------------------------------------*/
12050 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12051 ( NULL == pEventData->pCBfnc ))
12052 {
12053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012057 }
12058
12059 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
12060 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
12061 /*-----------------------------------------------------------------------
12062 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012063 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012064 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012065 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012066 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
12067 &pSendBuffer, &usDataOffset, &usSendSize))||
12068 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
12069 {
12070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070012071 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070012072 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
12073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012075 }
12076
Jeff Johnsone7245742012-09-05 17:12:55 -070012077 wpalMemoryCopy( pSendBuffer+usDataOffset,
12078 &pwdiFlushAcParams->wdiFlushAcInfo,
12079 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070012080
12081 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012082 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012083
12084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012085 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012086 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012087 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12088 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012089}/*WDI_ProcessFlushAcReq*/
12090
12091/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012092 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012093 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012094
12095 @param pWDICtx: pointer to the WLAN DAL context
12096 pEventData: pointer to the event information structure
12097
Jeff Johnson295189b2012-06-20 16:38:30 -070012098 @see
12099 @return Result of the function call
12100*/
12101WDI_Status
12102WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012103(
Jeff Johnson295189b2012-06-20 16:38:30 -070012104 WDI_ControlBlockType* pWDICtx,
12105 WDI_EventInfoType* pEventData
12106)
12107{
12108 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
12109 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012110 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012111 wpt_uint16 usDataOffset = 0;
12112 wpt_uint16 usSendSize = 0;
12113
12114 tBtAmpEventMsg haltBtAmpEventMsg;
12115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12116
12117 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012118 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012119 -------------------------------------------------------------------------*/
12120 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12121 ( NULL == pEventData->pCBfnc ))
12122 {
12123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012127 }
12128
12129 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
12130 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
12131 /*-----------------------------------------------------------------------
12132 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012133 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012134 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012135 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012136 sizeof(haltBtAmpEventMsg.btAmpEventParams),
12137 &pSendBuffer, &usDataOffset, &usSendSize))||
12138 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
12139 {
12140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070012141 "Unable to get send buffer in BT AMP event req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070012142 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
12143 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
Jeff Johnsone7245742012-09-05 17:12:55 -070012147 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070012148 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070012149 wpalMemoryCopy( pSendBuffer+usDataOffset,
12150 &haltBtAmpEventMsg.btAmpEventParams,
12151 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012152
12153 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012154 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012155
12156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012157 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012158 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012159 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12160 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012161}/*WDI_ProcessBtAmpEventReq*/
12162
12163/**
12164 @brief Process Add STA self Request function (called when Main FSM
12165 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012166
12167 @param pWDICtx: pointer to the WLAN DAL context
12168 pEventData: pointer to the event information structure
12169
Jeff Johnson295189b2012-06-20 16:38:30 -070012170 @see
12171 @return Result of the function call
12172*/
12173WDI_Status
12174WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012175(
Jeff Johnson295189b2012-06-20 16:38:30 -070012176 WDI_ControlBlockType* pWDICtx,
12177 WDI_EventInfoType* pEventData
12178)
12179{
12180 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
12181 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012182 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012183 wpt_uint16 usDataOffset = 0;
12184 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070012185 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070012186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12187
12188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012190 -------------------------------------------------------------------------*/
12191 if (( NULL == pEventData ) ||
12192 ( NULL == pEventData->pEventData) ||
12193 ( NULL == pEventData->pCBfnc))
12194 {
12195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012199 }
12200
Jeff Johnsone7245742012-09-05 17:12:55 -070012201 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012202 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070012203 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070012204 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
12205 /*-----------------------------------------------------------------------
12206 Get message buffer
12207 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012208 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12209 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070012210 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070012211 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070012212 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012213 {
12214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070012215 "Unable to get send buffer in ADD STA SELF REQ %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070012216 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
12217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012219 }
12220
12221 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012222 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012223 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
12224
Jeff Johnsone7245742012-09-05 17:12:55 -070012225 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070012226 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
12227 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
12228 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
12229 {
12230 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
12231 }
12232 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
12233 VOS_P2P_CLIENT_MODE) ||
12234 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
12235 VOS_P2P_DEVICE))
12236 {
12237 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
12238 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012239 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070012240 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070012241
12242 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012243 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012244
12245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012246 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12249 wdiAddSTASelfReqRspCb, pEventData->pUserData,
12250 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012251}/*WDI_ProcessAddSTASelfReq*/
12252
12253
12254
12255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012256 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012257 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012258
12259 @param pWDICtx: pointer to the WLAN DAL context
12260 pEventData: pointer to the event information structure
12261
Jeff Johnson295189b2012-06-20 16:38:30 -070012262 @see
12263 @return Result of the function call
12264*/
12265WDI_Status
12266WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012267(
Jeff Johnson295189b2012-06-20 16:38:30 -070012268 WDI_ControlBlockType* pWDICtx,
12269 WDI_EventInfoType* pEventData
12270)
12271{
12272 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
12273 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012274 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012275 wpt_uint16 usDataOffset = 0;
12276 wpt_uint16 usSendSize = 0;
12277 tDelStaSelfParams halSetDelSelfSTAParams;
12278 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12279
12280 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012281 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012282 -------------------------------------------------------------------------*/
12283 if (( NULL == pEventData ) || ( 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
Jeff Johnsone7245742012-09-05 17:12:55 -070012292 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070012293 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
12294 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
12295
12296 /*-----------------------------------------------------------------------
12297 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012298 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012299 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012301 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
12302 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012303 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070012304 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
12305 {
12306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070012307 "Unable to get send buffer in Del Sta Self req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070012308 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
12309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012311 }
12312
Jeff Johnsone7245742012-09-05 17:12:55 -070012313 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070012314 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
12315
Jeff Johnsone7245742012-09-05 17:12:55 -070012316 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
12317 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012318
12319 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012320 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012321
12322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012323 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012325 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12326 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070012327 WDI_DEL_STA_SELF_RESP);
12328
12329}
12330
Jeff Johnsone7245742012-09-05 17:12:55 -070012331#ifdef FEATURE_OEM_DATA_SUPPORT
12332/**
12333 @brief Process Start Oem Data Request function (called when Main
12334 FSM allows it)
12335
12336 @param pWDICtx: pointer to the WLAN DAL context
12337 pEventData: pointer to the event information structure
12338
12339 @see
12340 @return Result of the function call
12341*/
12342WDI_Status
12343WDI_ProcessStartOemDataReq
12344(
12345 WDI_ControlBlockType* pWDICtx,
12346 WDI_EventInfoType* pEventData
12347)
12348{
12349 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
12350 WDI_oemDataRspCb wdiOemDataRspCb;
12351 wpt_uint8* pSendBuffer = NULL;
12352 wpt_uint16 usDataOffset = 0;
12353 wpt_uint16 usSendSize = 0;
12354 wpt_uint16 reqLen;
12355 tStartOemDataReqParams* halStartOemDataReqParams;
12356
12357 /*-------------------------------------------------------------------------
12358 Sanity check
12359 -------------------------------------------------------------------------*/
12360 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12361 ( NULL == pEventData->pCBfnc ))
12362 {
12363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012364 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070012365 WDI_ASSERT(0);
12366 return WDI_STATUS_E_FAILURE;
12367 }
12368
12369 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
12370 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
12371
12372 /*-----------------------------------------------------------------------
12373 Get message buffer
12374 -----------------------------------------------------------------------*/
12375
12376 reqLen = sizeof(tStartOemDataReqParams);
12377
12378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12379 WDI_START_OEM_DATA_REQ, reqLen,
12380 &pSendBuffer, &usDataOffset, &usSendSize))||
12381 (usSendSize < (usDataOffset + reqLen)))
12382 {
12383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070012384 "Unable to get send buffer in Start Oem Data req %pK %pK %pK",
Jeff Johnsone7245742012-09-05 17:12:55 -070012385 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
12386 WDI_ASSERT(0);
12387 return WDI_STATUS_E_FAILURE;
12388 }
12389
12390 //copying WDI OEM DATA REQ PARAMS to shared memory
12391 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
12392
12393 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
12394 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
12395
12396 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
12397 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
12398
12399 /*-------------------------------------------------------------------------
12400 Send Start Request to HAL
12401 -------------------------------------------------------------------------*/
12402 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12403 wdiOemDataRspCb, pEventData->pUserData,
12404 WDI_START_OEM_DATA_RESP);
12405}/*WDI_ProcessStartOemDataReq*/
12406#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070012407
12408/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070012410 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012411
12412 @param pWDICtx: pointer to the WLAN DAL context
12413 pEventData: pointer to the event information structure
12414
Jeff Johnson295189b2012-06-20 16:38:30 -070012415 @see
12416 @return Result of the function call
12417*/
12418WDI_Status
12419WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012420(
Jeff Johnson295189b2012-06-20 16:38:30 -070012421 WDI_ControlBlockType* pWDICtx,
12422 WDI_EventInfoType* pEventData
12423)
12424{
12425 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
12426 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012428 wpt_uint16 usDataOffset = 0;
12429 wpt_uint16 usSendSize = 0;
12430 tHalWlanHostResumeReqParam halResumeReqParams;
12431
12432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12433
12434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012436 -------------------------------------------------------------------------*/
12437 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12438 ( NULL == pEventData->pCBfnc ))
12439 {
12440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012441 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 }
12445
12446 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
12447 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
12448
12449 /*-----------------------------------------------------------------------
12450 Get message buffer
12451 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012452 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012453 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
12454 &pSendBuffer, &usDataOffset, &usSendSize))||
12455 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
12456 {
12457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070012458 "Unable to get send buffer in Start Oem Data req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
12460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012462 }
12463
Jeff Johnsone7245742012-09-05 17:12:55 -070012464 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070012465 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070012466
12467 wpalMemoryCopy( pSendBuffer+usDataOffset,
12468 &halResumeReqParams,
12469 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012470
12471 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012473
12474 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012475 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012477 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12478 wdiHostResumeRspCb, pEventData->pUserData,
12479 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012480}/*WDI_ProcessHostResumeReq*/
12481
12482/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012485
12486 @param pWDICtx: pointer to the WLAN DAL context
12487 pEventData: pointer to the event information structure
12488
Jeff Johnson295189b2012-06-20 16:38:30 -070012489 @see
12490 @return Result of the function call
12491*/
12492WDI_Status
12493WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012494(
Jeff Johnson295189b2012-06-20 16:38:30 -070012495 WDI_ControlBlockType* pWDICtx,
12496 WDI_EventInfoType* pEventData
12497)
12498{
12499 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
12500 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012502 wpt_uint16 usDataOffset = 0;
12503 wpt_uint16 usSendSize = 0;
12504 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
12505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12506
12507 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012508 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012509 -------------------------------------------------------------------------*/
12510 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12511 ( NULL == pEventData->pCBfnc ))
12512 {
12513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012514 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012517 }
12518
12519 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
12520 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070012521
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 /*-----------------------------------------------------------------------
12523 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012524 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012525 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012526 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012527 sizeof(halTxPerTrackingReqParam),
12528 &pSendBuffer, &usDataOffset, &usSendSize))||
12529 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
12530 {
12531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070012532 "Unable to get send buffer in set tx per tracking req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
12534 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012535 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070012537
Jeff Johnson295189b2012-06-20 16:38:30 -070012538 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
12539 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
12540 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
12541 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070012542
12543 wpalMemoryCopy( pSendBuffer+usDataOffset,
12544 &halTxPerTrackingReqParam,
12545 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012546
12547 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012549
12550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012551 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012553 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12554 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012555}/*WDI_ProcessSetTxPerTrackingReq*/
12556
12557/*=========================================================================
12558 Indications
12559=========================================================================*/
12560
12561/**
12562 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012563
12564 @param pWDICtx: pointer to the WLAN DAL context
12565 pEventData: pointer to the event information structure
12566
Jeff Johnson295189b2012-06-20 16:38:30 -070012567 @see
12568 @return Result of the function call
12569*/
12570WDI_Status
12571WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070012572(
Jeff Johnson295189b2012-06-20 16:38:30 -070012573 WDI_ControlBlockType* pWDICtx,
12574 WDI_EventInfoType* pEventData
12575)
12576{
12577 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070012578 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012579 wpt_uint16 usDataOffset = 0;
12580 wpt_uint16 usSendSize = 0;
12581 WDI_Status wdiStatus;
12582 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
12583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12584
12585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012587 -------------------------------------------------------------------------*/
12588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12589 {
12590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012591 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012594 }
12595
12596 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
12597
12598 /*-----------------------------------------------------------------------
12599 Get message buffer
12600 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012601 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12602 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070012603 sizeof(halWlanSuspendIndparams),
12604 &pSendBuffer, &usDataOffset, &usSendSize))||
12605 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
12606 {
12607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12608 "Unable to get send buffer in Suspend Ind ");
12609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 }
12612
12613 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
12614 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
12615
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070012617 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012618
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
12620 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012621
12622 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012623 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012624 -------------------------------------------------------------------------*/
12625 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012627
Jeff Johnsone7245742012-09-05 17:12:55 -070012628 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012629 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12630}/*WDI_ProcessHostSuspendInd*/
12631
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080012632
12633
12634/**
12635 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
12636
12637 @param pWDICtx: pointer to the WLAN DAL context
12638 pEventData: pointer to the event information structure
12639
12640 @see
12641 @return Result of the function call
12642*/
12643WDI_Status
12644WDI_ProcessTrafficStatsInd
12645(
12646 WDI_ControlBlockType* pWDICtx,
12647 WDI_EventInfoType* pEventData
12648)
12649{
12650 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
12651 wpt_uint8* pSendBuffer = NULL;
12652 wpt_uint16 usDataOffset = 0;
12653 wpt_uint16 usSendSize = 0;
12654 WDI_Status wdiStatus;
12655 tStatsClassBIndParams* pStatsClassBIndParams;
12656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12657
12658 /*-------------------------------------------------------------------------
12659 Sanity check
12660 -------------------------------------------------------------------------*/
12661 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12662 {
12663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12664 "%s: Invalid parameters in Traffic Stats ind",__func__);
12665 WDI_ASSERT(0);
12666 return WDI_STATUS_E_FAILURE;
12667 }
12668
12669 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
12670
12671 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
12672 {
12673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12674 "%s: Invalid parameters in Traffic Stats ind",__func__);
12675 WDI_ASSERT(0);
12676 return WDI_STATUS_E_FAILURE;
12677 }
12678
12679 /*-----------------------------------------------------------------------
12680 Get message buffer
12681 -----------------------------------------------------------------------*/
12682 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12683 WDI_TRAFFIC_STATS_IND,
12684 sizeof(tStatsClassBIndParams),
12685 &pSendBuffer, &usDataOffset, &usSendSize))||
12686 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
12687 {
12688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12689 "Unable to get send buffer in Traffic Stats Ind ");
12690 WDI_ASSERT(0);
12691 return WDI_STATUS_E_FAILURE;
12692 }
12693
12694 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12695
12696 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12697
12698 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12699 pTrafficStatsIndParams->pTrafficStats,
12700 pTrafficStatsIndParams->length);
12701
12702 /*-------------------------------------------------------------------------
12703 Send Suspend Request to HAL
12704 -------------------------------------------------------------------------*/
12705 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12706 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12707
12708 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12709 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12710}/*WDI_ProcessTrafficStatsInd*/
12711
Chet Lanctot186b5732013-03-18 10:26:30 -070012712#ifdef WLAN_FEATURE_11W
12713/**
12714 @brief Process Exclude Unencrypted Indications function (called
12715 when Main FSM allows it)
12716
12717 @param pWDICtx: pointer to the WLAN DAL context
12718 pEventData: pointer to the event information structure
12719
12720 @see
12721 @return Result of the function call
12722*/
12723WDI_Status
12724WDI_ProcessExcludeUnencryptInd
12725(
12726 WDI_ControlBlockType* pWDICtx,
12727 WDI_EventInfoType* pEventData
12728)
12729{
12730 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12731 wpt_uint8* pSendBuffer = NULL;
12732 wpt_uint16 usDataOffset = 0;
12733 wpt_uint16 usSendSize = 0;
12734 WDI_Status wdiStatus;
12735 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12736 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12737
12738 /*-------------------------------------------------------------------------
12739 Sanity check
12740 -------------------------------------------------------------------------*/
12741 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12742 {
12743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12744 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12745 WDI_ASSERT(0);
12746 return WDI_STATUS_E_FAILURE;
12747 }
12748
12749 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12750
12751 /*-----------------------------------------------------------------------
12752 Get message buffer
12753 -----------------------------------------------------------------------*/
12754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12755 WDI_EXCLUDE_UNENCRYPTED_IND,
12756 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12757 &pSendBuffer, &usDataOffset, &usSendSize))||
12758 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12759 {
12760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12761 "Unable to get send buffer in Exclude Unencrypted Ind ");
12762 WDI_ASSERT(0);
12763 return WDI_STATUS_E_FAILURE;
12764 }
12765
12766 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12767
12768 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12769
12770 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12771 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12772
12773 /*-------------------------------------------------------------------------
12774 Send Suspend Request to HAL
12775 -------------------------------------------------------------------------*/
12776 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12777 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12778
12779 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12780 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12781}/*WDI_ProcessExcludeUnencryptInd*/
12782#endif
12783
Yue Mab9c86f42013-08-14 15:59:08 -070012784/**
12785 @brief Process Add Periodic Tx Pattern Indication function (called when
12786 Main FSM allows it)
12787
12788 @param pWDICtx: pointer to the WLAN DAL context
12789 pEventData: pointer to the event information structure
12790
12791 @see
12792 @return Result of the function call
12793*/
12794WDI_Status
12795WDI_ProcessAddPeriodicTxPtrnInd
12796(
12797 WDI_ControlBlockType* pWDICtx,
12798 WDI_EventInfoType* pEventData
12799)
12800{
12801 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12802 wpt_uint8* pSendBuffer = NULL;
12803 wpt_uint16 usDataOffset = 0;
12804 wpt_uint16 usSendSize = 0;
12805 WDI_Status wdiStatus;
12806 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12807 wpt_uint8 selfStaIdx = 0;
Ashish Kumar Dhanotiya0d204382019-04-30 14:05:19 +053012808 wpt_uint8 ucCurrentBSSSesIdx;
12809 WDI_BSSSessionType* pBSSSes = NULL;
Yue Mab9c86f42013-08-14 15:59:08 -070012810
12811 /*-------------------------------------------------------------------------
12812 Sanity check
12813 -------------------------------------------------------------------------*/
12814 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12815 {
12816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12817 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12818 WDI_ASSERT(0);
12819 return WDI_STATUS_E_FAILURE;
12820 }
12821
12822 pAddPeriodicTxPtrnParams =
12823 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12824
12825 /*------------------------------------------------------------------------
12826 Get message buffer
12827 ------------------------------------------------------------------------*/
12828 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12829 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12830 &pSendBuffer, &usDataOffset, &usSendSize))||
12831 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12832 {
12833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12834 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12835 __func__);
12836 WDI_ASSERT(0);
12837 return WDI_STATUS_E_FAILURE;
12838 }
12839
12840 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12841
12842 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12843 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12844 &selfStaIdx))
12845 {
12846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12847 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012848 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012849
12850 return WDI_STATUS_E_FAILURE;
12851 }
12852
Ashish Kumar Dhanotiya0d204382019-04-30 14:05:19 +053012853 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12854 pAddPeriodicTxPtrnParams->
12855 wdiAddPeriodicTxPtrnParams.macAddr,
12856 &pBSSSes);
12857 if ( NULL == pBSSSes )
12858 {
12859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12860 "%s: Association sequence for this BSS does not exist. macBSSID "
12861 MAC_ADDRESS_STR,
12862 __func__,
12863 MAC_ADDR_ARRAY(pAddPeriodicTxPtrnParams->
12864 wdiAddPeriodicTxPtrnParams.macAddr));
12865 wpalMemoryFree(pSendBuffer);
12866 return WDI_STATUS_E_NOT_ALLOWED;
12867 }
12868
Yue Mab9c86f42013-08-14 15:59:08 -070012869 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12870 halAddPeriodicTxPtrn->ucPtrnId =
12871 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12872 halAddPeriodicTxPtrn->usPtrnSize =
12873 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12874 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12875 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12876
12877 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12878 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12879 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12880
12881 /*-------------------------------------------------------------------------
12882 Send Indication to HAL
12883 -------------------------------------------------------------------------*/
12884 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12885 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12886
12887 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12888
12889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12890 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12891
12892 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12893} /* WDI_ProcessAddPeriodicTxPtrnInd */
12894
12895/**
12896 @brief Process Delete Periodic Tx Pattern Indication function (called when
12897 Main FSM allows it)
12898
12899 @param pWDICtx: pointer to the WLAN DAL context
12900 pEventData: pointer to the event information structure
12901
12902 @see
12903 @return Result of the function call
12904*/
12905WDI_Status
12906WDI_ProcessDelPeriodicTxPtrnInd
12907(
12908 WDI_ControlBlockType* pWDICtx,
12909 WDI_EventInfoType* pEventData
12910)
12911{
12912 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12913 wpt_uint8* pSendBuffer = NULL;
12914 wpt_uint16 usDataOffset = 0;
12915 wpt_uint16 usSendSize = 0;
12916 WDI_Status wdiStatus;
12917 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12918 wpt_uint8 selfStaIdx = 0;
12919
12920 /*-------------------------------------------------------------------------
12921 Sanity check
12922 -------------------------------------------------------------------------*/
12923 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12924 {
12925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12926 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12927 WDI_ASSERT(0);
12928 return WDI_STATUS_E_FAILURE;
12929 }
12930
12931 pDelPeriodicTxPtrnParams =
12932 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12933
12934 /*------------------------------------------------------------------------
12935 Get message buffer
12936 ------------------------------------------------------------------------*/
12937 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12938 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12939 &pSendBuffer, &usDataOffset, &usSendSize))||
12940 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12941 {
12942 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12943 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12944 __func__);
12945 WDI_ASSERT(0);
12946 return WDI_STATUS_E_FAILURE;
12947 }
12948
12949 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12950
12951 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12952 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12953 &selfStaIdx))
12954 {
12955 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12956 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012957 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012958
12959 return WDI_STATUS_E_FAILURE;
12960 }
12961
12962 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12963 halDelPeriodicTxPtrn->uPatternIdBitmap =
12964 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12965
12966 /*-------------------------------------------------------------------------
12967 Send Indication to HAL
12968 -------------------------------------------------------------------------*/
12969 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12970 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12971
12972 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12973
12974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12975 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12976
12977 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12978} /* WDI_ProcessDelPeriodicTxPtrnInd */
12979
Jeff Johnson295189b2012-06-20 16:38:30 -070012980/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012981 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012982==========================================================================*/
12983/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012986
12987 @param pWDICtx: pointer to the WLAN DAL context
12988 pEventData: pointer to the event information structure
12989
Jeff Johnson295189b2012-06-20 16:38:30 -070012990 @see
12991 @return Result of the function call
12992*/
12993WDI_Status
12994WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012995(
Jeff Johnson295189b2012-06-20 16:38:30 -070012996 WDI_ControlBlockType* pWDICtx,
12997 WDI_EventInfoType* pEventData
12998)
12999{
13000 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
13001 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013002 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 wpt_uint16 usDataOffset = 0;
13004 wpt_uint16 usSendSize = 0;
13005 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
13006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13007
13008 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013009 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013010 -------------------------------------------------------------------------*/
13011 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13012 ( NULL == pEventData->pCBfnc ))
13013 {
13014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013015 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013016 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013017 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013018 }
13019
13020 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
13021 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
13022 /*-----------------------------------------------------------------------
13023 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013024 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013025 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013026 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013027 sizeof(halSwitchChannelReq.switchChannelParams),
13028 &pSendBuffer, &usDataOffset, &usSendSize))||
13029 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
13030 {
13031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013032 "Unable to get send buffer in channel switch req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013033 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
13034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 }
13037
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070013040#ifndef WLAN_FEATURE_VOWIFI
13041 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
13043#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
13046
13047#ifdef WLAN_FEATURE_VOWIFI
13048 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070013049 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
13051 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
13052 WDI_MAC_ADDR_LEN);
13053 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
13054 pwdiSwitchChParams->wdiChInfo.macBSSId,
13055 WDI_MAC_ADDR_LEN);
13056#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070013057 wpalMemoryCopy( pSendBuffer+usDataOffset,
13058 &halSwitchChannelReq.switchChannelParams,
13059 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013060
13061 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013062 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013063
13064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013065 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013067 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13068 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013069}/*WDI_ProcessChannelSwitchReq*/
13070
13071/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080013072 @brief Process Channel Switch Request function (called when
13073 Main FSM allows it)
13074
13075 @param pWDICtx: pointer to the WLAN DAL context
13076 pEventData: pointer to the event information structure
13077
13078 @see
13079 @return Result of the function call
13080*/
13081WDI_Status WDI_ProcessChannelSwitchReq_V1
13082(
13083 WDI_ControlBlockType* pWDICtx,
13084 WDI_EventInfoType* pEventData
13085)
13086{
13087 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
13088 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
13089 wpt_uint8* pSendBuffer = NULL;
13090 wpt_uint16 usDataOffset = 0;
13091 wpt_uint16 usSendSize = 0;
13092 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
13093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13094
13095 /*-------------------------------------------------------------------------
13096 Sanity check
13097 -------------------------------------------------------------------------*/
13098 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13099 ( NULL == pEventData->pCBfnc ))
13100 {
13101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13102 "%s: Invalid parameters", __func__);
13103 WDI_ASSERT(0);
13104 return WDI_STATUS_E_FAILURE;
13105 }
13106
13107 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
13108 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
13109 /*-----------------------------------------------------------------------
13110 Get message buffer
13111 ! TO DO : proper conversion into the HAL Message Request Format
13112 -----------------------------------------------------------------------*/
13113 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13114 WDI_CH_SWITCH_REQ_V1,
13115 sizeof(halSwitchChannelReq.switchChannelParams_V1),
13116 &pSendBuffer, &usDataOffset, &usSendSize))||
13117 ( usSendSize < (usDataOffset +
13118 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
13119 {
13120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013121 "Unable to get send buffer in channel switch req %pK %pK %pK",
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080013122 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
13123 WDI_ASSERT(0);
13124 return WDI_STATUS_E_FAILURE;
13125 }
13126
13127 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
13128 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
13129
13130 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
13131 pwdiSwitchChParams->wdiChInfo.ucChannel;
13132#ifndef WLAN_FEATURE_VOWIFI
13133 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
13134 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
13135#endif
13136 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
13137 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
13138
13139#ifdef WLAN_FEATURE_VOWIFI
13140 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
13141 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
13142 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
13143 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
13144 WDI_MAC_ADDR_LEN);
13145 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
13146 pwdiSwitchChParams->wdiChInfo.macBSSId,
13147 WDI_MAC_ADDR_LEN);
13148#endif
13149 wpalMemoryCopy( pSendBuffer+usDataOffset,
13150 &halSwitchChannelReq.switchChannelParams_V1,
13151 sizeof(halSwitchChannelReq.switchChannelParams_V1));
13152
13153 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
13154 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
13155
13156 /*-------------------------------------------------------------------------
13157 Send Switch Channel Request to HAL
13158 -------------------------------------------------------------------------*/
13159 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13160 wdiSwitchChRspCb, pEventData->pUserData,
13161 WDI_CH_SWITCH_RESP_V1);
13162}/*WDI_ProcessChannelSwitchReq_V1*/
13163
13164/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013165 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013166 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013167
13168 @param pWDICtx: pointer to the WLAN DAL context
13169 pEventData: pointer to the event information structure
13170
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 @see
13172 @return Result of the function call
13173*/
13174WDI_Status
13175WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013176(
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 WDI_ControlBlockType* pWDICtx,
13178 WDI_EventInfoType* pEventData
13179)
13180{
13181 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
13182 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 wpt_uint16 usDataOffset = 0;
13187 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013188 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013189
Jeff Johnsone7245742012-09-05 17:12:55 -070013190 tConfigStaReqMsg halConfigStaReqMsg;
13191 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13193
13194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013195 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013196 -------------------------------------------------------------------------*/
13197 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13198 ( NULL == pEventData->pCBfnc ))
13199 {
13200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013204 }
13205
Abhishek Singh6927fa02014-06-27 17:19:55 +053013206 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
13208 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
13209 /*-------------------------------------------------------------------------
13210 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013211 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013212 -------------------------------------------------------------------------*/
13213 wpalMutexAcquire(&pWDICtx->wptMutex);
13214
13215 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013216 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013217 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013218 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13219 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
13220 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070013221
Jeff Johnsone7245742012-09-05 17:12:55 -070013222 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013223 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13225 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13226 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013227
13228 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 }
13231
13232 /*------------------------------------------------------------------------
13233 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 ------------------------------------------------------------------------*/
13236 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13237 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13239 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13240 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013241
Jeff Johnsone7245742012-09-05 17:12:55 -070013242 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013243 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013244 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013245 }
13246
13247 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013248
13249 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
13250#ifdef WLAN_FEATURE_11AC
13251 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070013252 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070013253 else
13254#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070013255 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070013256
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 /*-----------------------------------------------------------------------
13258 Get message buffer
13259 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
13261 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 {
13265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013266 "Unable to get send buffer in config sta req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
13268 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013269 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 }
13271
13272 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013273 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013274 &pwdiConfigSTAParams->wdiReqInfo);
13275
13276 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
13277 {
13278 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 WDI_STATableFindStaidByAddr(pWDICtx,
13281 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070013282 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070013283 {
13284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013285 MAC_ADDRESS_STR
13286 ": This station does not exist in the WDI Station Table",
13287 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070013288 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080013289 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070013290 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 }
13292 }
13293 else
13294 {
13295 /* Need to fill in the STA Index to invalid, since at this point we have not
13296 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070013297 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013298 }
13299
13300 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070013301 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070013302
Jeff Johnsone7245742012-09-05 17:12:55 -070013303 wpalMemoryCopy( pSendBuffer+usDataOffset,
13304 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070013305 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070013306
13307 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013308 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013309
Jeff Johnsone7245742012-09-05 17:12:55 -070013310 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
13311 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013312 sizeof(pWDICtx->wdiCachedConfigStaReq));
13313
13314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013315 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13318 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013319}/*WDI_ProcessConfigStaReq*/
13320
13321
13322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013325
13326 @param pWDICtx: pointer to the WLAN DAL context
13327 pEventData: pointer to the event information structure
13328
Jeff Johnson295189b2012-06-20 16:38:30 -070013329 @see
13330 @return Result of the function call
13331*/
13332WDI_Status
13333WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013334(
Jeff Johnson295189b2012-06-20 16:38:30 -070013335 WDI_ControlBlockType* pWDICtx,
13336 WDI_EventInfoType* pEventData
13337)
13338{
13339 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
13340 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013341 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013342 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013343 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013344 wpt_uint16 usDataOffset = 0;
13345 wpt_uint16 usSendSize = 0;
13346 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070013347 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13349
13350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013352 -------------------------------------------------------------------------*/
13353 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13354 ( NULL == pEventData->pCBfnc ))
13355 {
13356 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013357 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 }
13361
13362 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
13363 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
13364 /*-------------------------------------------------------------------------
13365 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013366 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 -------------------------------------------------------------------------*/
13368 wpalMutexAcquire(&pWDICtx->wptMutex);
13369
13370 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013371 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013373 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13374 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
13375 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070013376
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013378 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070013379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
13381 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 }
13383 else
13384 {
13385 /*------------------------------------------------------------------------
13386 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013388 ------------------------------------------------------------------------*/
13389 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13390 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13392 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13393 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
13394
13395 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013396 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013397 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013398 }
13399 }
13400 /* If the link is set to enter IDLE - the Session allocated for this BSS
13401 will be deleted on the Set Link State response coming from HAL
13402 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070013403 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013404 sizeof(pWDICtx->wdiCacheSetLinkStReq));
13405
13406 wpalMutexRelease(&pWDICtx->wptMutex);
13407 /*-----------------------------------------------------------------------
13408 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013411
13412 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 sizeof(halLinkStateReqMsg),
13414 &pSendBuffer, &usDataOffset, &usSendSize))||
13415 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
13416 {
13417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013418 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013419 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
13420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 }
13423
13424 wpalMemoryCopy(halLinkStateReqMsg.bssid,
13425 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
13426
13427 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
13428 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
13429
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
13432
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 wpalMemoryCopy( pSendBuffer+usDataOffset,
13434 &halLinkStateReqMsg,
13435 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070013436
13437 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013438 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013439
13440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13444 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013445}/*WDI_ProcessSetLinkStateReq*/
13446
13447
13448/**
13449 @brief Process Get Stats Request function (called when Main FSM
13450 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013451
13452 @param pWDICtx: pointer to the WLAN DAL context
13453 pEventData: pointer to the event information structure
13454
Jeff Johnson295189b2012-06-20 16:38:30 -070013455 @see
13456 @return Result of the function call
13457*/
13458WDI_Status
13459WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013460(
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 WDI_ControlBlockType* pWDICtx,
13462 WDI_EventInfoType* pEventData
13463)
13464{
13465 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
13466 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013467 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013468 wpt_uint16 usDataOffset = 0;
13469 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 WDI_BSSSessionType* pBSSSes = NULL;
13472 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 tHalStatsReqMsg halStatsReqMsg;
13475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13476
13477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 -------------------------------------------------------------------------*/
13480 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
13481 ( NULL == pEventData->pCBfnc ) )
13482 {
13483 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 }
13488
13489 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
13490 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
13491
13492 /*-------------------------------------------------------------------------
13493 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 -------------------------------------------------------------------------*/
13496 wpalMutexAcquire(&pWDICtx->wptMutex);
13497
13498 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013500 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13502 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 &macBSSID))
13504 {
13505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013506 "This station does not exist in the WDI Station Table %d",
13507 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013508 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 }
13511
Jeff Johnsone7245742012-09-05 17:12:55 -070013512 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13513 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013514 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13516 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13517 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013518
13519 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013520 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013521 }
13522
13523 /*------------------------------------------------------------------------
13524 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013525 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013526 ------------------------------------------------------------------------*/
13527 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13528 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13530 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13531 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013532
Jeff Johnsone7245742012-09-05 17:12:55 -070013533 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013534 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013535 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013536 }
13537
13538
13539 wpalMutexRelease(&pWDICtx->wptMutex);
13540
13541 /*-----------------------------------------------------------------------
13542 Get message buffer
13543 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013544 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013545 sizeof(halStatsReqMsg.statsReqParams),
13546 &pSendBuffer, &usDataOffset, &usSendSize))||
13547 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
13548 {
13549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013550 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013551 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
13552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013554 }
13555
Jeff Johnsone7245742012-09-05 17:12:55 -070013556 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013557 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013558 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070013559 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 wpalMemoryCopy( pSendBuffer+usDataOffset,
13561 &halStatsReqMsg.statsReqParams,
13562 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013563
13564 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013565 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013566
13567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013569 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013570 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13571 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013572}/*WDI_ProcessGetStatsReq*/
13573
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013574#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013575/**
13576 @brief Process Get Roam Rssi Request function (called when Main FSM
13577 allows it)
13578
13579 @param pWDICtx: pointer to the WLAN DAL context
13580 pEventData: pointer to the event information structure
13581
13582 @see
13583 @return Result of the function call
13584*/
13585WDI_Status
13586WDI_ProcessGetRoamRssiReq
13587(
13588 WDI_ControlBlockType* pWDICtx,
13589 WDI_EventInfoType* pEventData
13590)
13591{
13592 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
13593 WDI_GetStatsRspCb wdiGetStatsRspCb;
13594 wpt_uint8* pSendBuffer = NULL;
13595 wpt_uint16 usDataOffset = 0;
13596 wpt_uint16 usSendSize = 0;
13597 wpt_uint8 ucCurrentBSSSesIdx = 0;
13598 WDI_BSSSessionType* pBSSSes = NULL;
13599 wpt_macAddr macBSSID;
13600 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
13601 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
13602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13603 /*-------------------------------------------------------------------------
13604 Sanity check
13605 -------------------------------------------------------------------------*/
13606 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
13607 ( NULL == pEventData->pCBfnc ) )
13608 {
13609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13610 "%s: Invalid parameters", __func__);
13611 WDI_ASSERT(0);
13612 return WDI_STATUS_E_FAILURE;
13613 }
13614
13615 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
13616 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
13617
13618 /*-------------------------------------------------------------------------
13619 Check to see if we are in the middle of an association, if so queue, if
13620 not it means it is free to process request
13621 -------------------------------------------------------------------------*/
13622 wpalMutexAcquire(&pWDICtx->wptMutex);
13623
13624 /*------------------------------------------------------------------------
13625 Find the BSS for which the request is made
13626 ------------------------------------------------------------------------*/
13627 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13628 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
13629 &macBSSID))
13630 {
13631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013632 "This station does not exist in the WDI Station Table %d",
13633 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013634 wpalMutexRelease(&pWDICtx->wptMutex);
13635 return WDI_STATUS_E_FAILURE;
13636 }
13637
13638 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13639 if ( NULL == pBSSSes )
13640 {
13641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13642 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13643 __func__, MAC_ADDR_ARRAY(macBSSID));
13644
13645 wpalMutexRelease(&pWDICtx->wptMutex);
13646 return WDI_STATUS_E_NOT_ALLOWED;
13647 }
13648
13649 /*------------------------------------------------------------------------
13650 Check if this BSS is being currently processed or queued,
13651 if queued - queue the new request as well
13652 ------------------------------------------------------------------------*/
13653 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13654 {
13655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13656 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13657 __func__, MAC_ADDR_ARRAY(macBSSID));
13658
13659 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
13660 wpalMutexRelease(&pWDICtx->wptMutex);
13661 return wdiStatus;
13662 }
13663
13664 wpalMutexRelease(&pWDICtx->wptMutex);
13665
13666 /*-----------------------------------------------------------------------
13667 Get message buffer
13668 -----------------------------------------------------------------------*/
13669 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13670 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13671 &pSendBuffer, &usDataOffset, &usSendSize))||
13672 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13673 {
13674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013675 "Unable to get send buffer in set bss key req %pK %pK %pK",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013676 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13677 WDI_ASSERT(0);
13678 return WDI_STATUS_E_FAILURE;
13679 }
13680
13681 halRssiRoamReqMsg.roamRssiReqParams.staId =
13682 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13683 wpalMemoryCopy( pSendBuffer+usDataOffset,
13684 &halRssiRoamReqMsg.roamRssiReqParams,
13685 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13686
13687 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13688 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13689
13690 /*-------------------------------------------------------------------------
13691 Send Get STA Request to HAL
13692 -------------------------------------------------------------------------*/
13693 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13694 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13695}/*WDI_ProcessGetRoamRssiReq*/
13696#endif
13697
Jeff Johnson295189b2012-06-20 16:38:30 -070013698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013699 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013701
13702 @param pWDICtx: pointer to the WLAN DAL context
13703 pEventData: pointer to the event information structure
13704
Jeff Johnson295189b2012-06-20 16:38:30 -070013705 @see
13706 @return Result of the function call
13707*/
13708WDI_Status
13709WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013710(
Jeff Johnson295189b2012-06-20 16:38:30 -070013711 WDI_ControlBlockType* pWDICtx,
13712 WDI_EventInfoType* pEventData
13713)
13714{
13715 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13716 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13717
Jeff Johnsone7245742012-09-05 17:12:55 -070013718 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013719 wpt_uint16 usDataOffset = 0;
13720 wpt_uint16 usSendSize = 0;
13721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13722
13723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013725 -------------------------------------------------------------------------*/
13726 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13727 ( NULL == pEventData->pCBfnc))
13728 {
13729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013733 }
13734
13735 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13736 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13737
13738 /*-----------------------------------------------------------------------
13739 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013740 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013741 -----------------------------------------------------------------------*/
13742
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13745 &pSendBuffer, &usDataOffset, &usSendSize))||
13746 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13747 {
13748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013749 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013750 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13751 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013752 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 }
13754
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 wpalMemoryCopy( pSendBuffer+usDataOffset,
13756 &pwdiUpdateCfgParams->uConfigBufferLen,
13757 sizeof(wpt_uint32));
13758 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13759 pwdiUpdateCfgParams->pConfigBuffer,
13760 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013761
13762 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013763 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013764
13765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013767 -------------------------------------------------------------------------*/
13768
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13770 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013771
13772}/*WDI_ProcessUpdateCfgReq*/
13773
13774
13775/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013777 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013778
13779 @param pWDICtx: pointer to the WLAN DAL context
13780 pEventData: pointer to the event information structure
13781
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 @see
13783 @return Result of the function call
13784*/
13785WDI_Status
13786WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013787(
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 WDI_ControlBlockType* pWDICtx,
13789 WDI_EventInfoType* pEventData
13790)
13791{
13792 WDI_AddBAReqParamsType* pwdiAddBAParams;
13793 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013794 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013795 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013797 wpt_uint16 usDataOffset = 0;
13798 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013799 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013800 wpt_macAddr macBSSID;
13801
13802 tAddBAReqMsg halAddBAReq;
13803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13804
13805 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 -------------------------------------------------------------------------*/
13808 if (( NULL == pEventData ) ||
13809 ( NULL == pEventData->pEventData) ||
13810 ( NULL == pEventData->pCBfnc ))
13811 {
13812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013815 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013816 }
13817
13818 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13819 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13820
13821 /*-------------------------------------------------------------------------
13822 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013823 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013824 -------------------------------------------------------------------------*/
13825 wpalMutexAcquire(&pWDICtx->wptMutex);
13826
13827 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013828 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013829 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013830 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13831 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 &macBSSID))
13833 {
13834 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013835 "This station does not exist in the WDI Station Table %d",
13836 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013837 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013838 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013839 }
13840
Jeff Johnsone7245742012-09-05 17:12:55 -070013841 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13842 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13845 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13846 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013847
13848 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013850 }
13851
13852 /*------------------------------------------------------------------------
13853 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013854 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 ------------------------------------------------------------------------*/
13856 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13857 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13859 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13860 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013861
Jeff Johnsone7245742012-09-05 17:12:55 -070013862 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013863 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013864 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013865 }
13866
13867
13868 wpalMutexRelease(&pWDICtx->wptMutex);
13869 /*-----------------------------------------------------------------------
13870 Get message buffer
13871 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 sizeof(halAddBAReq.addBAParams),
13874 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13877 {
13878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013879 "Unable to get send buffer in Add BA req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013880 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 }
13884
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13887 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13888#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013889 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013890 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13891#endif
13892
Jeff Johnsone7245742012-09-05 17:12:55 -070013893 wpalMemoryCopy( pSendBuffer+usDataOffset,
13894 &halAddBAReq.addBAParams,
13895 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013896
13897 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013898 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013899
13900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013901 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13904 wdiAddBARspCb, pEventData->pUserData,
13905 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013906}/*WDI_ProcessAddBAReq*/
13907
13908
13909
13910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013913
13914 @param pWDICtx: pointer to the WLAN DAL context
13915 pEventData: pointer to the event information structure
13916
Jeff Johnson295189b2012-06-20 16:38:30 -070013917 @see
13918 @return Result of the function call
13919*/
13920WDI_Status
13921WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013922(
Jeff Johnson295189b2012-06-20 16:38:30 -070013923 WDI_ControlBlockType* pWDICtx,
13924 WDI_EventInfoType* pEventData
13925)
13926{
13927 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13928 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013929 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013930 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013931 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013932 wpt_uint16 usDataOffset = 0;
13933 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013934 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 wpt_uint16 index;
13936 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013937
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 tTriggerBAReqMsg halTriggerBAReq;
13939 tTriggerBaReqCandidate* halTriggerBACandidate;
13940 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13942
13943 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013944 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013945 -------------------------------------------------------------------------*/
13946 if (( NULL == pEventData ) ||
13947 ( NULL == pEventData->pEventData ) ||
13948 ( NULL == pEventData->pCBfnc ))
13949 {
13950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013951 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013952 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013953 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013954 }
13955
13956 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13957 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13958 /*-------------------------------------------------------------------------
13959 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013960 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013961 -------------------------------------------------------------------------*/
13962 wpalMutexAcquire(&pWDICtx->wptMutex);
13963
13964 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013965 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013966 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013967 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13968 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 &macBSSID))
13970 {
13971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013972 "This station does not exist in the WDI Station Table %d",
13973 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013974 wpalMutexRelease(&pWDICtx->wptMutex);
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 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13979 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013980 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13982 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13983 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013984
13985 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013987 }
13988
13989 /*------------------------------------------------------------------------
13990 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013991 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 ------------------------------------------------------------------------*/
13993 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13994 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13996 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13997 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013998
Jeff Johnsone7245742012-09-05 17:12:55 -070013999 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014001 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014002 }
14003
14004
14005 wpalMutexRelease(&pWDICtx->wptMutex);
14006 /*-----------------------------------------------------------------------
14007 Get message buffer
14008 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14010 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014011 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070014013 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
14014 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070014015 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070014017 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070014018 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
14019 {
14020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014021 "Unable to get send buffer in Trigger BA req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014022 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
14023 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014024 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 }
14026
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070014029 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070014030 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
14031
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 wpalMemoryCopy( pSendBuffer+usDataOffset,
14033 &halTriggerBAReq.triggerBAParams,
14034 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014035
Jeff Johnsone7245742012-09-05 17:12:55 -070014036 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014037 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
14038 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
14039 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070014040
14041 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070014042 index++)
14043 {
14044 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
14045 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
14046 halTriggerBACandidate++;
14047 wdiTriggerBACandidate++;
14048 }
14049
14050 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014051 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014052
14053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14057 wdiTriggerBARspCb, pEventData->pUserData,
14058 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014059}/*WDI_ProcessTriggerBAReq*/
14060
14061
14062
14063/**
14064 @brief Process Update Beacon Params Request function (called when Main FSM
14065 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014066
14067 @param pWDICtx: pointer to the WLAN DAL context
14068 pEventData: pointer to the event information structure
14069
Jeff Johnson295189b2012-06-20 16:38:30 -070014070 @see
14071 @return Result of the function call
14072*/
14073WDI_Status
14074WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014075(
Jeff Johnson295189b2012-06-20 16:38:30 -070014076 WDI_ControlBlockType* pWDICtx,
14077 WDI_EventInfoType* pEventData
14078)
14079{
14080 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
14081 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014082 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014083 wpt_uint16 usDataOffset = 0;
14084 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14087
14088 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014089 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014090 -------------------------------------------------------------------------*/
14091 if (( NULL == pEventData ) ||
14092 ( NULL == pEventData->pEventData) ||
14093 ( NULL == pEventData->pCBfnc))
14094 {
14095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014096 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014098 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014099 }
14100
14101 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
14102 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
14103 /*-----------------------------------------------------------------------
14104 Get message buffer
14105 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014107 sizeof(halUpdateBeaconParams),
14108 &pSendBuffer, &usDataOffset, &usSendSize))||
14109 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
14110 {
14111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014112 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
14114 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014115 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 }
14117
14118 /*BSS Index of the BSS*/
14119 halUpdateBeaconParams.bssIdx =
14120 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
14121 /*shortPreamble mode. HAL should update all the STA rates when it
14122 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014123 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070014124 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
14125 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014126 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
14128 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070014129 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
14131
14132 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070014133 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014134 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014135 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014136 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
14145 halUpdateBeaconParams.fRIFSMode =
14146 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070014147 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070014148 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
14149
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
14151 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014152
14153 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014154 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014155
14156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014157 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014158 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014159 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14160 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014161}/*WDI_ProcessUpdateBeaconParamsReq*/
14162
14163
14164
14165/**
14166 @brief Process Send Beacon template Request function (called when Main FSM
14167 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014168
14169 @param pWDICtx: pointer to the WLAN DAL context
14170 pEventData: pointer to the event information structure
14171
Jeff Johnson295189b2012-06-20 16:38:30 -070014172 @see
14173 @return Result of the function call
14174*/
14175WDI_Status
14176WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014177(
Jeff Johnson295189b2012-06-20 16:38:30 -070014178 WDI_ControlBlockType* pWDICtx,
14179 WDI_EventInfoType* pEventData
14180)
14181{
14182 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
14183 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014184 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014185 wpt_uint16 usDataOffset = 0;
14186 wpt_uint16 usSendSize = 0;
14187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14188
14189 tSendBeaconReqMsg halSendBeaconReq;
14190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014192 -------------------------------------------------------------------------*/
14193 if (( NULL == pEventData ) ||
14194 ( NULL == pEventData->pEventData ) ||
14195 ( NULL == pEventData->pCBfnc ))
14196 {
14197 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014198 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014200 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014201 }
14202
14203 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
14204 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
14205 /*-----------------------------------------------------------------------
14206 Get message buffer
14207 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014208 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014209 sizeof(halSendBeaconReq.sendBeaconParam),
14210 &pSendBuffer, &usDataOffset, &usSendSize))||
14211 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
14212 {
14213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014214 "Unable to get send buffer in send beacon req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014215 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
14216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 }
14219
14220 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
14221 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
14222 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014223 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070014224 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
14225 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
14226 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
14227 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070014228 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014229 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053014230 /* usP2PIeOffset should be atleast greater than timIeOffset */
14231 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
14232 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
14233 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
14234 {
14235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14236 "Invalid usP2PIeOffset %hu",
14237 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
14238 WDI_ASSERT(0);
14239 return WDI_STATUS_E_FAILURE;
14240 }
14241
Jeff Johnsone7245742012-09-05 17:12:55 -070014242 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014243 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070014244
Jeff Johnsone7245742012-09-05 17:12:55 -070014245 wpalMemoryCopy( pSendBuffer+usDataOffset,
14246 &halSendBeaconReq.sendBeaconParam,
14247 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070014248
14249 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014250 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014251
14252 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014254 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014255 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14256 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014257}/*WDI_ProcessSendBeaconParamsReq*/
14258
14259/**
14260 @brief Process Update Beacon Params Request function (called when Main FSM
14261 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014262
14263 @param pWDICtx: pointer to the WLAN DAL context
14264 pEventData: pointer to the event information structure
14265
Jeff Johnson295189b2012-06-20 16:38:30 -070014266 @see
14267 @return Result of the function call
14268*/
14269WDI_Status
14270WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014271(
Jeff Johnson295189b2012-06-20 16:38:30 -070014272 WDI_ControlBlockType* pWDICtx,
14273 WDI_EventInfoType* pEventData
14274)
14275{
14276 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
14277 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014279 wpt_uint16 usDataOffset = 0;
14280 wpt_uint16 usSendSize = 0;
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014281 wpt_uint16 uMsgSize = 0;
14282 tSendProbeRespReqParams *halProbeRespTmplParams = NULL;
14283 tSendProbeRespReqParams_V1 *halProbeRespTmplParams_V1 = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14285
14286 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014288 -------------------------------------------------------------------------*/
14289 if (( NULL == pEventData ) ||
14290 ( NULL == pEventData->pEventData) ||
14291 ( NULL == pEventData->pCBfnc))
14292 {
14293 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014294 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014295 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014296 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014297 }
14298
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014301 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014302 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014303
14304 if (WDI_getFwWlanFeatCaps(PROBE_RSP_TEMPLATE_VER1))
14305 uMsgSize = sizeof(tSendProbeRespReqParams_V1) +
14306 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14307 uProbeRespTemplateLen -
14308 sizeof(halProbeRespTmplParams_V1->pProbeRespTemplate);
14309 else
14310 uMsgSize = sizeof(tSendProbeRespReqParams);
14311
Jeff Johnson295189b2012-06-20 16:38:30 -070014312 /*-----------------------------------------------------------------------
14313 Get message buffer
14314 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014316 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 &pSendBuffer, &usDataOffset, &usSendSize))||
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014318 ( usSendSize < (usDataOffset + uMsgSize)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014319 {
14320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014321 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
14323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 }
14326
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014327 if (WDI_getFwWlanFeatCaps(PROBE_RSP_TEMPLATE_VER1))
14328 {
14329 halProbeRespTmplParams_V1 =
14330 (tSendProbeRespReqParams_V1 *)(pSendBuffer + usDataOffset);
Jeff Johnson295189b2012-06-20 16:38:30 -070014331
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014332 wpalMemoryCopy(halProbeRespTmplParams_V1->bssId,
14333 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
14334 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014335
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014336 halProbeRespTmplParams_V1->probeRespTemplateLen =
14337 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14338 uProbeRespTemplateLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070014339
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014340 wpalMemoryCopy(halProbeRespTmplParams_V1->ucProxyProbeReqValidIEBmap,
14341 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14342 uaProxyProbeReqValidIEBmap,
14343 WDI_PROBE_REQ_BITMAP_IE_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014344
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014345 wpalMemoryCopy(halProbeRespTmplParams_V1->pProbeRespTemplate,
14346 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14347 pProbeRespTemplate,
14348 halProbeRespTmplParams_V1->probeRespTemplateLen);
14349 }
14350 else
14351 {
14352 halProbeRespTmplParams =
14353 (tSendProbeRespReqParams *)(pSendBuffer + usDataOffset);
Jeff Johnson295189b2012-06-20 16:38:30 -070014354
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014355 wpalMemoryCopy(halProbeRespTmplParams->bssId,
14356 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
14357 WDI_MAC_ADDR_LEN);
14358
14359 if (BEACON_TEMPLATE_SIZE <
14360 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14361 uProbeRespTemplateLen)
14362 halProbeRespTmplParams->probeRespTemplateLen = BEACON_TEMPLATE_SIZE;
14363 else
14364 halProbeRespTmplParams->probeRespTemplateLen =
14365 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14366 uProbeRespTemplateLen;
14367
14368 wpalMemoryCopy(halProbeRespTmplParams->ucProxyProbeReqValidIEBmap,
14369 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14370 uaProxyProbeReqValidIEBmap,
14371 WDI_PROBE_REQ_BITMAP_IE_LEN);
14372 wpalMemoryCopy(halProbeRespTmplParams->pProbeRespTemplate,
14373 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14374 pProbeRespTemplate,
14375 BEACON_TEMPLATE_SIZE);
14376 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014377
14378 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014379 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014380
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014381 vos_mem_free(pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14382 pProbeRespTemplate);
Jeff Johnson295189b2012-06-20 16:38:30 -070014383 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014386 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14387 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
14388 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014389}/*WDI_ProcessUpdateProbeRspTemplateReq*/
14390
14391/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014392 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070014393 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014394
14395 @param pWDICtx: pointer to the WLAN DAL context
14396 pEventData: pointer to the event information structure
14397
Jeff Johnson295189b2012-06-20 16:38:30 -070014398 @see
14399 @return Result of the function call
14400*/
14401WDI_Status
14402WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014403(
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 WDI_ControlBlockType* pWDICtx,
14405 WDI_EventInfoType* pEventData
14406)
14407{
14408
14409 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
14410 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
14411
14412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014414 -------------------------------------------------------------------------*/
14415 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014418 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014419 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
14420 {
14421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014425 }
14426
14427 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070014428 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
14430
14431 /*cache the wdi nv request message here if the the first fragment
14432 * To issue the request to HAL for the next fragment */
14433 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
14434 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
14436 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 sizeof(pWDICtx->wdiCachedNvDownloadReq));
14438
14439 pWDICtx->pfncRspCB = pEventData->pCBfnc;
14440 pWDICtx->pRspCBUserData = pEventData->pUserData;
14441 }
14442
14443 return WDI_SendNvBlobReq(pWDICtx,pEventData);
14444}
14445
14446/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014447 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014449
14450 @param pWDICtx: pointer to the WLAN DAL context
14451 pEventData: pointer to the event information structure
14452
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 @see
14454 @return Result of the function call
14455*/
14456WDI_Status WDI_ProcessSetMaxTxPowerReq
14457(
14458 WDI_ControlBlockType* pWDICtx,
14459 WDI_EventInfoType* pEventData
14460)
14461{
14462 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
14463 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014464 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014465 wpt_uint16 usDataOffset = 0;
14466 wpt_uint16 usSendSize = 0;
14467 tSetMaxTxPwrReq halSetMaxTxPower;
14468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14469
14470 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014472 -------------------------------------------------------------------------*/
14473 if (( NULL == pEventData ) ||
14474 ( NULL == pEventData->pEventData ) ||
14475 ( NULL == pEventData->pCBfnc ))
14476 {
14477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014478 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014479 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014480 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014481 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014482 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014483 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014484 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014485 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
14486
14487 /*-----------------------------------------------------------------------
14488 Get message buffer
14489 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014490if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014491 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
14492 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070014494)))
14495 {
14496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014497 "Unable to get Set Max Tx Power req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014498 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
14499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 }
14502
14503 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
14504 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
14505 WDI_MAC_ADDR_LEN);
14506
14507 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
14508 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
14509 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014512
14513 wpalMemoryCopy( pSendBuffer+usDataOffset,
14514 &halSetMaxTxPower.setMaxTxPwrParams,
14515 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014516
14517 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014519
14520 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014521 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014523 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14524 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
14525 WDI_SET_MAX_TX_POWER_RESP);
14526
Jeff Johnson295189b2012-06-20 16:38:30 -070014527}
14528
Arif Hussaina5ebce02013-08-09 15:09:58 -070014529/*
14530 @brief Process Set Max Tx Power Per Band Request function (called when Main
14531 FSM allows it)
14532
14533 @param pWDICtx: pointer to the WLAN DAL context
14534 pEventData: pointer to the event information structure
14535
14536 @see
14537 @return Result of the function call
14538*/
14539WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
14540(
14541 WDI_ControlBlockType* pWDICtx,
14542 WDI_EventInfoType* pEventData
14543)
14544{
14545 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
14546 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
14547 wpt_uint8* pSendBuffer = NULL;
14548 wpt_uint16 usDataOffset = 0;
14549 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070014550 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070014551 WDI_Status rValue = WDI_STATUS_SUCCESS;
14552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14553
14554 /*-------------------------------------------------------------------------
14555 Sanity check
14556 -------------------------------------------------------------------------*/
14557 if (( NULL == pEventData ) ||
14558 ( NULL == pEventData->pEventData ) ||
14559 ( NULL == pEventData->pCBfnc ))
14560 {
14561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14562 "%s: Invalid parameters", __func__);
14563 WDI_ASSERT(0);
14564 return WDI_STATUS_E_FAILURE;
14565 }
14566 pwdiSetMaxTxPowerPerBandParams = \
14567 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
14568
14569 wdiSetMaxTxPowerPerBandRspCb = \
14570 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
14571
14572 /*-----------------------------------------------------------------------
14573 Get message buffer
14574 -----------------------------------------------------------------------*/
14575
14576 rValue = WDI_GetMessageBuffer(pWDICtx,
14577 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
14578 sizeof(tSetMaxTxPwrPerBandParams),
14579 &pSendBuffer, &usDataOffset, &usSendSize);
14580
14581 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
14582 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
14583 {
14584 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014585 "Unable to get Set Max Tx Power Per Band req %pK %pK %pK",
Arif Hussaina5ebce02013-08-09 15:09:58 -070014586 pEventData, pwdiSetMaxTxPowerPerBandParams,
14587 wdiSetMaxTxPowerPerBandRspCb);
14588 WDI_ASSERT(0);
14589 return WDI_STATUS_E_FAILURE;
14590 }
14591
14592
Arif Hussainf8f080c2014-04-03 09:48:36 -070014593 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
14594 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070014595 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
14596
Arif Hussainf8f080c2014-04-03 09:48:36 -070014597 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070014598 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
14599
14600 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
14601 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
14602
14603 /*-------------------------------------------------------------------------
14604 Send Set Max Tx Power Per Band Request to HAL
14605 -------------------------------------------------------------------------*/
14606 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
14607 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
14608 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
14609}
14610
schang86c22c42013-03-13 18:41:24 -070014611/**
14612 @brief Process Set Tx Power Request function (called when Main
14613 FSM allows it)
14614
14615 @param pWDICtx: pointer to the WLAN DAL context
14616 pEventData: pointer to the event information structure
14617
14618 @see
14619 @return Result of the function call
14620*/
14621WDI_Status WDI_ProcessSetTxPowerReq
14622(
14623 WDI_ControlBlockType* pWDICtx,
14624 WDI_EventInfoType* pEventData
14625)
14626{
14627 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
14628 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
14629 wpt_uint8* pSendBuffer = NULL;
14630 wpt_uint16 usDataOffset = 0;
14631 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070014632 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070014633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14634
14635 /*-------------------------------------------------------------------------
14636 Sanity check
14637 -------------------------------------------------------------------------*/
14638 if (( NULL == pEventData ) ||
14639 ( NULL == pEventData->pEventData ) ||
14640 ( NULL == pEventData->pCBfnc ))
14641 {
14642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14643 "%s: Invalid parameters", __func__);
14644 WDI_ASSERT(0);
14645 return WDI_STATUS_E_FAILURE;
14646 }
14647
14648 pwdiSetTxPowerParams =
14649 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
14650 wdiSetTxPowerRspCb =
14651 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
14652
14653 /*-----------------------------------------------------------------------
14654 Get message buffer
14655 -----------------------------------------------------------------------*/
14656 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
14657 sizeof(tSetTxPwrReqParams),
14658 &pSendBuffer, &usDataOffset, &usSendSize))||
14659 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
14660 )))
14661 {
14662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014663 "Unable to get Set Max Tx Power req %pK %pK %pK",
schang86c22c42013-03-13 18:41:24 -070014664 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
14665 WDI_ASSERT(0);
14666 return WDI_STATUS_E_FAILURE;
14667 }
14668
Leo Chang9a43db92013-03-25 17:39:58 -070014669 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
14670 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
14671 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070014672
14673 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
14674 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
14675
14676 /*-------------------------------------------------------------------------
14677 Send Set Tx Power Request to HAL
14678 -------------------------------------------------------------------------*/
14679 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14680 wdiSetTxPowerRspCb, pEventData->pUserData,
14681 WDI_SET_TX_POWER_RESP);
14682}
Jeff Johnson295189b2012-06-20 16:38:30 -070014683
14684/**
14685 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14686 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014687
14688 @param pWDICtx: pointer to the WLAN DAL context
14689 pEventData: pointer to the event information structure
14690
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 @see
14692 @return Result of the function call
14693*/
14694WDI_Status
14695WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014696(
Jeff Johnson295189b2012-06-20 16:38:30 -070014697 WDI_ControlBlockType* pWDICtx,
14698 WDI_EventInfoType* pEventData
14699)
14700{
14701 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
14702 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014703 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014704 wpt_uint16 usDataOffset = 0;
14705 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14708
14709 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014710 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014711 -------------------------------------------------------------------------*/
14712 if (( NULL == pEventData ) ||
14713 ( NULL == pEventData->pEventData) ||
14714 ( NULL == pEventData->pCBfnc))
14715 {
14716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014718 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014719 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014720 }
14721
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014724 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14726 /*-----------------------------------------------------------------------
14727 Get message buffer
14728 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14730 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014731 sizeof(halSetP2PGONOAParams),
14732 &pSendBuffer, &usDataOffset, &usSendSize))||
14733 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14734 {
14735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014736 "Unable to get send buffer in set P2P GO NOA REQ %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 }
14741
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014744 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14746 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014749 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014750 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014751 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014752 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014753 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014754 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14755
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 wpalMemoryCopy( pSendBuffer+usDataOffset,
14757 &halSetP2PGONOAParams,
14758 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014759
14760 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014761 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014762
14763 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014765 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014766 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14767 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14768 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014769}/*WDI_ProcessP2PGONOAReq*/
14770
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014771#ifdef FEATURE_WLAN_TDLS
14772
14773/**
14774 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14775 allows it)
14776
14777 @param pWDICtx: pointer to the WLAN DAL context
14778 pEventData: pointer to the event information structure
14779
14780 @see
14781 @return Result of the function call
14782*/
14783WDI_Status
14784WDI_ProcessTdlsLinkEstablishReq
14785(
14786 WDI_ControlBlockType* pWDICtx,
14787 WDI_EventInfoType* pEventData
14788)
14789{
14790 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14791 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14792 wpt_uint8* pSendBuffer = NULL;
14793 wpt_uint16 usDataOffset = 0;
14794 wpt_uint16 usSendSize = 0;
14795
14796 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14798
14799 /*-------------------------------------------------------------------------
14800 Sanity check
14801 -------------------------------------------------------------------------*/
14802 if (( NULL == pEventData ) ||
14803 ( NULL == pEventData->pEventData) ||
14804 ( NULL == pEventData->pCBfnc))
14805 {
14806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14807 "%s: Invalid parameters", __func__);
14808 WDI_ASSERT(0);
14809 return WDI_STATUS_E_FAILURE;
14810 }
14811 pwdiTDLSLinkEstablishReqParams =
14812 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14813 wdiTDLSLinkEstablishReqRspCb =
14814 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14815
14816
14817 /*-----------------------------------------------------------------------
14818 Get message buffer
14819 -----------------------------------------------------------------------*/
14820 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14821 WDI_TDLS_LINK_ESTABLISH_REQ,
14822 sizeof(halSetTDLSLinkEstablishParams),
14823 &pSendBuffer, &usDataOffset, &usSendSize))||
14824 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14825 {
14826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014827 "Unable to get send buffer in set P2P GO NOA REQ %pK %pK %pK",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014828 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14829 WDI_ASSERT(0);
14830 return WDI_STATUS_E_FAILURE;
14831 }
14832
14833 halSetTDLSLinkEstablishParams.staIdx =
14834 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14835 halSetTDLSLinkEstablishParams.bIsResponder =
14836 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14837 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14838 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14839 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14840 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14841 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14842 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14843 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14844 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14845 halSetTDLSLinkEstablishParams.aAck = 0;
14846 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14847 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14848 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014849 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14850 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14851
14852 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14853 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14854 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14855 halSetTDLSLinkEstablishParams.validChannelsLen =
14856 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14857
14858 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14859 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14860 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14861 halSetTDLSLinkEstablishParams.validOperClassesLen =
14862 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014863
14864 wpalMemoryCopy( pSendBuffer+usDataOffset,
14865 &halSetTDLSLinkEstablishParams,
14866 sizeof(halSetTDLSLinkEstablishParams));
14867
14868 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14869 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14870
14871 /*-------------------------------------------------------------------------
14872 Send Update Probe Resp Template Request to HAL
14873 -------------------------------------------------------------------------*/
14874 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14875 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14876 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14877 return 0;
14878}/*WDI_ProcessTdlsLinkEstablishReq*/
14879
14880
Atul Mittalc0f739f2014-07-31 13:47:47 +053014881/**
14882 @brief sends the channel switch command to f/w (called when Main FSM
14883 allows it)
14884
14885 @param pWDICtx: pointer to the WLAN DAL context
14886 pEventData: pointer to the event information structure
14887
14888 @see
14889 @return Result of the function call
14890*/
14891WDI_Status
14892WDI_ProcessTdlsChanSwitchReq
14893(
14894 WDI_ControlBlockType* pWDICtx,
14895 WDI_EventInfoType* pEventData
14896)
14897{
14898 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14899 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14900 wpt_uint8* pSendBuffer = NULL;
14901 wpt_uint16 usDataOffset = 0;
14902 wpt_uint16 usSendSize = 0;
14903 //WDI_Status wdiStatus;
14904 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14906
14907 /*-------------------------------------------------------------------------
14908 Sanity check
14909 -------------------------------------------------------------------------*/
14910 if (( NULL == pEventData ) ||
14911 ( NULL == pEventData->pEventData))
14912 {
14913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14914 "%s: Invalid parameters", __func__);
14915 WDI_ASSERT(0);
14916 return WDI_STATUS_E_FAILURE;
14917 }
14918 pwdiTDLSChanSwitchReqParams =
14919 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14920 wdiTDLSChanSwitchReqRspCb =
14921 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14922
14923 /*-----------------------------------------------------------------------
14924 Get message buffer
14925 -----------------------------------------------------------------------*/
14926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14927 WDI_TDLS_CHAN_SWITCH_REQ,
14928 sizeof(halSetTDLSChanSwitchParams),
14929 &pSendBuffer, &usDataOffset, &usSendSize))||
14930 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14931 {
14932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014933 "Unable to get send buffer in Channel Switch REQ %pK %pK %pK",
Atul Mittalc0f739f2014-07-31 13:47:47 +053014934 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14935 WDI_ASSERT(0);
14936 return WDI_STATUS_E_FAILURE;
14937 }
14938
14939 halSetTDLSChanSwitchParams.staIdx =
14940 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14941 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14942 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14943 halSetTDLSChanSwitchParams.targetOperClass =
14944 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14945 halSetTDLSChanSwitchParams.targetChannel =
14946 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14947 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14948 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14949 wpalMemoryCopy( pSendBuffer+usDataOffset,
14950 &halSetTDLSChanSwitchParams,
14951 sizeof(halSetTDLSChanSwitchParams));
14952
14953 pWDICtx->wdiReqStatusCB = NULL;
14954 pWDICtx->pReqStatusUserData = NULL;
14955
14956 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14957 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14958 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14959}/*WDI_ProcessTdlsChanSwitchReq*/
14960
14961#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014962
Jeff Johnson295189b2012-06-20 16:38:30 -070014963
14964
14965/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014966 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014967 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 @param None
14969
14970 @see
14971 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014972*/
14973void
14974WDI_SetPowerStateCb
14975(
14976 wpt_status status,
14977 unsigned int dxePhyAddr,
14978 void *pContext
14979)
14980{
14981 wpt_status wptStatus;
14982 WDI_ControlBlockType *pCB = NULL;
14983 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014984 /*
14985 * Trigger the event to bring the Enter BMPS req function to come
14986 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014987*/
14988 if( NULL != pContext )
14989 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014990 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014991 }
14992 else
14993 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014994 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014995 pCB = &gWDICb;
14996 }
Mihir Shetea4306052014-03-25 00:02:54 +053014997
14998 if(eWLAN_PAL_STATUS_SUCCESS == status )
14999 {
15000 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
15001 }
15002 else
15003 {
15004 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
15005 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015006 pCB->dxePhyAddr = dxePhyAddr;
15007 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
15008 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15009 {
15010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15011 "Failed to set an event");
15012
Jeff Johnsone7245742012-09-05 17:12:55 -070015013 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 }
15015 return;
15016}
15017
15018
15019/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015020 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070015021 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015022
15023 @param pWDICtx: pointer to the WLAN DAL context
15024 pEventData: pointer to the event information structure
15025
Jeff Johnson295189b2012-06-20 16:38:30 -070015026 @see
15027 @return Result of the function call
15028*/
15029WDI_Status
15030WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015031(
Jeff Johnson295189b2012-06-20 16:38:30 -070015032 WDI_ControlBlockType* pWDICtx,
15033 WDI_EventInfoType* pEventData
15034)
15035{
Jeff Johnson43971f52012-07-17 12:26:56 -070015036 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 wpt_uint16 usDataOffset = 0;
15040 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053015041 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15043
15044 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015045 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015046 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053015047 if ((NULL == pEventData ) ||
15048 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
15049 (NULL == (pwdiEnterImpsReqParams =
15050 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070015051 {
15052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015053 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015055 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015056 }
15057
15058 /*-----------------------------------------------------------------------
15059 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015060 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015061 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015062 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015063 0,
15064 &pSendBuffer, &usDataOffset, &usSendSize))||
15065 ( usSendSize < (usDataOffset )))
15066 {
15067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015068 "Unable to get send buffer in Enter IMPS req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 pEventData, wdiEnterImpsRspCb);
15070 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015071 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 }
15073
15074 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070015075 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
15076 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015077 {
15078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15079 "WDI Init failed to reset an event");
15080
Jeff Johnsone7245742012-09-05 17:12:55 -070015081 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015082 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070015083 }
15084
15085 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080015086 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
15087 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015089 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080015090 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015091 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080015092 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015093
15094 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070015095 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070015096 */
Jeff Johnson43971f52012-07-17 12:26:56 -070015097 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
15098 WDI_SET_POWER_STATE_TIMEOUT);
15099 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 {
15101 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15102 "WDI Init failed to wait on an event");
15103
Karthick S1fa70262015-08-20 13:28:14 +053015104 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070015105 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015106 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070015107 }
15108
Mihir Shetea4306052014-03-25 00:02:54 +053015109 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
15110 {
15111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15112 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
15113
15114 goto fail;
15115 }
15116
15117 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
15118 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015120 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015121 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15123 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015124
15125fail:
15126 // Release the message buffer so we don't leak
15127 wpalMemoryFree(pSendBuffer);
15128
15129failRequest:
15130 //WDA should have failure check to avoid the memory leak
15131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015132}/*WDI_ProcessEnterImpsReq*/
15133
15134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015135 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070015136 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015137
15138 @param pWDICtx: pointer to the WLAN DAL context
15139 pEventData: pointer to the event information structure
15140
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 @see
15142 @return Result of the function call
15143*/
15144WDI_Status
15145WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015146(
Jeff Johnson295189b2012-06-20 16:38:30 -070015147 WDI_ControlBlockType* pWDICtx,
15148 WDI_EventInfoType* pEventData
15149)
15150{
15151 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015153 wpt_uint16 usDataOffset = 0;
15154 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053015155 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15157
15158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 -------------------------------------------------------------------------*/
15161 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053015162 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
15163 (NULL == (pwdiExitImpsReqParams =
15164 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 {
15166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015167 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 }
15171
15172 /*-----------------------------------------------------------------------
15173 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015174 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015175 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015177 0,
15178 &pSendBuffer, &usDataOffset, &usSendSize))||
15179 ( usSendSize < (usDataOffset )))
15180 {
15181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015182 "Unable to get send buffer in Exit IMPS req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015183 pEventData, wdiExitImpsRspCb);
15184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053015187 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
15188 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015190 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015191 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015192 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15193 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015194}/*WDI_ProcessExitImpsReq*/
15195
15196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015197 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015199
15200 @param pWDICtx: pointer to the WLAN DAL context
15201 pEventData: pointer to the event information structure
15202
Jeff Johnson295189b2012-06-20 16:38:30 -070015203 @see
15204 @return Result of the function call
15205*/
15206WDI_Status
15207WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015208(
Jeff Johnson295189b2012-06-20 16:38:30 -070015209 WDI_ControlBlockType* pWDICtx,
15210 WDI_EventInfoType* pEventData
15211)
15212{
15213 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
15214 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015215 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015216 wpt_uint16 usDataOffset = 0;
15217 wpt_uint16 usSendSize = 0;
15218 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070015219 wpt_status wptStatus;
15220
Jeff Johnson295189b2012-06-20 16:38:30 -070015221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15222
15223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 -------------------------------------------------------------------------*/
15226 if (( NULL == pEventData ) ||
15227 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
15228 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
15229 {
15230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015233 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 }
15235
15236 /*-----------------------------------------------------------------------
15237 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 sizeof(enterBmpsReq),
15242 &pSendBuffer, &usDataOffset, &usSendSize))||
15243 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
15244 {
15245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015246 "Unable to get send buffer in Enter BMPS req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
15248 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015249 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 }
15251
15252 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070015253 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
15254 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 {
15256 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15257 "WDI Init failed to reset an event");
15258
Jeff Johnsone7245742012-09-05 17:12:55 -070015259 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015260 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 }
15262
15263 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080015264 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
15265 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15266 {
15267 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015268 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080015269 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015270 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080015271 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015272
15273/*
Jeff Johnsone7245742012-09-05 17:12:55 -070015274 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070015275 */
Jeff Johnson43971f52012-07-17 12:26:56 -070015276 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
15277 WDI_SET_POWER_STATE_TIMEOUT);
15278 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 {
15280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15281 "WDI Init failed to wait on an event");
15282
Karthick S1fa70262015-08-20 13:28:14 +053015283 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070015284 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015285 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 }
15287
15288 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
15289
15290 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
15291 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
15292 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
15293 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
15294
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080015295 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070015296 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
15297 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
15298 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
15299
15300 wpalMemoryCopy( pSendBuffer+usDataOffset,
15301 &enterBmpsReq,
15302 sizeof(enterBmpsReq));
15303
15304 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015305 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015306
15307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015310 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15311 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015312
15313fail:
15314 // Release the message buffer so we don't leak
15315 wpalMemoryFree(pSendBuffer);
15316
15317failRequest:
15318 //WDA should have failure check to avoid the memory leak
15319 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015320}/*WDI_ProcessEnterBmpsReq*/
15321
15322/**
15323 @brief Process Exit BMPS Request function (called when Main FSM
15324 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015325
15326 @param pWDICtx: pointer to the WLAN DAL context
15327 pEventData: pointer to the event information structure
15328
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 @see
15330 @return Result of the function call
15331*/
15332WDI_Status
15333WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015334(
Jeff Johnson295189b2012-06-20 16:38:30 -070015335 WDI_ControlBlockType* pWDICtx,
15336 WDI_EventInfoType* pEventData
15337)
15338{
15339 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
15340 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 wpt_uint16 usDataOffset = 0;
15343 wpt_uint16 usSendSize = 0;
15344 tHalExitBmpsReqParams exitBmpsReq;
15345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15346
15347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 -------------------------------------------------------------------------*/
15350 if (( NULL == pEventData ) ||
15351 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
15352 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
15353 {
15354 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015355 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 }
15359
15360 /*-----------------------------------------------------------------------
15361 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015362 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015363 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015364 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 sizeof(exitBmpsReq),
15366 &pSendBuffer, &usDataOffset, &usSendSize))||
15367 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
15368 {
15369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015370 "Unable to get send buffer in Exit BMPS req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015371 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
15372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 }
15375 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
15376
Jeff Johnsone7245742012-09-05 17:12:55 -070015377 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
15378
Jeff Johnson295189b2012-06-20 16:38:30 -070015379 wpalMemoryCopy( pSendBuffer+usDataOffset,
15380 &exitBmpsReq,
15381 sizeof(exitBmpsReq));
15382
15383 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015384 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015385
15386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15390 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015391}/*WDI_ProcessExitBmpsReq*/
15392
15393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015394 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070015395 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015396
15397 @param pWDICtx: pointer to the WLAN DAL context
15398 pEventData: pointer to the event information structure
15399
Jeff Johnson295189b2012-06-20 16:38:30 -070015400 @see
15401 @return Result of the function call
15402*/
15403WDI_Status
15404WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015405(
Jeff Johnson295189b2012-06-20 16:38:30 -070015406 WDI_ControlBlockType* pWDICtx,
15407 WDI_EventInfoType* pEventData
15408)
15409{
15410 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
15411 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015412 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015413 wpt_uint16 usDataOffset = 0;
15414 wpt_uint16 usSendSize = 0;
15415 tUapsdReqParams enterUapsdReq;
15416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15417
15418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015420 -------------------------------------------------------------------------*/
15421 if (( NULL == pEventData ) ||
15422 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
15423 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
15424 {
15425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015429 }
15430
15431 /*-----------------------------------------------------------------------
15432 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015433 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015434 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015435 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015436 sizeof(enterUapsdReq),
15437 &pSendBuffer, &usDataOffset, &usSendSize))||
15438 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
15439 {
15440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015441 "Unable to get send buffer in Enter UAPSD req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015442 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
15443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 }
15446
15447 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
15448 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
15449 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
15450 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
15451 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
15452 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
15453 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
15454 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015455 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015456
Jeff Johnsone7245742012-09-05 17:12:55 -070015457 wpalMemoryCopy( pSendBuffer+usDataOffset,
15458 &enterUapsdReq,
15459 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015460
15461 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015463
15464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015465 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015467 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15468 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015469}/*WDI_ProcessEnterUapsdReq*/
15470
15471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015472 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070015473 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015474
15475 @param pWDICtx: pointer to the WLAN DAL context
15476 pEventData: pointer to the event information structure
15477
Jeff Johnson295189b2012-06-20 16:38:30 -070015478 @see
15479 @return Result of the function call
15480*/
15481WDI_Status
15482WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015483(
Jeff Johnson295189b2012-06-20 16:38:30 -070015484 WDI_ControlBlockType* pWDICtx,
15485 WDI_EventInfoType* pEventData
15486)
15487{
15488 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015489 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015490 wpt_uint16 usDataOffset = 0;
15491 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015492 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
15493 wpt_uint8 bssIdx = 0;
15494
Jeff Johnson295189b2012-06-20 16:38:30 -070015495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15496
15497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015498 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015499 -------------------------------------------------------------------------*/
15500 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015501 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
15503 {
15504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015508 }
15509
15510 /*-----------------------------------------------------------------------
15511 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015512 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015515 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015517 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015518 {
15519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015520 "Unable to get send buffer in Exit UAPSD req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015521 pEventData, wdiExitUapsdRspCb);
15522 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015523 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 }
15525
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015526 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
15527
15528 wpalMemoryCopy( pSendBuffer+usDataOffset,
15529 &bssIdx,
15530 sizeof(wpt_uint8));
15531
15532 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
15533 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
15534
Jeff Johnson295189b2012-06-20 16:38:30 -070015535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015536 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015537 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15539 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015540}/*WDI_ProcessExitUapsdReq*/
15541
15542/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015543 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070015544 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015545
15546 @param pWDICtx: pointer to the WLAN DAL context
15547 pEventData: pointer to the event information structure
15548
Jeff Johnson295189b2012-06-20 16:38:30 -070015549 @see
15550 @return Result of the function call
15551*/
15552WDI_Status
15553WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015554(
Jeff Johnson295189b2012-06-20 16:38:30 -070015555 WDI_ControlBlockType* pWDICtx,
15556 WDI_EventInfoType* pEventData
15557)
15558{
15559 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
15560 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015561 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015562 wpt_uint16 usDataOffset = 0;
15563 wpt_uint16 usSendSize = 0;
15564 tUapsdInfo uapsdAcParamsReq;
15565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15566
15567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015569 -------------------------------------------------------------------------*/
15570 if (( NULL == pEventData ) ||
15571 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
15572 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
15573 {
15574 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015575 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015576 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 }
15579
15580 /*-----------------------------------------------------------------------
15581 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015582 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015585 sizeof(uapsdAcParamsReq),
15586 &pSendBuffer, &usDataOffset, &usSendSize))||
15587 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
15588 {
15589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015590 "Unable to get send buffer in Set UAPSD params req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015591 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
15592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 }
15595
15596 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
15597 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
15598 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
15599 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
15600 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
15601 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
15602
Jeff Johnsone7245742012-09-05 17:12:55 -070015603 wpalMemoryCopy( pSendBuffer+usDataOffset,
15604 &uapsdAcParamsReq,
15605 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015606
15607 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015608 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015609
15610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15614 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015615}/*WDI_ProcessSetUapsdAcParamsReq*/
15616
15617/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015618 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015619 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015620
15621 @param pWDICtx: pointer to the WLAN DAL context
15622 pEventData: pointer to the event information structure
15623
Jeff Johnson295189b2012-06-20 16:38:30 -070015624 @see
15625 @return Result of the function call
15626*/
15627WDI_Status
15628WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015629(
Jeff Johnson295189b2012-06-20 16:38:30 -070015630 WDI_ControlBlockType* pWDICtx,
15631 WDI_EventInfoType* pEventData
15632)
15633{
15634 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
15635 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015636 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015637 wpt_uint16 usDataOffset = 0;
15638 wpt_uint16 usSendSize = 0;
15639 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15640
15641 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015642 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015643 -------------------------------------------------------------------------*/
15644 if (( NULL == pEventData ) ||
15645 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
15646 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
15647 {
15648 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015649 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 }
15653
15654 /*-----------------------------------------------------------------------
15655 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015656 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015658 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015659 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
15660 &pSendBuffer, &usDataOffset, &usSendSize))||
15661 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
15662 {
15663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015664 "Unable to get send buffer in Update UAPSD params req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015665 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
15666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 }
15669
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 wpalMemoryCopy( pSendBuffer+usDataOffset,
15671 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
15672 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015673
15674 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015675 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015676
15677 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015680 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15681 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015682}/*WDI_ProcessUpdateUapsdParamsReq*/
15683
15684/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015687
15688 @param pWDICtx: pointer to the WLAN DAL context
15689 pEventData: pointer to the event information structure
15690
Jeff Johnson295189b2012-06-20 16:38:30 -070015691 @see
15692 @return Result of the function call
15693*/
15694WDI_Status
15695WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015696(
Jeff Johnson295189b2012-06-20 16:38:30 -070015697 WDI_ControlBlockType* pWDICtx,
15698 WDI_EventInfoType* pEventData
15699)
15700{
15701 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
15702 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 wpt_uint16 usDataOffset = 0;
15705 wpt_uint16 usSendSize = 0;
15706 tHalConfigureRxpFilterReqParams halRxpFilterParams;
15707
15708 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15709
15710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 -------------------------------------------------------------------------*/
15713 if (( NULL == pEventData ) ||
15714 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15715 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15716 {
15717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015718 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 }
15722
15723 /*-----------------------------------------------------------------------
15724 Get message buffer
15725 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015726 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 sizeof(halRxpFilterParams),
15728 &pSendBuffer, &usDataOffset, &usSendSize))||
15729 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15730 {
15731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015732 "Unable to get send buffer in Set UAPSD params req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015736 }
15737
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015740 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015741 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15742
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 wpalMemoryCopy( pSendBuffer+usDataOffset,
15744 &halRxpFilterParams,
15745 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015746
15747 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015749
15750 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015751 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015752 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015753 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15754 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015755}/*WDI_ProcessConfigureRxpFilterReq*/
15756
15757/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015758 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015759 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015760
15761 @param pWDICtx: pointer to the WLAN DAL context
15762 pEventData: pointer to the event information structure
15763
Jeff Johnson295189b2012-06-20 16:38:30 -070015764 @see
15765 @return Result of the function call
15766*/
15767WDI_Status
15768WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015769(
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 WDI_ControlBlockType* pWDICtx,
15771 WDI_EventInfoType* pEventData
15772)
15773{
15774 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15775 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015776 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015777 wpt_uint16 usDataOffset = 0;
15778 wpt_uint16 usSendSize = 0;
15779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15780
15781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015783 -------------------------------------------------------------------------*/
15784 if (( NULL == pEventData ) ||
15785 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15786 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15787 {
15788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015792 }
15793
15794 /*-----------------------------------------------------------------------
15795 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15800 &pSendBuffer, &usDataOffset, &usSendSize))||
15801 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15802 {
15803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015804 "Unable to get send buffer in Set beacon filter req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015805 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 }
15809
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 wpalMemoryCopy( pSendBuffer+usDataOffset,
15811 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15812 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15813 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15814 &pwdiBeaconFilterParams->aFilters[0],
15815 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015816
15817 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015818 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015819
15820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15824 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015825}/*WDI_ProcessSetBeaconFilterReq*/
15826
15827/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015828 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015830
15831 @param pWDICtx: pointer to the WLAN DAL context
15832 pEventData: pointer to the event information structure
15833
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 @see
15835 @return Result of the function call
15836*/
15837WDI_Status
15838WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015839(
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 WDI_ControlBlockType* pWDICtx,
15841 WDI_EventInfoType* pEventData
15842)
15843{
15844 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15845 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 wpt_uint16 usDataOffset = 0;
15848 wpt_uint16 usSendSize = 0;
15849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15850
15851 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015852 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015853 -------------------------------------------------------------------------*/
15854 if (( NULL == pEventData ) ||
15855 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15856 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15857 {
15858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015859 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015861 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 }
15863
15864 /*-----------------------------------------------------------------------
15865 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015866 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015867 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015868 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015869 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15870 &pSendBuffer, &usDataOffset, &usSendSize))||
15871 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15872 {
15873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015874 "Unable to get send buffer in remove beacon filter req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015875 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15876 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015877 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 }
15879
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 wpalMemoryCopy( pSendBuffer+usDataOffset,
15881 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15882 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015883
15884 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015886
15887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015890 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15891 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015892}
15893
15894/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015895 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015896 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015897
15898 @param pWDICtx: pointer to the WLAN DAL context
15899 pEventData: pointer to the event information structure
15900
Jeff Johnson295189b2012-06-20 16:38:30 -070015901 @see
15902 @return Result of the function call
15903*/
15904WDI_Status
15905WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015906(
Jeff Johnson295189b2012-06-20 16:38:30 -070015907 WDI_ControlBlockType* pWDICtx,
15908 WDI_EventInfoType* pEventData
15909)
15910{
15911 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15912 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015913 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 wpt_uint16 usDataOffset = 0;
15915 wpt_uint16 usSendSize = 0;
15916 tHalRSSIThresholds rssiThresholdsReq;
15917 WDI_Status ret_status = 0;
15918 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15919
15920 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015921 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015922 -------------------------------------------------------------------------*/
15923 if (( NULL == pEventData ) ||
15924 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15925 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15926 {
15927 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015928 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015931 }
15932
15933 /*-----------------------------------------------------------------------
15934 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015937 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015938 sizeof(rssiThresholdsReq),
15939 &pSendBuffer, &usDataOffset, &usSendSize))||
15940 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15941 {
15942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015943 "Unable to get send buffer in remove beacon filter req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015944 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15945 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 }
15948
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015951 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015952 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015953 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015955 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015957 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015958 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015959 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015960 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015961 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015962 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015963 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015964 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15969
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 wpalMemoryCopy( pSendBuffer+usDataOffset,
15971 &rssiThresholdsReq,
15972 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015973
15974 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015975 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015976
15977 /*-------------------------------------------------------------------------
15978 Send Set threshold req to HAL
15979 -------------------------------------------------------------------------*/
15980 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15981 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15982 {
15983 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15984 // req. Then as a result of processing the threshold cross ind, we trigger
15985 // a Set threshold req, then we need to indicate to WDI that it needs to
15986 // go to busy state as a result of the indication as we sent a req in the
15987 // same WDI context.
15988 // Hence expected state transition is to busy.
15989 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15990 }
15991
15992 return ret_status;
15993}
15994
15995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015996 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015997 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015998
15999 @param pWDICtx: pointer to the WLAN DAL context
16000 pEventData: pointer to the event information structure
16001
Jeff Johnson295189b2012-06-20 16:38:30 -070016002 @see
16003 @return Result of the function call
16004*/
16005WDI_Status
16006WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016007(
Jeff Johnson295189b2012-06-20 16:38:30 -070016008 WDI_ControlBlockType* pWDICtx,
16009 WDI_EventInfoType* pEventData
16010)
16011{
16012 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
16013 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016014 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016015 wpt_uint16 usDataOffset = 0;
16016 wpt_uint16 usSendSize = 0;
16017 tHalHostOffloadReq hostOffloadParams;
16018 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016019 wpt_uint8 ucCurrentBSSSesIdx = 0;
16020 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016021
16022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16023
16024 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016025 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016026 -------------------------------------------------------------------------*/
16027 if (( NULL == pEventData ) ||
16028 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
16029 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
16030 {
16031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016032 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016033 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016034 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016035 }
16036
16037 /*-----------------------------------------------------------------------
16038 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016039 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016041 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016042 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
16043 &pSendBuffer, &usDataOffset, &usSendSize))||
16044 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
16045 {
16046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016047 "Unable to get send buffer in host offload req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016048 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
16049 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016050 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 }
16052
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016053 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16054 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
16055 &pBSSSes);
16056 if ( NULL == pBSSSes )
16057 {
c_hpothu86feba52014-10-28 15:51:18 +053016058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053016059 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
16060 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016061 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016062 }
16063
Jeff Johnson295189b2012-06-20 16:38:30 -070016064 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
16065 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016066
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
16068 {
16069 // ARP Offload
16070 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
16071 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
16072 4);
16073 }
16074 else
16075 {
16076 // NS Offload
16077 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
16078 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
16079 16);
16080
16081#ifdef WLAN_NS_OFFLOAD
16082 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
16083 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
16084 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
16085 16);
16086 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
16087 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
16088 16);
16089 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
16090 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
16091 16);
16092 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
16093 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
16094 16);
16095 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
16096 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
16097 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053016098 nsOffloadParams.srcIPv6AddrValid =
16099 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
16100
16101 nsOffloadParams.targetIPv6Addr1Valid =
16102 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
16103
16104 nsOffloadParams.targetIPv6Addr2Valid =
16105 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
16106
16107 nsOffloadParams.slotIndex =
16108 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016109
Jeff Johnson295189b2012-06-20 16:38:30 -070016110#endif // WLAN_NS_OFFLOAD
16111 }
16112
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016113 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
16114
Jeff Johnson295189b2012-06-20 16:38:30 -070016115 // copy hostOffloadParams into pSendBuffer
16116 wpalMemoryCopy( pSendBuffer+usDataOffset,
16117 &hostOffloadParams,
16118 sizeof(hostOffloadParams));
16119
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016120 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070016121 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016122 // copy nsOffloadParams into pSendBuffer
16123 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 &nsOffloadParams,
16125 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016126 }
16127 else
16128 {
16129#ifdef WLAN_NS_OFFLOAD
16130 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
16131 {
16132 // copy nsOffloadParams into pSendBuffer
16133 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
16134 &nsOffloadParams,
16135 sizeof(nsOffloadParams));
16136 }
16137#endif
16138 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016139
16140 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016141 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016142
16143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016146 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16147 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016148
16149fail:
16150 // Release the message buffer so we don't leak
16151 wpalMemoryFree(pSendBuffer);
16152
16153failRequest:
16154 //WDA should have failure check to avoid the memory leak
16155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016156}/*WDI_ProcessHostOffloadReq*/
16157
16158/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016161
16162 @param pWDICtx: pointer to the WLAN DAL context
16163 pEventData: pointer to the event information structure
16164
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 @see
16166 @return Result of the function call
16167*/
16168WDI_Status
16169WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016170(
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 WDI_ControlBlockType* pWDICtx,
16172 WDI_EventInfoType* pEventData
16173)
16174{
16175 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
16176 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016177 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016178 wpt_uint16 usDataOffset = 0;
16179 wpt_uint16 usSendSize = 0;
16180 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016181 wpt_uint8 ucCurrentBSSSesIdx = 0;
16182 WDI_BSSSessionType* pBSSSes = NULL;
16183
Jeff Johnson295189b2012-06-20 16:38:30 -070016184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16185
16186 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 -------------------------------------------------------------------------*/
16189 if (( NULL == pEventData ) ||
16190 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
16191 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
16192 {
16193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16194 "Invalid parameters in Keep Alive req");
16195 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016196 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016197 }
16198
16199 /*-----------------------------------------------------------------------
16200 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 sizeof(keepAliveReq),
16205 &pSendBuffer, &usDataOffset, &usSendSize))||
16206 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
16207 {
16208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016209 "Unable to get send buffer in keep alive req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
16211 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016212 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016213 }
16214
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016215 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16216 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
16217 &pBSSSes);
16218 if ( NULL == pBSSSes )
16219 {
16220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016221 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016222 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016223 }
16224
Jeff Johnson295189b2012-06-20 16:38:30 -070016225 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
16226 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
16227
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016228 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016229
Jeff Johnson295189b2012-06-20 16:38:30 -070016230 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
16231 {
16232 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
16233 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
16234 HAL_IPV4_ADDR_LEN);
16235 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
16236 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016238 wpalMemoryCopy(keepAliveReq.destMacAddr,
16239 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
16240 HAL_MAC_ADDR_LEN);
16241 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016242
16243 wpalMemoryCopy( pSendBuffer+usDataOffset,
16244 &keepAliveReq,
16245 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016246
16247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080016248 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016249
16250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080016251 "Process keep alive req time period %d",
16252 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070016253
16254 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016255 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016256
16257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16258 "Sending keep alive req to HAL");
16259
16260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016261 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016262 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016263 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16264 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016265
16266fail:
16267 // Release the message buffer so we don't leak
16268 wpalMemoryFree(pSendBuffer);
16269
16270failRequest:
16271 //WDA should have failure check to avoid the memory leak
16272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016273}/*WDI_ProcessKeepAliveReq*/
16274
16275
16276/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016277 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016278 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016279
16280 @param pWDICtx: pointer to the WLAN DAL context
16281 pEventData: pointer to the event information structure
16282
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 @see
16284 @return Result of the function call
16285*/
16286WDI_Status
16287WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016288(
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 WDI_ControlBlockType* pWDICtx,
16290 WDI_EventInfoType* pEventData
16291)
16292{
16293 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
16294 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016295 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016296 wpt_uint16 usDataOffset = 0;
16297 wpt_uint16 usSendSize = 0;
16298 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016299 wpt_uint8 ucCurrentBSSSesIdx = 0;
16300 WDI_BSSSessionType* pBSSSes = NULL;
16301
Jeff Johnson295189b2012-06-20 16:38:30 -070016302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16303
16304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016306 -------------------------------------------------------------------------*/
16307 if (( NULL == pEventData ) ||
16308 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
16309 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
16310 {
16311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016312 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016313 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016314 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016315 }
16316
16317 /*-----------------------------------------------------------------------
16318 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016319 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016320 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016322 sizeof(wowlAddBcPtrnReq),
16323 &pSendBuffer, &usDataOffset, &usSendSize))||
16324 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
16325 {
16326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016327 "Unable to get send buffer in Wowl add bc ptrn req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016328 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
16329 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016330 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 }
16332
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016333 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16334 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
16335 &pBSSSes);
16336 if ( NULL == pBSSSes )
16337 {
16338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016339 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016340 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016341 }
16342
Jeff Johnsone7245742012-09-05 17:12:55 -070016343 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070016344 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016345 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070016346 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070016347 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070016348 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
16351
16352 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
16353 {
16354 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
16355 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
16356 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
16357 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
16358 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
16359 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
16360 }
16361 else
16362 {
16363 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
16364 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
16365 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
16366 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
16367 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
16368 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
16369
16370 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
16371 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
16372 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
16373 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
16374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
16375 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
16376 }
16377
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016378 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
16379
Jeff Johnson295189b2012-06-20 16:38:30 -070016380 wpalMemoryCopy( pSendBuffer+usDataOffset,
16381 &wowlAddBcPtrnReq,
16382 sizeof(wowlAddBcPtrnReq));
16383
16384 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016385 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016386
16387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016389 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016390 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16391 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016392fail:
16393 // Release the message buffer so we don't leak
16394 wpalMemoryFree(pSendBuffer);
16395
16396failRequest:
16397 //WDA should have failure check to avoid the memory leak
16398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016399}/*WDI_ProcessWowlAddBcPtrnReq*/
16400
16401/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016402 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016403 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016404
16405 @param pWDICtx: pointer to the WLAN DAL context
16406 pEventData: pointer to the event information structure
16407
Jeff Johnson295189b2012-06-20 16:38:30 -070016408 @see
16409 @return Result of the function call
16410*/
16411WDI_Status
16412WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016413(
Jeff Johnson295189b2012-06-20 16:38:30 -070016414 WDI_ControlBlockType* pWDICtx,
16415 WDI_EventInfoType* pEventData
16416)
16417{
16418 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
16419 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016420 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016421 wpt_uint16 usDataOffset = 0;
16422 wpt_uint16 usSendSize = 0;
16423 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016424 wpt_uint8 ucCurrentBSSSesIdx = 0;
16425 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16427
16428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016430 -------------------------------------------------------------------------*/
16431 if (( NULL == pEventData ) ||
16432 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
16433 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
16434 {
16435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016436 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016437 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016438 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 }
16440
16441 /*-----------------------------------------------------------------------
16442 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016443 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016444 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016445 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016446 sizeof(wowlDelBcPtrnReq),
16447 &pSendBuffer, &usDataOffset, &usSendSize))||
16448 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
16449 {
16450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016451 "Unable to get send buffer in Wowl del bc ptrn req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016452 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
16453 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016454 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016455 }
16456
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016457 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16458 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
16459 &pBSSSes);
16460 if ( NULL == pBSSSes )
16461 {
16462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016463 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016464 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016465 }
16466
Jeff Johnsone7245742012-09-05 17:12:55 -070016467 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016469
16470 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
16471
Jeff Johnsone7245742012-09-05 17:12:55 -070016472 wpalMemoryCopy( pSendBuffer+usDataOffset,
16473 &wowlDelBcPtrnReq,
16474 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016475
16476 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016477 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016478
16479 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016481 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016482 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16483 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016484
16485fail:
16486 // Release the message buffer so we don't leak
16487 wpalMemoryFree(pSendBuffer);
16488
16489failRequest:
16490 //WDA should have failure check to avoid the memory leak
16491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016492}/*WDI_ProcessWowlDelBcPtrnReq*/
16493
16494/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016495 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016497
16498 @param pWDICtx: pointer to the WLAN DAL context
16499 pEventData: pointer to the event information structure
16500
Jeff Johnson295189b2012-06-20 16:38:30 -070016501 @see
16502 @return Result of the function call
16503*/
16504WDI_Status
16505WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016506(
Jeff Johnson295189b2012-06-20 16:38:30 -070016507 WDI_ControlBlockType* pWDICtx,
16508 WDI_EventInfoType* pEventData
16509)
16510{
16511 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
16512 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016513 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016514 wpt_uint16 usDataOffset = 0;
16515 wpt_uint16 usSendSize = 0;
16516 tHalWowlEnterParams wowlEnterReq;
16517 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16518
16519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 -------------------------------------------------------------------------*/
16522 if (( NULL == pEventData ) ||
16523 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
16524 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
16525 {
16526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016527 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016528 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016529 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016530 }
16531
16532 /*-----------------------------------------------------------------------
16533 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016536 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016537 sizeof(wowlEnterReq),
16538 &pSendBuffer, &usDataOffset, &usSendSize))||
16539 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
16540 {
16541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016542 "Unable to get send buffer in Wowl enter req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016543 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
16544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 }
16547
Kumar Anandaca924e2013-07-22 14:35:34 -070016548 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
16549
Jeff Johnsone7245742012-09-05 17:12:55 -070016550 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016551 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016552 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016554 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016556 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070016557 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070016558 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070016559 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070016564 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070016565 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
16566
16567#ifdef WLAN_WAKEUP_EVENTS
16568 wowlEnterReq.ucWoWEAPIDRequestEnable =
16569 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
16570
16571 wowlEnterReq.ucWoWEAPOL4WayEnable =
16572 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
16573
16574 wowlEnterReq.ucWowNetScanOffloadMatch =
16575 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
16576
16577 wowlEnterReq.ucWowGTKRekeyError =
16578 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
16579
16580 wowlEnterReq.ucWoWBSSConnLoss =
16581 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
16582#endif // WLAN_WAKEUP_EVENTS
16583
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016584 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
16585
Jeff Johnson295189b2012-06-20 16:38:30 -070016586 wpalMemoryCopy(wowlEnterReq.magicPtrn,
16587 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
16588 sizeof(tSirMacAddr));
16589
Jeff Johnsone7245742012-09-05 17:12:55 -070016590 wpalMemoryCopy( pSendBuffer+usDataOffset,
16591 &wowlEnterReq,
16592 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016593
16594 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016595 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016596
16597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016598 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016600 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16601 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016602}/*WDI_ProcessWowlEnterReq*/
16603
16604/**
16605 @brief Process Wowl exit Request function (called when Main FSM
16606 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016607
16608 @param pWDICtx: pointer to the WLAN DAL context
16609 pEventData: pointer to the event information structure
16610
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 @see
16612 @return Result of the function call
16613*/
16614WDI_Status
16615WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016616(
Jeff Johnson295189b2012-06-20 16:38:30 -070016617 WDI_ControlBlockType* pWDICtx,
16618 WDI_EventInfoType* pEventData
16619)
16620{
16621 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016622 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016623 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016624 wpt_uint16 usDataOffset = 0;
16625 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016626 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16628
16629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016630 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 -------------------------------------------------------------------------*/
16632 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016633 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
16635 {
16636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016637 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016640 }
16641
16642 /*-----------------------------------------------------------------------
16643 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016647 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016649 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 {
16651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016652 "Unable to get send buffer in Wowl Exit req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016653 pEventData, wdiWowlExitCb);
16654 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016655 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 }
16657
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016658 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
16659
16660 wpalMemoryCopy( pSendBuffer+usDataOffset,
16661 &wowlExitparams,
16662 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016664 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16667 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016668}/*WDI_ProcessWowlExitReq*/
16669
16670/**
16671 @brief Process Configure Apps Cpu Wakeup State Request function
16672 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016673
16674 @param pWDICtx: pointer to the WLAN DAL context
16675 pEventData: pointer to the event information structure
16676
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 @see
16678 @return Result of the function call
16679*/
16680WDI_Status
16681WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016682(
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 WDI_ControlBlockType* pWDICtx,
16684 WDI_EventInfoType* pEventData
16685)
16686{
16687 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
16688 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016689 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016690 wpt_uint16 usDataOffset = 0;
16691 wpt_uint16 usSendSize = 0;
16692 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
16693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16694
16695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016697 -------------------------------------------------------------------------*/
16698 if (( NULL == pEventData ) ||
16699 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
16700 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
16701 {
16702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016706 }
16707
16708 /*-----------------------------------------------------------------------
16709 Get message buffer
16710 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016711 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016712 sizeof(halCfgAppsCpuWakeupStateReqParams),
16713 &pSendBuffer, &usDataOffset, &usSendSize))||
16714 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16715 {
16716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016717 "Unable to get send buffer in Apps CPU Wakeup State req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016718 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16719 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016720 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 }
16722
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016724 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16725
Jeff Johnsone7245742012-09-05 17:12:55 -070016726 wpalMemoryCopy( pSendBuffer+usDataOffset,
16727 &halCfgAppsCpuWakeupStateReqParams,
16728 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016729
16730 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016731 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016732
16733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016734 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016735 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016736 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16737 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16738 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016739}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16740
16741#ifdef WLAN_FEATURE_VOWIFI_11R
16742/**
16743 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16744 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016745
16746 @param pWDICtx: pointer to the WLAN DAL context
16747 pEventData: pointer to the event information structure
16748
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 @see
16750 @return Result of the function call
16751*/
16752WDI_Status
16753WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016754(
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 WDI_ControlBlockType* pWDICtx,
16756 WDI_EventInfoType* pEventData
16757)
16758{
16759 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16760 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016762 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016763 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 wpt_uint16 usDataOffset = 0;
16765 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016766 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016767 wpt_macAddr macBSSID;
16768 tAggrAddTsReq halAggrAddTsReq;
16769 int i;
16770 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16771
16772 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016774 -------------------------------------------------------------------------*/
16775 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16776 ( NULL == pEventData->pCBfnc ))
16777 {
16778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016782 }
16783 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16784 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16785 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16786 /*-------------------------------------------------------------------------
16787 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016788 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 -------------------------------------------------------------------------*/
16790 wpalMutexAcquire(&pWDICtx->wptMutex);
16791
16792 /*------------------------------------------------------------------------
16793 Find the BSS for which the request is made and identify WDI session
16794 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016795 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16796 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016797 &macBSSID))
16798 {
16799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016800 "This station does not exist in the WDI Station Table %d",
16801 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016804 }
16805
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16807 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16810 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16811 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016812
16813 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016814 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016815 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016816
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 /*------------------------------------------------------------------------
16818 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016819 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 ------------------------------------------------------------------------*/
16821 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16822 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16824 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16825 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016826
Jeff Johnsone7245742012-09-05 17:12:55 -070016827 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016828 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016829 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016830 }
16831
16832 wpalMutexRelease(&pWDICtx->wptMutex);
16833 /*-----------------------------------------------------------------------
16834 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016838 sizeof(tAggrAddTsParams),
16839 &pSendBuffer, &usDataOffset, &usSendSize))||
16840 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16841 {
16842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016843 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 }
16848
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016851 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016852 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16853
16854 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16855 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016856 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016857 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016858 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016859 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016860 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016861 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16862 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16865 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16868 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16871 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16874 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016875 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016876 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16877 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16880 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016882 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16883 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016888
16889
16890 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016891 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016892 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016893 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016894 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016896 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016897 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016898 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016899 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016901 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016903 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016904 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016905 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016906 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016907 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016909 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016910 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016911 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016912 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016913 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016914 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016915 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016916 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016917 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016918 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016919 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16920 }
16921
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 wpalMemoryCopy( pSendBuffer+usDataOffset,
16923 &halAggrAddTsReq,
16924 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016925
16926 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016928
16929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016930 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016931 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016932 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016933 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016934 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016935}/*WDI_ProcessAggrAddTSpecReq*/
16936#endif /* WLAN_FEATURE_VOWIFI_11R */
16937
16938/**
16939 @brief Process Shutdown Request function (called when Main FSM
16940 allows it)
16941
16942 @param pWDICtx: pointer to the WLAN DAL context
16943 pEventData: pointer to the event information structure
16944
16945 @see
16946 @return Result of the function call
16947*/
16948WDI_Status
16949WDI_ProcessShutdownReq
16950(
16951 WDI_ControlBlockType* pWDICtx,
16952 WDI_EventInfoType* pEventData
16953 )
16954{
16955 wpt_status wptStatus;
16956
16957
16958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16959
16960 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016961 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016962 -------------------------------------------------------------------------*/
16963 if ( NULL == pEventData )
16964 {
16965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016967 WDI_ASSERT(0);
16968 return WDI_STATUS_E_FAILURE;
16969 }
16970
16971 wpalMutexAcquire(&pWDICtx->wptMutex);
16972
16973
16974 gWDIInitialized = eWLAN_PAL_FALSE;
16975 /*! TO DO: stop the data services */
16976 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16977 {
16978 /*Stop the STA Table !UT- check this logic again
16979 It is safer to do it here than on the response - because a stop is imminent*/
16980 WDI_STATableStop(pWDICtx);
16981
16982 /* Stop Transport Driver, DXE */
16983 WDTS_Stop(pWDICtx);
16984 }
16985
16986 /*Clear all pending request*/
16987 WDI_ClearPendingRequests(pWDICtx);
16988 /* Close Data transport*/
16989 /* FTM mode does not open Data Path */
16990 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16991 {
16992 WDTS_Close(pWDICtx);
16993 }
16994 /*Close the STA Table !UT- check this logic again*/
16995 WDI_STATableClose(pWDICtx);
16996 /*close the PAL */
16997 wptStatus = wpalClose(pWDICtx->pPALContext);
16998 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16999 {
17000 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17001 "Failed to wpal Close %d", wptStatus);
17002 WDI_ASSERT(0);
17003 }
17004
17005 /*Transition back to init state*/
17006 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
17007
17008 wpalMutexRelease(&pWDICtx->wptMutex);
17009
17010 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017011 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017012
17013
Jeff Johnsone7245742012-09-05 17:12:55 -070017014 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017015}/*WDI_ProcessShutdownReq*/
17016
17017/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017018 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017019========================================================================*/
17020
17021/**
17022 @brief Process Start Response function (called when a response
17023 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017024
17025 @param pWDICtx: pointer to the WLAN DAL context
17026 pEventData: pointer to the event information structure
17027
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 @see
17029 @return Result of the function call
17030*/
17031WDI_Status
17032WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017033(
Jeff Johnson295189b2012-06-20 16:38:30 -070017034 WDI_ControlBlockType* pWDICtx,
17035 WDI_EventInfoType* pEventData
17036)
17037{
17038 WDI_StartRspParamsType wdiRspParams;
17039 WDI_StartRspCb wdiStartRspCb = NULL;
17040
17041 tHalMacStartRspParams* startRspParams;
17042
17043#ifndef HAL_SELF_STA_PER_BSS
17044 WDI_AddStaParams wdiAddSTAParam = {0};
17045#endif
17046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17047
Jeff Johnsone7245742012-09-05 17:12:55 -070017048 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017049 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017050 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017051 -------------------------------------------------------------------------*/
17052 if (( NULL == pEventData ) ||
17053 ( NULL == pEventData->pEventData) ||
17054 ( NULL == wdiStartRspCb ))
17055 {
17056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 }
17061
17062 /*-------------------------------------------------------------------------
17063 Extract response and send it to UMAC
17064 -------------------------------------------------------------------------*/
17065 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
17066 {
17067 // not enough data was received
17068 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080017069 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070017070 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
17071 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017072 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 }
17074
17075 /*-------------------------------------------------------------------------
17076 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070017077 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070017078 -------------------------------------------------------------------------*/
17079 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
17080
17081 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
17082 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
17083 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
17084 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
17085 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
17086 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
17087 wdiRspParams.wlanReportedVersion.major =
17088 startRspParams->wcnssWlanVersion.major;
17089 wdiRspParams.wlanReportedVersion.minor =
17090 startRspParams->wcnssWlanVersion.minor;
17091 wdiRspParams.wlanReportedVersion.version =
17092 startRspParams->wcnssWlanVersion.version;
17093 wdiRspParams.wlanReportedVersion.revision =
17094 startRspParams->wcnssWlanVersion.revision;
17095 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
17096 startRspParams->wcnssCrmVersionString,
17097 sizeof(wdiRspParams.wcnssSoftwareVersion));
17098 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
17099 startRspParams->wcnssWlanVersionString,
17100 sizeof(wdiRspParams.wcnssHardwareVersion));
17101 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
17102
Pratik Bhalgatd4404592012-11-22 17:49:14 +053017103 /*Save the HAL Version*/
17104 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
17105
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 wpalMutexAcquire(&pWDICtx->wptMutex);
17107 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
17108 {
17109 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
17110
17111 /*Cache the start response for further use*/
17112 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070017113 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017114 sizeof(pWDICtx->wdiCachedStartRspParams));
17115
17116 }
17117 else
17118 {
17119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17120 "Failed to start device with status %s(%d)",
17121 WDI_getHALStatusMsgString(startRspParams->status),
17122 startRspParams->status);
17123
17124 /*Set the expected state transition to stopped - because the start has
17125 failed*/
17126 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
17127
17128 wpalMutexRelease(&pWDICtx->wptMutex);
17129
17130 /*Notify UMAC*/
17131 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017132
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Anurag Chouhanf0d0ba12018-02-09 15:13:43 +053017134 wpalWlanReload(VOS_WDI_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070017135
17136 /*Although the response is an error - it was processed by our function
17137 so as far as the caller is concerned this is a succesful reponse processing*/
17138 return WDI_STATUS_SUCCESS;
17139 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017140
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 wpalMutexRelease(&pWDICtx->wptMutex);
17142
17143 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
17144 {
17145 /* FTM mode does not need to execute below */
17146 /* Notify UMAC */
17147 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
17148 return WDI_STATUS_SUCCESS;
17149 }
17150
17151 /* START the Data transport */
17152 WDTS_startTransport(pWDICtx);
17153
17154 /*Start the STA Table !- check this logic again*/
17155 WDI_STATableStart(pWDICtx);
17156
17157#ifndef HAL_SELF_STA_PER_BSS
17158 /* Store the Self STA Index */
17159 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
17160
17161 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
17162 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
17163 WDI_MAC_ADDR_LEN);
17164
17165 /* At this point add the self-STA */
17166
17167 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
17168 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
17169 /*! TO DO: wdiAddSTAParam.dpuSig */
17170 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17171 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17172 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17173
17174 //all DPU indices are the same for self STA
17175 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
17176 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070017177 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
17179 WDI_MAC_ADDR_LEN);
17180 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17181 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
17182
17183 /* Note: Since we don't get an explicit config STA request for self STA, we
17184 add the self STA upon receiving the Start response message. But the
17185 self STA entry in the table is deleted when WDI gets an explicit delete STA
17186 request */
17187 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17188#endif
17189
17190 /*Notify UMAC*/
17191 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
17192
Jeff Johnsone7245742012-09-05 17:12:55 -070017193 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017194}/*WDI_ProcessStartRsp*/
17195
17196
17197/**
17198 @brief Process Stop Response function (called when a response
17199 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017200
17201 @param pWDICtx: pointer to the WLAN DAL context
17202 pEventData: pointer to the event information structure
17203
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 @see
17205 @return Result of the function call
17206*/
17207WDI_Status
17208WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017209(
Jeff Johnson295189b2012-06-20 16:38:30 -070017210 WDI_ControlBlockType* pWDICtx,
17211 WDI_EventInfoType* pEventData
17212)
17213{
17214 WDI_Status wdiStatus;
17215 WDI_StopRspCb wdiStopRspCb = NULL;
17216
Jeff Johnsone7245742012-09-05 17:12:55 -070017217 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17219
Jeff Johnsone7245742012-09-05 17:12:55 -070017220 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +053017221
Jeff Johnson295189b2012-06-20 16:38:30 -070017222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017224 -------------------------------------------------------------------------*/
17225 if (( NULL == pEventData ) ||
17226 ( NULL == pEventData->pEventData) ||
17227 ( NULL == wdiStopRspCb ))
17228 {
17229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017230 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017232 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 }
17234
17235 /*-------------------------------------------------------------------------
17236 Extract response and send it to UMAC
17237 -------------------------------------------------------------------------*/
17238 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
17239 {
17240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017241 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070017242 pEventData->uEventDataSize);
17243 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017244 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017245 }
17246
17247 /*-------------------------------------------------------------------------
17248 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070017249 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
17252 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 sizeof(halMacStopRspMsg.stopRspParams));
17254
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017256
17257 wpalMutexAcquire(&pWDICtx->wptMutex);
17258
17259 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017260 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070017261 --------------------------------------------------------------------------*/
17262 if ( WDI_STATUS_SUCCESS != wdiStatus )
17263 {
17264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17265 "Failed to stop the device with status %s (%d)",
17266 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
17267 halMacStopRspMsg.stopRspParams.status);
17268
Jeff Johnsone7245742012-09-05 17:12:55 -070017269 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Anurag Chouhanf0d0ba12018-02-09 15:13:43 +053017270 wpalWlanReload(VOS_WDI_FAILURE);
Jeff Johnsone7245742012-09-05 17:12:55 -070017271
Jeff Johnson295189b2012-06-20 16:38:30 -070017272 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017273 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017274 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017275
Jeff Johnson295189b2012-06-20 16:38:30 -070017276 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
17277
17278 /*Transition now as WDI may get preempted imediately after it sends
17279 up the Stop Response and it will not get to process the state transition
17280 from Main Rsp function*/
17281 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
17282 wpalMutexRelease(&pWDICtx->wptMutex);
17283
17284 /*! TO DO: - STOP the Data transport */
17285
17286 /*Notify UMAC*/
17287 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17288
Jeff Johnsone7245742012-09-05 17:12:55 -070017289 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017290}/*WDI_ProcessStopRsp*/
17291
17292/**
17293 @brief Process Close Rsp function (called when a response
17294 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017295
17296 @param pWDICtx: pointer to the WLAN DAL context
17297 pEventData: pointer to the event information structure
17298
Jeff Johnson295189b2012-06-20 16:38:30 -070017299 @see
17300 @return Result of the function call
17301*/
17302WDI_Status
17303WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017304(
Jeff Johnson295189b2012-06-20 16:38:30 -070017305 WDI_ControlBlockType* pWDICtx,
17306 WDI_EventInfoType* pEventData
17307)
17308{
17309 /*There is no close response comming from HAL - function just kept for
17310 simmetry */
17311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017312 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017313}/*WDI_ProcessCloseRsp*/
17314
17315
17316/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017317 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070017318============================================================================*/
17319
17320/**
17321 @brief Process Init Scan Rsp function (called when a response
17322 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017323
17324 @param pWDICtx: pointer to the WLAN DAL context
17325 pEventData: pointer to the event information structure
17326
Jeff Johnson295189b2012-06-20 16:38:30 -070017327 @see
17328 @return Result of the function call
17329*/
17330WDI_Status
17331WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017332(
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 WDI_ControlBlockType* pWDICtx,
17334 WDI_EventInfoType* pEventData
17335)
17336{
17337 WDI_Status wdiStatus;
17338 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017339 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080017340 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17342
17343 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017344 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017345 -------------------------------------------------------------------------*/
17346 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17347 ( NULL == pEventData->pEventData))
17348 {
17349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017350 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017352 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017353 }
17354
17355 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
17356 if( NULL == wdiInitScanRspCb)
17357 {
17358 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017359 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017360 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017361 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017362 }
17363
17364 /*-------------------------------------------------------------------------
17365 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070017366 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017368 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
17369 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 sizeof(halInitScanRspMsg.initScanRspParams));
17371
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017373
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053017374 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 {
17376 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080017377 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17378 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080017380 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080017381 WDI_ASSERT(0);
17382 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 }
Abhishek Singha7d80b12016-02-03 15:27:20 +053017384 else if (WDI_STATUS_SUCCESS != wdiStatus)
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053017385 {
17386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17387 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
17388 wdiStatus, pWDICtx->bInBmps);
17389 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017390
17391 /*Notify UMAC*/
17392 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17393
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017395}/*WDI_ProcessInitScanRsp*/
17396
17397
17398/**
17399 @brief Process Start Scan Rsp function (called when a response
17400 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017401
17402 @param pWDICtx: pointer to the WLAN DAL context
17403 pEventData: pointer to the event information structure
17404
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 @see
17406 @return Result of the function call
17407*/
17408WDI_Status
17409WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017410(
Jeff Johnson295189b2012-06-20 16:38:30 -070017411 WDI_ControlBlockType* pWDICtx,
17412 WDI_EventInfoType* pEventData
17413)
17414{
17415 WDI_StartScanRspParamsType wdiStartScanParams;
17416 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017417
17418 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17420
17421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017423 -------------------------------------------------------------------------*/
17424 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17425 ( NULL == pEventData->pEventData))
17426 {
17427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017428 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017429 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017430 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 }
17432
17433 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
17434 if( NULL == wdiStartScanRspCb)
17435 {
17436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017437 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 }
17441
17442 /*-------------------------------------------------------------------------
17443 Extract response and send it to UMAC
17444 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017445 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
17446 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 sizeof(halStartScanRspMsg.startScanRspParams));
17448
17449 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17450 halStartScanRspMsg.startScanRspParams.status);
17451#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017452 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017453 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070017454 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070017455 halStartScanRspMsg.startScanRspParams.startTSF,
17456 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070017457#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017458
17459 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
17460 {
17461 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17462 "Start scan failed with status %s (%d)",
17463 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
17464 halStartScanRspMsg.startScanRspParams.status);
17465 /* send the status to UMAC, don't return from here*/
17466 }
17467
17468 /*Notify UMAC*/
17469 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
17470
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017472
17473}/*WDI_ProcessStartScanRsp*/
17474
17475
17476/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017477 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017478 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017479
17480 @param pWDICtx: pointer to the WLAN DAL context
17481 pEventData: pointer to the event information structure
17482
Jeff Johnson295189b2012-06-20 16:38:30 -070017483 @see
17484 @return Result of the function call
17485*/
17486WDI_Status
17487WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017488(
Jeff Johnson295189b2012-06-20 16:38:30 -070017489 WDI_ControlBlockType* pWDICtx,
17490 WDI_EventInfoType* pEventData
17491)
17492{
17493 WDI_Status wdiStatus;
17494 tHalEndScanRspMsg halEndScanRspMsg;
17495 WDI_EndScanRspCb wdiEndScanRspCb;
17496 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17497
17498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017499 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017500 -------------------------------------------------------------------------*/
17501 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17502 ( NULL == pEventData->pEventData))
17503 {
17504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017505 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017508 }
17509
17510 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
17511
17512 /*-------------------------------------------------------------------------
17513 Extract response and send it to UMAC
17514 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017515 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
17516 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 sizeof(halEndScanRspMsg.endScanRspParams));
17518
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017520
17521 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
17522 {
17523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17524 "End Scan failed with status %s (%d )",
17525 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
17526 halEndScanRspMsg.endScanRspParams.status);
17527 /* send the status to UMAC, don't return from here*/
17528 }
17529
17530 /*Notify UMAC*/
17531 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17532
Jeff Johnsone7245742012-09-05 17:12:55 -070017533 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017534}/*WDI_ProcessEndScanRsp*/
17535
17536
17537/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017538 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017539 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017540
17541 @param pWDICtx: pointer to the WLAN DAL context
17542 pEventData: pointer to the event information structure
17543
Jeff Johnson295189b2012-06-20 16:38:30 -070017544 @see
17545 @return Result of the function call
17546*/
17547WDI_Status
17548WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017549(
Jeff Johnson295189b2012-06-20 16:38:30 -070017550 WDI_ControlBlockType* pWDICtx,
17551 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070017552)
Jeff Johnson295189b2012-06-20 16:38:30 -070017553{
17554 WDI_Status wdiStatus;
17555 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017556
17557 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017558 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17559
17560 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017562 -------------------------------------------------------------------------*/
17563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17564 ( NULL == pEventData->pEventData))
17565 {
17566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017567 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017568 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017569 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017570 }
17571
17572 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
17573
17574 /*-------------------------------------------------------------------------
17575 Extract response and send it to UMAC
17576 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017577 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
17578 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017579 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
17580
Jeff Johnsone7245742012-09-05 17:12:55 -070017581 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017582
17583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070017585 halFinishScanRspMsg.finishScanRspParams.status);
17586
17587 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
17588 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
17589 {
17590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17591 "Finish Scan failed with status %s (%d)",
17592 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
17593 halFinishScanRspMsg.finishScanRspParams.status);
17594 /* send the status to UMAC, don't return from here*/
17595 }
17596
17597 /*Notify UMAC*/
17598 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17599
Jeff Johnsone7245742012-09-05 17:12:55 -070017600 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017601}/*WDI_ProcessFinishScanRsp*/
17602
17603/**
17604 @brief Process Join Response function (called when a response
17605 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017606
17607 @param pWDICtx: pointer to the WLAN DAL context
17608 pEventData: pointer to the event information structure
17609
Jeff Johnson295189b2012-06-20 16:38:30 -070017610 @see
17611 @return Result of the function call
17612*/
17613WDI_Status
17614WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017615(
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 WDI_ControlBlockType* pWDICtx,
17617 WDI_EventInfoType* pEventData
17618)
17619{
17620 WDI_Status wdiStatus;
17621 WDI_JoinRspCb wdiJoinRspCb;
17622 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017623
17624 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017625 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17626
17627 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017628 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017629 -------------------------------------------------------------------------*/
17630 if (( NULL == pWDICtx ) ||
17631 ( NULL == pWDICtx->pfncRspCB ) ||
17632 ( NULL == pEventData ) ||
17633 ( NULL == pEventData->pEventData))
17634 {
17635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017639 }
17640
17641 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
17642
17643 /*-------------------------------------------------------------------------
17644 Extract response and send it to UMAC
17645 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
17647 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017648 sizeof(halJoinRspMsg.joinRspParams));
17649
Jeff Johnsone7245742012-09-05 17:12:55 -070017650 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017651
17652 wpalMutexAcquire(&pWDICtx->wptMutex);
17653
17654 /*-----------------------------------------------------------------------
17655 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017656 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017657 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017658 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017659 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17660 {
17661 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070017662 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
17663 "association no longer in progress %d - mysterious HAL response",
17664 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070017665
Jeff Johnsone7245742012-09-05 17:12:55 -070017666 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070017667 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017668 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017669 }
17670
17671 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
17672
17673 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017674 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070017675 -----------------------------------------------------------------------*/
17676 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17677 {
17678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17679 "Join only allowed in Joining state - failure state is %d "
17680 "strange HAL response", pBSSSes->wdiAssocState);
17681
Jeff Johnsone7245742012-09-05 17:12:55 -070017682 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17683
Jeff Johnson295189b2012-06-20 16:38:30 -070017684 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 }
17687
17688
17689 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017690 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017691 -----------------------------------------------------------------------*/
17692 if ( WDI_STATUS_SUCCESS != wdiStatus )
17693 {
17694 /*Association was failed by HAL - remove session*/
17695 WDI_DeleteSession(pWDICtx, pBSSSes);
17696
17697 /*Association no longer in progress */
17698 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17699
17700 /*Association no longer in progress - prepare pending assoc for processing*/
17701 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070017702
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 }
17704 else
17705 {
17706 /*Transition to state Joining - this may be redundant as we are supposed
17707 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017708 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 }
17710
17711 wpalMutexRelease(&pWDICtx->wptMutex);
17712
17713 /*Notify UMAC*/
17714 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17715
Jeff Johnsone7245742012-09-05 17:12:55 -070017716 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017717}/*WDI_ProcessJoinRsp*/
17718
17719
17720/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017721 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017722 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017723
17724 @param pWDICtx: pointer to the WLAN DAL context
17725 pEventData: pointer to the event information structure
17726
Jeff Johnson295189b2012-06-20 16:38:30 -070017727 @see
17728 @return Result of the function call
17729*/
17730WDI_Status
17731WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017732(
Jeff Johnson295189b2012-06-20 16:38:30 -070017733 WDI_ControlBlockType* pWDICtx,
17734 WDI_EventInfoType* pEventData
17735)
17736{
17737 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17738 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017739 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017740 WDI_BSSSessionType* pBSSSes = NULL;
17741
Jeff Johnsone7245742012-09-05 17:12:55 -070017742 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17744 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017745
Jeff Johnson295189b2012-06-20 16:38:30 -070017746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17747
17748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017749 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017750 -------------------------------------------------------------------------*/
17751 if (( NULL == pEventData ) ||
17752 ( NULL == pEventData->pEventData))
17753 {
17754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017755 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017758 }
17759
17760 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17761
17762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017765 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17766 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 sizeof(halConfigBssRspMsg.configBssRspParams));
17768
17769 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17770 halConfigBssRspMsg.configBssRspParams.status);
17771 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17772 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017773 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017774 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17775 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017776
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017778
17779 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017781
17782 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017784
Jeff Johnson295189b2012-06-20 16:38:30 -070017785 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017786
Jeff Johnson295189b2012-06-20 16:38:30 -070017787 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017788 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017789 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17790 #endif
17791 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17792 halConfigBssRspMsg.configBssRspParams.staMac,
17793 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017794
Jeff Johnson295189b2012-06-20 16:38:30 -070017795 wpalMutexAcquire(&pWDICtx->wptMutex);
17796 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017797 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017798 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017799 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17800 wdiConfigBSSParams.macBSSID,
17801 &pBSSSes);
17802
Jeff Johnson295189b2012-06-20 16:38:30 -070017803 /*-----------------------------------------------------------------------
17804 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017805 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017806 -----------------------------------------------------------------------*/
17807 if ( NULL == pBSSSes )
17808 {
17809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17810 "Association sequence for this BSS does not yet exist "
17811 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017812
17813 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17814
Jeff Johnson295189b2012-06-20 16:38:30 -070017815 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017817 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017818
Jeff Johnson295189b2012-06-20 16:38:30 -070017819 /*Save data for this BSS*/
17820 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17821 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017822 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017823 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017824 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017825 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017826 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017827 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017828 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017829 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017830 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017831 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17832 pBSSSes->bcastStaIdx =
17833 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017834
Jeff Johnson295189b2012-06-20 16:38:30 -070017835 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017836
Jeff Johnson295189b2012-06-20 16:38:30 -070017837 /*-------------------------------------------------------------------------
17838 Add Peer STA
17839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017840 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017841 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17842 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017843
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017845 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017846 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017847 wdiAddSTAParam.ucHTCapable =
17848 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17849 wdiAddSTAParam.ucStaType =
17850 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17851
Jeff Johnson295189b2012-06-20 16:38:30 -070017852 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017853 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17854 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017856
17857 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17858 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17859 WDI_MAC_ADDR_LEN);
17860
Jeff Johnson295189b2012-06-20 16:38:30 -070017861 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017862 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017863 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017864 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017865 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017866 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017867 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017868 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017869 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017870 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017871 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017872 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017873 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017874
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17876 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017877
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17879 /*-------------------------------------------------------------------------
17880 Add Broadcast STA only in AP mode
17881 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017882 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017883 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017884 {
17885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17886 "Add BCAST STA to table for index: %d",
17887 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017888
17889 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017890 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017891
Jeff Johnson295189b2012-06-20 16:38:30 -070017892 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17893 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17894 }
17895 wpalMutexRelease(&pWDICtx->wptMutex);
17896 }
17897 else
17898 {
17899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17900 "Config BSS RSP failed with status : %s(%d)",
17901 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 halConfigBssRspMsg.configBssRspParams.status);
17904
Jeff Johnsone7245742012-09-05 17:12:55 -070017905
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 /*Association was failed by HAL - remove session*/
17907 WDI_DeleteSession(pWDICtx, pBSSSes);
17908
17909 /*Association no longer in progress */
17910 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17911
17912 /*Association no longer in progress - prepare pending assoc for processing*/
17913 WDI_DequeueAssocRequest(pWDICtx);
17914
17915 }
17916
17917 /*Notify UMAC*/
17918 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17919
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017921}/*WDI_ProcessConfigBSSRsp*/
17922
17923
17924/**
17925 @brief Process Del BSS Response function (called when a response
17926 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017927
17928 @param pWDICtx: pointer to the WLAN DAL context
17929 pEventData: pointer to the event information structure
17930
Jeff Johnson295189b2012-06-20 16:38:30 -070017931 @see
17932 @return Result of the function call
17933*/
17934WDI_Status
17935WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017936(
Jeff Johnson295189b2012-06-20 16:38:30 -070017937 WDI_ControlBlockType* pWDICtx,
17938 WDI_EventInfoType* pEventData
17939)
17940{
17941 WDI_DelBSSRspParamsType wdiDelBSSParams;
17942 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017943 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017944 WDI_BSSSessionType* pBSSSes = NULL;
17945
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17948
17949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 -------------------------------------------------------------------------*/
17952 if (( NULL == pEventData ) ||
17953 ( NULL == pEventData->pEventData))
17954 {
17955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017959 }
17960
17961 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17962
17963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017964 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017966 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17967 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017968 sizeof(halDelBssRspMsg.deleteBssRspParams));
17969
17970
17971 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017972 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017973
17974 wpalMutexAcquire(&pWDICtx->wptMutex);
17975
17976 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017977 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017978 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017979 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17980 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17981 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017982
17983 /*-----------------------------------------------------------------------
17984 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017985 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017986 -----------------------------------------------------------------------*/
17987 if ( NULL == pBSSSes )
17988 {
17989 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17990 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017991 "association no longer in progress - mysterious HAL response");
17992
17993 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17994
17995 wpalMutexRelease(&pWDICtx->wptMutex);
17996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017997 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017998
17999 /*Extract BSSID for the response to UMAC*/
18000 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
18001 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
18002
18003 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
18004
18005 /*-----------------------------------------------------------------------
18006 The current session will be deleted
18007 -----------------------------------------------------------------------*/
18008 WDI_DeleteSession(pWDICtx, pBSSSes);
18009
18010
18011 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070018012 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
18013 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070018014 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080018015 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070018016 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080018017
18018 /* Delete the STA's in this BSS */
18019 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
18020
Jeff Johnson295189b2012-06-20 16:38:30 -070018021 wpalMutexRelease(&pWDICtx->wptMutex);
18022
18023 /*Notify UMAC*/
18024 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
18025
Jeff Johnsone7245742012-09-05 17:12:55 -070018026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018027}/*WDI_ProcessDelBSSRsp*/
18028
18029/**
18030 @brief Process Post Assoc Rsp function (called when a response
18031 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018032
18033 @param pWDICtx: pointer to the WLAN DAL context
18034 pEventData: pointer to the event information structure
18035
Jeff Johnson295189b2012-06-20 16:38:30 -070018036 @see
18037 @return Result of the function call
18038*/
18039WDI_Status
18040WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018041(
Jeff Johnson295189b2012-06-20 16:38:30 -070018042 WDI_ControlBlockType* pWDICtx,
18043 WDI_EventInfoType* pEventData
18044)
18045{
18046 WDI_PostAssocRspParamsType wdiPostAssocParams;
18047 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070018048 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018049 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018050 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070018051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18052
18053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018054 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018055 -------------------------------------------------------------------------*/
18056 if (( NULL == pEventData ) ||
18057 ( NULL == pEventData->pEventData))
18058 {
18059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 }
18064
18065 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
18066
18067 /*-------------------------------------------------------------------------
18068 Extract response and send it to UMAC
18069 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018070 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
18071 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018072 sizeof(halPostAssocRspMsg.postAssocRspParams));
18073
18074 /*Extract the Post Assoc STA Params */
18075
Jeff Johnsone7245742012-09-05 17:12:55 -070018076 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018077 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018078 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018079 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018080 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018081 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
18082
Jeff Johnsone7245742012-09-05 17:12:55 -070018083 wdiPostAssocParams.wdiStatus =
18084 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018085
18086 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
18087 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070018088 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
18089 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018090 WDI_MAC_ADDR_LEN);
18091
18092 /* Extract Post Assoc BSS Params */
18093
Jeff Johnsone7245742012-09-05 17:12:55 -070018094 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
18095 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
18096 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070018097
18098 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
18099 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070018100 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018101 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
18102 .macSTA, WDI_MAC_ADDR_LEN);
18103
Jeff Johnsone7245742012-09-05 17:12:55 -070018104 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018105 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
18106
Jeff Johnsone7245742012-09-05 17:12:55 -070018107 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
18109
18110 wdiPostAssocParams.bssParams.ucBSSIdx =
18111 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
18112
Jeff Johnsone7245742012-09-05 17:12:55 -070018113 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018114 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
18115
18116 wpalMutexAcquire(&pWDICtx->wptMutex);
18117
18118 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018119 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018120 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018121 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018122 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070018123 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018124
18125 /*-----------------------------------------------------------------------
18126 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018127 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018128 -----------------------------------------------------------------------*/
18129 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070018131 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
18132 {
18133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18134 "Association sequence for this BSS does not yet exist or "
18135 "association no longer in progress - mysterious HAL response");
18136
Jeff Johnsone7245742012-09-05 17:12:55 -070018137 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18138
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070018140 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018141 }
18142
18143 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018144 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070018145 -----------------------------------------------------------------------*/
18146 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
18147 {
18148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18149 "Post Assoc not allowed before JOIN - failing request "
18150 "strange HAL response");
18151
Jeff Johnsone7245742012-09-05 17:12:55 -070018152 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18153
Jeff Johnson295189b2012-06-20 16:38:30 -070018154 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018156 }
18157
18158 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018159 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018160 -----------------------------------------------------------------------*/
18161 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
18162 {
18163 /*Association was failed by HAL - remove session*/
18164 WDI_DeleteSession(pWDICtx, pBSSSes);
18165 }
18166 else
18167 {
18168 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018169 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070018170
18171 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018172 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018173 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018174 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018175 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070018176 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018177 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018178 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018179 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
18180
Jeff Johnsone7245742012-09-05 17:12:55 -070018181 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
18183 }
18184
18185 /*Association no longer in progress */
18186 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18187
18188 /*Association no longer in progress - prepare pending assoc for processing*/
18189 WDI_DequeueAssocRequest(pWDICtx);
18190
18191 wpalMutexRelease(&pWDICtx->wptMutex);
18192
18193 /*Notify UMAC*/
18194 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
18195
Jeff Johnsone7245742012-09-05 17:12:55 -070018196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018197}/*WDI_ProcessPostAssocRsp*/
18198
18199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018200 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018201 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018202
18203 @param pWDICtx: pointer to the WLAN DAL context
18204 pEventData: pointer to the event information structure
18205
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 @see
18207 @return Result of the function call
18208*/
18209WDI_Status
18210WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018211(
Jeff Johnson295189b2012-06-20 16:38:30 -070018212 WDI_ControlBlockType* pWDICtx,
18213 WDI_EventInfoType* pEventData
18214)
18215{
18216 WDI_DelSTARspParamsType wdiDelSTARsp;
18217 WDI_DelSTARspCb wdiDelSTARspCb;
18218 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070018219 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070018220 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18221
18222 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018223 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018224 -------------------------------------------------------------------------*/
18225 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18226 ( NULL == pEventData->pEventData))
18227 {
18228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018232 }
18233
18234 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
18235
18236 /*-------------------------------------------------------------------------
18237 Extract response and send it to UMAC
18238 -------------------------------------------------------------------------*/
18239 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070018240 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018241 sizeof(halDelStaRspMsg.delStaRspParams));
18242
18243 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018244 wdiDelSTARsp.wdiStatus =
18245 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018246
18247 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
18248
18249 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
18250 if(staType == WDI_STA_ENTRY_SELF)
18251 {
18252 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18253
18254 /* At this point add the self-STA */
18255
18256 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18257 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18258 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18259
18260#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
18261#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
18262
18263 //all DPU indices are the same for self STA
18264 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
18265 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
18266 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
18267 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
18268 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
18269 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070018270
18271 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070018272 }
18273 else
18274 {
18275 //Delete the station in the table
18276 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
18277 }
18278
18279 /*Notify UMAC*/
18280 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
18281
Jeff Johnsone7245742012-09-05 17:12:55 -070018282 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018283}/*WDI_ProcessDelSTARsp*/
18284
18285
18286/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018287 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070018288==========================================================================*/
18289
18290/**
18291 @brief Process Set BSS Key Rsp function (called when a response
18292 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018293
18294 @param pWDICtx: pointer to the WLAN DAL context
18295 pEventData: pointer to the event information structure
18296
Jeff Johnson295189b2012-06-20 16:38:30 -070018297 @see
18298 @return Result of the function call
18299*/
18300WDI_Status
18301WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018302(
Jeff Johnson295189b2012-06-20 16:38:30 -070018303 WDI_ControlBlockType* pWDICtx,
18304 WDI_EventInfoType* pEventData
18305)
18306{
18307 WDI_Status wdiStatus;
18308 eHalStatus halStatus;
18309 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
18310 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18311
18312 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018313 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018314 -------------------------------------------------------------------------*/
18315 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18316 ( NULL == pEventData->pEventData))
18317 {
18318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018322 }
18323
18324 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
18325
18326 /*-------------------------------------------------------------------------
18327 Extract response and send it to UMAC
18328 -------------------------------------------------------------------------*/
18329 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018330 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018331
18332 if ( eHAL_STATUS_SUCCESS != halStatus )
18333 {
18334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18335 "Set BSS Key failed with status %s (%d)",
18336 WDI_getHALStatusMsgString(halStatus),
18337 halStatus);
18338 /* send the status to UMAC, don't return from here*/
18339 }
18340
18341 /*Notify UMAC*/
18342 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18343
Jeff Johnsone7245742012-09-05 17:12:55 -070018344 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018345}/*WDI_ProcessSetBssKeyRsp*/
18346
18347/**
18348 @brief Process Remove BSS Key Rsp function (called when a response
18349 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018350
18351 @param pWDICtx: pointer to the WLAN DAL context
18352 pEventData: pointer to the event information structure
18353
Jeff Johnson295189b2012-06-20 16:38:30 -070018354 @see
18355 @return Result of the function call
18356*/
18357WDI_Status
18358WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018359(
Jeff Johnson295189b2012-06-20 16:38:30 -070018360 WDI_ControlBlockType* pWDICtx,
18361 WDI_EventInfoType* pEventData
18362)
18363{
18364 WDI_Status wdiStatus;
18365 eHalStatus halStatus;
18366 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
18367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18368
18369 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 -------------------------------------------------------------------------*/
18372 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18373 ( NULL == pEventData->pEventData))
18374 {
18375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018376 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018377 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018379 }
18380
18381 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
18382
18383 /*-------------------------------------------------------------------------
18384 Extract response and send it to UMAC
18385 -------------------------------------------------------------------------*/
18386 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018387 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018388
18389 if ( eHAL_STATUS_SUCCESS != halStatus )
18390 {
18391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18392 "Remove BSS Key failed with status %s (%d )",
18393 WDI_getHALStatusMsgString(halStatus),
18394 halStatus);
18395 /* send the status to UMAC, don't return from here*/
18396 }
18397
18398 /*Notify UMAC*/
18399 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18400
Jeff Johnsone7245742012-09-05 17:12:55 -070018401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018402}/*WDI_ProcessSetBssKeyRsp*/
18403
18404
18405/**
18406 @brief Process Set STA Key Rsp function (called when a response
18407 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018408
18409 @param pWDICtx: pointer to the WLAN DAL context
18410 pEventData: pointer to the event information structure
18411
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 @see
18413 @return Result of the function call
18414*/
18415WDI_Status
18416WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018417(
Jeff Johnson295189b2012-06-20 16:38:30 -070018418 WDI_ControlBlockType* pWDICtx,
18419 WDI_EventInfoType* pEventData
18420)
18421{
18422 WDI_Status wdiStatus;
18423 eHalStatus halStatus;
18424 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
18425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18426
18427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 -------------------------------------------------------------------------*/
18430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18431 ( NULL == pEventData->pEventData))
18432 {
18433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018437 }
18438
18439 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
18440
18441 /*-------------------------------------------------------------------------
18442 Extract response and send it to UMAC
18443 -------------------------------------------------------------------------*/
18444 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018445 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018446
18447 if ( eHAL_STATUS_SUCCESS != halStatus )
18448 {
18449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18450 "Set STA Key failed with status %s (%d)",
18451 WDI_getHALStatusMsgString(halStatus),
18452 halStatus);
18453 /* send the status to UMAC, don't return from here*/
18454 }
18455
18456 /*Notify UMAC*/
18457 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18458
Jeff Johnsone7245742012-09-05 17:12:55 -070018459 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018460}/*WDI_ProcessSetSTAKeyRsp*/
18461
18462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018464 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018465
18466 @param pWDICtx: pointer to the WLAN DAL context
18467 pEventData: pointer to the event information structure
18468
Jeff Johnson295189b2012-06-20 16:38:30 -070018469 @see
18470 @return Result of the function call
18471*/
18472WDI_Status
18473WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018474(
Jeff Johnson295189b2012-06-20 16:38:30 -070018475 WDI_ControlBlockType* pWDICtx,
18476 WDI_EventInfoType* pEventData
18477)
18478{
18479 WDI_Status wdiStatus;
18480 eHalStatus halStatus;
18481 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
18482 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18483
18484 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018485 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018486 -------------------------------------------------------------------------*/
18487 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18488 ( NULL == pEventData->pEventData))
18489 {
18490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018493 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018494 }
18495
18496 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
18497
18498 /*-------------------------------------------------------------------------
18499 Extract response and send it to UMAC
18500 -------------------------------------------------------------------------*/
18501 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018502 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018503
18504 if ( eHAL_STATUS_SUCCESS != halStatus )
18505 {
18506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18507 "Remove STA Key failed with status %s (%d)",
18508 WDI_getHALStatusMsgString(halStatus),
18509 halStatus);
18510 /* send the status to UMAC, don't return from here*/
18511 }
18512
18513 /*Notify UMAC*/
18514 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18515
Jeff Johnsone7245742012-09-05 17:12:55 -070018516 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018517}/*WDI_ProcessRemoveStaKeyRsp*/
18518
18519/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018521 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018522
18523 @param pWDICtx: pointer to the WLAN DAL context
18524 pEventData: pointer to the event information structure
18525
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 @see
18527 @return Result of the function call
18528*/
18529WDI_Status
18530WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018531(
Jeff Johnson295189b2012-06-20 16:38:30 -070018532 WDI_ControlBlockType* pWDICtx,
18533 WDI_EventInfoType* pEventData
18534)
18535{
18536 WDI_Status wdiStatus;
18537 eHalStatus halStatus;
18538 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
18539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18540
18541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 -------------------------------------------------------------------------*/
18544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18545 ( NULL == pEventData->pEventData))
18546 {
18547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018551 }
18552
18553 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
18554
18555 /*-------------------------------------------------------------------------
18556 Extract response and send it to UMAC
18557 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018558 wpalMemoryCopy( &halStatus,
18559 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 sizeof(halStatus));
18561
Jeff Johnsone7245742012-09-05 17:12:55 -070018562 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018563
18564 if ( eHAL_STATUS_SUCCESS != halStatus )
18565 {
18566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18567 "Set STA Key failed with status %s (%d)",
18568 WDI_getHALStatusMsgString(halStatus),
18569 halStatus);
18570 /* send the status to UMAC, don't return from here*/
18571 }
18572
18573 /*Notify UMAC*/
18574 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18575
Jeff Johnsone7245742012-09-05 17:12:55 -070018576 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018577}/*WDI_ProcessSetSTABcastKeyRsp*/
18578
18579/**
18580 @brief Process Remove STA Bcast Key Rsp function (called when a
18581 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018582
18583 @param pWDICtx: pointer to the WLAN DAL context
18584 pEventData: pointer to the event information structure
18585
Jeff Johnson295189b2012-06-20 16:38:30 -070018586 @see
18587 @return Result of the function call
18588*/
18589WDI_Status
18590WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018591(
Jeff Johnson295189b2012-06-20 16:38:30 -070018592 WDI_ControlBlockType* pWDICtx,
18593 WDI_EventInfoType* pEventData
18594)
18595{
18596 WDI_Status wdiStatus;
18597 eHalStatus halStatus;
18598 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
18599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18600
18601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018603 -------------------------------------------------------------------------*/
18604 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18605 ( NULL == pEventData->pEventData))
18606 {
18607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018611 }
18612
18613 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
18614
18615 /*-------------------------------------------------------------------------
18616 Extract response and send it to UMAC
18617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018618 wpalMemoryCopy( &halStatus,
18619 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018620 sizeof(halStatus));
18621
Jeff Johnsone7245742012-09-05 17:12:55 -070018622 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018623
18624 if ( eHAL_STATUS_SUCCESS != halStatus )
18625 {
18626 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18627 "Remove STA Key failed with status %s (%d)",
18628 WDI_getHALStatusMsgString(halStatus),
18629 halStatus);
18630 /* send the status to UMAC, don't return from here*/
18631 }
18632
18633 /*Notify UMAC*/
18634 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18635
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018637}/*WDI_ProcessRemoveStaBcastKeyRsp*/
18638
18639
18640/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018641 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070018642==========================================================================*/
18643
18644/**
18645 @brief Process Add TSpec Rsp function (called when a response
18646 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018647
18648 @param pWDICtx: pointer to the WLAN DAL context
18649 pEventData: pointer to the event information structure
18650
Jeff Johnson295189b2012-06-20 16:38:30 -070018651 @see
18652 @return Result of the function call
18653*/
18654WDI_Status
18655WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018656(
Jeff Johnson295189b2012-06-20 16:38:30 -070018657 WDI_ControlBlockType* pWDICtx,
18658 WDI_EventInfoType* pEventData
18659)
18660{
18661 WDI_Status wdiStatus;
18662 eHalStatus halStatus;
18663 WDI_AddTsRspCb wdiAddTsRspCb;
18664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18665
18666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018668 -------------------------------------------------------------------------*/
18669 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18670 ( NULL == pEventData->pEventData))
18671 {
18672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 }
18677
18678 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18679
18680 /*-------------------------------------------------------------------------
18681 Extract response and send it to UMAC
18682 -------------------------------------------------------------------------*/
18683 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018684 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018685
18686 /*Notify UMAC*/
18687 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18688
Jeff Johnsone7245742012-09-05 17:12:55 -070018689 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018690}/*WDI_ProcessAddTSpecRsp*/
18691
18692
Sunil Duttbd736ed2014-05-26 21:19:41 +053018693
18694#ifdef WLAN_FEATURE_LINK_LAYER_STATS
18695
18696WDI_Status
18697WDI_ProcessLLStatsSetRsp
18698(
18699 WDI_ControlBlockType* pWDICtx,
18700 WDI_EventInfoType* pEventData
18701)
18702{
18703 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
18704
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018706 "%s: Enter ", __func__);
18707 /*-------------------------------------------------------------------------
18708 Sanity check
18709 -------------------------------------------------------------------------*/
18710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18711 ( NULL == pEventData->pEventData))
18712 {
18713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18714 "%s: Invalid parameters", __func__);
18715 WDI_ASSERT(0);
18716 return WDI_STATUS_E_FAILURE;
18717 }
18718
18719 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18720
18721 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18722
18723 return WDI_STATUS_SUCCESS;
18724}
18725
18726WDI_Status
18727WDI_ProcessLLStatsGetRsp
18728(
18729 WDI_ControlBlockType* pWDICtx,
18730 WDI_EventInfoType* pEventData
18731)
18732{
18733 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18734
18735 /*-------------------------------------------------------------------------
18736 Sanity check
18737 -------------------------------------------------------------------------*/
18738 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18739 ( NULL == pEventData->pEventData))
18740 {
18741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18742 "%s: Invalid parameters", __func__);
18743 WDI_ASSERT(0);
18744 return WDI_STATUS_E_FAILURE;
18745 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018747 "%s: Enter ", __func__);
18748
18749 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18750
18751 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18752
18753 return WDI_STATUS_SUCCESS;
18754}
18755
18756WDI_Status
18757WDI_ProcessLLStatsClearRsp
18758(
18759 WDI_ControlBlockType* pWDICtx,
18760 WDI_EventInfoType* pEventData
18761)
18762{
18763 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18764
18765 /*-------------------------------------------------------------------------
18766 Sanity check
18767 -------------------------------------------------------------------------*/
18768 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18769 ( NULL == pEventData->pEventData))
18770 {
18771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18772 "%s: Invalid parameters", __func__);
18773 WDI_ASSERT(0);
18774 return WDI_STATUS_E_FAILURE;
18775 }
18776
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018778 "%s: CLEAR RESPONSE CALL BACK", __func__);
18779 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18780
18781 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18782
18783 return WDI_STATUS_SUCCESS;
18784}
18785#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18786
Jeff Johnson295189b2012-06-20 16:38:30 -070018787/**
18788 @brief Process Del TSpec Rsp function (called when a response
18789 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018790
18791 @param pWDICtx: pointer to the WLAN DAL context
18792 pEventData: pointer to the event information structure
18793
Jeff Johnson295189b2012-06-20 16:38:30 -070018794 @see
18795 @return Result of the function call
18796*/
18797WDI_Status
18798WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018799(
Jeff Johnson295189b2012-06-20 16:38:30 -070018800 WDI_ControlBlockType* pWDICtx,
18801 WDI_EventInfoType* pEventData
18802)
18803{
18804 WDI_Status wdiStatus;
18805 eHalStatus halStatus;
18806 WDI_DelTsRspCb wdiDelTsRspCb;
18807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18808
18809 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018810 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018811 -------------------------------------------------------------------------*/
18812 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18813 ( NULL == pEventData->pEventData))
18814 {
18815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018819 }
18820
18821 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18822
18823 /*-------------------------------------------------------------------------
18824 Extract response and send it to UMAC
18825 -------------------------------------------------------------------------*/
18826 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018827 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018828
18829 /*Notify UMAC*/
18830 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18831
Jeff Johnsone7245742012-09-05 17:12:55 -070018832 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018833}/*WDI_ProcessDelTSpecRsp*/
18834
18835/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018836 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018837 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018838
18839 @param pWDICtx: pointer to the WLAN DAL context
18840 pEventData: pointer to the event information structure
18841
Jeff Johnson295189b2012-06-20 16:38:30 -070018842 @see
18843 @return Result of the function call
18844*/
18845WDI_Status
18846WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018847(
Jeff Johnson295189b2012-06-20 16:38:30 -070018848 WDI_ControlBlockType* pWDICtx,
18849 WDI_EventInfoType* pEventData
18850)
18851{
18852 WDI_Status wdiStatus;
18853 eHalStatus halStatus;
18854 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18856
18857 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018858 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 -------------------------------------------------------------------------*/
18860 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18861 ( NULL == pEventData->pEventData))
18862 {
18863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018864 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018865 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018866 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018867 }
18868
18869 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18870
18871 /*-------------------------------------------------------------------------
18872 Extract response and send it to UMAC
18873 -------------------------------------------------------------------------*/
18874 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018875 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018876
18877 /*Notify UMAC*/
18878 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18879
Jeff Johnsone7245742012-09-05 17:12:55 -070018880 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018881}/*WDI_ProcessUpdateEDCAParamsRsp*/
18882
18883
18884/**
18885 @brief Process Add BA Rsp function (called when a response
18886 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018887
18888 @param pWDICtx: pointer to the WLAN DAL context
18889 pEventData: pointer to the event information structure
18890
Jeff Johnson295189b2012-06-20 16:38:30 -070018891 @see
18892 @return Result of the function call
18893*/
18894WDI_Status
18895WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018896(
Jeff Johnson295189b2012-06-20 16:38:30 -070018897 WDI_ControlBlockType* pWDICtx,
18898 WDI_EventInfoType* pEventData
18899)
18900{
18901 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18902
18903 tAddBASessionRspParams halBASessionRsp;
18904 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18905
Jeff Johnsone7245742012-09-05 17:12:55 -070018906
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18908
18909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018911 -------------------------------------------------------------------------*/
18912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18913 ( NULL == pEventData->pEventData))
18914 {
18915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018916 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018919 }
18920
18921 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18922
18923 /*-------------------------------------------------------------------------
18924 Extract response and send it to UMAC
18925 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 wpalMemoryCopy( &halBASessionRsp,
18927 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018928 sizeof(halBASessionRsp));
18929
18930 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18931
Jeff Johnson43971f52012-07-17 12:26:56 -070018932 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 {
18934 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18935 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18936 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18937 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18938 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18939 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18940 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18941 }
18942
18943 /*Notify UMAC*/
18944 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18945
Jeff Johnsone7245742012-09-05 17:12:55 -070018946 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018947}/*WDI_ProcessAddSessionBARsp*/
18948
18949
18950/**
18951 @brief Process Del BA Rsp function (called when a response
18952 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018953
18954 @param pWDICtx: pointer to the WLAN DAL context
18955 pEventData: pointer to the event information structure
18956
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 @see
18958 @return Result of the function call
18959*/
18960WDI_Status
18961WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018962(
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 WDI_ControlBlockType* pWDICtx,
18964 WDI_EventInfoType* pEventData
18965)
18966{
18967 WDI_Status wdiStatus;
18968 eHalStatus halStatus;
18969 WDI_DelBARspCb wdiDelBARspCb;
18970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18971
18972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 -------------------------------------------------------------------------*/
18975 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18976 ( NULL == pEventData->pEventData))
18977 {
18978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018979 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018980 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018981 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018982 }
18983
18984 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18985
18986 /*-------------------------------------------------------------------------
18987 Extract response and send it to UMAC
18988 -------------------------------------------------------------------------*/
18989 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018990 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018991
18992 if ( eHAL_STATUS_SUCCESS == halStatus )
18993 {
18994 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18995 }
18996
18997 /*Notify UMAC*/
18998 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18999
Jeff Johnsone7245742012-09-05 17:12:55 -070019000 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019001}/*WDI_ProcessDelBARsp*/
19002
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019003#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070019004/**
19005 @brief Process TSM Stats Rsp function (called when a response
19006 is being received over the bus from HAL)
19007
19008 @param pWDICtx: pointer to the WLAN DAL context
19009 pEventData: pointer to the event information structure
19010
19011 @see
19012 @return Result of the function call
19013*/
19014WDI_Status
19015WDI_ProcessTsmStatsRsp
19016(
19017 WDI_ControlBlockType* pWDICtx,
19018 WDI_EventInfoType* pEventData
19019)
19020{
19021 WDI_TsmRspCb wdiTsmStatsRspCb;
19022 tTsmStatsRspMsg halTsmStatsRspMsg;
19023 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
19024 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19025
19026 /*-------------------------------------------------------------------------
19027 Sanity check
19028 -------------------------------------------------------------------------*/
19029 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19030 ( NULL == pEventData->pEventData))
19031 {
19032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019034 WDI_ASSERT(0);
19035 return WDI_STATUS_E_FAILURE;
19036 }
19037
19038 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
19039
19040 /*-------------------------------------------------------------------------
19041 Unpack HAL Response Message - the header was already extracted by the
19042 main Response Handling procedure
19043 -------------------------------------------------------------------------*/
19044 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
19045 pEventData->pEventData,
19046 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
19047
19048 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
19049 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
19050 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
19051 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
19052 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
19053 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
19054 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
19055 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
19056 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
19057 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
19058 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
19059 halTsmStatsRspMsg.tsmStatsRspParams.status);
19060
19061 /*Notify UMAC*/
19062 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
19063
19064 return WDI_STATUS_SUCCESS;
19065}/*WDI_ProcessTsmStatsRsp*/
19066
19067#endif
19068
19069
19070
19071/**
19072 @brief Process Flush AC Rsp function (called when a response
19073 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019074
19075 @param pWDICtx: pointer to the WLAN DAL context
19076 pEventData: pointer to the event information structure
19077
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 @see
19079 @return Result of the function call
19080*/
19081WDI_Status
19082WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019083(
Jeff Johnson295189b2012-06-20 16:38:30 -070019084 WDI_ControlBlockType* pWDICtx,
19085 WDI_EventInfoType* pEventData
19086)
19087{
19088 WDI_Status wdiStatus;
19089 eHalStatus halStatus;
19090 WDI_FlushAcRspCb wdiFlushAcRspCb;
19091 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19092
19093 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019094 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019095 -------------------------------------------------------------------------*/
19096 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19097 ( NULL == pEventData->pEventData))
19098 {
19099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019100 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019101 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019102 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019103 }
19104
19105 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
19106
19107 /*-------------------------------------------------------------------------
19108 Extract response and send it to UMAC
19109 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019110 wpalMemoryCopy( &halStatus,
19111 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 sizeof(halStatus));
19113
Jeff Johnsone7245742012-09-05 17:12:55 -070019114 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019115
19116 /*Notify UMAC*/
19117 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19118
Jeff Johnsone7245742012-09-05 17:12:55 -070019119 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019120}/*WDI_ProcessFlushAcRsp*/
19121
19122/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019125
19126 @param pWDICtx: pointer to the WLAN DAL context
19127 pEventData: pointer to the event information structure
19128
Jeff Johnson295189b2012-06-20 16:38:30 -070019129 @see
19130 @return Result of the function call
19131*/
19132WDI_Status
19133WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019134(
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 WDI_ControlBlockType* pWDICtx,
19136 WDI_EventInfoType* pEventData
19137)
19138{
19139 WDI_Status wdiStatus;
19140 eHalStatus halStatus;
19141 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
19142 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19143
19144 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 -------------------------------------------------------------------------*/
19147 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19148 ( NULL == pEventData->pEventData))
19149 {
19150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019151 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019152 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019153 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019154 }
19155
19156 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
19157
19158 /*-------------------------------------------------------------------------
19159 Extract response and send it to UMAC
19160 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019161 wpalMemoryCopy( &halStatus,
19162 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 sizeof(halStatus));
19164
Jeff Johnsone7245742012-09-05 17:12:55 -070019165 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019166
19167 /*Notify UMAC*/
19168 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19169
Jeff Johnsone7245742012-09-05 17:12:55 -070019170 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019171}/*WDI_ProcessBtAmpEventRsp*/
19172
19173
19174/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019175 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019176 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019177
19178 @param pWDICtx: pointer to the WLAN DAL context
19179 pEventData: pointer to the event information structure
19180
Jeff Johnson295189b2012-06-20 16:38:30 -070019181 @see
19182 @return Result of the function call
19183*/
19184WDI_Status
19185WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019186(
Jeff Johnson295189b2012-06-20 16:38:30 -070019187 WDI_ControlBlockType* pWDICtx,
19188 WDI_EventInfoType* pEventData
19189)
19190{
19191 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
19192 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
19193 tAddStaSelfRspMsg halAddStaSelfRsp;
19194 WDI_AddStaParams wdiAddSTAParam = {0};
19195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19196
19197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019198 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019199 -------------------------------------------------------------------------*/
19200 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19201 ( NULL == pEventData->pEventData))
19202 {
19203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 }
19208
Jeff Johnsone7245742012-09-05 17:12:55 -070019209 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070019210 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
19211
19212 /*-------------------------------------------------------------------------
19213 Extract response and send it to UMAC
19214 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019215 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
19216 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019217 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
19218
19219
Jeff Johnsone7245742012-09-05 17:12:55 -070019220 wdiAddSTASelfParams.wdiStatus =
19221 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019222
Jeff Johnsone7245742012-09-05 17:12:55 -070019223 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019224 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019225 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019227 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019228 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
19229
19230 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
19231 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
19232 WDI_MAC_ADDR_LEN);
19233
19234
19235#ifdef HAL_SELF_STA_PER_BSS
19236
19237 /* At this point add the self-STA */
19238
19239 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
19240 /*! TO DO: wdiAddSTAParam.ucHTCapable */
19241 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
19242
19243 //all DPU indices are the same for self STA
19244
19245 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019246 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019247 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
19248 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
19249 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
19250 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
19251 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
19252
19253 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
19254 WDI_MAC_ADDR_LEN);
19255
19256 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
19257 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
19258
Jeff Johnsone7245742012-09-05 17:12:55 -070019259 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
19261 {
19262 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
19263 }
19264#endif
19265
19266 /*Notify UMAC*/
19267 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
19268
Jeff Johnsone7245742012-09-05 17:12:55 -070019269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019270}/*WDI_ProcessAddSTASelfRsp*/
19271
19272
19273
19274/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019275 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019276 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019277
19278 @param pWDICtx: pointer to the WLAN DAL context
19279 pEventData: pointer to the event information structure
19280
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 @see
19282 @return Result of the function call
19283*/
19284WDI_Status
19285WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019286(
Jeff Johnson295189b2012-06-20 16:38:30 -070019287 WDI_ControlBlockType* pWDICtx,
19288 WDI_EventInfoType* pEventData
19289)
19290{
19291 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
19292 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
19293 tDelStaSelfRspParams delStaSelfRspParams;
19294 wpt_uint8 ucStaIdx;
19295
19296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19297
19298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019300 -------------------------------------------------------------------------*/
19301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19302 ( NULL == pEventData->pEventData))
19303 {
19304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 }
19309
19310 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
19311
19312 /*-------------------------------------------------------------------------
19313 Extract response and send it to UMAC
19314 -------------------------------------------------------------------------*/
19315
Jeff Johnsone7245742012-09-05 17:12:55 -070019316 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070019317 (wpt_uint8*)pEventData->pEventData,
19318 sizeof(tDelStaSelfRspParams));
19319
Jeff Johnsone7245742012-09-05 17:12:55 -070019320 wdiDelStaSelfRspParams.wdiStatus =
19321 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019322
Jeff Johnsone7245742012-09-05 17:12:55 -070019323 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070019324 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
19325 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
19326 {
19327 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070019328 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070019329 delStaSelfRspParams.selfMacAddr,
19330 &ucStaIdx);
19331 if(WDI_STATUS_E_FAILURE == wdiStatus)
19332 {
19333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019334 "%s: Unable to extract the STA Idx ", __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 WDI_STATableDelSta(pWDICtx, ucStaIdx);
19339 }
19340
19341 /*Notify UMAC*/
19342 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
19343
19344 return WDI_STATUS_SUCCESS;
19345}
19346
Jeff Johnsone7245742012-09-05 17:12:55 -070019347#ifdef FEATURE_OEM_DATA_SUPPORT
19348/**
19349 @brief Start Oem Data Rsp function (called when a
19350 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019351
Jeff Johnsone7245742012-09-05 17:12:55 -070019352 @param pWDICtx: pointer to the WLAN DAL context
19353 pEventData: pointer to the event information structure
19354
19355 @see
19356 @return Result of the function call
19357*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019358
19359WDI_Status
19360WDI_ProcessStartOemDataRsp
19361(
19362 WDI_ControlBlockType* pWDICtx,
19363 WDI_EventInfoType* pEventData
19364)
19365{
19366 WDI_oemDataRspCb wdiOemDataRspCb;
19367 WDI_oemDataRspParamsType* wdiOemDataRspParams;
19368 tStartOemDataRspParams* halStartOemDataRspParams;
19369
19370 /*-------------------------------------------------------------------------
19371 Sanity check
19372 -------------------------------------------------------------------------*/
19373 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19374 ( NULL == pEventData->pEventData))
19375 {
19376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019377 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019378 WDI_ASSERT(0);
19379 return WDI_STATUS_E_FAILURE;
19380 }
19381
19382 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
19383
19384 /*-------------------------------------------------------------------------
19385 Extract response and send it to UMAC
19386 -------------------------------------------------------------------------*/
19387 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
19388
19389
19390 //It is the responsibility of the application code to check for failure
19391 //conditions!
19392
19393 //Allocate memory for WDI OEM DATA RSP structure
19394 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
19395
19396 if(NULL == wdiOemDataRspParams)
19397 {
19398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070019399 "Failed to allocate memory in OEM DATA Response %pK %pK %pK ",
Jeff Johnsone7245742012-09-05 17:12:55 -070019400 pWDICtx, pEventData, pEventData->pEventData);
19401 WDI_ASSERT(0);
19402 return WDI_STATUS_E_FAILURE;
19403 }
19404
Padma, Santhosh Kumarabe6c432016-10-24 18:13:11 +053019405 wpalMemoryZero(wdiOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
19406
Jeff Johnsone7245742012-09-05 17:12:55 -070019407 /* Populate WDI structure members */
Padma, Santhosh Kumarabe6c432016-10-24 18:13:11 +053019408 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp,
19409 halStartOemDataRspParams->oemDataRsp,
19410 pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019411
19412 /*Notify UMAC*/
19413 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
19414
19415 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
19416 wpalMemoryFree(wdiOemDataRspParams);
19417
19418 return WDI_STATUS_SUCCESS;
19419}/*WDI_PrcoessStartOemDataRsp*/
19420#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019421
19422/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019423 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070019424===========================================================================*/
19425
19426/**
19427 @brief Process Channel Switch Rsp function (called when a response
19428 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_ProcessChannelSwitchRsp
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{
19443 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
19444 WDI_SwitchChRspCb wdiChSwitchRspCb;
19445 tSwitchChannelRspParams halSwitchChannelRsp;
19446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19447
19448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019450 -------------------------------------------------------------------------*/
19451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19452 ( NULL == pEventData->pEventData))
19453 {
19454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019456 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019458 }
19459
19460 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
19461
19462 /*-------------------------------------------------------------------------
19463 Extract response and send it to UMAC
19464 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019465 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070019466 (wpt_uint8*)pEventData->pEventData,
19467 sizeof(halSwitchChannelRsp));
19468
Jeff Johnsone7245742012-09-05 17:12:55 -070019469 wdiSwitchChRsp.wdiStatus =
19470 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019471 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
19472
19473#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070019474 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070019475#endif
19476
19477 /*Notify UMAC*/
19478 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
19479
Jeff Johnsone7245742012-09-05 17:12:55 -070019480 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019481}/*WDI_ProcessChannelSwitchRsp*/
19482
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080019483/**
19484 @brief Process Channel Switch Rsp function (called when a response
19485 is being received over the bus from HAL against
19486 WDI_ProcessChannelSwitchReq_V1)
19487
19488 @param pWDICtx: pointer to the WLAN DAL context
19489 pEventData: pointer to the event information structure
19490
19491 @see
19492 @return Result of the function call
19493*/
19494
19495WDI_Status
19496WDI_ProcessChannelSwitchRsp_V1
19497(
19498 WDI_ControlBlockType* pWDICtx,
19499 WDI_EventInfoType* pEventData
19500)
19501{
19502 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
19503 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
19504 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
19505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19506
19507 /*-------------------------------------------------------------------------
19508 Sanity check
19509 -------------------------------------------------------------------------*/
19510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19511 ( NULL == pEventData->pEventData))
19512 {
19513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19514 "%s: Invalid parameters", __func__);
19515 WDI_ASSERT(0);
19516 return WDI_STATUS_E_FAILURE;
19517 }
19518
19519 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
19520
19521 /*-------------------------------------------------------------------------
19522 Extract response and send it to UMAC
19523 -------------------------------------------------------------------------*/
19524 wpalMemoryCopy( &halSwitchChannelRsp,
19525 (wpt_uint8*)pEventData->pEventData,
19526 sizeof(halSwitchChannelRsp));
19527
19528 wdiSwitchChRsp.wdiStatus =
19529 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
19530 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
19531
19532#ifdef WLAN_FEATURE_VOWIFI
19533 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
19534#endif
19535
19536 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
19537 if (( NULL == wdiChSwitchRspCb ) )
19538 {
19539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19540 "%s: ### Call back function is null", __func__);
19541 WDI_ASSERT(0);
19542 return WDI_STATUS_E_FAILURE;
19543 }
19544 /*Notify UMAC*/
19545 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
19546
19547 return WDI_STATUS_SUCCESS;
19548}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019549
19550/**
19551 @brief Process Config STA Rsp function (called when a response
19552 is being received over the bus 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_ProcessConfigStaRsp
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_ConfigSTARspParamsType wdiCfgSTAParams;
19568 WDI_ConfigSTARspCb wdiConfigSTARspCb;
19569 WDI_AddStaParams wdiAddSTAParam;
19570
19571 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019572 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019573
Jeff Johnsone7245742012-09-05 17:12:55 -070019574 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019575 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19576
19577 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019578 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019579 -------------------------------------------------------------------------*/
19580 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19581 ( NULL == pEventData->pEventData))
19582 {
19583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019584 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019585 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019586 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 }
19588
19589 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
19590
19591 /*-------------------------------------------------------------------------
19592 Extract response and send it to UMAC
19593 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019594 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
19595 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019596 sizeof(halConfigStaRsp.configStaRspParams));
19597
19598
19599 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
19600 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
19601 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
19602 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
19603 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
19604
19605 /* MAC Address of STA - take from cache as it does not come back in the
19606 response*/
19607 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070019608 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019609 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019610
19611 wdiCfgSTAParams.wdiStatus =
19612 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019613
19614 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
19615 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
19616 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
19617
19618 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
19619 {
19620 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
19621 {
19622 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070019623 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019624 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
19625 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019626
Jeff Johnson295189b2012-06-20 16:38:30 -070019627 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019628 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070019629 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070019630 wdiAddSTAParam.ucHTCapable =
19631 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
19632 wdiAddSTAParam.ucStaType =
19633 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070019634 wdiAddSTAParam.ucRmfEnabled =
19635 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070019636
Jeff Johnson295189b2012-06-20 16:38:30 -070019637 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070019638 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
19639 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019641
19642 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
19643 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
19644 WDI_MAC_ADDR_LEN);
19645
19646 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19647 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
19648 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070019649
19650 if ( NULL == pBSSSes )
19651 {
19652 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19653 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070019654
Jeff Johnson295189b2012-06-20 16:38:30 -070019655 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019656 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070019657 }
19658
19659 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019660 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019662 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019663 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019664 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019665 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019666 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019667 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070019668 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019669
Jeff Johnson295189b2012-06-20 16:38:30 -070019670 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
19671 }
19672 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
19673 {
19674 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
19675
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019678 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019679 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019680 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019681 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019682 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019683 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019684 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019685 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019686 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019687 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019688 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070019689 halConfigStaRsp.configStaRspParams.ucUcastSig;
19690 }
19691 }
19692
19693 /*Notify UMAC*/
19694 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
19695
Jeff Johnsone7245742012-09-05 17:12:55 -070019696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019697}/*WDI_ProcessConfigStaRsp*/
19698
19699
19700/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019701 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019702 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019703
19704 @param pWDICtx: pointer to the WLAN DAL context
19705 pEventData: pointer to the event information structure
19706
Jeff Johnson295189b2012-06-20 16:38:30 -070019707 @see
19708 @return Result of the function call
19709*/
19710WDI_Status
19711WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019712(
Jeff Johnson295189b2012-06-20 16:38:30 -070019713 WDI_ControlBlockType* pWDICtx,
19714 WDI_EventInfoType* pEventData
19715)
19716{
19717 WDI_Status wdiStatus;
19718 eHalStatus halStatus;
19719 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19720
19721 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019722 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19724
19725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019727 -------------------------------------------------------------------------*/
19728 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19729 ( NULL == pEventData->pEventData))
19730 {
19731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019735 }
19736
19737 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19738
19739 wpalMutexAcquire(&pWDICtx->wptMutex);
19740
19741 /*If the link is being transitioned to idle - the BSS is to be deleted
19742 - this type of ending a session is possible when UMAC has failed an
19743 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019744 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019745 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19746 {
19747 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019748 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019749 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019750 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19751 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19752 &pBSSSes);
19753
Jeff Johnson295189b2012-06-20 16:38:30 -070019754 /*-----------------------------------------------------------------------
19755 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019756 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 -----------------------------------------------------------------------*/
19758 if ( NULL == pBSSSes )
19759 {
19760 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19761 "Set link response received outside association session");
19762 }
19763 else
19764 {
19765 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19766 will be del BSS coming after this to stop the beaconing & cleaning up the
19767 sessions*/
19768 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19769 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19770 {
19771 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019773 -----------------------------------------------------------------------*/
19774 WDI_DeleteSession(pWDICtx, pBSSSes);
19775
19776 /*-----------------------------------------------------------------------
19777 Check to see if this association is in progress - if so disable the
19778 flag as this has ended
19779 -----------------------------------------------------------------------*/
19780 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019781 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019782 /*Association no longer in progress */
19783 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19784 /*Association no longer in progress - prepare pending assoc for processing*/
19785 WDI_DequeueAssocRequest(pWDICtx);
19786 }
19787 }
19788 }
19789 }
19790 /* If the link state has been set to POST ASSOC, reset the "association in
19791 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019792 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019793 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19794 {
19795 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19796 WDI_DequeueAssocRequest(pWDICtx);
19797 }
19798
19799 wpalMutexRelease(&pWDICtx->wptMutex);
19800
19801 /*-------------------------------------------------------------------------
19802 Extract response and send it to UMAC
19803 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019804 wpalMemoryCopy( &halStatus,
19805 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019806 sizeof(halStatus));
19807
Jeff Johnsone7245742012-09-05 17:12:55 -070019808 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019809
19810 /*Notify UMAC*/
19811 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19812
Jeff Johnsone7245742012-09-05 17:12:55 -070019813 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019814}/*WDI_ProcessSetLinkStateRsp*/
19815
19816/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019817 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019818 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019819
19820 @param pWDICtx: pointer to the WLAN DAL context
19821 pEventData: pointer to the event information structure
19822
Jeff Johnson295189b2012-06-20 16:38:30 -070019823 @see
19824 @return Result of the function call
19825*/
19826WDI_Status
19827WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019828(
Jeff Johnson295189b2012-06-20 16:38:30 -070019829 WDI_ControlBlockType* pWDICtx,
19830 WDI_EventInfoType* pEventData
19831)
19832{
19833 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19834 WDI_GetStatsRspCb wdiGetStatsRspCb;
19835 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019836
Jeff Johnson295189b2012-06-20 16:38:30 -070019837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19838
19839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019840 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019841 -------------------------------------------------------------------------*/
19842 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19843 ( NULL == pEventData->pEventData))
19844 {
19845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019846 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019849 }
19850
19851 /*-------------------------------------------------------------------------
19852 Extract response and send it to UMAC
19853 -------------------------------------------------------------------------*/
19854 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19855
19856 /*allocate the stats response buffer */
19857 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19858 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19859 + sizeof(WDI_GetStatsRspParamsType));
19860
19861 if(NULL == wdiGetStatsRsp)
19862 {
19863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070019864 "Failed to allocate memory in Get Stats Response %pK %pK %pK ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019865 pWDICtx, pEventData, pEventData->pEventData);
19866 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019867 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 }
19869
19870 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19871
19872 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19873 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19874 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19875 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19876 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19877 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19878
19879 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19880 wpalMemoryCopy(wdiGetStatsRsp + 1,
19881 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19882 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19883
19884 /*Notify UMAC*/
19885 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19886
19887 wpalMemoryFree(wdiGetStatsRsp);
19888
Jeff Johnsone7245742012-09-05 17:12:55 -070019889 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019890}/*WDI_ProcessGetStatsRsp*/
19891
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019892#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019893/**
19894 @brief Process Get Roam Rssi Rsp function (called when a response is
19895 being received over the bus from HAL)
19896
19897 @param pWDICtx: pointer to the WLAN DAL context
19898 pEventData: pointer to the event information structure
19899
19900 @see
19901 @return Result of the function call
19902*/
19903WDI_Status
19904WDI_ProcessGetRoamRssiRsp
19905(
19906 WDI_ControlBlockType* pWDICtx,
19907 WDI_EventInfoType* pEventData
19908)
19909{
19910 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19911 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19912 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19913 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19914
19915 /*-------------------------------------------------------------------------
19916 Sanity check
19917 -------------------------------------------------------------------------*/
19918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19919 ( NULL == pEventData->pEventData))
19920 {
19921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19922 "%s: Invalid parameters", __func__);
19923 WDI_ASSERT(0);
19924 return WDI_STATUS_E_FAILURE;
19925 }
19926
19927 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19928 if(NULL == wdiGetRoamRssiRspCb)
19929 {
19930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19931 "%s: call back function is NULL", __func__);
19932 WDI_ASSERT(0);
19933 return WDI_STATUS_E_FAILURE;
19934 }
19935
19936 /*-------------------------------------------------------------------------
19937 Extract response and send it to UMAC
19938 -------------------------------------------------------------------------*/
19939 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19940 pEventData->pEventData,
19941 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19942
19943 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19944 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19945 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19946
19947 /*Notify UMAC*/
19948 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19949
19950 return WDI_STATUS_SUCCESS;
19951}/*WDI_ProcessGetRoamRssiRsp*/
19952#endif
19953
Jeff Johnson295189b2012-06-20 16:38:30 -070019954
19955/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019956 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019957 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019958
19959 @param pWDICtx: pointer to the WLAN DAL context
19960 pEventData: pointer to the event information structure
19961
Jeff Johnson295189b2012-06-20 16:38:30 -070019962 @see
19963 @return Result of the function call
19964*/
19965WDI_Status
19966WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019967(
Jeff Johnson295189b2012-06-20 16:38:30 -070019968 WDI_ControlBlockType* pWDICtx,
19969 WDI_EventInfoType* pEventData
19970)
19971{
19972 WDI_Status wdiStatus;
19973 eHalStatus halStatus;
19974 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19975 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19976
19977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019979 -------------------------------------------------------------------------*/
19980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19981 ( NULL == pEventData->pEventData))
19982 {
19983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019986 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019987 }
19988
19989 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19990
19991 /*-------------------------------------------------------------------------
19992 Extract response and send it to UMAC
19993 -------------------------------------------------------------------------*/
19994 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019995 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019996
19997 /*Notify UMAC*/
19998 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19999
Jeff Johnsone7245742012-09-05 17:12:55 -070020000 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020001}/*WDI_ProcessUpdateCfgRsp*/
20002
20003
20004
20005/**
20006 @brief Process Add BA Rsp function (called when a response
20007 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020008
20009 @param pWDICtx: pointer to the WLAN DAL context
20010 pEventData: pointer to the event information structure
20011
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 @see
20013 @return Result of the function call
20014*/
20015WDI_Status
20016WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020017(
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 WDI_ControlBlockType* pWDICtx,
20019 WDI_EventInfoType* pEventData
20020)
20021{
20022 WDI_AddBARspCb wdiAddBARspCb;
20023
20024 tAddBARspParams halAddBARsp;
20025 WDI_AddBARspinfoType wdiAddBARsp;
20026
20027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20028
20029 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020030 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020031 -------------------------------------------------------------------------*/
20032 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20033 ( NULL == pEventData->pEventData))
20034 {
20035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020036 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020039 }
20040
20041 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
20042
20043 /*-------------------------------------------------------------------------
20044 Extract response and send it to UMAC
20045 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020046 wpalMemoryCopy( &halAddBARsp,
20047 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020048 sizeof(halAddBARsp));
20049
20050 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
20051
Jeff Johnson43971f52012-07-17 12:26:56 -070020052 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070020053 {
20054 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
20055 }
20056
20057 /*Notify UMAC*/
20058 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
20059
Jeff Johnsone7245742012-09-05 17:12:55 -070020060 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020061}/*WDI_ProcessAddSessionBARsp*/
20062
20063/**
20064 @brief Process Add BA Rsp function (called when a response
20065 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020066
20067 @param pWDICtx: pointer to the WLAN DAL context
20068 pEventData: pointer to the event information structure
20069
Jeff Johnson295189b2012-06-20 16:38:30 -070020070 @see
20071 @return Result of the function call
20072*/
20073WDI_Status
20074WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020075(
Jeff Johnson295189b2012-06-20 16:38:30 -070020076 WDI_ControlBlockType* pWDICtx,
20077 WDI_EventInfoType* pEventData
20078)
20079{
20080 WDI_TriggerBARspCb wdiTriggerBARspCb;
20081
20082 tTriggerBARspParams* halTriggerBARsp;
20083 tTriggerBaRspCandidate* halBaCandidate;
20084 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
20085 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
20086 wpt_uint16 index;
20087 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020088 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20090
20091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 -------------------------------------------------------------------------*/
20094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20095 ( NULL == pEventData->pEventData))
20096 {
20097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020098 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020099 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020100 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 }
20102
20103 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
20104
20105 /*-------------------------------------------------------------------------
20106 Extract response and send it to UMAC
20107 -------------------------------------------------------------------------*/
20108 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
20109
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020110 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
20111
20112 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
20113 {
20114 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070020115 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070020116 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070020117
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020118 if(NULL == wdiTriggerBARsp)
20119 {
20120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070020121 "Failed to allocate memory in Trigger BA Response %pK %pK %pK ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020122 pWDICtx, pEventData, pEventData->pEventData);
20123 WDI_ASSERT(0);
20124 return WDI_STATUS_E_FAILURE;
20125 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020126
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020127 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
20128
Jeff Johnson295189b2012-06-20 16:38:30 -070020129 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070020130 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070020131 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
20132
20133 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
20134 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
20135
20136 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
20137 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020138 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
20140 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
20141 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020142 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 halBaCandidate->baInfo[TidIndex].startingSeqNum;
20146 }
20147 wdiTriggerBARspCandidate++;
20148 halBaCandidate++;
20149 }
20150 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020151 else
20152 {
20153 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
20154
20155 if(NULL == wdiTriggerBARsp)
20156 {
20157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070020158 "Failed to allocate memory in Trigger BA Response %pK %pK %pK ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020159 pWDICtx, pEventData, pEventData->pEventData);
20160 WDI_ASSERT(0);
20161 return WDI_STATUS_E_FAILURE;
20162 }
20163
20164 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
20165
20166 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020167
20168 /*Notify UMAC*/
20169 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
20170
20171 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070020172 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020173}/*WDI_ProcessAddSessionBARsp*/
20174
20175/**
20176 @brief Process Update Beacon Params Rsp function (called when a response
20177 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020178
20179 @param pWDICtx: pointer to the WLAN DAL context
20180 pEventData: pointer to the event information structure
20181
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 @see
20183 @return Result of the function call
20184*/
20185WDI_Status
20186WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020187(
Jeff Johnson295189b2012-06-20 16:38:30 -070020188 WDI_ControlBlockType* pWDICtx,
20189 WDI_EventInfoType* pEventData
20190)
20191{
20192 WDI_Status wdiStatus;
20193 eHalStatus halStatus;
20194 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
20195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20196
20197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020198 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020199 -------------------------------------------------------------------------*/
20200 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20201 ( NULL == pEventData->pEventData))
20202 {
20203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 }
20208
20209 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
20210
20211 /*-------------------------------------------------------------------------
20212 Extract response and send it to UMAC
20213 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020214 wpalMemoryCopy( &halStatus,
20215 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 sizeof(halStatus));
20217
Jeff Johnsone7245742012-09-05 17:12:55 -070020218 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020219
20220 /*Notify UMAC*/
20221 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20222
Jeff Johnsone7245742012-09-05 17:12:55 -070020223 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020224}/*WDI_ProcessUpdateBeaconParamsRsp*/
20225
20226/**
20227 @brief Process Send Beacon template Rsp function (called when a response
20228 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020229
20230 @param pWDICtx: pointer to the WLAN DAL context
20231 pEventData: pointer to the event information structure
20232
Jeff Johnson295189b2012-06-20 16:38:30 -070020233 @see
20234 @return Result of the function call
20235*/
20236WDI_Status
20237WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020238(
Jeff Johnson295189b2012-06-20 16:38:30 -070020239 WDI_ControlBlockType* pWDICtx,
20240 WDI_EventInfoType* pEventData
20241)
20242{
20243 WDI_Status wdiStatus;
20244 eHalStatus halStatus;
20245 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
20246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20247
20248 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020249 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020250 -------------------------------------------------------------------------*/
20251 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20252 ( NULL == pEventData->pEventData))
20253 {
20254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020255 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020256 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020257 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020258 }
20259
20260 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
20261
20262 /*-------------------------------------------------------------------------
20263 Extract response and send it to UMAC
20264 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020265 wpalMemoryCopy( &halStatus,
20266 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020267 sizeof(halStatus));
20268
Jeff Johnsone7245742012-09-05 17:12:55 -070020269 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020270
20271 /*Notify UMAC*/
20272 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20273
Jeff Johnsone7245742012-09-05 17:12:55 -070020274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020275}/*WDI_ProcessSendBeaconParamsRsp*/
20276
Jeff Johnsone7245742012-09-05 17:12:55 -070020277
Jeff Johnson295189b2012-06-20 16:38:30 -070020278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020279 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070020280 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020281
20282 @param pWDICtx: pointer to the WLAN DAL context
20283 pEventData: pointer to the event information structure
20284
Jeff Johnson295189b2012-06-20 16:38:30 -070020285 @see
20286 @return Result of the function call
20287*/
20288WDI_Status
20289WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020290(
Jeff Johnson295189b2012-06-20 16:38:30 -070020291 WDI_ControlBlockType* pWDICtx,
20292 WDI_EventInfoType* pEventData
20293)
20294{
20295 WDI_Status wdiStatus;
20296 eHalStatus halStatus;
20297 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
20298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20299
20300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 -------------------------------------------------------------------------*/
20303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20304 ( NULL == pEventData->pEventData))
20305 {
20306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 }
20311
20312 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
20313
20314 /*-------------------------------------------------------------------------
20315 Extract response and send it to UMAC
20316 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020317 wpalMemoryCopy( &halStatus,
20318 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020319 sizeof(halStatus));
20320
Jeff Johnsone7245742012-09-05 17:12:55 -070020321 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020322
20323 /*Notify UMAC*/
20324 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20325
Jeff Johnsone7245742012-09-05 17:12:55 -070020326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020327}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
20328
20329 /**
20330 @brief Process Set Max Tx Power Rsp function (called when a response
20331 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020332
20333 @param pWDICtx: pointer to the WLAN DAL context
20334 pEventData: pointer to the event information structure
20335
Jeff Johnson295189b2012-06-20 16:38:30 -070020336 @see
20337 @return Result of the function call
20338*/
20339WDI_Status
20340WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020341(
Jeff Johnson295189b2012-06-20 16:38:30 -070020342 WDI_ControlBlockType* pWDICtx,
20343 WDI_EventInfoType* pEventData
20344)
20345{
20346 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070020347
Jeff Johnson295189b2012-06-20 16:38:30 -070020348 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020349
Jeff Johnson295189b2012-06-20 16:38:30 -070020350 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
20351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20352
20353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020355 -------------------------------------------------------------------------*/
20356 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20357 ( NULL == pEventData->pEventData))
20358 {
20359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020363 }
20364
20365 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
20366
20367 /*-------------------------------------------------------------------------
20368 Extract response and send it to UMAC
20369 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020370 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
20371 pEventData->pEventData,
20372 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020373
20374 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
20375 {
20376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20377 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070020378 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020379 }
20380
Jeff Johnsone7245742012-09-05 17:12:55 -070020381 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070020383 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070020384
20385 /*Notify UMAC*/
20386 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
20387
Jeff Johnsone7245742012-09-05 17:12:55 -070020388 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020389}
20390
schang86c22c42013-03-13 18:41:24 -070020391 /**
20392 @brief Process Set Tx Power Rsp function (called when a response
20393 is being received over the bus from HAL)
20394
20395 @param pWDICtx: pointer to the WLAN DAL context
20396 pEventData: pointer to the event information structure
20397
20398 @see
20399 @return Result of the function call
20400*/
20401WDI_Status
20402WDI_ProcessSetTxPowerRsp
20403(
20404 WDI_ControlBlockType* pWDICtx,
20405 WDI_EventInfoType* pEventData
20406)
20407{
20408 tSetTxPwrRspMsg halTxpowerrsp;
20409 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
20410 WDA_SetTxPowerRspCb wdiReqStatusCb;
20411 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20412
20413 /*-------------------------------------------------------------------------
20414 Sanity check
20415 -------------------------------------------------------------------------*/
20416 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20417 ( NULL == pEventData->pEventData))
20418 {
20419 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20420 "%s: Invalid parameters", __func__);
20421 WDI_ASSERT(0);
20422 return WDI_STATUS_E_FAILURE;
20423 }
20424
20425 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
20426
20427 /*-------------------------------------------------------------------------
20428 Extract response and send it to UMAC
20429 -------------------------------------------------------------------------*/
20430 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
20431 pEventData->pEventData,
20432 sizeof(halTxpowerrsp.setTxPwrRspParams));
20433
20434 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
20435 {
20436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20437 "Error status returned in Set Tx Power Response ");
20438 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20439 return WDI_STATUS_E_FAILURE;
20440 }
20441
20442 wdiSetTxPowerRspMsg.wdiStatus =
20443 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
20444
20445 /*Notify UMAC*/
20446 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
20447
20448 return WDI_STATUS_SUCCESS;
20449}
Arif Hussain935a8fb2014-01-31 12:12:28 -080020450
20451/**
20452 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
20453 is being received over the bus from HAL)
20454
20455 @param pWDICtx: pointer to the WLAN DAL context
20456 pEventData: pointer to the event information structure
20457
20458 @see
20459 @return Result of the function call
20460*/
20461WDI_Status
20462WDI_ProcessSetMaxTxPowerPerBandRsp
20463(
20464 WDI_ControlBlockType* pWDICtx,
20465 WDI_EventInfoType* pEventData
20466)
20467{
20468 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
20469 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
20470 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
20471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20472
20473 /*-------------------------------------------------------------------------
20474 Sanity check
20475 -------------------------------------------------------------------------*/
20476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20477 ( NULL == pEventData->pEventData))
20478 {
20479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20480 "%s: Invalid parameters", __func__);
20481 WDI_ASSERT(0);
20482 return WDI_STATUS_E_FAILURE;
20483 }
20484
20485 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
20486
20487 /*-------------------------------------------------------------------------
20488 Extract response and send it to UMAC
20489 -------------------------------------------------------------------------*/
20490 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
20491 pEventData->pEventData,
20492 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
20493
20494 if (eHAL_STATUS_SUCCESS !=
20495 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
20496 {
20497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20498 "Error status returned in Set Max Tx Power Per Band Response");
20499 return WDI_STATUS_E_FAILURE;
20500 }
20501
20502 wdiSetTxPowerPerBandRspMsg.wdiStatus =
20503 WDI_HAL_2_WDI_STATUS(
20504 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
20505
20506 /* Notify UMAC */
20507 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
20508
20509 return WDI_STATUS_SUCCESS;
20510}
20511
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020512#ifdef FEATURE_WLAN_TDLS
20513/**
20514 @brief Process TDLS Link Establish Rsp function (called
20515 when a response is being received over the bus from HAL)
20516
20517 @param pWDICtx: pointer to the WLAN DAL context
20518 pEventData: pointer to the event information structure
20519
20520 @see
20521 @return Result of the function call
20522*/
20523WDI_Status
20524WDI_ProcessLinkEstablishReqRsp
20525(
20526 WDI_ControlBlockType* pWDICtx,
20527 WDI_EventInfoType* pEventData
20528)
20529{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020530 eHalStatus halStatus;
20531 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053020532 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
20533 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
20534
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20536
20537 /*-------------------------------------------------------------------------
20538 Sanity check
20539 -------------------------------------------------------------------------*/
20540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20541 ( NULL == pEventData->pEventData))
20542 {
20543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20544 "%s: Invalid parameters", __func__);
20545 WDI_ASSERT(0);
20546 return WDI_STATUS_E_FAILURE;
20547 }
20548
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053020549 /*-------------------------------------------------------------------------
20550 Extract indication and send it to UMAC
20551 -------------------------------------------------------------------------*/
20552 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
20553 pEventData->pEventData,
20554 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
20555
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020556 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
20557
20558 /*-------------------------------------------------------------------------
20559 Extract response and send it to UMAC
20560 -------------------------------------------------------------------------*/
20561 wpalMemoryCopy( &halStatus,
20562 pEventData->pEventData,
20563 sizeof(halStatus));
20564
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053020565 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20566 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020567
20568 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053020569 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020570
20571 return WDI_STATUS_SUCCESS;
20572}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053020573
20574
20575
20576/**
20577 @brief Process TDLS Chan switch Rsp function (called
20578 when a response is being received over the bus from HAL)
20579
20580 @param pWDICtx: pointer to the WLAN DAL context
20581 pEventData: pointer to the event information structure
20582
20583 @see
20584 @return Result of the function call
20585*/
20586WDI_Status
20587WDI_ProcessChanSwitchReqRsp
20588(
20589 WDI_ControlBlockType* pWDICtx,
20590 WDI_EventInfoType* pEventData
20591)
20592{
20593 eHalStatus halStatus;
20594 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
20595 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
20596 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
20597
20598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20599
20600 /*-------------------------------------------------------------------------
20601 Sanity check
20602 -------------------------------------------------------------------------*/
20603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20604 ( NULL == pEventData->pEventData))
20605 {
20606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20607 "%s: Invalid parameters", __func__);
20608 WDI_ASSERT(0);
20609 return WDI_STATUS_E_FAILURE;
20610 }
20611
20612 /*-------------------------------------------------------------------------
20613 Extract indication and send it to UMAC
20614 -------------------------------------------------------------------------*/
20615 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
20616 pEventData->pEventData,
20617 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
20618
20619 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
20620
20621 /*-------------------------------------------------------------------------
20622 Extract response and send it to UMAC
20623 -------------------------------------------------------------------------*/
20624 wpalMemoryCopy( &halStatus,
20625 pEventData->pEventData,
20626 sizeof(halStatus));
20627
20628 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20629 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
20630
20631 /*Notify UMAC*/
20632 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
20633
20634 return WDI_STATUS_SUCCESS;
20635}/*WDI_ProcessChanSwitchReqRsp*/
20636
20637
20638
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020639#endif
schang86c22c42013-03-13 18:41:24 -070020640
Jeff Johnson295189b2012-06-20 16:38:30 -070020641/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020642 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070020643 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020644
20645 @param pWDICtx: pointer to the WLAN DAL context
20646 pEventData: pointer to the event information structure
20647
Jeff Johnson295189b2012-06-20 16:38:30 -070020648 @see
20649 @return Result of the function call
20650*/
20651WDI_Status
20652WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020653(
Jeff Johnson295189b2012-06-20 16:38:30 -070020654 WDI_ControlBlockType* pWDICtx,
20655 WDI_EventInfoType* pEventData
20656)
20657{
20658 WDI_Status wdiStatus;
20659 eHalStatus halStatus;
20660 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
20661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20662
20663 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020664 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 -------------------------------------------------------------------------*/
20666 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20667 ( NULL == pEventData->pEventData))
20668 {
20669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020672 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020673 }
20674
20675 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
20676
20677 /*-------------------------------------------------------------------------
20678 Extract response and send it to UMAC
20679 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020680 wpalMemoryCopy( &halStatus,
20681 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 sizeof(halStatus));
20683
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020685
20686 /*Notify UMAC*/
20687 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20688
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020690}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020691/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020694
20695 @param pWDICtx: pointer to the WLAN DAL context
20696 pEventData: pointer to the event information structure
20697
Jeff Johnson295189b2012-06-20 16:38:30 -070020698 @see
20699 @return Result of the function call
20700*/
20701WDI_Status
20702WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020703(
Jeff Johnson295189b2012-06-20 16:38:30 -070020704 WDI_ControlBlockType* pWDICtx,
20705 WDI_EventInfoType* pEventData
20706)
20707{
20708 WDI_Status wdiStatus;
20709 eHalStatus halStatus;
20710 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020711 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020712 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20713
20714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 -------------------------------------------------------------------------*/
20717 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20718 ( NULL == pEventData->pEventData))
20719 {
20720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 }
20725
20726 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20727
20728 /*-------------------------------------------------------------------------
20729 Extract response and send it to UMAC
20730 -------------------------------------------------------------------------*/
20731 halStatus = *((eHalStatus*)pEventData->pEventData);
20732
Jeff Johnsone7245742012-09-05 17:12:55 -070020733 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020734
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020735 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20736 * Other module states are taken care by PMC.
20737 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20738 */
20739 if (wdiStatus != WDI_STATUS_SUCCESS) {
20740
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20742 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20743 halStatus);
20744 /* Call Back is not required as we are putting the DXE in FULL
20745 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020746 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20747
20748 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020750 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080020751 WDI_ASSERT(0);
20752 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020753 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020754 /*Notify UMAC*/
20755 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20756
Jeff Johnsone7245742012-09-05 17:12:55 -070020757 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020758}/*WDI_ProcessEnterImpsRsp*/
20759
20760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020761 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020762 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020763
20764 @param pWDICtx: pointer to the WLAN DAL context
20765 pEventData: pointer to the event information structure
20766
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 @see
20768 @return Result of the function call
20769*/
20770WDI_Status
20771WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020772(
Jeff Johnson295189b2012-06-20 16:38:30 -070020773 WDI_ControlBlockType* pWDICtx,
20774 WDI_EventInfoType* pEventData
20775)
20776{
20777 WDI_Status wdiStatus;
20778 eHalStatus halStatus;
20779 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020780 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20782
20783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020785 -------------------------------------------------------------------------*/
20786 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20787 ( NULL == pEventData->pEventData))
20788 {
20789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020793 }
20794
20795 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20796
20797 /*-------------------------------------------------------------------------
20798 Extract response and send it to UMAC
20799 -------------------------------------------------------------------------*/
20800 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020801 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020802
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020803 if (halStatus != eHAL_STATUS_SUCCESS)
20804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20805 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20806
Jeff Johnson295189b2012-06-20 16:38:30 -070020807 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020808 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20809 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20810 {
20811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020812 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080020813 WDI_ASSERT(0);
20814 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 /*Notify UMAC*/
20816 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20817
Jeff Johnsone7245742012-09-05 17:12:55 -070020818 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020819}/*WDI_ProcessExitImpsRsp*/
20820
20821/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020822 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020824
20825 @param pWDICtx: pointer to the WLAN DAL context
20826 pEventData: pointer to the event information structure
20827
Jeff Johnson295189b2012-06-20 16:38:30 -070020828 @see
20829 @return Result of the function call
20830*/
20831WDI_Status
20832WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020833(
Jeff Johnson295189b2012-06-20 16:38:30 -070020834 WDI_ControlBlockType* pWDICtx,
20835 WDI_EventInfoType* pEventData
20836)
20837{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020838 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20839 tHalEnterBmpsRspParams halEnterBmpsRsp;
20840 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20841 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020842 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20844
20845 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020846 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020847 -------------------------------------------------------------------------*/
20848 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20849 ( NULL == pEventData->pEventData))
20850 {
20851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020853 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020855 }
20856
Jeff Johnson295189b2012-06-20 16:38:30 -070020857 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020858 Extract response and send it to UMAC
20859 -------------------------------------------------------------------------*/
20860 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20861 {
20862 wpalMemoryCopy( &halEnterBmpsRsp,
20863 pEventData->pEventData,
20864 sizeof(halEnterBmpsRsp));
20865
20866 //Used to print debug message
20867 halStatus = halEnterBmpsRsp.status;
20868 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20869 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20870 }
20871 else
20872 {
20873 halStatus = *((eHalStatus*)pEventData->pEventData);
20874 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20875 }
20876
20877 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020878
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020879 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20880 * Other module states are taken care by PMC.
20881 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20882 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020883 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20884 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020885
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020887 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20888 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020889 /* Call Back is not required as we are putting the DXE in FULL
20890 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020891 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20892 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20893 {
20894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020895 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080020896 WDI_ASSERT(0);
20897 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020898 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020899 }
20900
Jeff Johnson295189b2012-06-20 16:38:30 -070020901 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020902 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020903
Jeff Johnsone7245742012-09-05 17:12:55 -070020904 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020905}/*WDI_ProcessEnterBmpsRsp*/
20906
20907/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020908 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020909 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020910
20911 @param pWDICtx: pointer to the WLAN DAL context
20912 pEventData: pointer to the event information structure
20913
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 @see
20915 @return Result of the function call
20916*/
20917WDI_Status
20918WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020919(
Jeff Johnson295189b2012-06-20 16:38:30 -070020920 WDI_ControlBlockType* pWDICtx,
20921 WDI_EventInfoType* pEventData
20922)
20923{
Jeff Johnson295189b2012-06-20 16:38:30 -070020924 eHalStatus halStatus;
20925 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020926 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020927 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20928 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020929 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20930
20931 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020932 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020933 -------------------------------------------------------------------------*/
20934 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20935 ( NULL == pEventData->pEventData))
20936 {
20937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020941 }
20942
20943 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20944
20945 /*-------------------------------------------------------------------------
20946 Extract response and send it to UMAC
20947 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020948
20949 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20950 {
20951 wpalMemoryCopy( &halExitBmpsRsp,
20952 pEventData->pEventData,
20953 sizeof(halExitBmpsRsp));
20954
20955 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20956 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20957 }
20958 else
20959 {
20960 halStatus = *((eHalStatus*)pEventData->pEventData);
20961 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20962 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020963
20964 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020965 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20966 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20967 {
20968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020969 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering Full Power state", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080020970 WDI_ASSERT(0);
20971 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020972 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20973
20974 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020975 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020976
Jeff Johnsone7245742012-09-05 17:12:55 -070020977 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020978}/*WDI_ProcessExitBmpsRsp*/
20979
20980/**
20981 @brief Process Enter UAPSD Rsp function (called when a response
20982 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020983
20984 @param pWDICtx: pointer to the WLAN DAL context
20985 pEventData: pointer to the event information structure
20986
Jeff Johnson295189b2012-06-20 16:38:30 -070020987 @see
20988 @return Result of the function call
20989*/
20990WDI_Status
20991WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020992(
Jeff Johnson295189b2012-06-20 16:38:30 -070020993 WDI_ControlBlockType* pWDICtx,
20994 WDI_EventInfoType* pEventData
20995)
20996{
Jeff Johnson295189b2012-06-20 16:38:30 -070020997 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020998 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021000 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
21001
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21003
21004 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021005 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021006 -------------------------------------------------------------------------*/
21007 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21008 ( NULL == pEventData->pEventData))
21009 {
21010 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021011 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021012 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021013 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 }
21015
21016 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
21017
21018 /*-------------------------------------------------------------------------
21019 Extract response and send it to UMAC
21020 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021021 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21022 {
21023 wpalMemoryCopy( &halEnterUapsdRsp,
21024 pEventData->pEventData,
21025 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070021026
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021027 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
21028 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
21029 }
21030 else
21031 {
21032 halStatus = *((eHalStatus*)pEventData->pEventData);
21033 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
21034 }
21035
21036 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 {
21038 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
21039 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
21040 // the traffic to decide when to suspend the trigger frames when there is no traffic
21041 // activity on the trigger enabled ACs
21042 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
21043
21044#ifdef WLAN_PERF
21045 // Increment the BD signature to refresh the fast path BD utilization
21046 pWDICtx->uBdSigSerialNum++;
21047#endif
21048 }
21049
21050 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021051 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021052
Jeff Johnsone7245742012-09-05 17:12:55 -070021053 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021054}/*WDI_ProcessEnterUapsdRsp*/
21055
21056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021059
21060 @param pWDICtx: pointer to the WLAN DAL context
21061 pEventData: pointer to the event information structure
21062
Jeff Johnson295189b2012-06-20 16:38:30 -070021063 @see
21064 @return Result of the function call
21065*/
21066WDI_Status
21067WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021068(
Jeff Johnson295189b2012-06-20 16:38:30 -070021069 WDI_ControlBlockType* pWDICtx,
21070 WDI_EventInfoType* pEventData
21071)
21072{
Jeff Johnson295189b2012-06-20 16:38:30 -070021073 eHalStatus halStatus;
21074 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021075 tHalExitUapsdRspParams halExitUapsdRsp;
21076 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21078
21079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 -------------------------------------------------------------------------*/
21082 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21083 ( NULL == pEventData->pEventData))
21084 {
21085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 }
21090
21091 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
21092
21093 /*-------------------------------------------------------------------------
21094 Extract response and send it to UMAC
21095 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021096 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21097 {
21098 wpalMemoryCopy( &halExitUapsdRsp,
21099 pEventData->pEventData,
21100 sizeof(halExitUapsdRsp));
21101
21102 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
21103 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
21104 }
21105 else
21106 {
21107 halStatus = *((eHalStatus*)pEventData->pEventData);
21108 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
21109 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021110 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
21111 // directly instead of the FW WQ.
21112 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
21113
21114#ifdef WLAN_PERF
21115 // Increment the BD signature to refresh the fast path BD utilization
21116 pWDICtx->uBdSigSerialNum++;
21117#endif
21118
21119 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021120 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021121
Jeff Johnsone7245742012-09-05 17:12:55 -070021122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021123}/*WDI_ProcessExitUapsdRsp*/
21124
21125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021126 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021127 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021128
21129 @param pWDICtx: pointer to the WLAN DAL context
21130 pEventData: pointer to the event information structure
21131
Jeff Johnson295189b2012-06-20 16:38:30 -070021132 @see
21133 @return Result of the function call
21134*/
21135WDI_Status
21136WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021137(
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 WDI_ControlBlockType* pWDICtx,
21139 WDI_EventInfoType* pEventData
21140)
21141{
21142 WDI_Status wdiStatus;
21143 eHalStatus halStatus;
21144 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
21145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21146
21147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 -------------------------------------------------------------------------*/
21150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21151 ( NULL == pEventData->pEventData))
21152 {
21153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021157 }
21158
21159 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
21160
21161 /*-------------------------------------------------------------------------
21162 Extract response and send it to UMAC
21163 -------------------------------------------------------------------------*/
21164 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021166
21167 /*Notify UMAC*/
21168 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
21169
Jeff Johnsone7245742012-09-05 17:12:55 -070021170 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021171}/*WDI_ProcessSetUapsdAcParamsRsp*/
21172
21173/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021174 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021176
21177 @param pWDICtx: pointer to the WLAN DAL context
21178 pEventData: pointer to the event information structure
21179
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 @see
21181 @return Result of the function call
21182*/
21183WDI_Status
21184WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021185(
Jeff Johnson295189b2012-06-20 16:38:30 -070021186 WDI_ControlBlockType* pWDICtx,
21187 WDI_EventInfoType* pEventData
21188)
21189{
21190 WDI_Status wdiStatus;
21191 eHalStatus halStatus;
21192 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
21193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21194
21195 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021196 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021197 -------------------------------------------------------------------------*/
21198 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21199 ( NULL == pEventData->pEventData))
21200 {
21201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021202 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021203 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021204 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021205 }
21206
21207 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
21208
21209 /*-------------------------------------------------------------------------
21210 Extract response and send it to UMAC
21211 -------------------------------------------------------------------------*/
21212 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021213 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021214
21215 /*Notify UMAC*/
21216 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
21217
Jeff Johnsone7245742012-09-05 17:12:55 -070021218 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021219}/*WDI_ProcessUpdateUapsdParamsRsp*/
21220
21221/**
21222 @brief Process Configure RXP filter Rsp function (called when a
21223 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021224
21225 @param pWDICtx: pointer to the WLAN DAL context
21226 pEventData: pointer to the event information structure
21227
Jeff Johnson295189b2012-06-20 16:38:30 -070021228 @see
21229 @return Result of the function call
21230*/
21231WDI_Status
21232WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021233(
Jeff Johnson295189b2012-06-20 16:38:30 -070021234 WDI_ControlBlockType* pWDICtx,
21235 WDI_EventInfoType* pEventData
21236)
21237{
21238 WDI_Status wdiStatus;
21239 eHalStatus halStatus;
21240 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
21241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21242
21243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021245 -------------------------------------------------------------------------*/
21246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21247 ( NULL == pEventData->pEventData))
21248 {
21249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 }
21254
21255 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
21256
21257 /*-------------------------------------------------------------------------
21258 Extract response and send it to UMAC
21259 -------------------------------------------------------------------------*/
21260 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021261 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021262
21263 /*Notify UMAC*/
21264 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
21265
Jeff Johnsone7245742012-09-05 17:12:55 -070021266 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021267}/*WDI_ProcessConfigureRxpFilterRsp*/
21268
21269/**
21270 @brief Process Set beacon filter Rsp function (called when a
21271 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021272
21273 @param pWDICtx: pointer to the WLAN DAL context
21274 pEventData: pointer to the event information structure
21275
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 @see
21277 @return Result of the function call
21278*/
21279WDI_Status
21280WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021281(
Jeff Johnson295189b2012-06-20 16:38:30 -070021282 WDI_ControlBlockType* pWDICtx,
21283 WDI_EventInfoType* pEventData
21284)
21285{
21286 WDI_Status wdiStatus;
21287 eHalStatus halStatus;
21288 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
21289 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21290
21291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 -------------------------------------------------------------------------*/
21294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21295 ( NULL == pEventData->pEventData))
21296 {
21297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021301 }
21302
21303 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
21304
21305 /*-------------------------------------------------------------------------
21306 Extract response and send it to UMAC
21307 -------------------------------------------------------------------------*/
21308 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021309 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021310
21311 /*Notify UMAC*/
21312 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
21313
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021315}/*WDI_ProcessSetBeaconFilterRsp*/
21316
21317/**
21318 @brief Process remove beacon filter Rsp function (called when a
21319 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021320
21321 @param pWDICtx: pointer to the WLAN DAL context
21322 pEventData: pointer to the event information structure
21323
Jeff Johnson295189b2012-06-20 16:38:30 -070021324 @see
21325 @return Result of the function call
21326*/
21327WDI_Status
21328WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021329(
Jeff Johnson295189b2012-06-20 16:38:30 -070021330 WDI_ControlBlockType* pWDICtx,
21331 WDI_EventInfoType* pEventData
21332)
21333{
21334 WDI_Status wdiStatus;
21335 eHalStatus halStatus;
21336 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
21337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21338
21339 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021340 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 -------------------------------------------------------------------------*/
21342 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21343 ( NULL == pEventData->pEventData))
21344 {
21345 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021346 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 }
21350
21351 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
21352
21353 /*-------------------------------------------------------------------------
21354 Extract response and send it to UMAC
21355 -------------------------------------------------------------------------*/
21356 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021357 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021358
21359 /*Notify UMAC*/
21360 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
21361
Jeff Johnsone7245742012-09-05 17:12:55 -070021362 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021363}/*WDI_ProcessRemBeaconFilterRsp*/
21364
21365/**
21366 @brief Process set RSSI thresholds Rsp function (called when a
21367 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021368
21369 @param pWDICtx: pointer to the WLAN DAL context
21370 pEventData: pointer to the event information structure
21371
Jeff Johnson295189b2012-06-20 16:38:30 -070021372 @see
21373 @return Result of the function call
21374*/
21375WDI_Status
21376WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021377(
Jeff Johnson295189b2012-06-20 16:38:30 -070021378 WDI_ControlBlockType* pWDICtx,
21379 WDI_EventInfoType* pEventData
21380)
21381{
21382 WDI_Status wdiStatus;
21383 eHalStatus halStatus;
21384 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
21385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21386
21387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021389 -------------------------------------------------------------------------*/
21390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21391 ( NULL == pEventData->pEventData))
21392 {
21393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021397 }
21398
21399 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
21400
21401 /*-------------------------------------------------------------------------
21402 Extract response and send it to UMAC
21403 -------------------------------------------------------------------------*/
21404 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021405 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021406
21407 /*Notify UMAC*/
21408 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
21409
Jeff Johnsone7245742012-09-05 17:12:55 -070021410 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021411}/*WDI_ProcessSetRSSIThresoldsRsp*/
21412
21413/**
21414 @brief Process host offload Rsp function (called when a
21415 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021416
21417 @param pWDICtx: pointer to the WLAN DAL context
21418 pEventData: pointer to the event information structure
21419
Jeff Johnson295189b2012-06-20 16:38:30 -070021420 @see
21421 @return Result of the function call
21422*/
21423WDI_Status
21424WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021425(
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 WDI_ControlBlockType* pWDICtx,
21427 WDI_EventInfoType* pEventData
21428)
21429{
21430 WDI_Status wdiStatus;
21431 eHalStatus halStatus;
21432 WDI_HostOffloadCb wdiHostOffloadCb;
21433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21434
21435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021437 -------------------------------------------------------------------------*/
21438 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21439 ( NULL == pEventData->pEventData))
21440 {
21441 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021442 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021443 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021444 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021445 }
21446
21447 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
21448
21449 /*-------------------------------------------------------------------------
21450 Extract response and send it to UMAC
21451 -------------------------------------------------------------------------*/
21452 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021453 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021454
21455 /*Notify UMAC*/
21456 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
21457
Jeff Johnsone7245742012-09-05 17:12:55 -070021458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021459}/*WDI_ProcessHostOffloadRsp*/
21460
21461/**
21462 @brief Process keep alive Rsp function (called when a
21463 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021464
21465 @param pWDICtx: pointer to the WLAN DAL context
21466 pEventData: pointer to the event information structure
21467
Jeff Johnson295189b2012-06-20 16:38:30 -070021468 @see
21469 @return Result of the function call
21470*/
21471WDI_Status
21472WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021473(
Jeff Johnson295189b2012-06-20 16:38:30 -070021474 WDI_ControlBlockType* pWDICtx,
21475 WDI_EventInfoType* pEventData
21476)
21477{
21478 WDI_Status wdiStatus;
21479 eHalStatus halStatus;
21480 WDI_KeepAliveCb wdiKeepAliveCb;
21481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053021482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
21484
21485
21486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 -------------------------------------------------------------------------*/
21489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21490 ( NULL == pEventData->pEventData))
21491 {
21492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 }
21497
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
21499
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 /*-------------------------------------------------------------------------
21501 Extract response and send it to UMAC
21502 -------------------------------------------------------------------------*/
21503 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021504 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021505
21506 /*Notify UMAC*/
21507 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
21508
Jeff Johnsone7245742012-09-05 17:12:55 -070021509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021510}/*WDI_ProcessKeepAliveRsp*/
21511
21512/**
21513 @brief Process wowl add ptrn Rsp function (called when a
21514 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021515
21516 @param pWDICtx: pointer to the WLAN DAL context
21517 pEventData: pointer to the event information structure
21518
Jeff Johnson295189b2012-06-20 16:38:30 -070021519 @see
21520 @return Result of the function call
21521*/
21522WDI_Status
21523WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021524(
Jeff Johnson295189b2012-06-20 16:38:30 -070021525 WDI_ControlBlockType* pWDICtx,
21526 WDI_EventInfoType* pEventData
21527)
21528{
Jeff Johnson295189b2012-06-20 16:38:30 -070021529 eHalStatus halStatus;
21530 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021531 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
21532 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
21533
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21535
21536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 -------------------------------------------------------------------------*/
21539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21540 ( NULL == pEventData->pEventData))
21541 {
21542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021546 }
21547
21548 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
21549
21550 /*-------------------------------------------------------------------------
21551 Extract response and send it to UMAC
21552 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021553 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21554 {
21555 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
21556 pEventData->pEventData,
21557 sizeof(halAddWowlBcastPtrRsp));
21558
21559 wdiWowlAddBcPtrRsp.wdiStatus =
21560 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
21561 }
21562 else
21563 {
21564 halStatus = *((eHalStatus*)pEventData->pEventData);
21565 wdiWowlAddBcPtrRsp.wdiStatus =
21566 WDI_HAL_2_WDI_STATUS(halStatus);
21567 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021568
21569 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021570 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021571
Jeff Johnsone7245742012-09-05 17:12:55 -070021572 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021573}/*WDI_ProcessWowlAddBcPtrnRsp*/
21574
21575/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021576 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021577 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021578
21579 @param pWDICtx: pointer to the WLAN DAL context
21580 pEventData: pointer to the event information structure
21581
Jeff Johnson295189b2012-06-20 16:38:30 -070021582 @see
21583 @return Result of the function call
21584*/
21585WDI_Status
21586WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021587(
Jeff Johnson295189b2012-06-20 16:38:30 -070021588 WDI_ControlBlockType* pWDICtx,
21589 WDI_EventInfoType* pEventData
21590)
21591{
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 eHalStatus halStatus;
21593 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021594 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
21595 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070021596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21597
21598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021599 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021600 -------------------------------------------------------------------------*/
21601 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21602 ( NULL == pEventData->pEventData))
21603 {
21604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 }
21609
21610 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
21611
21612 /*-------------------------------------------------------------------------
21613 Extract response and send it to UMAC
21614 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021615 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21616 {
21617 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
21618 pEventData->pEventData,
21619 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070021620
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021621 wdiWowlDelBcstPtrRsp.wdiStatus =
21622 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
21623 }
21624 else
21625 {
21626 halStatus = *((eHalStatus*)pEventData->pEventData);
21627 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
21628 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021629 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021630 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021631
Jeff Johnsone7245742012-09-05 17:12:55 -070021632 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021633}/*WDI_ProcessWowlDelBcPtrnRsp*/
21634
21635/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021636 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021637 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021638
21639 @param pWDICtx: pointer to the WLAN DAL context
21640 pEventData: pointer to the event information structure
21641
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 @see
21643 @return Result of the function call
21644*/
21645WDI_Status
21646WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021647(
Jeff Johnson295189b2012-06-20 16:38:30 -070021648 WDI_ControlBlockType* pWDICtx,
21649 WDI_EventInfoType* pEventData
21650)
21651{
Jeff Johnson295189b2012-06-20 16:38:30 -070021652 eHalStatus halStatus;
21653 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021654 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
21655 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21657
21658 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021659 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021660 -------------------------------------------------------------------------*/
21661 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21662 ( NULL == pEventData->pEventData))
21663 {
21664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021665 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021666 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021668 }
21669
21670 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
21671
21672 /*-------------------------------------------------------------------------
21673 Extract response and send it to UMAC
21674 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021675 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21676 {
21677 wpalMemoryCopy( &halEnterWowlRspParams,
21678 (wpt_uint8*)pEventData->pEventData,
21679 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021680
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021681 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
21682 wdiwowlEnterRsp.status =
21683 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
21684 }
21685 else
21686 {
21687 halStatus = *((eHalStatus*)pEventData->pEventData);
21688 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21689 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021690 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021691 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021692
Jeff Johnsone7245742012-09-05 17:12:55 -070021693 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021694}/*WDI_ProcessWowlEnterRsp*/
21695
21696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021697 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021698 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021699
21700 @param pWDICtx: pointer to the WLAN DAL context
21701 pEventData: pointer to the event information structure
21702
Jeff Johnson295189b2012-06-20 16:38:30 -070021703 @see
21704 @return Result of the function call
21705*/
21706WDI_Status
21707WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021708(
Jeff Johnson295189b2012-06-20 16:38:30 -070021709 WDI_ControlBlockType* pWDICtx,
21710 WDI_EventInfoType* pEventData
21711)
21712{
Jeff Johnson295189b2012-06-20 16:38:30 -070021713 eHalStatus halStatus;
21714 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021715 tHalExitWowlRspParams halExitWowlRspParams;
21716 WDI_WowlExitRspParamsType wdiWowlExitRsp;
21717
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21719
21720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021722 -------------------------------------------------------------------------*/
21723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21724 ( NULL == pEventData->pEventData))
21725 {
21726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021730 }
21731
21732 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21733
21734 /*-------------------------------------------------------------------------
21735 Extract response and send it to UMAC
21736 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021737 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21738 {
21739 wpalMemoryCopy( &halExitWowlRspParams,
21740 pEventData->pEventData,
21741 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021742
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021743 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21744 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21745
21746 }
21747 else
21748 {
21749 halStatus = *((eHalStatus*)pEventData->pEventData);
21750 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21751 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021753 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021754
Jeff Johnsone7245742012-09-05 17:12:55 -070021755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021756}/*WDI_ProcessWowlExitRsp*/
21757
21758/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 (called when a response is being received over the bus
21761 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021762
21763 @param pWDICtx: pointer to the WLAN DAL context
21764 pEventData: pointer to the event information structure
21765
Jeff Johnson295189b2012-06-20 16:38:30 -070021766 @see
21767 @return Result of the function call
21768*/
21769WDI_Status
21770WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021771(
Jeff Johnson295189b2012-06-20 16:38:30 -070021772 WDI_ControlBlockType* pWDICtx,
21773 WDI_EventInfoType* pEventData
21774)
21775{
21776 WDI_Status wdiStatus;
21777 eHalStatus halStatus;
21778 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21780
21781 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021782 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021783 -------------------------------------------------------------------------*/
21784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21785 ( NULL == pEventData->pEventData))
21786 {
21787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021788 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021789 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021790 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021791 }
21792
21793 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21794
21795 /*-------------------------------------------------------------------------
21796 Extract response and send it to UMAC
21797 -------------------------------------------------------------------------*/
21798 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021799 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021800
21801 /*Notify UMAC*/
21802 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21803
Jeff Johnsone7245742012-09-05 17:12:55 -070021804 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021805}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21806
21807
21808/**
21809 @brief Process Nv download(called when a response
21810 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021811
21812 @param pWDICtx: pointer to the WLAN DAL context
21813 pEventData: pointer to the event information structure
21814
Jeff Johnson295189b2012-06-20 16:38:30 -070021815 @see
21816 @return Result of the function call
21817*/
21818WDI_Status
21819WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021820(
Jeff Johnson295189b2012-06-20 16:38:30 -070021821 WDI_ControlBlockType* pWDICtx,
21822 WDI_EventInfoType* pEventData
21823)
21824{
21825
21826 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21827 tHalNvImgDownloadRspParams halNvDownloadRsp;
21828 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21829
21830 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021831 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021832 -------------------------------------------------------------------------*/
21833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21834 ( NULL == pEventData->pEventData))
21835 {
21836 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021837 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021838 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021839 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021840 }
21841
21842 /*-------------------------------------------------------------------------
21843 Extract response and send it to UMAC
21844 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021845 wpalMemoryCopy( &halNvDownloadRsp,
21846 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021847 sizeof(halNvDownloadRsp));
21848
21849 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21850
21851 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021852 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21853 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021854 {
21855 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021856 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 }
21858 else
21859 {
21860 /*Reset the Nv related global information in WDI context information */
21861 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21862 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21863 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21864 /*call WDA callback function for last fragment */
21865 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21866 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21867 }
21868
Jeff Johnsone7245742012-09-05 17:12:55 -070021869 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021870}
21871#ifdef WLAN_FEATURE_VOWIFI_11R
21872/**
21873 @brief Process Add TSpec Rsp function (called when a response
21874 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021875
21876 @param pWDICtx: pointer to the WLAN DAL context
21877 pEventData: pointer to the event information structure
21878
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 @see
21880 @return Result of the function call
21881*/
21882WDI_Status
21883WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021884(
Jeff Johnson295189b2012-06-20 16:38:30 -070021885 WDI_ControlBlockType* pWDICtx,
21886 WDI_EventInfoType* pEventData
21887)
21888{
21889 WDI_Status wdiStatus;
21890 tAggrAddTsRspParams aggrAddTsRsp;
21891 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21893
21894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021896 -------------------------------------------------------------------------*/
21897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21898 ( NULL == pEventData->pEventData))
21899 {
21900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 }
21905
21906 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21907
21908 /*-------------------------------------------------------------------------
21909 Extract response and send it to UMAC
21910 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021911 wpalMemoryCopy( &aggrAddTsRsp,
21912 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021913 sizeof(aggrAddTsRsp));
21914
21915 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021916 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021917
21918 /*Notify UMAC*/
21919 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21920
Jeff Johnsone7245742012-09-05 17:12:55 -070021921 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021922}/*WDI_ProcessAddTSpecRsp*/
21923#endif /* WLAN_FEATURE_VOWIFI_11R */
21924
21925/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021926 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021927 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021928
21929 @param pWDICtx: pointer to the WLAN DAL context
21930 pEventData: pointer to the event information structure
21931
Jeff Johnson295189b2012-06-20 16:38:30 -070021932 @see
21933 @return Result of the function call
21934*/
21935WDI_Status
21936WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021937(
Jeff Johnson295189b2012-06-20 16:38:30 -070021938 WDI_ControlBlockType* pWDICtx,
21939 WDI_EventInfoType* pEventData
21940)
21941{
21942 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21943 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21944 tHalHostResumeRspParams hostResumeRspMsg;
21945 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21946
21947 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021948 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021949 -------------------------------------------------------------------------*/
21950 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21951 ( NULL == pEventData->pEventData))
21952 {
21953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021957 }
21958
21959 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21960
21961 /*-------------------------------------------------------------------------
21962 Extract response and send it to UMAC
21963 -------------------------------------------------------------------------*/
21964
Jeff Johnsone7245742012-09-05 17:12:55 -070021965 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021966 (wpt_uint8*)pEventData->pEventData,
21967 sizeof(hostResumeRspMsg));
21968
Jeff Johnsone7245742012-09-05 17:12:55 -070021969 wdiResumeRspParams.wdiStatus =
21970 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021971
21972 /*Notify UMAC*/
21973 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21974
21975 return WDI_STATUS_SUCCESS;
21976}
21977
21978/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021979 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021980 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021981
21982 @param pWDICtx: pointer to the WLAN DAL context
21983 pEventData: pointer to the event information structure
21984
Jeff Johnson295189b2012-06-20 16:38:30 -070021985 @see
21986 @return Result of the function call
21987*/
21988WDI_Status
21989WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021990(
Jeff Johnson295189b2012-06-20 16:38:30 -070021991 WDI_ControlBlockType* pWDICtx,
21992 WDI_EventInfoType* pEventData
21993)
21994{
21995 WDI_Status wdiStatus;
21996 eHalStatus halStatus;
21997 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21998 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21999
22000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 -------------------------------------------------------------------------*/
22003 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22004 ( NULL == pEventData->pEventData))
22005 {
22006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022007 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022008 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022009 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022010 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022011
22012 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022013
22014 /*-------------------------------------------------------------------------
22015 Extract response and send it to UMAC
22016 -------------------------------------------------------------------------*/
22017 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070022018 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022019
22020 /*Notify UMAC*/
22021 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
22022
Jeff Johnsone7245742012-09-05 17:12:55 -070022023 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022024}/*WDI_ProcessSetTxPerTrackingRsp*/
22025
22026/*==========================================================================
22027 Indications from HAL
22028 ==========================================================================*/
22029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022030 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 indication of this kind is being received over the bus
22032 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022033
22034 @param pWDICtx: pointer to the WLAN DAL context
22035 pEventData: pointer to the event information structure
22036
Jeff Johnson295189b2012-06-20 16:38:30 -070022037 @see
22038 @return Result of the function call
22039*/
22040WDI_Status
22041WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022042(
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 WDI_ControlBlockType* pWDICtx,
22044 WDI_EventInfoType* pEventData
22045)
22046{
22047 WDI_LowLevelIndType wdiInd;
22048 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
22049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22050
22051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022053 -------------------------------------------------------------------------*/
22054 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22055 ( NULL == pEventData->pEventData))
22056 {
22057 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022058 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022059 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022060 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022061 }
22062
22063 /*-------------------------------------------------------------------------
22064 Extract indication and send it to UMAC
22065 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022066 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
22067 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022068 sizeof(tHalRSSINotification));
22069
22070 /*Fill in the indication parameters*/
22071 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
22072 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
22073 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
22074 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
22075 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
22076 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
22077 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
22078 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
22079 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
22080 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
22081 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
22082 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
22083 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080022084 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
22085 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070022086
ltimariub77f24b2013-01-24 18:54:33 -080022087 if ( pWDICtx->wdiLowLevelIndCB )
22088 {
22089 /*Notify UMAC of indication*/
22090 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22091 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022092
22093 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022094}/*WDI_ProcessLowRSSIInd*/
22095
22096
22097/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022098 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022099 an indication of this kind is being received over the
22100 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022101
22102 @param pWDICtx: pointer to the WLAN DAL context
22103 pEventData: pointer to the event information structure
22104
Jeff Johnson295189b2012-06-20 16:38:30 -070022105 @see
22106 @return Result of the function call
22107*/
22108WDI_Status
22109WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022110(
Jeff Johnson295189b2012-06-20 16:38:30 -070022111 WDI_ControlBlockType* pWDICtx,
22112 WDI_EventInfoType* pEventData
22113)
22114{
Jeff Johnson295189b2012-06-20 16:38:30 -070022115 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080022116 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22118
22119 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022120 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022121 -------------------------------------------------------------------------*/
22122 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22123 ( NULL == pEventData->pEventData))
22124 {
22125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022128 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022129 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080022130 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022131 /*-------------------------------------------------------------------------
22132 Extract indication and send it to UMAC
22133 -------------------------------------------------------------------------*/
22134 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022135
22136 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022137 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080022138 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
22139 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080022140 if ( pWDICtx->wdiLowLevelIndCB )
22141 {
22142 /*Notify UMAC*/
22143 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22144 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022145
22146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022147}/*WDI_ProcessMissedBeaconInd*/
22148
22149
22150/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022151 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022152 an indication of this kind is being received over the
22153 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022154
22155 @param pWDICtx: pointer to the WLAN DAL context
22156 pEventData: pointer to the event information structure
22157
Jeff Johnson295189b2012-06-20 16:38:30 -070022158 @see
22159 @return Result of the function call
22160*/
22161WDI_Status
22162WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022163(
Jeff Johnson295189b2012-06-20 16:38:30 -070022164 WDI_ControlBlockType* pWDICtx,
22165 WDI_EventInfoType* pEventData
22166)
22167{
22168 WDI_Status wdiStatus;
22169 eHalStatus halStatus;
22170 WDI_LowLevelIndType wdiInd;
22171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22172
22173 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022174 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022175 -------------------------------------------------------------------------*/
22176 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22177 ( NULL == pEventData->pEventData))
22178 {
22179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022182 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022183 }
22184
22185 /*-------------------------------------------------------------------------
22186 Extract indication and send it to UMAC
22187 -------------------------------------------------------------------------*/
22188 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
22189 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070022190 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022191
22192 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022194 /* ! TO DO - fill in from HAL struct:
22195 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
22196
ltimariub77f24b2013-01-24 18:54:33 -080022197 if ( pWDICtx->wdiLowLevelIndCB )
22198 {
22199 /*Notify UMAC*/
22200 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22201 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022202
22203 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022204}/*WDI_ProcessUnkAddrFrameInd*/
22205
22206
22207/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022208 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070022209 indication of this kind is being received over the bus
22210 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022211
22212 @param pWDICtx: pointer to the WLAN DAL context
22213 pEventData: pointer to the event information structure
22214
Jeff Johnson295189b2012-06-20 16:38:30 -070022215 @see
22216 @return Result of the function call
22217*/
22218WDI_Status
22219WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022220(
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 WDI_ControlBlockType* pWDICtx,
22222 WDI_EventInfoType* pEventData
22223)
22224{
22225 WDI_LowLevelIndType wdiInd;
22226 tpSirMicFailureInd pHalMicFailureInd;
22227
22228 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22229
22230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022231 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022232 -------------------------------------------------------------------------*/
22233 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22234 ( NULL == pEventData->pEventData))
22235 {
22236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022237 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022238 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022241
Jeff Johnson295189b2012-06-20 16:38:30 -070022242 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
22243 /*-------------------------------------------------------------------------
22244 Extract indication and send it to UMAC
22245 -------------------------------------------------------------------------*/
22246
22247 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022248 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022249 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
22250 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
22251 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
22252 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
22253 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
22254 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
22255 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
22256 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022257 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070022262 pHalMicFailureInd->info.keyId;
22263 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
22264 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
22265 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
22266 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080022267
22268 if ( pWDICtx->wdiLowLevelIndCB )
22269 {
22270 /*Notify UMAC*/
22271 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22272 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022273
22274 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022275}/*WDI_ProcessMicFailureInd*/
22276
22277
22278/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022279 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022280 an indication of this kind is being received over the
22281 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022282
22283 @param pWDICtx: pointer to the WLAN DAL context
22284 pEventData: pointer to the event information structure
22285
Jeff Johnson295189b2012-06-20 16:38:30 -070022286 @see
22287 @return Result of the function call
22288*/
22289WDI_Status
22290WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022291(
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 WDI_ControlBlockType* pWDICtx,
22293 WDI_EventInfoType* pEventData
22294)
22295{
22296 WDI_Status wdiStatus;
22297 eHalStatus halStatus;
22298 WDI_LowLevelIndType wdiInd;
22299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22300
22301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022303 -------------------------------------------------------------------------*/
22304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22305 ( NULL == pEventData->pEventData))
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 Johnson295189b2012-06-20 16:38:30 -070022309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022311 }
22312
22313 /*-------------------------------------------------------------------------
22314 Extract indication and send it to UMAC
22315 -------------------------------------------------------------------------*/
22316
22317 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
22318 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022320
22321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22322 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070022323
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022325 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22326 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022327
ltimariub77f24b2013-01-24 18:54:33 -080022328 if ( pWDICtx->wdiLowLevelIndCB )
22329 {
22330 /*Notify UMAC*/
22331 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22332 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022333
22334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022335}/*WDI_ProcessFatalErrorInd*/
22336
22337/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022338 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022339 an indication of this kind is being received over the
22340 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022341
22342 @param pWDICtx: pointer to the WLAN DAL context
22343 pEventData: pointer to the event information structure
22344
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 @see
22346 @return Result of the function call
22347*/
22348WDI_Status
22349WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022350(
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 WDI_ControlBlockType* pWDICtx,
22352 WDI_EventInfoType* pEventData
22353)
22354{
22355 tDeleteStaContextParams halDelSTACtx;
22356 WDI_LowLevelIndType wdiInd;
22357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22358
22359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022361 -------------------------------------------------------------------------*/
22362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22363 ( NULL == pEventData->pEventData))
22364 {
22365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 }
22370
22371 /*-------------------------------------------------------------------------
22372 Extract indication and send it to UMAC
22373 -------------------------------------------------------------------------*/
22374
22375 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022376 wpalMemoryCopy( &halDelSTACtx,
22377 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 sizeof(halDelSTACtx));
22379
22380 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022382
22383 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
22384 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
22385 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
22386 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
22387
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022389 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070022390 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070022392 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
22393 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022394
ltimariub77f24b2013-01-24 18:54:33 -080022395 if ( pWDICtx->wdiLowLevelIndCB )
22396 {
22397 /*Notify UMAC*/
22398 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22399 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022400
22401 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022402}/*WDI_ProcessDelSTAInd*/
22403
22404/**
22405*@brief Process Coex Indication function (called when
22406 an indication of this kind is being received over the
22407 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022408
22409 @param pWDICtx: pointer to the WLAN DAL context
22410 pEventData: pointer to the event information structure
22411
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 @see
22413 @return Result of the function call
22414*/
22415WDI_Status
22416WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022417(
Jeff Johnson295189b2012-06-20 16:38:30 -070022418 WDI_ControlBlockType* pWDICtx,
22419 WDI_EventInfoType* pEventData
22420)
22421{
22422 WDI_LowLevelIndType wdiInd;
22423 tCoexIndMsg halCoexIndMsg;
22424 wpt_uint32 index;
22425 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22426
22427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 -------------------------------------------------------------------------*/
22430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22431 ( NULL == pEventData->pEventData ))
22432 {
22433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437 }
22438
22439 /*-------------------------------------------------------------------------
22440 Extract indication and send it to UMAC
22441 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022442 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
22443 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 sizeof(halCoexIndMsg.coexIndParams) );
22445
22446 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022447 wdiInd.wdiIndicationType = WDI_COEX_IND;
22448 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
22450 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022451 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 }
22453
22454 // DEBUG
22455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22456 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070022457 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
22458 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
22459 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
22460 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
22461 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070022462
ltimariub77f24b2013-01-24 18:54:33 -080022463 if ( pWDICtx->wdiLowLevelIndCB )
22464 {
22465 /*Notify UMAC*/
22466 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22467 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022468
22469 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022470}/*WDI_ProcessCoexInd*/
22471
22472/**
22473*@brief Process Tx Complete Indication function (called when
22474 an indication of this kind is being received over the
22475 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022476
22477 @param pWDICtx: pointer to the WLAN DAL context
22478 pEventData: pointer to the event information structure
22479
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 @see
22481 @return Result of the function call
22482*/
22483WDI_Status
22484WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022485(
Jeff Johnson295189b2012-06-20 16:38:30 -070022486 WDI_ControlBlockType* pWDICtx,
22487 WDI_EventInfoType* pEventData
22488)
22489{
22490 WDI_LowLevelIndType wdiInd;
22491 tTxComplIndMsg halTxComplIndMsg;
22492 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22493
22494 /*-------------------------------------------------------------------------
22495 Sanity check
22496 -------------------------------------------------------------------------*/
22497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22498 ( NULL == pEventData->pEventData ))
22499 {
22500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022501 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 WDI_ASSERT( 0 );
22503 return WDI_STATUS_E_FAILURE;
22504 }
22505
22506 /*-------------------------------------------------------------------------
22507 Extract indication and send it to UMAC
22508 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022509 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
22510 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022511 sizeof(halTxComplIndMsg.txComplParams) );
22512
22513 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022514 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053022515
22516 wpalMemoryCopy( &wdiInd.wdiIndicationData,
22517 &halTxComplIndMsg.txComplParams,
22518 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022519
ltimariub77f24b2013-01-24 18:54:33 -080022520 if ( pWDICtx->wdiLowLevelIndCB )
22521 {
22522 /*Notify UMAC*/
22523 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22524 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022525
22526 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022527}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022528#ifdef FEATURE_WLAN_TDLS
22529/**
22530*@brief Process TDLS Indication function (called when
22531 an indication of this kind is being received over the
22532 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070022533
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022534 @param pWDICtx: pointer to the WLAN DAL context
22535 pEventData: pointer to the event information structure
22536
22537 @see
22538 @return Result of the function call
22539*/
22540WDI_Status
22541WDI_ProcessTdlsInd
22542(
22543 WDI_ControlBlockType* pWDICtx,
22544 WDI_EventInfoType* pEventData
22545)
22546{
22547 WDI_LowLevelIndType wdiInd;
22548 tTdlsIndMsg halTdlsIndMsg;
22549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22550
22551 /*-------------------------------------------------------------------------
22552 Sanity check
22553 -------------------------------------------------------------------------*/
22554 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22555 ( NULL == pEventData->pEventData ))
22556 {
22557 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22558 "%s: Invalid parameters", __func__);
22559 WDI_ASSERT( 0 );
22560 return WDI_STATUS_E_FAILURE;
22561 }
22562
22563 /*-------------------------------------------------------------------------
22564 Extract indication and send it to UMAC
22565 -------------------------------------------------------------------------*/
22566 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
22567 pEventData->pEventData,
22568 sizeof(halTdlsIndMsg.tdlsIndParams) );
22569
22570 /*Fill in the indication parameters*/
22571 wdiInd.wdiIndicationType = WDI_TDLS_IND;
22572
22573 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
22574 = halTdlsIndMsg.tdlsIndParams.status;
22575
22576 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
22577 = halTdlsIndMsg.tdlsIndParams.staIdx;
22578
22579 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
22580 = halTdlsIndMsg.tdlsIndParams.reasonCode;
22581
Atul Mittalbb2aad02014-09-22 19:09:36 +053022582 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
22583 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022584 /*Notify UMAC*/
22585 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22586
22587 return WDI_STATUS_SUCCESS;
22588}/*WDI_ProcessTdlsInd*/
22589#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +053022590
22591#ifdef WLAN_FEATURE_RMC
22592/**
22593*@brief Process Tx Fail Indication
22594
22595 @param pWDICtx: pointer to the WLAN DAL context
22596 pEventData: pointer to the event information structure
22597
22598 @see
22599 @return Result of the function call
22600*/
22601WDI_Status
22602WDI_ProcessTXFailInd
22603(
22604 WDI_ControlBlockType* pWDICtx,
22605 WDI_EventInfoType* pEventData
22606)
22607{
22608 WDI_LowLevelIndType wdiInd;
22609 tHalTXFailIndMsg halTXFailIndMsg;
22610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22611
22612 /*-------------------------------------------------------------------------
22613 Sanity check
22614 -------------------------------------------------------------------------*/
22615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22616 ( NULL == pEventData->pEventData ))
22617 {
22618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22619 "%s: Invalid parameters", __func__);
22620 WDI_ASSERT( 0 );
22621 return WDI_STATUS_E_FAILURE;
22622 }
22623 /*-------------------------------------------------------------------------
22624 Extract indication and send it to UMAC
22625 -------------------------------------------------------------------------*/
22626 wpalMemoryCopy( &halTXFailIndMsg.txFailIndParams,
22627 pEventData->pEventData,
22628 sizeof(halTXFailIndMsg.txFailIndParams) );
22629
22630 /*Fill in the indication parameters*/
22631 wdiInd.wdiIndicationType = WDI_TX_FAIL_IND;
22632
22633 wdiInd.wdiIndicationData.wdiTXFailInd.seqNo
22634 = halTXFailIndMsg.txFailIndParams.seqNo;
22635
22636 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiTXFailInd.macAddr,
22637 halTXFailIndMsg.txFailIndParams.macAddr,
22638 sizeof(wdiInd.wdiIndicationData.wdiTXFailInd.macAddr));
22639
22640 /*Notify UMAC*/
22641 if (pWDICtx->wdiLowLevelIndCB)
22642 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22643
22644 return WDI_STATUS_SUCCESS;
22645}
22646#endif /* WLAN_FEATURE_RMC */
22647
Jeff Johnson295189b2012-06-20 16:38:30 -070022648/**
Viral Modid86bde22012-12-10 13:09:21 -080022649*@brief Process Noa Start Indication function (called when
22650 an indication of this kind is being received over the
22651 bus from HAL)
22652
22653 @param pWDICtx: pointer to the WLAN DAL context
22654 pEventData: pointer to the event information structure
22655
22656 @see
22657 @return Result of the function call
22658*/
22659WDI_Status
22660WDI_ProcessP2pNoaStartInd
22661(
22662 WDI_ControlBlockType* pWDICtx,
22663 WDI_EventInfoType* pEventData
22664)
22665{
22666 WDI_LowLevelIndType wdiInd;
22667 tNoaStartIndMsg halNoaStartIndMsg;
22668 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22669
22670 /*-------------------------------------------------------------------------
22671 Sanity check
22672 -------------------------------------------------------------------------*/
22673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22674 ( NULL == pEventData->pEventData ))
22675 {
22676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22677 "%s: Invalid parameters", __func__);
22678 WDI_ASSERT( 0 );
22679 return WDI_STATUS_E_FAILURE;
22680 }
22681
22682 /*-------------------------------------------------------------------------
22683 Extract indication and send it to UMAC
22684 -------------------------------------------------------------------------*/
22685 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
22686 pEventData->pEventData,
22687 sizeof(halNoaStartIndMsg.noaStartIndParams) );
22688
22689 /*Fill in the indication parameters*/
22690 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
22691
22692 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
22693 = halNoaStartIndMsg.noaStartIndParams.status;
22694
22695 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
22696 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
22697
22698 /*Notify UMAC*/
22699 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22700
22701 return WDI_STATUS_SUCCESS;
22702}/*WDI_ProcessNoaAttrInd*/
22703
22704/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022705*@brief Process Noa Attr Indication function (called when
22706 an indication of this kind is being received over the
22707 bus from HAL)
22708
22709 @param pWDICtx: pointer to the WLAN DAL context
22710 pEventData: pointer to the event information structure
22711
22712 @see
22713 @return Result of the function call
22714*/
22715WDI_Status
22716WDI_ProcessP2pNoaAttrInd
22717(
22718 WDI_ControlBlockType* pWDICtx,
22719 WDI_EventInfoType* pEventData
22720)
22721{
22722 WDI_LowLevelIndType wdiInd;
22723 tNoaAttrIndMsg halNoaAttrIndMsg;
22724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22725
22726 /*-------------------------------------------------------------------------
22727 Sanity check
22728 -------------------------------------------------------------------------*/
22729 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22730 ( NULL == pEventData->pEventData ))
22731 {
22732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022734 WDI_ASSERT( 0 );
22735 return WDI_STATUS_E_FAILURE;
22736 }
22737
22738 /*-------------------------------------------------------------------------
22739 Extract indication and send it to UMAC
22740 -------------------------------------------------------------------------*/
22741 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
22742 pEventData->pEventData,
22743 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
22744
22745 /*Fill in the indication parameters*/
22746 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070022747
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
22749 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070022750
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
22752 = halNoaAttrIndMsg.noaAttrIndParams.index;
22753 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
22754 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
22755 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
22756 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070022757
Jeff Johnson295189b2012-06-20 16:38:30 -070022758 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
22759 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
22760 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
22761 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
22762 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
22763 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
22764 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
22765 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070022766
Jeff Johnson295189b2012-06-20 16:38:30 -070022767 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
22768 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
22769 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
22770 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
22771 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
22772 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22773 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22774 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22775
ltimariub77f24b2013-01-24 18:54:33 -080022776 if ( pWDICtx->wdiLowLevelIndCB )
22777 {
22778 /*Notify UMAC*/
22779 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22780 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022781
22782 return WDI_STATUS_SUCCESS;
22783}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022784
22785/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022786 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 an indication of this kind is being received over the
22788 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022789
22790 @param pWDICtx: pointer to the WLAN DAL context
22791 pEventData: pointer to the event information structure
22792
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 @see
22794 @return Result of the function call
22795*/
22796WDI_Status
22797WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022798(
Jeff Johnson295189b2012-06-20 16:38:30 -070022799 WDI_ControlBlockType* pWDICtx,
22800 WDI_EventInfoType* pEventData
22801)
22802{
22803 WDI_LowLevelIndType wdiInd;
22804 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022805
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 /*-------------------------------------------------------------------------
22807 Extract indication and send it to UMAC
22808 -------------------------------------------------------------------------*/
22809 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022810 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22811
ltimariub77f24b2013-01-24 18:54:33 -080022812 if ( pWDICtx->wdiLowLevelIndCB )
22813 {
22814 /*Notify UMAC*/
22815 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22816 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022817
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022819}/*WDI_ProcessTxPerHitInd*/
22820
Jeff Johnson295189b2012-06-20 16:38:30 -070022821/**
Yue Mab9c86f42013-08-14 15:59:08 -070022822 @brief Process Periodic Tx Pattern Fw Indication function
22823
22824 @param pWDICtx: pointer to the WLAN DAL context
22825 pEventData: pointer to the event information structure
22826
22827 @see
22828 @return Result of the function call
22829*/
22830WDI_Status
22831WDI_ProcessPeriodicTxPtrnFwInd
22832(
22833 WDI_ControlBlockType* pWDICtx,
22834 WDI_EventInfoType* pEventData
22835)
22836{
22837 WDI_LowLevelIndType wdiInd;
22838
22839 /*-------------------------------------------------------------------------
22840 Sanity check
22841 -------------------------------------------------------------------------*/
22842 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22843 (NULL == pEventData->pEventData))
22844 {
22845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22846 "%s: Invalid parameters", __func__);
22847 WDI_ASSERT(0);
22848 return WDI_STATUS_E_FAILURE;
22849 }
22850
22851 /*-------------------------------------------------------------------------
22852 Extract indication and send it to UMAC
22853 -------------------------------------------------------------------------*/
22854 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22855 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22856 sizeof(tHalPeriodicTxPtrnFwInd));
22857
22858 if (pWDICtx->wdiLowLevelIndCB)
22859 {
22860 /*Notify UMAC*/
22861 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22862 }
22863
22864 return WDI_STATUS_SUCCESS;
22865}
22866
22867/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022868 @brief WDI_ProcessFTMCommandReq
22869 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022870
22871 @param pWDICtx: pointer to the WLAN DAL context
22872 pEventData: pointer to the event information structure
22873
Jeff Johnson295189b2012-06-20 16:38:30 -070022874 @see
22875 @return Result of the function call
22876*/
22877WDI_Status
22878WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022879(
Jeff Johnson295189b2012-06-20 16:38:30 -070022880 WDI_ControlBlockType* pWDICtx,
22881 WDI_EventInfoType* pEventData
22882)
22883{
22884 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22885 wpt_uint8 *ftmCommandBuffer = NULL;
22886 wpt_uint16 dataOffset;
22887 wpt_uint16 bufferSize;
22888 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022889 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022890 -------------------------------------------------------------------------*/
22891 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22892 ( NULL == pEventData->pEventData))
22893
22894 {
22895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022896 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022899 }
22900
22901 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22902
22903 /* Get MSG Buffer */
22904 WDI_GetMessageBuffer(pWDICtx,
22905 WDI_FTM_CMD_REQ,
22906 ftmCommandReq->bodyLength,
22907 &ftmCommandBuffer,
22908 &dataOffset,
22909 &bufferSize);
22910
22911 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22912 ftmCommandReq->FTMCommandBody,
22913 ftmCommandReq->bodyLength);
22914
22915 /* Send MSG */
22916 return WDI_SendMsg(pWDICtx,
22917 ftmCommandBuffer,
22918 bufferSize,
22919 pEventData->pCBfnc,
22920 pEventData->pUserData,
22921 WDI_FTM_CMD_RESP);
22922}
22923
22924/**
22925 @brief WDI_ProcessFTMCommandRsp
22926 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022927
22928 @param pWDICtx: pointer to the WLAN DAL context
22929 pEventData: pointer to the event information structure
22930
Jeff Johnson295189b2012-06-20 16:38:30 -070022931 @see
22932 @return Result of the function call
22933*/
22934WDI_Status
22935WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022936(
Jeff Johnson295189b2012-06-20 16:38:30 -070022937 WDI_ControlBlockType* pWDICtx,
22938 WDI_EventInfoType* pEventData
22939)
22940{
22941 WDI_FTMCommandRspCb ftmCMDRspCb;
22942 tProcessPttRspParams *ftmCMDRspData = NULL;
22943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22944
22945 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022946 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022947 -------------------------------------------------------------------------*/
22948 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22949 ( NULL == pEventData->pEventData))
22950 {
22951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022955 }
22956
22957 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22958
22959 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22960
Jeff Johnsone7245742012-09-05 17:12:55 -070022961 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22962 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22964
22965 /*Notify UMAC*/
22966 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22967
Jeff Johnsone7245742012-09-05 17:12:55 -070022968 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022969}
Jeff Johnson295189b2012-06-20 16:38:30 -070022970/**
22971 @brief WDI_ProcessHalDumpCmdReq
22972 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022973
22974 @param pWDICtx: pointer to the WLAN DAL context
22975 pEventData: pointer to the event information structure
22976
Jeff Johnson295189b2012-06-20 16:38:30 -070022977 @see
22978 @return Result of the function call
22979*/
22980WDI_Status
22981WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022982(
Jeff Johnson295189b2012-06-20 16:38:30 -070022983 WDI_ControlBlockType* pWDICtx,
22984 WDI_EventInfoType* pEventData
22985)
22986{
22987 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22988 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22989 wpt_uint16 usDataOffset = 0;
22990 wpt_uint16 usSendSize = 0;
22991 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022993
22994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 -------------------------------------------------------------------------*/
22997 if (( NULL == pEventData ) ||
22998 ( NULL == pEventData->pEventData) ||
22999 ( NULL == pEventData->pCBfnc ))
23000 {
23001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023002 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023003 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023004 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023005 }
23006
23007 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
23008 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
23009
23010 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023011 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023012 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070023013 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023014 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070023015 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070023017 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023018 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070023019 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023020 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070023021
Jeff Johnson295189b2012-06-20 16:38:30 -070023022 /*-----------------------------------------------------------------------
23023 Get message buffer
23024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023026 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
23027 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
23030 {
23031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070023032 "Unable to get send buffer in HAL Dump Command req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
23034 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023035 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 }
23037
Jeff Johnsone7245742012-09-05 17:12:55 -070023038 wpalMemoryCopy( pSendBuffer+usDataOffset,
23039 &halDumpCmdReqMsg.dumpCmdReqParams,
23040 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070023041
23042 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023043 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023044
23045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023046 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023047 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023048 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23049 wdiHALDumpCmdRspCb, pEventData->pUserData,
23050 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023051}
23052
23053/**
23054 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023055 Process hal Dump Command Response from HAL, simply route to HDD
23056
23057 @param pWDICtx: pointer to the WLAN DAL context
23058 pEventData: pointer to the event information structure
23059
Jeff Johnson295189b2012-06-20 16:38:30 -070023060 @see
23061 @return Result of the function call
23062*/
23063WDI_Status
23064WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023065(
Jeff Johnson295189b2012-06-20 16:38:30 -070023066 WDI_ControlBlockType* pWDICtx,
23067 WDI_EventInfoType* pEventData
23068)
23069{
23070 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023071 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
23073
23074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023075 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023076 -------------------------------------------------------------------------*/
23077 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23078 ( NULL == pEventData->pEventData))
23079 {
23080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023081 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023082 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023083 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023084 }
23085
Sravan Kumar Kairamd400d962017-12-13 12:29:48 +053023086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23087 "%s: WDI process HAL dump cmd rsp", __func__);
23088
Jeff Johnsone7245742012-09-05 17:12:55 -070023089 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023090
23091 /*Initialize the WDI Response structure */
23092 wdiHALDumpCmdRsp.usBufferLen = 0;
23093 wdiHALDumpCmdRsp.pBuffer = NULL;
23094
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023095 wpalMemoryCopy( &halDumpCmdRspParams,
23096 pEventData->pEventData,
23097 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070023098
23099 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023100 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070023101
23102 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023103 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070023104 {
23105 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023106 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
23107 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
23108
23109 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
23110 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053023111 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023112 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023113
Jeff Johnson295189b2012-06-20 16:38:30 -070023114 /*Notify UMAC*/
23115 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
23116
23117 if(wdiHALDumpCmdRsp.pBuffer != NULL)
23118 {
23119 /* Free the allocated buffer */
23120 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
23121 }
23122 return WDI_STATUS_SUCCESS;
23123}
23124
23125/*==========================================================================
23126 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070023127
Jeff Johnson295189b2012-06-20 16:38:30 -070023128 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070023129 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070023130==========================================================================*/
23131/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023132 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070023133 when it wishes to send up a notification like the ones
23134 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070023135
Jeff Johnson295189b2012-06-20 16:38:30 -070023136 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070023137
23138 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 wctsNotifyCBData: the callback data of the user
23141
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070023143
23144 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023145*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023146void
Jeff Johnson295189b2012-06-20 16:38:30 -070023147WDI_NotifyMsgCTSCB
23148(
Jeff Johnsone7245742012-09-05 17:12:55 -070023149 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070023150 WCTS_NotifyEventType wctsEvent,
23151 void* wctsNotifyCBData
23152)
23153{
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23156
23157 if (NULL == pWDICtx )
23158 {
23159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023162 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023163 }
23164
23165 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
23166 {
23167 /* callback presumably occurred after close */
23168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023169 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023170 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023171 }
23172
23173 if ( WCTS_EVENT_OPEN == wctsEvent )
23174 {
23175 /*Flag must be set atomically as it is checked from incoming request
23176 functions*/
23177 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070023178 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023179
23180 /*Nothing to do - so try to dequeue any pending request that may have
23181 occurred while we were trying to establish this*/
23182 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070023183 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023184 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070023186 {
23187 /*Flag must be set atomically as it is checked from incoming request
23188 functions*/
23189 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070023190 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023191
23192 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023193 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070023194 wpalMutexRelease(&pWDICtx->wptMutex);
23195
23196 /*Notify that the Control Channel is closed */
23197 wpalEventSet(&pWDICtx->wctsActionEvent);
23198 }
23199
23200}/*WDI_NotifyMsgCTSCB*/
23201
23202
23203/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023204 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070023205 when it wishes to send up a packet received over the
23206 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070023207
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070023209
23210 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070023211 pMsg: the packet
23212 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070023213 wctsRxMsgCBData: the callback data of the user
23214
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070023216
23217 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023218*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023219void
23220WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070023221(
Jeff Johnsone7245742012-09-05 17:12:55 -070023222 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070023223 void* pMsg,
23224 wpt_uint32 uLen,
23225 void* wctsRxMsgCBData
23226)
23227{
Jeff Johnsone7245742012-09-05 17:12:55 -070023228 tHalMsgHeader *pHalMsgHeader;
23229 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
23231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23232
23233 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023235 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023236 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070023237 ( uLen < sizeof(tHalMsgHeader)))
23238 {
23239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023242 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023243 }
23244
23245 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
23246 {
23247 /* callback presumably occurred after close */
23248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023249 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023250 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023251 }
23252
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070023254 context - so no serialization is necessary here
23255 ! - revisit this assumption */
23256
23257 pHalMsgHeader = (tHalMsgHeader *)pMsg;
23258
23259 if ( uLen != pHalMsgHeader->msgLen )
23260 {
23261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23262 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070023263 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Anurag Chouhanf0d0ba12018-02-09 15:13:43 +053023264 wpalWlanReload(VOS_WDI_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053023265
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 }
23268
23269 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
Arunk Khandavalliaf6c3af2017-01-16 11:44:46 +053023270 vos_log_wdi_event(wdiEventData.wdiResponse, VOS_WDI_READ);
Jeff Johnson295189b2012-06-20 16:38:30 -070023271
23272 /*The message itself starts after the header*/
23273 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
23274 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
23275 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
23276 wdiEventData.pUserData = gWDICb.pRspCBUserData;
23277
23278
23279 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
23280 {
23281 /*Stop the timer as the response was received */
23282 /*!UT - check for potential race conditions between stop and response */
23283 wpalTimerStop(&pWDICtx->wptResponseTimer);
23284 }
23285 /* Check if we receive a response message which is not expected */
23286 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
23287 {
23288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23289 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
23290 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
23293 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080023294
23295 if (gWDICb.bEnableSSR == false)
23296 {
23297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23298 "SSR is not enabled on WDI timeout");
23299 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23300 return;
23301 }
23302 wpalWcnssResetIntr();
23303 /* if this timer fires, it means Riva did not receive the FIQ */
23304 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
23305
Jeff Johnson295189b2012-06-20 16:38:30 -070023306 return;
23307 }
23308
23309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23310 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
23311
23312 /*Post response event to the state machine*/
23313 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
23314
23315}/*WDI_RXMsgCTSCB*/
23316
23317
23318/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070023320========================================================================*/
23321
23322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023323 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070023324 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070023325
Jeff Johnson295189b2012-06-20 16:38:30 -070023326 @param pWDICtx - pointer to the control block
23327
23328 @return Result of the function call
23329*/
23330WPT_INLINE WDI_Status
23331WDI_CleanCB
23332(
23333 WDI_ControlBlockType* pWDICtx
23334)
23335{
23336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23337
23338 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070023340
Jeff Johnsone7245742012-09-05 17:12:55 -070023341 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
23343 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
23344
23345 WDI_ResetAssocSessions( pWDICtx );
23346
23347 return WDI_STATUS_SUCCESS;
23348}/*WDI_CleanCB*/
23349
23350
23351/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023352 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023353
Jeff Johnsone7245742012-09-05 17:12:55 -070023354
23355 @param pWDICtx: pointer to the WLAN DAL context
23356 pEventData: pointer to the event information structure
23357
Jeff Johnson295189b2012-06-20 16:38:30 -070023358 @see
23359 @return Result of the function call
23360*/
23361WPT_INLINE WDI_Status
23362WDI_ProcessRequest
23363(
23364 WDI_ControlBlockType* pWDICtx,
23365 WDI_EventInfoType* pEventData
23366)
23367{
23368 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23369
Jeff Johnsone7245742012-09-05 17:12:55 -070023370 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070023371 already checked these pointers*/
23372
23373 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
23374 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023375 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070023377 "Calling request processing function for req %s (%d) %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 WDI_getReqMsgString(pEventData->wdiRequest),
23379 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
23380 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
23381 }
23382 else
23383 {
23384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023385 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023386 pEventData->wdiRequest);
23387 return WDI_STATUS_E_NOT_IMPLEMENT;
23388 }
23389}/*WDI_ProcessRequest*/
23390
23391
23392/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023393 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070023394 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070023395 prefixes it with a send message header
23396
23397 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023398 wdiReqType: type of the request being sent
23399 uBufferLen: message buffer len
23400 pMsgBuffer: resulting allocated buffer
23401 pusDataOffset: offset in the buffer where the caller
23402 can start copying its message data
23403 puBufferSize: the resulting buffer size (offset+buff
23404 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070023405
Jeff Johnson295189b2012-06-20 16:38:30 -070023406 @see
23407 @return Result of the function call
23408*/
23409WDI_Status
23410WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023411(
23412 WDI_ControlBlockType* pWDICtx,
23413 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070023414 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070023415 wpt_uint8** pMsgBuffer,
23416 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 wpt_uint16* pusBufferSize
23418)
23419{
23420 tHalMsgHeader halMsgHeader;
23421 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23422
Jeff Johnsone7245742012-09-05 17:12:55 -070023423 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070023424 again*/
23425
23426 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023427 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023429 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070023430 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
23431 if ( NULL == *pMsgBuffer )
23432 {
23433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23434 "Unable to allocate message buffer for req %s (%d)",
23435 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023437 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023438 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023439 }
23440
23441 /*-------------------------------------------------------------------------
23442 Fill in the message header
23443 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023444 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
23445 /* Fill msgVersion */
23446#ifdef WLAN_FEATURE_11AC
23447 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023448 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070023449 else
23450#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023451 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023452
Jeff Johnsone7245742012-09-05 17:12:55 -070023453 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
23454 *pusDataOffset = sizeof(halMsgHeader);
Kapil Guptab3a981b2016-06-26 13:36:51 +053023455
Jeff Johnsone7245742012-09-05 17:12:55 -070023456 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
23457
23458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023459}/*WDI_GetMessageBuffer*/
23460
23461
23462/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023463 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070023464 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070023465 the CB
23466
23467 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070023469
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 usSendSize size of the buffer to be sent
23471 pRspCb: response callback - save in the WDI
23472 CB
23473 pUserData: user data associated with the
23474 callback
23475 wdiExpectedResponse: the code of the response that is
23476 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070023477
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 @see
23479 @return Result of the function call
23480*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023481WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023482WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070023483(
23484 WDI_ControlBlockType* pWDICtx,
23485 wpt_uint8* pSendBuffer,
23486 wpt_uint32 usSendSize,
23487 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070023488 void* pUserData,
23489 WDI_ResponseEnumType wdiExpectedResponse
23490)
23491{
Jeff Johnsond13512a2012-07-17 11:42:19 -070023492 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023493 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23495
23496 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023497 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070023498 ------------------------------------------------------------------------*/
23499 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023500 pWDICtx->pfncRspCB = pRspCb;
23501 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023502
23503 /*-----------------------------------------------------------------------
23504 Call the CTS to send this message over - free message afterwards
23505 - notify transport failure
23506 Note: CTS is reponsible for freeing the message buffer.
23507 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023508 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
23509 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
23510 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070023511 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070023512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053023513 "Failed to send message with expected response %s (%d)"
23514 " over the bus - catastrophic failure",
23515 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
23516 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070023517
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053023518 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
23519 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023521 else
23522 {
23523 /* even when message was placed in CTS deferred Q, we will treat it
23524 success but log this info
23525 */
23526 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
23527 {
23528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23529 "WDI_SendMsg: message placed in CTS deferred Q, expected "
23530 "response %s (%d)",
23531 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
23532 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080023533 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023534 }
23535 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023536
Jeff Johnsond13512a2012-07-17 11:42:19 -070023537 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070023538 if ( NULL != pWDICtx->wdiReqStatusCB )
23539 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070023540 /*Inform originator whether request went through or not*/
23541 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
23542 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023543 pWDICtx->wdiReqStatusCB = NULL;
23544 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070023545 callback(wdiStatus, callbackContext);
23546
23547 /*For WDI requests which have registered a request callback,
23548 inform the WDA caller of the same via setting the return value
23549 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
23550 end up repeating the functonality in the req callback for the
23551 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053023552 if (wdiStatus != WDI_STATUS_SUCCESS)
23553 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070023554 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053023555 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023556 }
23557
Jeff Johnsond13512a2012-07-17 11:42:19 -070023558 if ( wdiStatus == WDI_STATUS_SUCCESS )
23559 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023560 /*Start timer for the expected response */
23561 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023562
23563 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080023564 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080023565 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070023566 }
23567 else
23568 {
Jeff Johnson902c9832012-12-10 14:28:09 -080023569 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070023570 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
23571 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023572
Jeff Johnsond13512a2012-07-17 11:42:19 -070023573 return wdiStatus;
23574
Jeff Johnson295189b2012-06-20 16:38:30 -070023575}/*WDI_SendMsg*/
23576
23577
23578
23579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023580 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070023581 the bus using the control transport and saves some info
23582 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023583
23584 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023585 pSendBuffer: buffer to be sent
23586 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070023587
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 @see
23589 @return Result of the function call
23590*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023592WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070023593(
23594 WDI_ControlBlockType* pWDICtx,
23595 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 wpt_uint32 usSendSize
23597)
23598{
23599 wpt_uint32 uStatus ;
23600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23601
23602 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 Note: CTS is reponsible for freeing the message buffer.
23605 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 (void*)pSendBuffer, usSendSize );
23608
23609 /*Inform Upper MAC about the outcome of the request*/
23610 if ( NULL != pWDICtx->wdiReqStatusCB )
23611 {
23612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23613 "Send indication status : %d", uStatus);
23614
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023615 /* even if CTS placed indication into its deferred Q, we treat it
23616 * as success and let CTS drain its queue as per smd interrupt to CTS
23617 */
23618 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 -070023619 pWDICtx->pReqStatusUserData);
Kapil Gupta2b44acb2016-12-30 16:49:51 +053023620 pWDICtx->wdiReqStatusCB = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 }
23622
23623 /*If sending of the message failed - it is considered catastrophic and
23624 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023625 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
23626 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
23627
Jeff Johnson295189b2012-06-20 16:38:30 -070023628 {
23629 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023630 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070023631
23632 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
23633 return WDI_STATUS_E_FAILURE;
23634 }
23635
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023637}/*WDI_SendIndication*/
23638
23639
23640/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 @brief WDI_DetectedDeviceError - called internally by DAL when
23642 it has detected a failure in the device
23643
23644 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 usErrorCode: error code detected by WDI or received
23646 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023647
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023649 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023650*/
23651void
23652WDI_DetectedDeviceError
23653(
23654 WDI_ControlBlockType* pWDICtx,
23655 wpt_uint16 usErrorCode
23656)
23657{
23658 WDI_LowLevelIndType wdiInd;
23659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23660
23661 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23662 "Device Error detected code: %d - transitioning to stopped state",
23663 usErrorCode);
23664
Katya Nigamf02ad012014-05-05 16:12:49 +053023665 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
23666
Jeff Johnson295189b2012-06-20 16:38:30 -070023667 wpalMutexAcquire(&pWDICtx->wptMutex);
23668
23669 WDI_STATableStop(pWDICtx);
23670
23671 WDI_ResetAssocSessions(pWDICtx);
23672
23673 /*Set the expected state transition to stopped - because the device
23674 experienced a failure*/
23675 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
23676
23677 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023678 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070023679
Jeff Johnsone7245742012-09-05 17:12:55 -070023680 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070023681
23682 /*TO DO: - there should be an attempt to reset the device here*/
23683
23684 wpalMutexRelease(&pWDICtx->wptMutex);
23685
23686 /*------------------------------------------------------------------------
23687 Notify UMAC if a handler is registered
23688 ------------------------------------------------------------------------*/
23689 if (pWDICtx->wdiLowLevelIndCB)
23690 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023691 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
23692 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023693
23694 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
23695 }
23696}/*WDI_DetectedDeviceError*/
23697
23698/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070023700 we started on send message has expire - this should
23701 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 reply - trigger catastrophic failure
23703 @param
23704
Jeff Johnson295189b2012-06-20 16:38:30 -070023705 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070023706
23707 @see
23708 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023709*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023710void
Jeff Johnson295189b2012-06-20 16:38:30 -070023711WDI_ResponseTimerCB
23712(
23713 void *pUserData
23714)
23715{
23716 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
23717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23718
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023719 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070023720 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023722 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023724 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023725 }
23726
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023727 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080023728 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080023729 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023730
23731 /* If response timer is running at this time that means this timer
23732 * event is not for the last request but rather last-to-last request and
23733 * this timer event has come after we recevied respone for last-to-last
23734 * message
23735 */
23736 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
23737 {
23738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23739 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023740 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023741 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23743 "uArchTimeStampTmrStart: %llu seconds, "
23744 "uArchTimeStampTmrExp: %llu seconds",
23745 pWDICtx->uArchTimeStampRspTmrStart,
23746 pWDICtx->uArchTimeStampRspTmrExp);
23747
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023748 return;
23749 }
23750
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023751 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070023752 {
23753
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023754 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070023755 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023756 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070023757 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023758 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23759 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023760 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23761 "uArchTimeStampTmrStart: %llu seconds, "
23762 "uArchTimeStampTmrExp: %llu seconds",
23763 pWDICtx->uArchTimeStampRspTmrStart,
23764 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023765
23766 /* WDI timeout means Riva is not responding or SMD communication to Riva
23767 * is not happening. The only possible way to recover from this error
23768 * is to initiate SSR from APPS.
23769 * There is also an option to re-enable wifi, which will eventually
23770 * trigger SSR
23771 */
23772 if (gWDICb.bEnableSSR == false)
23773 {
23774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23775 "SSR is not enabled on WDI timeout");
23776 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23777 return;
23778 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023779#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023780 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023781 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023782 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023783 if(wpalIsSsrPanicOnFailure())
23784 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023785 } else {
23786 /* if this timer fires, it means Riva did not receive the FIQ */
23787 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023788 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023789#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023790 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Anurag Chouhanf0d0ba12018-02-09 15:13:43 +053023791 wpalWlanReload(VOS_WDI_FAILURE);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023792#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 }
23794 else
23795 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023797 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023798 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023799 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23800 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23802 "uArchTimeStampTmrStart: %llu seconds, "
23803 "uArchTimeStampTmrExp: %llu seconds",
23804 pWDICtx->uArchTimeStampRspTmrStart,
23805 pWDICtx->uArchTimeStampRspTmrExp);
23806
Jeff Johnson295189b2012-06-20 16:38:30 -070023807 }
23808
23809 return;
23810
23811}/*WDI_ResponseTimerCB*/
23812
23813
23814/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023815 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023816
Jeff Johnsone7245742012-09-05 17:12:55 -070023817
23818 @param pWDICtx: pointer to the WLAN DAL context
23819 pEventData: pointer to the event information structure
23820
Jeff Johnson295189b2012-06-20 16:38:30 -070023821 @see
23822 @return Result of the function call
23823*/
23824WPT_INLINE WDI_Status
23825WDI_ProcessResponse
23826(
23827 WDI_ControlBlockType* pWDICtx,
23828 WDI_EventInfoType* pEventData
23829)
23830{
23831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23832
Jeff Johnsone7245742012-09-05 17:12:55 -070023833 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 already checked these pointers
23835 ! - revisit this assumption */
23836 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23837 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023838 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070023840 "Calling response processing function for resp %s (%d) %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 WDI_getRespMsgString(pEventData->wdiResponse),
23842 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23843 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23844 }
23845 else
23846 {
23847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023848 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023849 pEventData->wdiResponse);
23850 return WDI_STATUS_E_NOT_IMPLEMENT;
23851 }
23852}/*WDI_ProcessResponse*/
23853
23854
23855/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023856 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023857=========================================================================*/
23858
23859/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023860 @brief Utility function used by the DAL Core to help queue a
23861 request that cannot be processed right away.
23862 @param
23863
Jeff Johnson295189b2012-06-20 16:38:30 -070023864 pWDICtx: - pointer to the WDI control block
23865 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023866 queued
23867
23868 @see
23869 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023870*/
23871WDI_Status
23872WDI_QueuePendingReq
23873(
23874 WDI_ControlBlockType* pWDICtx,
23875 WDI_EventInfoType* pEventData
23876)
23877{
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023879 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23882
23883 if ( NULL == pEventDataQueue )
23884 {
23885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023886 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023887 WDI_ASSERT(0);
23888 return WDI_STATUS_MEM_FAILURE;
23889 }
23890
23891 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23892 pEventDataQueue->pUserData = pEventData->pUserData;
23893 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23894 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023895 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023896
23897 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23898 {
23899 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023900
Jeff Johnson295189b2012-06-20 16:38:30 -070023901 if ( NULL == pEventInfo )
23902 {
23903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 WDI_ASSERT(0);
23906 wpalMemoryFree(pEventDataQueue);
23907 return WDI_STATUS_MEM_FAILURE;
23908 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023909
Jeff Johnson295189b2012-06-20 16:38:30 -070023910 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23911
23912 }
23913 pEventDataQueue->pEventData = pEventInfo;
23914
23915 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023917
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023918 if (eWLAN_PAL_STATUS_E_FAILURE ==
23919 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23920 {
23921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23922 "pEventDataQueue wpal_list_insert_back failed");
23923 WDI_ASSERT(0);
23924 wpalMemoryFree(pEventDataQueue);
23925 wpalMemoryFree(pEventInfo);
23926 return WDI_STATUS_MEM_FAILURE;
23927 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023928
23929 return WDI_STATUS_SUCCESS;
23930}/*WDI_QueuePendingReq*/
23931
23932/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023934 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023935 @param
23936
23937 pMsg - pointer to the message
23938
23939 @see
23940 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023941*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023942void
Jeff Johnson295189b2012-06-20 16:38:30 -070023943WDI_PALCtrlMsgCB
23944(
23945 wpt_msg *pMsg
23946)
23947{
23948 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023949 WDI_ControlBlockType* pWDICtx = NULL;
23950 WDI_Status wdiStatus;
23951 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023952 void* pUserData;
23953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23954
23955 if (( NULL == pMsg )||
23956 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23957 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23958 {
23959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023960 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023962 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023963 }
23964
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023965 /*Access to the global state must be locked */
23966 wpalMutexAcquire(&pWDICtx->wptMutex);
23967
Jeff Johnson295189b2012-06-20 16:38:30 -070023968 /*Transition back to the state that we had before serialization
23969 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023970 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023971 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023972 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023973
23974 /*-----------------------------------------------------------------------
23975 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023976 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 -----------------------------------------------------------------------*/
23978 switch ( pEventData->wdiRequest )
23979 {
23980
Jeff Johnsone7245742012-09-05 17:12:55 -070023981 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023982 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23983 break;
23984
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 case WDI_NV_DOWNLOAD_REQ:
23986 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23987 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23988 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23989 {
23990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023991 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023992 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23993 }
23994 else
23995 {
23996 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23997 }
23998
23999 break;
24000
24001 default:
24002 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
24003 break;
24004 }/*switch ( pEventData->wdiRequest )*/
24005
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053024006 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024007 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 {
24009 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
24010
24011 if ( NULL != pfnReqStatusCB )
24012 {
24013 /*Fail the request*/
24014 pfnReqStatusCB( wdiStatus, pUserData);
24015 }
24016 }
24017
24018 /* Free data - that was allocated when queueing*/
24019 if( pEventData != NULL )
24020 {
24021 if( pEventData->pEventData != NULL )
24022 {
24023 wpalMemoryFree(pEventData->pEventData);
24024 }
24025 wpalMemoryFree(pEventData);
24026 }
24027
24028 if( pMsg != NULL )
24029 {
24030 wpalMemoryFree(pMsg);
24031 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024032
Jeff Johnson295189b2012-06-20 16:38:30 -070024033}/*WDI_PALCtrlMsgCB*/
24034
24035/**
24036 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070024037 and schedule for execution a pending request
24038 @param
24039
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 pWDICtx: - pointer to the WDI control block
24041 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070024042 queued
24043
24044 @see
24045 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024046*/
24047WDI_Status
24048WDI_DequeuePendingReq
24049(
24050 WDI_ControlBlockType* pWDICtx
24051)
24052{
Jeff Johnsone7245742012-09-05 17:12:55 -070024053 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024054 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024055 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070024056 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24057
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024059
24060 if ( NULL == pNode )
24061 {
24062 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070024063 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070024064 return WDI_STATUS_SUCCESS;
24065 }
24066
24067 /*The node actually points to the 1st element inside the Event Data struct -
24068 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024069 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070024070
24071 /*Serialize processing in the control thread
24072 !TO DO: - check to see if these are all the messages params that need
24073 to be filled in*/
24074 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
24075
24076 if ( NULL == palMsg )
24077 {
24078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024079 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024081 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024083 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024084 palMsg->callback = WDI_PALCtrlMsgCB;
24085 palMsg->ptr = pEventData;
24086
24087 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024088 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080024089 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024090
Jeff Johnson295189b2012-06-20 16:38:30 -070024091 /*Transition back to BUSY as we need to handle a queued request*/
24092 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070024093
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
24095
24096 return WDI_STATUS_PENDING;
24097}/*WDI_DequeuePendingReq*/
24098
24099
24100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024101 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070024102 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070024103 away.- The assoc requests will be queued by BSSID
24104 @param
24105
Jeff Johnson295189b2012-06-20 16:38:30 -070024106 pWDICtx: - pointer to the WDI control block
24107 pEventData: pointer to the evnt info that needs to be queued
24108 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070024109
24110 @see
24111 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024112*/
24113WDI_Status
24114WDI_QueueNewAssocRequest
24115(
24116 WDI_ControlBlockType* pWDICtx,
24117 WDI_EventInfoType* pEventData,
24118 wpt_macAddr macBSSID
24119)
24120{
Jeff Johnsone7245742012-09-05 17:12:55 -070024121 wpt_uint8 i;
24122 WDI_BSSSessionType* pSession = NULL;
24123 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070024124 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070024125 void* pEventInfo;
24126 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070024128
Jeff Johnsone7245742012-09-05 17:12:55 -070024129
24130 /*------------------------------------------------------------------------
24131 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024132 ------------------------------------------------------------------------*/
24133 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24134 {
24135 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
24136 {
24137 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024138 pSession = &pWDICtx->aBSSSessions[i];
24139 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 }
24141 }
24142
24143 if ( i >= WDI_MAX_BSS_SESSIONS )
24144 {
24145 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024147 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024148
Jeff Johnson295189b2012-06-20 16:38:30 -070024149 /*------------------------------------------------------------------------
24150 Fill in the BSSID for this session and set the usage flag
24151 ------------------------------------------------------------------------*/
24152 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024153 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024154
24155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024156 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 ------------------------------------------------------------------------*/
24158 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
24159 if ( NULL == pEventDataQueue )
24160 {
24161 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024162 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024163 WDI_ASSERT(0);
24164 return WDI_STATUS_MEM_FAILURE;
24165 }
24166
24167 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
24168 if ( NULL == pSessionIdElement )
24169 {
24170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024171 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024172 WDI_ASSERT(0);
24173 wpalMemoryFree(pEventDataQueue);
24174 return WDI_STATUS_MEM_FAILURE;
24175 }
24176
24177 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
24178 if ( NULL == pEventInfo )
24179 {
24180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024181 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024182 WDI_ASSERT(0);
24183 wpalMemoryFree(pSessionIdElement);
24184 wpalMemoryFree(pEventDataQueue);
24185 return WDI_STATUS_MEM_FAILURE;
24186 }
24187
24188 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
24189 pEventDataQueue->pUserData = pEventData->pUserData;
24190 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
24191 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070024192 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070024193
24194 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
24195 pEventDataQueue->pEventData = pEventInfo;
24196
24197 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024198 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070024199
24200 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024201 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024202
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053024203 if (eWLAN_PAL_STATUS_E_FAILURE ==
24204 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
24205 {
24206 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24207 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
24208 WDI_ASSERT(0);
24209 wpalMemoryFree(pSessionIdElement);
24210 wpalMemoryFree(pEventDataQueue);
24211 wpalMemoryFree(pEventInfo);
24212 return WDI_STATUS_MEM_FAILURE;
24213 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024214
24215 /*We need to maintain a separate list that keeps track of the order in which
24216 the new assoc requests are being queued such that we can start processing
24217 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024218 pSessionIdElement->ucIndex = i;
24219 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070024220
24221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24222 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053024223 if (eWLAN_PAL_STATUS_E_FAILURE ==
24224 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
24225 {
24226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24227 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
24228 WDI_ASSERT(0);
24229 wpalMemoryFree(pSessionIdElement);
24230 wpalMemoryFree(pEventDataQueue);
24231 wpalMemoryFree(pEventInfo);
24232 return WDI_STATUS_MEM_FAILURE;
24233 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024234
24235 /*Return pending as this is what the status of the request is since it has
24236 been queued*/
24237 return WDI_STATUS_PENDING;
24238}/*WDI_QueueNewAssocRequest*/
24239
24240/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024241 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070024242 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070024243 away.- The assoc requests will be queued by BSSID
24244 @param
24245
Jeff Johnson295189b2012-06-20 16:38:30 -070024246 pWDICtx: - pointer to the WDI control block
24247 pSession: - session in which to queue
24248 pEventData: pointer to the event info that needs to be
24249 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070024250
24251 @see
24252 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024253*/
24254WDI_Status
24255WDI_QueueAssocRequest
24256(
24257 WDI_ControlBlockType* pWDICtx,
24258 WDI_BSSSessionType* pSession,
24259 WDI_EventInfoType* pEventData
24260)
24261{
Jeff Johnsone7245742012-09-05 17:12:55 -070024262 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070024263 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070024264 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024265 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070024266
24267 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 Sanity check
24269 ------------------------------------------------------------------------*/
24270 if (( NULL == pSession ) || ( NULL == pWDICtx ))
24271 {
24272 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024273 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024274
Jeff Johnsone7245742012-09-05 17:12:55 -070024275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 }
24277
24278 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024279 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070024280 ------------------------------------------------------------------------*/
24281 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
24282 if ( NULL == pEventDataQueue )
24283 {
24284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024285 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 WDI_ASSERT(0);
24287 return WDI_STATUS_MEM_FAILURE;
24288 }
24289
24290 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
24291 if ( NULL == pEventInfo )
24292 {
24293 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24294 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024295 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 WDI_ASSERT(0);
24297 wpalMemoryFree(pEventDataQueue);
24298 return WDI_STATUS_MEM_FAILURE;
24299 }
24300
24301 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
24302 pEventDataQueue->pUserData = pEventData->pUserData;
24303 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
24304 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 pEventDataQueue->pEventData = pEventInfo;
24307
24308 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
24309
24310 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024311 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070024312
24313 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024314 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024315
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053024316 if (eWLAN_PAL_STATUS_E_FAILURE ==
24317 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
24318 {
24319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24320 "%s: Cannot allocate memory for queueing event data info",
24321 __func__);
24322 WDI_ASSERT(0);
24323 wpalMemoryFree(pEventDataQueue);
24324 wpalMemoryFree(pEventInfo);
24325 return WDI_STATUS_MEM_FAILURE;
24326 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024327
24328 /*The result of this operation is pending because the request has been
24329 queued and it will be processed at a later moment in time */
24330 return WDI_STATUS_PENDING;
24331}/*WDI_QueueAssocRequest*/
24332
24333/**
24334 @brief Utility function used by the DAL Core to help dequeue
24335 an association request that was pending
24336 The request will be queued up in front of the main
24337 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070024338 @param
24339
Jeff Johnson295189b2012-06-20 16:38:30 -070024340 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070024341
24342
24343 @see
24344 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024345*/
24346WDI_Status
24347WDI_DequeueAssocRequest
24348(
24349 WDI_ControlBlockType* pWDICtx
24350)
24351{
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 wpt_list_node* pNode = NULL;
24353 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070024354 WDI_BSSSessionType* pSession;
24355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070024356
24357 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070024358 Sanity check
24359 ------------------------------------------------------------------------*/
24360 if ( NULL == pWDICtx )
24361 {
24362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024364
Jeff Johnsone7245742012-09-05 17:12:55 -070024365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024366 }
24367
24368 /*------------------------------------------------------------------------
24369 An association has been completed => a new association can occur
24370 Check to see if there are any pending associations ->
24371 If so , transfer all the pending requests into the busy queue for
24372 processing
24373 These requests have arrived prior to the requests in the busy queue
24374 (bc they needed to be processed in order to be placed in this queue)
24375 => they will be placed at the front of the busy queue
24376 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024377 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024378
24379 if ( NULL == pNode )
24380 {
24381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070024382 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 return WDI_STATUS_SUCCESS;
24384 }
24385
24386 /*The node actually points to the 1st element inside the Session Id struct -
24387 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070024389
24390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24391 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
24392
24393 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
24394 {
24395 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070024396
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070024398 the front of the main waiting queue for subsequent execution*/
24399 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 while ( NULL != pNode )
24401 {
24402 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024403 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
24404 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024405 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 }
24408 else
24409 {
24410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070024411 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070024412 WPAL_ASSERT(0);
24413 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070024414 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024416
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 /*Clean this up as it is no longer needed in order to prevent memory leak*/
24418 wpalMemoryFree(pSessionIdElement);
24419 return WDI_STATUS_SUCCESS;
24420}/*WDI_DequeueAssocRequest*/
24421
24422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024423 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070024424 pending requests - all req cb will be called with
24425 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070024426 @param
24427
Jeff Johnson295189b2012-06-20 16:38:30 -070024428 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070024429
24430 @see
24431 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024432*/
24433WDI_Status
24434WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070024435(
Jeff Johnson295189b2012-06-20 16:38:30 -070024436 WDI_ControlBlockType* pWDICtx
24437)
24438{
Jeff Johnsone7245742012-09-05 17:12:55 -070024439 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024441 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 void* pUserData;
24443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24444
Jeff Johnsone7245742012-09-05 17:12:55 -070024445 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024446
24447 /*------------------------------------------------------------------------
24448 Go through all the requests and fail them - this will only be called
24449 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070024450 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024451 ------------------------------------------------------------------------*/
24452 while( pNode )
24453 {
24454 /*The node actually points to the 1st element inside the Event Data struct -
24455 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024456 pEventDataQueue = (WDI_EventInfoType*)pNode;
24457
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
24459 if ( NULL != pfnReqStatusCB )
24460 {
24461 /*Fail the request*/
24462 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
24463 }
24464 /* Free data - that was allocated when queueing */
24465 if ( pEventDataQueue->pEventData != NULL )
24466 {
24467 wpalMemoryFree(pEventDataQueue->pEventData);
24468 }
24469 wpalMemoryFree(pEventDataQueue);
24470
24471 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
24472 {
24473 break;
24474 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024475 }
24476
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 return WDI_STATUS_SUCCESS;
24478}/*WDI_ClearPendingRequests*/
24479
24480/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024481 @brief Helper routine used to init the BSS Sessions in the WDI control block
24482
24483
24484 @param pWDICtx: pointer to the WLAN DAL context
24485
Jeff Johnson295189b2012-06-20 16:38:30 -070024486 @see
24487*/
24488void
24489WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070024490(
Jeff Johnson295189b2012-06-20 16:38:30 -070024491 WDI_ControlBlockType* pWDICtx
24492)
24493{
Jeff Johnsone7245742012-09-05 17:12:55 -070024494 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24496
24497 /*-------------------------------------------------------------------------
24498 No Sanity check
24499 -------------------------------------------------------------------------*/
24500 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24501 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024502 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
24504 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
24505 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
24506 }
24507}/*WDI_ResetAssocSessions*/
24508
24509/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024510 @brief Helper routine used to find a session based on the BSSID
24511
24512
24513 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024514 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070024515 pSession: pointer to the session (if found)
24516
Jeff Johnson295189b2012-06-20 16:38:30 -070024517 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024518 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024519*/
24520wpt_uint8
24521WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070024522(
Jeff Johnson295189b2012-06-20 16:38:30 -070024523 WDI_ControlBlockType* pWDICtx,
24524 wpt_macAddr macBSSID,
24525 WDI_BSSSessionType** ppSession
24526)
24527{
Jeff Johnsone7245742012-09-05 17:12:55 -070024528 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24530
24531 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024532 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 -------------------------------------------------------------------------*/
24534 if ( NULL == ppSession )
24535 {
24536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024537 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024538 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 }
24540
Jeff Johnsone7245742012-09-05 17:12:55 -070024541 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024542
Jeff Johnsone7245742012-09-05 17:12:55 -070024543 /*------------------------------------------------------------------------
24544 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024545 ------------------------------------------------------------------------*/
24546 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24547 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070024548 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
24549 (eWLAN_PAL_TRUE ==
24550 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
24551 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070024552 {
24553 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024554 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 return i;
24556 }
24557 }
24558
Jeff Johnsone7245742012-09-05 17:12:55 -070024559 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024560}/*WDI_FindAssocSession*/
24561
24562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024563 @brief Helper routine used to find a session based on the BSSID
24564
24565
24566 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024567 ucBSSIdx: BSS Index of the session
24568 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070024569
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024571 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024572*/
24573wpt_uint8
24574WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070024575(
Jeff Johnson295189b2012-06-20 16:38:30 -070024576 WDI_ControlBlockType* pWDICtx,
24577 wpt_uint16 ucBSSIdx,
24578 WDI_BSSSessionType** ppSession
24579)
24580{
Jeff Johnsone7245742012-09-05 17:12:55 -070024581 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24583
24584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024586 -------------------------------------------------------------------------*/
24587 if ( NULL == ppSession )
24588 {
24589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024590 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024591 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024592 }
24593
Jeff Johnsone7245742012-09-05 17:12:55 -070024594 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024595
Jeff Johnsone7245742012-09-05 17:12:55 -070024596 /*------------------------------------------------------------------------
24597 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024598 ------------------------------------------------------------------------*/
24599 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24600 {
24601 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
24602 {
24603 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024604 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070024605 return i;
24606 }
24607 }
24608
Jeff Johnsone7245742012-09-05 17:12:55 -070024609 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024610}/*WDI_FindAssocSessionByBSSIdx*/
24611
24612/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024613 @brief Helper routine used to find a session based on the BSSID
24614
24615
24616 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024617 ucBSSIdx: BSS Index of the session
24618 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070024619
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024621 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024622*/
24623wpt_uint8
24624WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070024625(
Jeff Johnson295189b2012-06-20 16:38:30 -070024626 WDI_ControlBlockType* pWDICtx,
24627 wpt_uint16 usIdx,
24628 WDI_BSSSessionType** ppSession
24629)
24630{
24631 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24632
24633 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024634 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024635 -------------------------------------------------------------------------*/
24636 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
24637 {
24638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024639 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024640 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024641 }
24642
24643 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024644 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070024645
24646 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024647
Jeff Johnson295189b2012-06-20 16:38:30 -070024648}/*WDI_FindAssocSessionByBSSIdx*/
24649
24650/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024651 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070024652 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070024653
24654
24655 @param pWDICtx: pointer to the WLAN DAL context
24656 pSession: pointer to the session (if found)
24657
Jeff Johnson295189b2012-06-20 16:38:30 -070024658 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024659 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024660*/
24661wpt_uint8
24662WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070024663(
Jeff Johnson295189b2012-06-20 16:38:30 -070024664 WDI_ControlBlockType* pWDICtx,
24665 WDI_BSSSessionType** ppSession
24666)
24667{
Jeff Johnsone7245742012-09-05 17:12:55 -070024668 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24670 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024671 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024672 -------------------------------------------------------------------------*/
24673 if ( NULL == ppSession )
24674 {
24675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024676 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024677 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024678 }
24679
Jeff Johnsone7245742012-09-05 17:12:55 -070024680 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024681
Jeff Johnsone7245742012-09-05 17:12:55 -070024682 /*------------------------------------------------------------------------
24683 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 ------------------------------------------------------------------------*/
24685 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24686 {
24687 if ( ! pWDICtx->aBSSSessions[i].bInUse )
24688 {
24689 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024690 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070024691 return i;
24692 }
24693 }
24694
Jeff Johnsone7245742012-09-05 17:12:55 -070024695 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024696}/*WDI_FindEmptySession*/
24697
24698
24699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024700 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070024701 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070024702
24703
24704 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024705 macBSSID: pointer to BSSID. If NULL, get all the session.
24706 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
24707 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
24708 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070024709 @see
24710 @return Number of sessions in use
24711*/
24712wpt_uint8
24713WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070024714(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024715 WDI_ControlBlockType* pWDICtx,
24716 wpt_macAddr macBSSID,
24717 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024718)
24719{
Jeff Johnsone7245742012-09-05 17:12:55 -070024720 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024722
24723 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 Count all sessions in use
24725 ------------------------------------------------------------------------*/
24726 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24727 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024728 if ( macBSSID && skipBSSID &&
24729 (eWLAN_PAL_TRUE ==
24730 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
24731 WDI_MAC_ADDR_LEN)))
24732 {
24733 continue;
24734 }
24735 else if ( pWDICtx->aBSSSessions[i].bInUse )
24736 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024737 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024738 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024739 }
24740
Jeff Johnsone7245742012-09-05 17:12:55 -070024741 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070024742}/*WDI_GetActiveSessionsCount*/
24743
24744/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024745 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070024746 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070024747
24748
24749 @param pWDICtx: pointer to the WLAN DAL context
24750 pSession: pointer to the session (if found)
24751
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024753 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024754*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024755void
Jeff Johnson295189b2012-06-20 16:38:30 -070024756WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070024757(
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 WDI_ControlBlockType* pWDICtx,
24759 WDI_BSSSessionType* ppSession
24760)
24761{
24762 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024763 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 -------------------------------------------------------------------------*/
24765 if ( NULL == ppSession )
24766 {
24767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024768 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024769 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024770 }
24771
Jeff Johnsone7245742012-09-05 17:12:55 -070024772 /*------------------------------------------------------------------------
24773 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070024774 ------------------------------------------------------------------------*/
24775 wpal_list_destroy(&ppSession->wptPendingQueue);
24776 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070024777 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
24778 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024779 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24780 wpal_list_init(&ppSession->wptPendingQueue);
24781
24782}/*WDI_DeleteSession*/
24783
24784/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024785 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024786 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024787 @param
24788
Jeff Johnson295189b2012-06-20 16:38:30 -070024789 WDI_AddStaParams: - pointer to the WDI Add STA params
24790 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024791
24792 @see
24793 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024794*/
24795void
24796WDI_AddBcastSTAtoSTATable
24797(
24798 WDI_ControlBlockType* pWDICtx,
24799 WDI_AddStaParams * staParams,
24800 wpt_uint16 usBcastStaIdx
24801)
24802{
24803 WDI_AddStaParams wdiAddSTAParam = {0};
24804 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24806
24807 /*---------------------------------------------------------------------
24808 Sanity check
24809 ---------------------------------------------------------------------*/
24810 if ( NULL == staParams )
24811 {
24812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024813 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024814
Jeff Johnsone7245742012-09-05 17:12:55 -070024815 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024816 }
24817
24818 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24819 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24820 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24821 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24822 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24823 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24824 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24825 WDI_MAC_ADDR_LEN );
24826 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24827 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24828 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24829 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24830 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24831 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24832 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024833
Jeff Johnson295189b2012-06-20 16:38:30 -070024834 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24835}
24836
24837/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024838 @brief NV blob will be divided into fragments of size 4kb and
24839 Sent to HAL
24840
24841 @param pWDICtx: pointer to the WLAN DAL context
24842 pEventData: pointer to the event information structure
24843
Jeff Johnson295189b2012-06-20 16:38:30 -070024844 @see
24845 @return Result of the function call
24846 */
24847
24848WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024849(
Jeff Johnson295189b2012-06-20 16:38:30 -070024850 WDI_ControlBlockType* pWDICtx,
24851 WDI_EventInfoType* pEventData
24852)
24853{
24854
24855 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24856 wpt_uint8* pSendBuffer = NULL;
24857 wpt_uint16 usDataOffset = 0;
24858 wpt_uint16 usSendSize = 0;
24859 wpt_uint16 usCurrentFragmentSize =0;
24860 wpt_uint8* pSrcBuffer = NULL;
24861 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24862 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24863
24864 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24865 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24866 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24867
Jeff Johnsone7245742012-09-05 17:12:55 -070024868 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024869 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24870
24871 /* Update the current Fragment Number */
24872 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24873
24874 /*Update the HAL REQ structure */
24875 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24876 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24877 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24878
24879 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024880 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024881 image will be sent to HAL*/
24882
Jeff Johnsone7245742012-09-05 17:12:55 -070024883 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024885 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024886 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024887 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024888 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24889 usCurrentFragmentSize = FRAGMENT_SIZE;
24890
24891 /*Update the HAL REQ structure */
24892 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24893 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24894
24895 }
24896 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024897 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024898 usCurrentFragmentSize = FRAGMENT_SIZE;
24899
24900 /*Update the HAL REQ structure */
24901 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24902 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24903 }
24904
24905 /*-----------------------------------------------------------------------
24906 Get message buffer
24907 -----------------------------------------------------------------------*/
24908 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24909 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24910 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024911 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024912 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24913 {
24914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070024915 "Unable to get send buffer in NV Download req %pK %pK ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024916 pEventData, pwdiNvDownloadReqParams);
24917 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024918 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024919 }
24920
24921 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024922 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024923 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24924
24925 /* Appending the NV image fragment */
24926 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24927 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24928 usCurrentFragmentSize);
24929
24930 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024931 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024932
Jeff Johnsone7245742012-09-05 17:12:55 -070024933 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24934 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024935 WDI_NV_DOWNLOAD_RESP);
24936
24937}
Jeff Johnsone7245742012-09-05 17:12:55 -070024938/*============================================================================
24939 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024940 ============================================================================*/
24941/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024942 @brief Helper routine used to find a session based on the BSSID
24943 @param pContext: pointer to the WLAN DAL context
24944 @param pDPContext: pointer to the Datapath context
24945
Jeff Johnson295189b2012-06-20 16:38:30 -070024946 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024947 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024948*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024949WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024950WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24951{
24952 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24953
24954 pCB->pDPContext = pDPContext;
24955 return;
24956}
24957
24958/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024959 @brief Helper routine used to find a session based on the BSSID
24960
24961
24962 @param pContext: pointer to the WLAN DAL context
24963
Jeff Johnson295189b2012-06-20 16:38:30 -070024964 @see
24965 @return pointer to Datapath context
24966*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024967WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024968WDI_DS_GetDatapathContext (void *pContext)
24969{
24970 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24971 return pCB->pDPContext;
24972}
24973/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024974 @brief Helper routine used to find a session based on the BSSID
24975
24976
24977 @param pContext: pointer to the WLAN DAL context
24978 @param pDTDriverContext: pointer to the Transport Driver context
24979
Jeff Johnson295189b2012-06-20 16:38:30 -070024980 @see
24981 @return void
24982*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024983WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024984WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24985{
24986 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24987
24988 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024989 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024990}
24991
24992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024993 @brief Helper routine used to find a session based on the BSSID
24994
24995
24996 @param pWDICtx: pointer to the WLAN DAL context
24997
Jeff Johnson295189b2012-06-20 16:38:30 -070024998 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024999 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070025000*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025001WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070025002WDT_GetTransportDriverContext (void *pContext)
25003{
25004 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070025005 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070025006}
25007
Jeff Johnsone7245742012-09-05 17:12:55 -070025008/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070025009 Helper inline converters
25010 ============================================================================*/
25011/*Convert WDI driver type into HAL driver type*/
25012WPT_STATIC WPT_INLINE WDI_Status
25013WDI_HAL_2_WDI_STATUS
25014(
25015 eHalStatus halStatus
25016)
25017{
Jeff Johnsone7245742012-09-05 17:12:55 -070025018 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025019 the chances of getting inlined*/
25020 switch( halStatus )
25021 {
25022 case eHAL_STATUS_SUCCESS:
25023 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
25024 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
25025 return WDI_STATUS_SUCCESS;
25026 case eHAL_STATUS_FAILURE:
25027 return WDI_STATUS_E_FAILURE;
25028 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070025029 return WDI_STATUS_MEM_FAILURE;
25030 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070025031 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025032 default:
Mukul Sharmaa6feb382017-07-13 16:46:57 +053025033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25034 "Fwr halStatus:%d", halStatus);
Jeff Johnsone7245742012-09-05 17:12:55 -070025035 return WDI_STATUS_DEV_INTERNAL_FAILURE;
25036 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025037
Jeff Johnsone7245742012-09-05 17:12:55 -070025038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025039}/*WDI_HAL_2_WDI_STATUS*/
25040
25041/*Convert WDI request type into HAL request type*/
25042WPT_STATIC WPT_INLINE tHalHostMsgType
25043WDI_2_HAL_REQ_TYPE
25044(
25045 WDI_RequestEnumType wdiReqType
25046)
25047{
Jeff Johnsone7245742012-09-05 17:12:55 -070025048 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 the chances of getting inlined*/
25050 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070025051 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025052 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025053 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025054 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025055 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025056 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025057 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025058 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025059 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025060 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025061 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025062 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025063 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025064 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025065 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025066 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025067 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025068 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025069 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025070 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025071 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025072 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025073 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025074 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025075 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025076 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025077 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025078 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025079 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025080 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025081 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025082 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025083 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025084 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025085 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025086 return WLAN_HAL_RMV_STAKEY_REQ;
25087 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025088 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025089 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025090 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025091 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025092 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025093 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025094 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025095 case WDI_DEL_BA_REQ:
25096 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025097#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 case WDI_TSM_STATS_REQ:
25099 return WLAN_HAL_TSM_STATS_REQ;
25100#endif
25101 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025102 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025103 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025104 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025105 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025106 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025107 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025108 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025109 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025110 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025111 case WDI_ADD_BA_SESSION_REQ:
25112 return WLAN_HAL_ADD_BA_SESSION_REQ;
25113 case WDI_TRIGGER_BA_REQ:
25114 return WLAN_HAL_TRIGGER_BA_REQ;
25115 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025116 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025117 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025118 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025119 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
25120 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
25121 case WDI_SET_MAX_TX_POWER_REQ:
25122 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070025123 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
25124 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070025125 case WDI_SET_TX_POWER_REQ:
25126 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
25128 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053025129#ifdef FEATURE_WLAN_TDLS
25130 case WDI_TDLS_LINK_ESTABLISH_REQ:
25131 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053025132 case WDI_TDLS_CHAN_SWITCH_REQ:
25133 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053025134#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025135 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025136 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025137 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025138 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025139 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025140 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025141 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025142 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025143 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025144 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025145 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025146 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025147 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025148 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025149 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025150 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025151 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025152 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025153 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025154 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025155 case WDI_REM_BEACON_FILTER_REQ:
25156 return WLAN_HAL_REM_BCN_FILTER_REQ;
25157 case WDI_SET_RSSI_THRESHOLDS_REQ:
25158 return WLAN_HAL_SET_RSSI_THRESH_REQ;
25159 case WDI_HOST_OFFLOAD_REQ:
25160 return WLAN_HAL_HOST_OFFLOAD_REQ;
25161 case WDI_WOWL_ADD_BC_PTRN_REQ:
25162 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
25163 case WDI_WOWL_DEL_BC_PTRN_REQ:
25164 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
25165 case WDI_WOWL_ENTER_REQ:
25166 return WLAN_HAL_ENTER_WOWL_REQ;
25167 case WDI_WOWL_EXIT_REQ:
25168 return WLAN_HAL_EXIT_WOWL_REQ;
25169 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25170 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
25171 case WDI_NV_DOWNLOAD_REQ:
25172 return WLAN_HAL_DOWNLOAD_NV_REQ;
25173 case WDI_FLUSH_AC_REQ:
25174 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
25175 case WDI_BTAMP_EVENT_REQ:
25176 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
25177#ifdef WLAN_FEATURE_VOWIFI_11R
25178 case WDI_AGGR_ADD_TS_REQ:
25179 return WLAN_HAL_AGGR_ADD_TS_REQ;
25180#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070025181 case WDI_FTM_CMD_REQ:
25182 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025183 case WDI_ADD_STA_SELF_REQ:
25184 return WLAN_HAL_ADD_STA_SELF_REQ;
25185 case WDI_DEL_STA_SELF_REQ:
25186 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025187#ifdef FEATURE_OEM_DATA_SUPPORT
25188 case WDI_START_OEM_DATA_REQ:
25189 return WLAN_HAL_START_OEM_DATA_REQ;
25190#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070025191 case WDI_HOST_RESUME_REQ:
25192 return WLAN_HAL_HOST_RESUME_REQ;
25193 case WDI_HOST_SUSPEND_IND:
25194 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080025195 case WDI_TRAFFIC_STATS_IND:
25196 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070025197#ifdef WLAN_FEATURE_11W
25198 case WDI_EXCLUDE_UNENCRYPTED_IND:
25199 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
25200#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025201 case WDI_KEEP_ALIVE_REQ:
25202 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025203#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025204 case WDI_ROAM_SCAN_OFFLOAD_REQ:
25205 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025206#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025207#ifdef FEATURE_WLAN_SCAN_PNO
25208 case WDI_SET_PREF_NETWORK_REQ:
25209 return WLAN_HAL_SET_PREF_NETWORK_REQ;
25210 case WDI_SET_RSSI_FILTER_REQ:
25211 return WLAN_HAL_SET_RSSI_FILTER_REQ;
25212 case WDI_UPDATE_SCAN_PARAMS_REQ:
25213 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
25214#endif // FEATURE_WLAN_SCAN_PNO
25215 case WDI_SET_TX_PER_TRACKING_REQ:
25216 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
25217#ifdef WLAN_FEATURE_PACKET_FILTERING
25218 case WDI_8023_MULTICAST_LIST_REQ:
25219 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
25220 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025221 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025222 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25223 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
25224 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25225 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
25226#endif // WLAN_FEATURE_PACKET_FILTERING
25227 case WDI_HAL_DUMP_CMD_REQ:
25228 return WLAN_HAL_DUMP_COMMAND_REQ;
25229#ifdef WLAN_FEATURE_GTK_OFFLOAD
25230 case WDI_GTK_OFFLOAD_REQ:
25231 return WLAN_HAL_GTK_OFFLOAD_REQ;
25232 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25233 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
25234#endif /* WLAN_FEATURE_GTK_OFFLOAD */
25235
25236 case WDI_INIT_SCAN_CON_REQ:
25237 return WLAN_HAL_INIT_SCAN_CON_REQ;
25238 case WDI_SET_POWER_PARAMS_REQ:
25239 return WLAN_HAL_SET_POWER_PARAMS_REQ;
25240 case WDI_SET_TM_LEVEL_REQ:
25241 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
25242 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
25243 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070025244#ifdef WLAN_FEATURE_11AC
25245 case WDI_UPDATE_VHT_OP_MODE_REQ:
25246 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
25247#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025248 case WDI_GET_ROAM_RSSI_REQ:
25249 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053025250 case WDI_DHCP_START_IND:
25251 return WLAN_HAL_DHCP_START_IND;
25252 case WDI_DHCP_STOP_IND:
25253 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070025254#ifdef FEATURE_WLAN_LPHB
25255 case WDI_LPHB_CFG_REQ:
25256 return WLAN_HAL_LPHB_CFG_REQ;
25257#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070025258 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
25259 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
25260 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
25261 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025262#ifdef WLAN_FEATURE_RMC
25263 case WDI_RMC_RULER_REQ:
25264 return WLAN_HAL_RMC_RULER_REQ;
25265 case WDI_RMC_UPDATE_IND:
25266 return WLAN_HAL_RMC_UPDATE_IND;
25267 case WDI_HAL_IBSS_PEER_INFO_REQ:
25268 return WLAN_HAL_GET_IBSS_PEER_INFO_REQ;
25269#endif /* WLAN_FEATURE_RMC */
25270 case WDI_RATE_UPDATE_IND:
25271 return WLAN_HAL_RATE_UPDATE_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070025272
Rajeev79dbe4c2013-10-05 11:03:42 +053025273#ifdef FEATURE_WLAN_BATCH_SCAN
25274 case WDI_SET_BATCH_SCAN_REQ:
25275 return WLAN_HAL_BATCHSCAN_SET_REQ;
25276 case WDI_STOP_BATCH_SCAN_IND:
25277 return WLAN_HAL_BATCHSCAN_STOP_IND;
25278 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
25279 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
25280#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025281
25282#ifdef WLAN_FEATURE_RMC
25283 case WDI_TX_FAIL_MONITOR_IND:
25284 return WLAN_HAL_TX_FAIL_MONITOR_IND;
25285#endif
25286
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053025287 case WDI_START_HT40_OBSS_SCAN_IND:
25288 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
25289 case WDI_STOP_HT40_OBSS_SCAN_IND:
25290 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025291 case WDI_UPDATE_CHAN_REQ:
25292 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025293 case WDI_CH_SWITCH_REQ_V1:
25294 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053025295 case WDI_GET_BCN_MISS_RATE_REQ:
25296 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053025297
25298#ifdef WLAN_FEATURE_LINK_LAYER_STATS
25299 case WDI_LL_STATS_SET_REQ:
25300 return WLAN_HAL_LL_SET_STATS_REQ;
25301 case WDI_LL_STATS_GET_REQ:
25302 return WLAN_HAL_LL_GET_STATS_REQ;
25303 case WDI_LL_STATS_CLEAR_REQ:
25304 return WLAN_HAL_LL_CLEAR_STATS_REQ;
25305#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053025306#ifdef WLAN_FEATURE_EXTSCAN
25307 case WDI_EXTSCAN_START_REQ:
25308 return WLAN_HAL_EXT_SCAN_START_REQ;
25309 case WDI_EXTSCAN_STOP_REQ:
25310 return WLAN_HAL_EXT_SCAN_STOP_REQ;
25311 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
25312 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
25313 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
25314 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
25315 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
25316 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
25317 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
25318 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053025319 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
25320 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053025321#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053025322 case WDI_SPOOF_MAC_ADDR_REQ:
25323 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053025324 case WDI_GET_FW_STATS_REQ:
25325 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053025326 case WDI_ENCRYPT_MSG_REQ:
25327 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053025328 case WDI_FW_LOGGING_INIT_REQ:
25329 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053025330 case WDI_GET_FRAME_LOG_REQ:
25331 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053025332 case WDI_NAN_REQUEST:
25333 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053025334 case WDI_SET_RTS_CTS_HTVHT_IND:
25335 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Sourav Mohapatra2416e0e2018-03-05 18:44:21 +053025336 case WDI_SET_VOWIFI_IND:
25337 return WLAN_HAL_VOWIFI_IND;
Ashish Kumar Dhanotiyaf59c7762018-04-10 17:54:25 +053025338 case WDI_SET_QPOWER:
25339 return WLAN_HAL_QPOWER_ENABLE_BY_HOST_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053025340 case WDI_MON_START_REQ:
25341 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
25342 case WDI_MON_STOP_REQ:
25343 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053025344 case WDI_FW_LOGGING_DXE_DONE_IND:
25345 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053025346 case WDI_FATAL_EVENT_LOGGING_REQ:
25347 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053025348 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
25349 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053025350 case WDI_FWR_MEM_DUMP_REQ:
25351 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053025352 case WDI_START_RSSI_MONITOR_REQ:
25353 return WLAN_HAL_START_RSSI_MONITORING_REQ;
25354 case WDI_STOP_RSSI_MONITOR_REQ:
25355 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053025356 case WDI_WIFI_CONFIG_SET_REQ:
25357 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053025358 case WDI_START_OEM_DATA_REQ_IND_NEW:
25359 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053025360 case WDI_ANTENNA_DIVERSITY_SELECTION_REQ:
25361 return WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_REQ;
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053025362 case WDI_MODIFY_ROAM_PARAMS_IND:
25363 return WLAN_HAL_MODIFY_ROAM_PARAMS_IND;
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053025364 case WDI_SET_ALLOWED_ACTION_FRAMES_IND:
25365 return WLAN_HAL_SET_ALLOWED_ACTION_FRAMES_IND;
Kapil Gupta3d923fb2016-12-20 18:59:27 +053025366 case WDI_SET_AP_FIND_IND:
25367 return WLAN_HAL_QRF_AP_FIND_COMMAND;
Kapil Guptab3a981b2016-06-26 13:36:51 +053025368#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25369 case WDI_PER_ROAM_SCAN_OFFLOAD_REQ:
25370 return WLAN_HAL_SET_PER_ROAM_CONFIG_REQ;
25371 case WDI_PER_ROAM_SCAN_TRIGGER_REQ:
25372 return WLAN_HAL_PER_ROAM_SCAN_TRIGGER_REQ;
25373#endif
Agrawal Ashish17ef5082016-10-17 18:33:21 +053025374#ifdef SAP_AUTH_OFFLOAD
25375 case WDI_PROCESS_SAP_AUTH_OFFLOAD_IND:
25376 return WLAN_HAL_SAP_AUTH_OFFLOAD_IND;
25377#endif
Anurag Chouhan83026002016-12-13 22:46:21 +053025378#ifdef DHCP_SERVER_OFFLOAD
25379 case WDI_DHCP_SERVER_OFFLOAD_REQ:
25380 return WLAN_HAL_DHCP_SERVER_OFFLOAD_REQ;
25381#endif /* DHCP_SERVER_OFFLOAD */
Anurag Chouhan0b29de02016-12-16 13:18:40 +053025382#ifdef MDNS_OFFLOAD
25383 case WDI_MDNS_ENABLE_OFFLOAD_REQ:
25384 return WLAN_HAL_MDNS_ENABLE_OFFLOAD_REQ;
25385 case WDI_MDNS_FQDN_OFFLOAD_REQ:
25386 return WLAN_HAL_MDNS_FQDN_OFFLOAD_REQ;
25387 case WDI_MDNS_RESP_OFFLOAD_REQ:
25388 return WLAN_HAL_MDNS_RESP_OFFLOAD_REQ;
25389 case WDI_MDNS_STATS_OFFLOAD_REQ:
25390 return WLAN_HAL_MDNS_STATS_OFFLOAD_REQ;
25391#endif /* MDNS_OFFLOAD */
Manjeet Singh3ed79242017-01-11 19:04:32 +053025392 case WDI_CAP_TSF_REQ:
25393 return WLAN_HAL_CAPTURE_GET_TSF_TSTAMP;
25394 case WDI_GET_TSF_REQ:
25395 return WLAN_HAL_CAPTURE_GET_TSF_TSTAMP;
Anurag Chouhan6ee81542017-02-09 18:09:27 +053025396 case WDI_FW_ARP_STATS_REQ:
25397 return WLAN_HAL_FW_SET_CLEAR_ARP_STATS_REQ;
25398 case WDI_FW_GET_ARP_STATS_REQ:
25399 return WLAN_HAL_FW_GET_ARP_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025400 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070025401 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025402 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025403
Jeff Johnson295189b2012-06-20 16:38:30 -070025404}/*WDI_2_HAL_REQ_TYPE*/
25405
25406/*Convert WDI response type into HAL response type*/
25407WPT_STATIC WPT_INLINE WDI_ResponseEnumType
25408HAL_2_WDI_RSP_TYPE
25409(
25410 tHalHostMsgType halMsg
25411)
25412{
Jeff Johnsone7245742012-09-05 17:12:55 -070025413 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025414 the chances of getting inlined*/
25415 switch( halMsg )
25416 {
25417 case WLAN_HAL_START_RSP:
25418 return WDI_START_RESP;
25419 case WLAN_HAL_STOP_RSP:
25420 return WDI_STOP_RESP;
25421 case WLAN_HAL_INIT_SCAN_RSP:
25422 return WDI_INIT_SCAN_RESP;
25423 case WLAN_HAL_START_SCAN_RSP:
25424 return WDI_START_SCAN_RESP;
25425 case WLAN_HAL_END_SCAN_RSP:
25426 return WDI_END_SCAN_RESP;
25427 case WLAN_HAL_FINISH_SCAN_RSP:
25428 return WDI_FINISH_SCAN_RESP;
25429 case WLAN_HAL_CONFIG_STA_RSP:
25430 return WDI_CONFIG_STA_RESP;
25431 case WLAN_HAL_DELETE_STA_RSP:
25432 return WDI_DEL_STA_RESP;
25433 case WLAN_HAL_CONFIG_BSS_RSP:
25434 return WDI_CONFIG_BSS_RESP;
25435 case WLAN_HAL_DELETE_BSS_RSP:
25436 return WDI_DEL_BSS_RESP;
25437 case WLAN_HAL_JOIN_RSP:
25438 return WDI_JOIN_RESP;
25439 case WLAN_HAL_POST_ASSOC_RSP:
25440 return WDI_POST_ASSOC_RESP;
25441 case WLAN_HAL_SET_BSSKEY_RSP:
25442 return WDI_SET_BSS_KEY_RESP;
25443 case WLAN_HAL_SET_STAKEY_RSP:
25444 return WDI_SET_STA_KEY_RESP;
25445 case WLAN_HAL_RMV_BSSKEY_RSP:
25446 return WDI_RMV_BSS_KEY_RESP;
25447 case WLAN_HAL_RMV_STAKEY_RSP:
25448 return WDI_RMV_STA_KEY_RESP;
25449 case WLAN_HAL_SET_BCASTKEY_RSP:
25450 return WDI_SET_STA_BCAST_KEY_RESP;
25451 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
25452 // return WDI_RMV_STA_BCAST_KEY_RESP;
25453 case WLAN_HAL_ADD_TS_RSP:
25454 return WDI_ADD_TS_RESP;
25455 case WLAN_HAL_DEL_TS_RSP:
25456 return WDI_DEL_TS_RESP;
25457 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
25458 return WDI_UPD_EDCA_PRMS_RESP;
25459 case WLAN_HAL_ADD_BA_RSP:
25460 return WDI_ADD_BA_RESP;
25461 case WLAN_HAL_DEL_BA_RSP:
25462 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025463#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025464 case WLAN_HAL_TSM_STATS_RSP:
25465 return WDI_TSM_STATS_RESP;
25466#endif
25467 case WLAN_HAL_CH_SWITCH_RSP:
25468 return WDI_CH_SWITCH_RESP;
25469 case WLAN_HAL_SET_LINK_ST_RSP:
25470 return WDI_SET_LINK_ST_RESP;
25471 case WLAN_HAL_GET_STATS_RSP:
25472 return WDI_GET_STATS_RESP;
25473 case WLAN_HAL_UPDATE_CFG_RSP:
25474 return WDI_UPDATE_CFG_RESP;
25475 case WLAN_HAL_ADD_BA_SESSION_RSP:
25476 return WDI_ADD_BA_SESSION_RESP;
25477 case WLAN_HAL_TRIGGER_BA_RSP:
25478 return WDI_TRIGGER_BA_RESP;
25479 case WLAN_HAL_UPDATE_BEACON_RSP:
25480 return WDI_UPD_BCON_PRMS_RESP;
25481 case WLAN_HAL_SEND_BEACON_RSP:
25482 return WDI_SND_BCON_RESP;
25483 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
25484 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
25485 /*Indications*/
25486 case WLAN_HAL_RSSI_NOTIFICATION_IND:
25487 return WDI_HAL_RSSI_NOTIFICATION_IND;
25488 case WLAN_HAL_MISSED_BEACON_IND:
25489 return WDI_HAL_MISSED_BEACON_IND;
25490 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
25491 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
25492 case WLAN_HAL_MIC_FAILURE_IND:
25493 return WDI_HAL_MIC_FAILURE_IND;
25494 case WLAN_HAL_FATAL_ERROR_IND:
25495 return WDI_HAL_FATAL_ERROR_IND;
25496 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
25497 return WDI_HAL_DEL_STA_IND;
25498 case WLAN_HAL_COEX_IND:
25499 return WDI_HAL_COEX_IND;
25500 case WLAN_HAL_OTA_TX_COMPL_IND:
25501 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025502 case WLAN_HAL_P2P_NOA_ATTR_IND:
25503 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080025504 case WLAN_HAL_P2P_NOA_START_IND:
25505 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053025506 case WLAN_HAL_DEL_BA_IND:
25507 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025508 case WLAN_HAL_TX_PER_HIT_IND:
25509 return WDI_HAL_TX_PER_HIT_IND;
25510 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
25511 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070025512 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
25513 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070025514 case WLAN_HAL_SET_TX_POWER_RSP:
25515 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025516 case WLAN_HAL_SET_P2P_GONOA_RSP:
25517 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053025518#ifdef FEATURE_WLAN_TDLS
25519 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
25520 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053025521 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
25522 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053025523 case WLAN_HAL_TDLS_IND:
25524 return WDI_HAL_TDLS_IND;
25525#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025526 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025527 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025528 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025529 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025530 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025532 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025533 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025535 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025536 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025537 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025538 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025539 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025540 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025541 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025542 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025543 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025544 case WLAN_HAL_ADD_BCN_FILTER_RSP:
25545 return WDI_SET_BEACON_FILTER_RESP;
25546 case WLAN_HAL_REM_BCN_FILTER_RSP:
25547 return WDI_REM_BEACON_FILTER_RESP;
25548 case WLAN_HAL_SET_RSSI_THRESH_RSP:
25549 return WDI_SET_RSSI_THRESHOLDS_RESP;
25550 case WLAN_HAL_HOST_OFFLOAD_RSP:
25551 return WDI_HOST_OFFLOAD_RESP;
25552 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
25553 return WDI_WOWL_ADD_BC_PTRN_RESP;
25554 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
25555 return WDI_WOWL_DEL_BC_PTRN_RESP;
25556 case WLAN_HAL_ENTER_WOWL_RSP:
25557 return WDI_WOWL_ENTER_RESP;
25558 case WLAN_HAL_EXIT_WOWL_RSP:
25559 return WDI_WOWL_EXIT_RESP;
25560 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
25561 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
25562 case WLAN_HAL_DOWNLOAD_NV_RSP:
25563 return WDI_NV_DOWNLOAD_RESP;
25564 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
25565 return WDI_FLUSH_AC_RESP;
25566 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
25567 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025568 case WLAN_HAL_PROCESS_PTT_RSP:
25569 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025570 case WLAN_HAL_ADD_STA_SELF_RSP:
25571 return WDI_ADD_STA_SELF_RESP;
25572case WLAN_HAL_DEL_STA_SELF_RSP:
25573 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070025574#ifdef FEATURE_OEM_DATA_SUPPORT
25575 case WLAN_HAL_START_OEM_DATA_RSP:
25576 return WDI_START_OEM_DATA_RESP;
25577#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070025578 case WLAN_HAL_HOST_RESUME_RSP:
25579 return WDI_HOST_RESUME_RESP;
25580 case WLAN_HAL_KEEP_ALIVE_RSP:
25581 return WDI_KEEP_ALIVE_RESP;
25582#ifdef FEATURE_WLAN_SCAN_PNO
25583 case WLAN_HAL_SET_PREF_NETWORK_RSP:
25584 return WDI_SET_PREF_NETWORK_RESP;
25585 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025586 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025587 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
25588 return WDI_UPDATE_SCAN_PARAMS_RESP;
25589 case WLAN_HAL_PREF_NETW_FOUND_IND:
25590 return WDI_HAL_PREF_NETWORK_FOUND_IND;
25591#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025592#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025593 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
25594 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025595#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025596 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
25597 return WDI_SET_TX_PER_TRACKING_RESP;
25598#ifdef WLAN_FEATURE_PACKET_FILTERING
25599 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
25600 return WDI_8023_MULTICAST_LIST_RESP;
25601 case WLAN_HAL_SET_PACKET_FILTER_RSP:
25602 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
25603 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
25604 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
25605 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
25606 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
25607#endif // WLAN_FEATURE_PACKET_FILTERING
25608
25609 case WLAN_HAL_DUMP_COMMAND_RSP:
25610 return WDI_HAL_DUMP_CMD_RESP;
25611 case WLAN_HAL_SET_POWER_PARAMS_RSP:
25612 return WDI_SET_POWER_PARAMS_RESP;
25613#ifdef WLAN_FEATURE_VOWIFI_11R
25614 case WLAN_HAL_AGGR_ADD_TS_RSP:
25615 return WDI_AGGR_ADD_TS_RESP;
25616#endif
25617
25618#ifdef WLAN_FEATURE_GTK_OFFLOAD
25619 case WLAN_HAL_GTK_OFFLOAD_RSP:
25620 return WDI_GTK_OFFLOAD_RESP;
25621 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
25622 return WDI_GTK_OFFLOAD_GETINFO_RESP;
25623#endif /* WLAN_FEATURE_GTK_OFFLOAD */
25624#ifdef WLAN_WAKEUP_EVENTS
25625 case WLAN_HAL_WAKE_REASON_IND:
25626 return WDI_HAL_WAKE_REASON_IND;
25627#endif // WLAN_WAKEUP_EVENTS
25628
25629 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
25630 return WDI_SET_TM_LEVEL_RESP;
25631 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
25632 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070025633#ifdef WLAN_FEATURE_11AC
25634 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
25635 return WDI_UPDATE_VHT_OP_MODE_RESP;
25636#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025637#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025638 case WLAN_HAL_GET_ROAM_RSSI_RSP:
25639 return WDI_GET_ROAM_RSSI_RESP;
25640#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025641
Leo Chang9056f462013-08-01 19:21:11 -070025642#ifdef FEATURE_WLAN_LPHB
25643 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070025644 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070025645 case WLAN_HAL_LPHB_CFG_RSP:
25646 return WDI_LPHB_CFG_RESP;
25647#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025648
25649 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
25650 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070025651 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
25652 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025653
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025654#ifdef WLAN_FEATURE_RMC
25655 case WLAN_HAL_RMC_RULER_RSP:
25656 return WDI_RMC_RULER_RESP;
25657 case WLAN_HAL_RMC_UPDATE_IND:
25658 return WDI_RMC_UPDATE_IND_TO_HOST;
25659 case WLAN_HAL_GET_IBSS_PEER_INFO_RSP:
25660 return WDI_HAL_IBSS_PEER_INFO_RSP;
25661#endif /* WLAN_FEATURE_RMC */
25662
Rajeev79dbe4c2013-10-05 11:03:42 +053025663#ifdef FEATURE_WLAN_BATCH_SCAN
25664 case WLAN_HAL_BATCHSCAN_SET_RSP:
25665 return WDI_SET_BATCH_SCAN_RESP;
25666 case WLAN_HAL_BATCHSCAN_RESULT_IND:
25667 return WDI_BATCHSCAN_RESULT_IND;
25668#endif // FEATURE_WLAN_BATCH_SCAN
25669
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025670#ifdef WLAN_FEATURE_RMC
25671 case WLAN_HAL_TX_FAIL_IND:
25672 return WDI_HAL_TX_FAIL_IND;
25673#endif /* WLAN_FEATURE_RMC */
25674
Leo Chang0b0e45a2013-12-15 15:18:55 -080025675#ifdef FEATURE_WLAN_CH_AVOID
25676 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
25677 return WDI_HAL_CH_AVOID_IND;
25678#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025679 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
25680 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053025681 case WLAN_HAL_PRINT_REG_INFO_IND:
25682 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053025683 case WLAN_HAL_CH_SWITCH_V1_RSP:
25684 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053025685 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
25686 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053025687#ifdef WLAN_FEATURE_LINK_LAYER_STATS
25688 case WLAN_HAL_LL_SET_STATS_RSP:
25689 return WDI_LL_STATS_SET_RSP;
25690 case WLAN_HAL_LL_GET_STATS_RSP:
25691 return WDI_LL_STATS_GET_RSP;
25692 case WLAN_HAL_LL_CLEAR_STATS_RSP:
25693 return WDI_LL_STATS_CLEAR_RSP;
25694 case WLAN_HAL_LL_NOTIFY_STATS:
25695 return WDI_HAL_LL_STATS_RESULTS_IND;
25696#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053025697#ifdef WLAN_FEATURE_EXTSCAN
25698 case WLAN_HAL_EXT_SCAN_START_RSP:
25699 return WDI_EXTSCAN_START_RSP;
25700 case WLAN_HAL_EXT_SCAN_STOP_RSP:
25701 return WDI_EXTSCAN_STOP_RSP;
25702 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
25703 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
25704 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
25705 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
25706 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
25707 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
25708 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
25709 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053025710 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
25711 return WDI_HAL_EXTSCAN_PROGRESS_IND;
25712 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
25713 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
25714 case WLAN_HAL_EXT_SCAN_RESULT_IND:
25715 return WDI_HAL_EXTSCAN_RESULT_IND;
25716 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
25717 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053025718#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053025719 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
25720 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053025721 case WLAN_HAL_FW_STATS_RSP:
25722 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053025723 case WLAN_HAL_ENCRYPT_DATA_RSP:
25724 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053025725 case WLAN_HAL_FW_LOGGING_INIT_RSP:
25726 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053025727 case WLAN_HAL_GET_FRAME_LOG_RSP:
25728 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053025729 case WLAN_HAL_NAN_RSP:
25730 return WDI_NAN_RESPONSE;
25731 case WLAN_HAL_NAN_EVT:
25732 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053025733 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
25734 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053025735 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
25736 return WDI_MON_START_RSP;
25737 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
25738 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053025739 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
25740 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053025741 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
25742 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053025743 case WLAN_HAL_START_RSSI_MONITORING_RSP:
25744 return WDI_START_RSSI_MONITOR_RSP;
25745 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
25746 return WDI_STOP_RSSI_MONITOR_RSP;
25747 case WLAN_HAL_RSSI_MONITORING_IND:
25748 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053025749 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
25750 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053025751#ifdef FEATURE_OEM_DATA_SUPPORT
25752 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
25753 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
25754#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053025755 case WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_RSP:
25756 return WDI_ANTENNA_DIVERSITY_SELECTION_RSP;
Kapil Guptab3a981b2016-06-26 13:36:51 +053025757#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25758 case WLAN_HAL_SET_PER_ROAM_CONFIG_RSP:
25759 return WDI_PER_ROAM_SCAN_OFFLOAD_RSP;
25760 case WLAN_HAL_PER_ROAM_SCAN_TRIGGER_RSP:
25761 return WDI_PER_ROAM_SCAN_TRIGGER_RSP;
25762#endif
Anurag Chouhan83026002016-12-13 22:46:21 +053025763#ifdef DHCP_SERVER_OFFLOAD
25764 case WLAN_HAL_DHCP_SERVER_OFFLOAD_RSP:
25765 return WDI_DHCP_SERVER_OFFLOAD_RSP;
25766#endif /* DHCP_SERVER_OFFLOAD */
Anurag Chouhan0b29de02016-12-16 13:18:40 +053025767#ifdef MDNS_OFFLOAD
25768 case WLAN_HAL_MDNS_ENABLE_OFFLOAD_RSP:
25769 return WDI_MDNS_ENABLE_OFFLOAD_RSP;
25770 case WLAN_HAL_MDNS_FQDN_OFFLOAD_RSP:
25771 return WDI_MDNS_FQDN_OFFLOAD_RSP;
25772 case WLAN_HAL_MDNS_RESP_OFFLOAD_RSP:
25773 return WDI_MDNS_RESP_OFFLOAD_RSP;
25774 case WLAN_HAL_MDNS_STATS_OFFLOAD_RSP:
25775 return WDI_MDNS_STATS_OFFLOAD_RSP;
25776#endif /* MDNS_OFFLOAD */
Kapil Gupta7a3d9b12016-12-20 20:36:38 +053025777#ifdef WLAN_FEATURE_APFIND
25778 case WLAN_HAL_QRF_PREF_NETW_FOUND_IND:
25779 return WDI_HAL_QRF_PREF_NETWORK_FOUND_IND;
25780#endif
Manjeet Singh3ed79242017-01-11 19:04:32 +053025781 case WLAN_HAL_CAPTURE_GET_TSF_TSTAMP_RSP:
25782 return WDI_CAPTURE_GET_TSF_TSTAMP_RSP;
Anurag Chouhan6ee81542017-02-09 18:09:27 +053025783 case WLAN_HAL_FW_SET_CLEAR_ARP_STATS_RSP:
25784 return WDI_FW_ARP_STATS_RSP;
25785 case WLAN_HAL_FW_GET_ARP_STATS_RSP:
25786 return WDI_FW_GET_ARP_STATS_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025787 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070025788 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025789 }
25790
25791}/*HAL_2_WDI_RSP_TYPE*/
25792
25793
25794/*Convert WDI driver type into HAL driver type*/
25795WPT_STATIC WPT_INLINE tDriverType
25796WDI_2_HAL_DRV_TYPE
25797(
25798 WDI_DriverType wdiDriverType
25799)
25800{
Jeff Johnsone7245742012-09-05 17:12:55 -070025801 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025802 the chances of getting inlined*/
25803 switch( wdiDriverType )
25804 {
25805 case WDI_DRIVER_TYPE_PRODUCTION:
25806 return eDRIVER_TYPE_PRODUCTION;
25807 case WDI_DRIVER_TYPE_MFG:
25808 return eDRIVER_TYPE_MFG;
25809 case WDI_DRIVER_TYPE_DVT:
25810 return eDRIVER_TYPE_DVT;
25811 }
25812
Jeff Johnsone7245742012-09-05 17:12:55 -070025813 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025814}/*WDI_2_HAL_DRV_TYPE*/
25815
25816
25817/*Convert WDI stop reason into HAL stop reason*/
25818WPT_STATIC WPT_INLINE tHalStopType
25819WDI_2_HAL_STOP_REASON
25820(
25821 WDI_StopType wdiDriverType
25822)
25823{
Jeff Johnsone7245742012-09-05 17:12:55 -070025824 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025825 the chances of getting inlined*/
25826 switch( wdiDriverType )
25827 {
25828 case WDI_STOP_TYPE_SYS_RESET:
25829 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070025830 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
25831 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025832 case WDI_STOP_TYPE_RF_KILL:
25833 return HAL_STOP_TYPE_RF_KILL;
25834 }
25835
Jeff Johnsone7245742012-09-05 17:12:55 -070025836 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025837}/*WDI_2_HAL_STOP_REASON*/
25838
25839
25840/*Convert WDI scan mode type into HAL scan mode type*/
25841WPT_STATIC WPT_INLINE eHalSysMode
25842WDI_2_HAL_SCAN_MODE
25843(
25844 WDI_ScanMode wdiScanMode
25845)
25846{
Jeff Johnsone7245742012-09-05 17:12:55 -070025847 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025848 the chances of getting inlined*/
25849 switch( wdiScanMode )
25850 {
25851 case WDI_SCAN_MODE_NORMAL:
25852 return eHAL_SYS_MODE_NORMAL;
25853 case WDI_SCAN_MODE_LEARN:
25854 return eHAL_SYS_MODE_LEARN;
25855 case WDI_SCAN_MODE_SCAN:
25856 return eHAL_SYS_MODE_SCAN;
25857 case WDI_SCAN_MODE_PROMISC:
25858 return eHAL_SYS_MODE_PROMISC;
25859 case WDI_SCAN_MODE_SUSPEND_LINK:
25860 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070025861 case WDI_SCAN_MODE_ROAM_SCAN:
25862 return eHAL_SYS_MODE_ROAM_SCAN;
25863 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
25864 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 }
25866
Jeff Johnsone7245742012-09-05 17:12:55 -070025867 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025868}/*WDI_2_HAL_SCAN_MODE*/
25869
25870/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025871WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070025872WDI_2_HAL_SEC_CH_OFFSET
25873(
25874 WDI_HTSecondaryChannelOffset wdiSecChOffset
25875)
25876{
Jeff Johnsone7245742012-09-05 17:12:55 -070025877 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025878 the chances of getting inlined*/
25879 switch( wdiSecChOffset )
25880 {
25881 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025882 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025883 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025884 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025886 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25887#ifdef WLAN_FEATURE_11AC
25888 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25889 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25890 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25891 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25892 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25893 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25894 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25895 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25896 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25897 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25898 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25899 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25900 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25901 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25902#endif
25903 default:
25904 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025905 }
25906
Jeff Johnsone7245742012-09-05 17:12:55 -070025907 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025908}/*WDI_2_HAL_SEC_CH_OFFSET*/
25909
25910/*Convert WDI BSS type into HAL BSS type*/
25911WPT_STATIC WPT_INLINE tSirBssType
25912WDI_2_HAL_BSS_TYPE
25913(
25914 WDI_BssType wdiBSSType
25915)
25916{
Jeff Johnsone7245742012-09-05 17:12:55 -070025917 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025918 the chances of getting inlined*/
25919 switch( wdiBSSType )
25920 {
25921 case WDI_INFRASTRUCTURE_MODE:
25922 return eSIR_INFRASTRUCTURE_MODE;
25923 case WDI_INFRA_AP_MODE:
25924 return eSIR_INFRA_AP_MODE;
25925 case WDI_IBSS_MODE:
25926 return eSIR_IBSS_MODE;
25927 case WDI_BTAMP_STA_MODE:
25928 return eSIR_BTAMP_STA_MODE;
25929 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025930 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025931 case WDI_BSS_AUTO_MODE:
25932 return eSIR_AUTO_MODE;
25933 }
25934
Jeff Johnsone7245742012-09-05 17:12:55 -070025935 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025936}/*WDI_2_HAL_BSS_TYPE*/
25937
25938/*Convert WDI NW type into HAL NW type*/
25939WPT_STATIC WPT_INLINE tSirNwType
25940WDI_2_HAL_NW_TYPE
25941(
25942 WDI_NwType wdiNWType
25943)
25944{
Jeff Johnsone7245742012-09-05 17:12:55 -070025945 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025946 the chances of getting inlined*/
25947 switch( wdiNWType )
25948 {
25949 case WDI_11A_NW_TYPE:
25950 return eSIR_11A_NW_TYPE;
25951 case WDI_11B_NW_TYPE:
25952 return eSIR_11B_NW_TYPE;
25953 case WDI_11G_NW_TYPE:
25954 return eSIR_11G_NW_TYPE;
25955 case WDI_11N_NW_TYPE:
25956 return eSIR_11N_NW_TYPE;
25957 }
25958
Jeff Johnsone7245742012-09-05 17:12:55 -070025959 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025960}/*WDI_2_HAL_NW_TYPE*/
25961
25962/*Convert WDI chanel bonding type into HAL cb type*/
25963WPT_STATIC WPT_INLINE ePhyChanBondState
25964WDI_2_HAL_CB_STATE
25965(
25966 WDI_PhyChanBondState wdiCbState
25967)
25968{
Jeff Johnsone7245742012-09-05 17:12:55 -070025969 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025970 the chances of getting inlined*/
25971 switch ( wdiCbState )
25972 {
25973 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25974 return PHY_SINGLE_CHANNEL_CENTERED;
25975 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25976 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25977 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25978 return PHY_DOUBLE_CHANNEL_CENTERED;
25979 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25980 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025981#ifdef WLAN_FEATURE_11AC
25982 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25983 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25984 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25985 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25986 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25987 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25988 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25989 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25990 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25991 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25992 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25993 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25994 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25995 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25996#endif
25997 case WDI_MAX_CB_STATE:
25998 default:
25999 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026000 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026001
Jeff Johnson295189b2012-06-20 16:38:30 -070026002 return PHY_CHANNEL_BONDING_STATE_MAX;
26003}/*WDI_2_HAL_CB_STATE*/
26004
26005/*Convert WDI chanel bonding type into HAL cb type*/
26006WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
26007WDI_2_HAL_HT_OPER_MODE
26008(
26009 WDI_HTOperatingMode wdiHTOperMode
26010)
26011{
Jeff Johnsone7245742012-09-05 17:12:55 -070026012 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026013 the chances of getting inlined*/
26014 switch ( wdiHTOperMode )
26015 {
26016 case WDI_HT_OP_MODE_PURE:
26017 return eSIR_HT_OP_MODE_PURE;
26018 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
26019 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
26020 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
26021 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
26022 case WDI_HT_OP_MODE_MIXED:
26023 return eSIR_HT_OP_MODE_MIXED;
26024 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026025
Jeff Johnson295189b2012-06-20 16:38:30 -070026026 return eSIR_HT_OP_MODE_MAX;
26027}/*WDI_2_HAL_HT_OPER_MODE*/
26028
26029/*Convert WDI mimo PS type into HAL mimo PS type*/
26030WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
26031WDI_2_HAL_MIMO_PS
26032(
26033 WDI_HTMIMOPowerSaveState wdiHTOperMode
26034)
26035{
Jeff Johnsone7245742012-09-05 17:12:55 -070026036 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026037 the chances of getting inlined*/
26038 switch ( wdiHTOperMode )
26039 {
26040 case WDI_HT_MIMO_PS_STATIC:
26041 return eSIR_HT_MIMO_PS_STATIC;
26042 case WDI_HT_MIMO_PS_DYNAMIC:
26043 return eSIR_HT_MIMO_PS_DYNAMIC;
26044 case WDI_HT_MIMO_PS_NA:
26045 return eSIR_HT_MIMO_PS_NA;
26046 case WDI_HT_MIMO_PS_NO_LIMIT:
26047 return eSIR_HT_MIMO_PS_NO_LIMIT;
26048 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026049
Jeff Johnson295189b2012-06-20 16:38:30 -070026050 return eSIR_HT_MIMO_PS_MAX;
26051}/*WDI_2_HAL_MIMO_PS*/
26052
26053/*Convert WDI ENC type into HAL ENC type*/
26054WPT_STATIC WPT_INLINE tAniEdType
26055WDI_2_HAL_ENC_TYPE
26056(
26057 WDI_EncryptType wdiEncType
26058)
26059{
Jeff Johnsone7245742012-09-05 17:12:55 -070026060 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026061 the chances of getting inlined*/
26062 switch ( wdiEncType )
26063 {
26064 case WDI_ENCR_NONE:
26065 return eSIR_ED_NONE;
26066
26067 case WDI_ENCR_WEP40:
26068 return eSIR_ED_WEP40;
26069
26070 case WDI_ENCR_WEP104:
26071 return eSIR_ED_WEP104;
26072
26073 case WDI_ENCR_TKIP:
26074 return eSIR_ED_TKIP;
26075
26076 case WDI_ENCR_CCMP:
26077 return eSIR_ED_CCMP;
26078
26079 case WDI_ENCR_AES_128_CMAC:
26080 return eSIR_ED_AES_128_CMAC;
26081#if defined(FEATURE_WLAN_WAPI)
26082 case WDI_ENCR_WPI:
26083 return eSIR_ED_WPI;
26084#endif
26085 default:
26086 return eSIR_ED_NOT_IMPLEMENTED;
26087 }
26088
26089}/*WDI_2_HAL_ENC_TYPE*/
26090
26091/*Convert WDI WEP type into HAL WEP type*/
26092WPT_STATIC WPT_INLINE tAniWepType
26093WDI_2_HAL_WEP_TYPE
26094(
26095 WDI_WepType wdiWEPType
26096)
26097{
Jeff Johnsone7245742012-09-05 17:12:55 -070026098 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026099 the chances of getting inlined*/
26100 switch ( wdiWEPType )
26101 {
26102 case WDI_WEP_STATIC:
26103 return eSIR_WEP_STATIC;
26104
26105 case WDI_WEP_DYNAMIC:
26106 return eSIR_WEP_DYNAMIC;
26107 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026108
Jeff Johnson295189b2012-06-20 16:38:30 -070026109 return eSIR_WEP_MAX;
26110}/*WDI_2_HAL_WEP_TYPE*/
26111
26112WPT_STATIC WPT_INLINE tSirLinkState
26113WDI_2_HAL_LINK_STATE
26114(
26115 WDI_LinkStateType wdiLinkState
26116)
26117{
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026119 the chances of getting inlined*/
26120 switch ( wdiLinkState )
26121 {
26122 case WDI_LINK_IDLE_STATE:
26123 return eSIR_LINK_IDLE_STATE;
26124
26125 case WDI_LINK_PREASSOC_STATE:
26126 return eSIR_LINK_PREASSOC_STATE;
26127
26128 case WDI_LINK_POSTASSOC_STATE:
26129 return eSIR_LINK_POSTASSOC_STATE;
26130
26131 case WDI_LINK_AP_STATE:
26132 return eSIR_LINK_AP_STATE;
26133
26134 case WDI_LINK_IBSS_STATE:
26135 return eSIR_LINK_IBSS_STATE;
26136
26137 case WDI_LINK_BTAMP_PREASSOC_STATE:
26138 return eSIR_LINK_BTAMP_PREASSOC_STATE;
26139
26140 case WDI_LINK_BTAMP_POSTASSOC_STATE:
26141 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
26142
26143 case WDI_LINK_BTAMP_AP_STATE:
26144 return eSIR_LINK_BTAMP_AP_STATE;
26145
26146 case WDI_LINK_BTAMP_STA_STATE:
26147 return eSIR_LINK_BTAMP_STA_STATE;
26148
26149 case WDI_LINK_LEARN_STATE:
26150 return eSIR_LINK_LEARN_STATE;
26151
26152 case WDI_LINK_SCAN_STATE:
26153 return eSIR_LINK_SCAN_STATE;
26154
26155 case WDI_LINK_FINISH_SCAN_STATE:
26156 return eSIR_LINK_FINISH_SCAN_STATE;
26157
26158 case WDI_LINK_INIT_CAL_STATE:
26159 return eSIR_LINK_INIT_CAL_STATE;
26160
26161 case WDI_LINK_FINISH_CAL_STATE:
26162 return eSIR_LINK_FINISH_CAL_STATE;
26163
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 case WDI_LINK_LISTEN_STATE:
26165 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026166
Gopichand Nakkala924e4552013-05-08 19:18:14 +053026167 case WDI_LINK_SEND_ACTION_STATE:
26168 return eSIR_LINK_SEND_ACTION_STATE;
26169
Padma, Santhosh Kumar5c317832017-01-20 15:53:00 +053026170#ifdef WLAN_FEATURE_LFR_MBB
26171 case WDI_LINK_PRE_AUTH_REASSOC_STATE:
26172 return eSIR_LINK_PRE_AUTH_REASSOC_STATE;
26173#endif
26174
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 default:
26176 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070026177 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026178}
26179
Jeff Johnsone7245742012-09-05 17:12:55 -070026180/*Translate a STA Context from WDI into HAL*/
26181WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070026182void
26183WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070026184(
Jeff Johnson295189b2012-06-20 16:38:30 -070026185 tConfigStaParams* phalConfigSta,
26186 WDI_ConfigStaReqInfoType* pwdiConfigSta
26187)
26188{
26189 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026190#ifdef WLAN_FEATURE_11AC
26191 /* Get the Version 1 Handler */
26192 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
26193 if (WDI_getFwWlanFeatCaps(DOT11AC))
26194 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070026195 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070026196 }
26197#endif
26198 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026199 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053026200
Jeff Johnsone7245742012-09-05 17:12:55 -070026201 wpalMemoryCopy(phalConfigSta->bssId,
26202 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
26203
26204 wpalMemoryCopy(phalConfigSta->staMac,
26205 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070026206
26207 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
26208 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
26209 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
26210 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
26211 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
26212 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
26213 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
26214 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
26215 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
26216 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
26217 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
26218 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
26219 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
26220 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
26221 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
26222 phalConfigSta->action = pwdiConfigSta->wdiAction;
26223 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
26224 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
26225 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
26226 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
26227 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
26228 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
26229 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053026230
Jeff Johnson295189b2012-06-20 16:38:30 -070026231 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
26232
Jeff Johnsone7245742012-09-05 17:12:55 -070026233 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070026234 pwdiConfigSta->wdiSupportedRates.opRateMode;
26235 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
26236 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070026238 pwdiConfigSta->wdiSupportedRates.llbRates[i];
26239 }
26240 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
26241 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026242 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 pwdiConfigSta->wdiSupportedRates.llaRates[i];
26244 }
26245 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
26246 {
26247 phalConfigSta->supportedRates.aniLegacyRates[i] =
26248 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
26249 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026250 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070026251 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
26252 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
26253 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026254 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070026255 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
26256 }
26257 phalConfigSta->supportedRates.rxHighestDataRate =
26258 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
26259
Jeff Johnsone7245742012-09-05 17:12:55 -070026260#ifdef WLAN_FEATURE_11AC
26261 if(phalConfigSta_V1 != NULL)
26262 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070026263 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
26264 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
26265 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
26266 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070026267 }
26268#endif
26269
Jeff Johnson295189b2012-06-20 16:38:30 -070026270 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070026271
Jeff Johnsone7245742012-09-05 17:12:55 -070026272#ifdef WLAN_FEATURE_11AC
26273 if(phalConfigSta_V1 != NULL)
26274 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070026275 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
26276 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080026277 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053026278 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080026279 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
26280 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
26281
Jeff Johnsone7245742012-09-05 17:12:55 -070026282 }
26283#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026284}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070026285
26286/*Translate a Rate set info from WDI into HAL*/
26287WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070026288WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070026289(
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 tSirMacRateSet* pHalRateSet,
26291 WDI_RateSet* pwdiRateSet
26292)
26293{
Jeff Johnsone7245742012-09-05 17:12:55 -070026294 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26296
26297 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
26298 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
26299
26300 for ( i = 0; i < pHalRateSet->numRates; i++ )
26301 {
26302 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
26303 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026304
Jeff Johnson295189b2012-06-20 16:38:30 -070026305}/*WDI_CopyWDIRateSetToHALRateSet*/
26306
26307
26308/*Translate an EDCA Parameter Record from WDI into HAL*/
26309WPT_STATIC WPT_INLINE void
26310WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070026311(
Jeff Johnson295189b2012-06-20 16:38:30 -070026312 tSirMacEdcaParamRecord* phalEdcaParam,
26313 WDI_EdcaParamRecord* pWDIEdcaParam
26314)
26315{
Jeff Johnsone7245742012-09-05 17:12:55 -070026316 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026317 the chances of getting inlined*/
26318
26319 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
26320 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
26321 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
26322 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
26323
26324 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
26325 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
26326 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
26327}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
26328
26329
26330/*Copy a management frame header from WDI fmt into HAL fmt*/
26331WPT_STATIC WPT_INLINE void
26332WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
26333(
26334 tSirMacMgmtHdr* pmacMgmtHdr,
26335 WDI_MacMgmtHdr* pwdiMacMgmtHdr
26336)
26337{
26338 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
26339 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
26340 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
26341 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
26342 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
26343 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
26344 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
26345 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
26346 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
26347 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
26348 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
26349
26350 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
26351 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
26352
Jeff Johnsone7245742012-09-05 17:12:55 -070026353 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070026354 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070026355 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070026356 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070026357 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026358 pwdiMacMgmtHdr->bssId, 6);
26359
26360 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
26361 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
26362 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
26363
26364}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
26365
26366
26367/*Copy config bss parameters from WDI fmt into HAL fmt*/
26368WPT_STATIC WPT_INLINE void
26369WDI_CopyWDIConfigBSSToHALConfigBSS
26370(
26371 tConfigBssParams* phalConfigBSS,
26372 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
26373)
26374{
26375
26376 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026377#ifdef WLAN_FEATURE_11AC
26378 /* Get the Version 1 Handler */
26379 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
26380 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070026381 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070026382#endif
26383
Jeff Johnson295189b2012-06-20 16:38:30 -070026384 wpalMemoryCopy( phalConfigBSS->bssId,
26385 pwdiConfigBSS->macBSSID,
26386 WDI_MAC_ADDR_LEN);
26387
26388#ifdef HAL_SELF_STA_PER_BSS
26389 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
26390 pwdiConfigBSS->macSelfAddr,
26391 WDI_MAC_ADDR_LEN);
26392#endif
26393
26394 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
26395
26396 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
26397 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
26398
Jeff Johnsone7245742012-09-05 17:12:55 -070026399 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070026400 pwdiConfigBSS->ucShortSlotTimeSupported;
26401 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
26402 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
26403 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
26404 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
26405 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070026406 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070026407 pwdiConfigBSS->ucTXOPProtectionFullSupport;
26408 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
26409 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
26410 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
26411 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
26412 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
26413 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
26414 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
26415 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
26416 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
26417 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
26418
Jeff Johnsone7245742012-09-05 17:12:55 -070026419 phalConfigBSS->htOperMode =
26420 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070026421
26422 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
26423 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
26424 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
Rajeev Kumar Sirasanagandlaade0a332016-06-29 16:52:15 +053026425
26426 if (vos_is_probe_rsp_offload_enabled())
26427 phalConfigBSS->bProxyProbeRespEn = 1;
26428 else
26429 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
Jeff Johnson295189b2012-06-20 16:38:30 -070026430
26431#ifdef WLAN_FEATURE_VOWIFI
26432 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
26433#endif
26434
26435 /*! Used 32 as magic number because that is how the ssid is declared inside the
26436 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070026437 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
26439 pwdiConfigBSS->wdiSSID.ucLength : 32;
26440 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070026441 pwdiConfigBSS->wdiSSID.sSSID,
26442 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026443
26444 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
26445 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070026446
Jeff Johnson295189b2012-06-20 16:38:30 -070026447 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
26448 &pwdiConfigBSS->wdiRateSet);
26449
26450 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
26451
26452 if(phalConfigBSS->edcaParamsValid)
26453 {
26454 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
26455 &pwdiConfigBSS->wdiBEEDCAParams);
26456 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
26457 &pwdiConfigBSS->wdiBKEDCAParams);
26458 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
26459 &pwdiConfigBSS->wdiVIEDCAParams);
26460 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
26461 &pwdiConfigBSS->wdiVOEDCAParams);
26462 }
26463
Jeff Johnsone7245742012-09-05 17:12:55 -070026464 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070026465
26466 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
26467
26468#ifdef WLAN_FEATURE_VOWIFI_11R
26469
Jeff Johnsone7245742012-09-05 17:12:55 -070026470 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070026471 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070026472
Jeff Johnson295189b2012-06-20 16:38:30 -070026473 if( phalConfigBSS->extSetStaKeyParamValid )
26474 {
26475 /*-----------------------------------------------------------------------
26476 Copy the STA Key parameters into the HAL message
26477 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026478 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026479 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
26480
Jeff Johnsone7245742012-09-05 17:12:55 -070026481 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026482 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
26483
26484 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
26485
26486 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
26487
26488 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
26489
Jeff Johnson295189b2012-06-20 16:38:30 -070026490 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
26491 keyIndex++)
26492 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026493 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070026494 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
26495 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
26496 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
26497 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
26498 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
26499 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070026500 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070026501 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070026502 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070026503 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070026504 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070026505 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
26506 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070026507 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070026508 WDI_MAX_KEY_LENGTH);
26509 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026510 }
26511 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
26512 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026513 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070026514 sizeof(phalConfigBSS->extSetStaKeyParam) );
26515 }
26516
26517#endif /*WLAN_FEATURE_VOWIFI_11R*/
26518
Jeff Johnsone7245742012-09-05 17:12:55 -070026519#ifdef WLAN_FEATURE_11AC
26520 if(phalConfigBSS_V1 != NULL)
26521 {
26522 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
26523 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
26524 }
26525#endif
26526
Jeff Johnson295189b2012-06-20 16:38:30 -070026527}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
26528
26529
Jeff Johnsone7245742012-09-05 17:12:55 -070026530/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026531 pointed to by user data */
26532WPT_STATIC WPT_INLINE void
26533WDI_ExtractRequestCBFromEvent
26534(
26535 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070026536 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070026537 void** ppUserData
26538)
26539{
26540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26541 switch ( pEvent->wdiRequest )
26542 {
26543 case WDI_START_REQ:
26544 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26545 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
26546 break;
26547 case WDI_STOP_REQ:
26548 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26549 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
26550 break;
26551 case WDI_INIT_SCAN_REQ:
26552 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26553 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
26554 break;
26555 case WDI_START_SCAN_REQ:
26556 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26557 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
26558 break;
26559 case WDI_END_SCAN_REQ:
26560 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26561 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
26562 break;
26563 case WDI_FINISH_SCAN_REQ:
26564 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26565 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
26566 break;
26567 case WDI_JOIN_REQ:
26568 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26569 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
26570 break;
26571 case WDI_CONFIG_BSS_REQ:
26572 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26573 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
26574 break;
26575 case WDI_DEL_BSS_REQ:
26576 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26577 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
26578 break;
26579 case WDI_POST_ASSOC_REQ:
26580 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26581 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
26582 break;
26583 case WDI_DEL_STA_REQ:
26584 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26585 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
26586 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053026587
26588 case WDI_ADD_STA_SELF_REQ:
26589 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26590 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
26591 break;
26592
Jeff Johnson295189b2012-06-20 16:38:30 -070026593 case WDI_DEL_STA_SELF_REQ:
26594 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26595 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
26596 break;
26597
26598 case WDI_SET_BSS_KEY_REQ:
26599 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26600 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
26601 break;
26602 case WDI_RMV_BSS_KEY_REQ:
26603 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26604 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
26605 break;
26606 case WDI_SET_STA_KEY_REQ:
26607 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26608 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
26609 break;
26610 case WDI_RMV_STA_KEY_REQ:
26611 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26612 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
26613 break;
26614 case WDI_ADD_TS_REQ:
26615 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26616 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
26617 break;
26618 case WDI_DEL_TS_REQ:
26619 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26620 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
26621 break;
26622 case WDI_UPD_EDCA_PRMS_REQ:
26623 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26624 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
26625 break;
26626 case WDI_ADD_BA_SESSION_REQ:
26627 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26628 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
26629 break;
26630 case WDI_DEL_BA_REQ:
26631 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26632 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
26633 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026634#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070026635 case WDI_TSM_STATS_REQ:
26636 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26637 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
26638 break;
26639#endif
26640 case WDI_CH_SWITCH_REQ:
26641 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26642 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
26643 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080026644 case WDI_CH_SWITCH_REQ_V1:
26645 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
26646 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
26647 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026648 case WDI_CONFIG_STA_REQ:
26649 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26650 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
26651 break;
26652 case WDI_SET_LINK_ST_REQ:
26653 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26654 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
26655 break;
26656 case WDI_GET_STATS_REQ:
26657 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26658 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
26659 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026660#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080026661 case WDI_GET_ROAM_RSSI_REQ:
26662 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26663 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
26664 break;
26665#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026666 case WDI_UPDATE_CFG_REQ:
26667 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26668 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
26669 break;
26670 case WDI_ADD_BA_REQ:
26671 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26672 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
26673 break;
26674 case WDI_TRIGGER_BA_REQ:
26675 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26676 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
26677 break;
26678 case WDI_UPD_BCON_PRMS_REQ:
26679 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26680 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
26681 break;
26682 case WDI_SND_BCON_REQ:
26683 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26684 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
26685 break;
26686 case WDI_ENTER_BMPS_REQ:
26687 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26688 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
26689 break;
26690 case WDI_EXIT_BMPS_REQ:
26691 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26692 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
26693 break;
Mihir Shetea4306052014-03-25 00:02:54 +053026694 case WDI_ENTER_IMPS_REQ:
26695 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26696 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
26697 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026698 case WDI_ENTER_UAPSD_REQ:
26699 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26700 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26701 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026702 case WDI_EXIT_UAPSD_REQ:
26703 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26704 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26705 break;
26706 case WDI_SET_UAPSD_PARAM_REQ:
26707 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26708 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
26709 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026710 case WDI_UPDATE_UAPSD_PARAM_REQ:
26711 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26712 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26713 break;
26714 case WDI_CONFIGURE_RXP_FILTER_REQ:
26715 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26716 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
26717 break;
26718 case WDI_SET_BEACON_FILTER_REQ:
26719 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26720 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
26721 break;
26722 case WDI_REM_BEACON_FILTER_REQ:
26723 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26724 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070026725 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026726 case WDI_SET_RSSI_THRESHOLDS_REQ:
26727 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26728 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
26729 break;
26730 case WDI_HOST_OFFLOAD_REQ:
26731 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26732 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
26733 break;
26734 case WDI_WOWL_ADD_BC_PTRN_REQ:
26735 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26736 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
26737 break;
26738 case WDI_WOWL_DEL_BC_PTRN_REQ:
26739 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26740 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
26741 break;
26742 case WDI_WOWL_ENTER_REQ:
26743 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26744 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
26745 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026746 case WDI_WOWL_EXIT_REQ:
26747 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26748 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
26749 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026750 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
26751 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26752 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
26753 break;
26754 case WDI_FLUSH_AC_REQ:
26755 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26756 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
26757 break;
26758 case WDI_BTAMP_EVENT_REQ:
26759 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26760 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
26761 break;
26762 case WDI_KEEP_ALIVE_REQ:
26763 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26764 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
26765 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026766#if defined FEATURE_WLAN_SCAN_PNO
26767 case WDI_SET_PREF_NETWORK_REQ:
26768 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26769 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
26770 break;
26771 case WDI_SET_RSSI_FILTER_REQ:
26772 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26773 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
26774 break;
26775 case WDI_UPDATE_SCAN_PARAMS_REQ:
26776 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
26777 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
26778 break;
26779#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026780 case WDI_SET_TX_PER_TRACKING_REQ:
26781 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26782 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026783 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026784#if defined WLAN_FEATURE_PACKET_FILTERING
26785 case WDI_8023_MULTICAST_LIST_REQ:
26786 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26787 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
26788 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026789 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
26790 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26791 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
26792 break;
26793 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
26794 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26795 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
26796 break;
26797 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
26798 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26799 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
26800 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026801#endif
26802 case WDI_SET_POWER_PARAMS_REQ:
26803 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26804 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
26805 break;
26806#if defined WLAN_FEATURE_GTK_OFFLOAD
26807 case WDI_GTK_OFFLOAD_REQ:
26808 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
26809 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
26810 break;
26811 case WDI_GTK_OFFLOAD_GETINFO_REQ:
26812 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
26813 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
26814 break;
26815#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026816
Jeff Johnson295189b2012-06-20 16:38:30 -070026817 default:
26818 *ppfnReqCB = NULL;
26819 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026820 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026821 }
26822}/*WDI_ExtractRequestCBFromEvent*/
26823
26824
26825/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026826 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070026827 frame xtl is enabled for a particular STA.
26828
26829 WDI_PostAssocReq must have been called.
26830
Jeff Johnsone7245742012-09-05 17:12:55 -070026831 @param uSTAIdx: STA index
26832
Jeff Johnson295189b2012-06-20 16:38:30 -070026833 @see WDI_PostAssocReq
26834 @return Result of the function call
26835*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026836wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070026837WDI_IsHwFrameTxTranslationCapable
26838(
26839 wpt_uint8 uSTAIdx
26840)
26841{
Jeff Johnsone7245742012-09-05 17:12:55 -070026842 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070026843 uma value*/
26844 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026845 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026846 ------------------------------------------------------------------------*/
26847 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26848 {
26849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26850 "WDI API call before module is initialized - Fail request");
26851
Jeff Johnsone7245742012-09-05 17:12:55 -070026852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026853 }
26854
Gopichand Nakkala976e3252013-01-03 15:45:56 -080026855#ifdef WLAN_SOFTAP_VSTA_FEATURE
26856 if (IS_VSTA_IDX(uSTAIdx))
26857 {
26858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26859 "STA %d is a Virtual STA, "
26860 "HW frame translation disabled", uSTAIdx);
26861 return eWLAN_PAL_FALSE;
26862 }
26863#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070026864
Jeff Johnson295189b2012-06-20 16:38:30 -070026865 return gWDICb.bFrameTransEnabled;
26866}/*WDI_IsHwFrameTxTranslationCapable*/
26867
Katya Nigam6201c3e2014-05-27 17:51:42 +053026868
26869/**
26870 @brief WDI_IsSelfSTA - check if staid is self sta index
26871
26872
26873 @param pWDICtx: pointer to the WLAN DAL context
26874 ucSTAIdx: station index
26875
26876 @return Result of the function call
26877*/
26878wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
26879{
26880 wpt_uint8 ucSTAType;
26881
26882 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
26883 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26884 {
26885 if( ucSTAType == WDI_STA_ENTRY_SELF )
26886 return eWLAN_PAL_TRUE;
26887 }
26888
26889 return eWLAN_PAL_FALSE;
26890}
26891
26892
26893
Jeff Johnson295189b2012-06-20 16:38:30 -070026894#ifdef FEATURE_WLAN_SCAN_PNO
26895/**
26896 @brief WDI_SetPreferredNetworkList
26897
Jeff Johnsone7245742012-09-05 17:12:55 -070026898 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026899 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026900
Jeff Johnson295189b2012-06-20 16:38:30 -070026901 wdiPNOScanCb: callback for passing back the response
26902 of the Set PNO operation received from the
26903 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026904
Jeff Johnson295189b2012-06-20 16:38:30 -070026905 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026906 callback
26907
Jeff Johnson295189b2012-06-20 16:38:30 -070026908 @return Result of the function call
26909*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026910WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026911WDI_SetPreferredNetworkReq
26912(
26913 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26914 WDI_PNOScanCb wdiPNOScanCb,
26915 void* pUserData
26916)
26917{
26918 WDI_EventInfoType wdiEventData = {{0}};
26919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26920
26921 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026922 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026923 ------------------------------------------------------------------------*/
26924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26925 {
26926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26927 "WDI API call before module is initialized - Fail request");
26928
Jeff Johnsone7245742012-09-05 17:12:55 -070026929 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026930 }
26931
26932 /*------------------------------------------------------------------------
26933 Fill in Event data and post to the Main FSM
26934 ------------------------------------------------------------------------*/
26935 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026936 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026937 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026938 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026939 wdiEventData.pUserData = pUserData;
26940
26941 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26942}
26943
26944
26945/**
26946 @brief WDI_SetRssiFilterReq
26947
Jeff Johnsone7245742012-09-05 17:12:55 -070026948 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026949 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026950
Jeff Johnson295189b2012-06-20 16:38:30 -070026951 wdiRssiFilterCb: callback for passing back the response
26952 of the Set RSSI Filter operation received from the
26953 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026954
Jeff Johnson295189b2012-06-20 16:38:30 -070026955 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026956 callback
26957
Jeff Johnson295189b2012-06-20 16:38:30 -070026958 @return Result of the function call
26959*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026960WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026961WDI_SetRssiFilterReq
26962(
26963 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26964 WDI_RssiFilterCb wdiRssiFilterCb,
26965 void* pUserData
26966)
26967{
26968 WDI_EventInfoType wdiEventData = {{0}};
26969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26970
26971 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026972 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026973 ------------------------------------------------------------------------*/
26974 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26975 {
26976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26977 "WDI API call before module is initialized - Fail request");
26978
Jeff Johnsone7245742012-09-05 17:12:55 -070026979 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026980 }
26981
26982 /*------------------------------------------------------------------------
26983 Fill in Event data and post to the Main FSM
26984 ------------------------------------------------------------------------*/
26985 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026986 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026987 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026988 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026989 wdiEventData.pUserData = pUserData;
26990
26991 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26992}/*WDI_SetRssiFilterReq*/
26993
26994/**
26995 @brief WDI_UpdateScanParamsReq
26996
Jeff Johnsone7245742012-09-05 17:12:55 -070026997 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026998 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026999
Jeff Johnson295189b2012-06-20 16:38:30 -070027000 wdiUpdateScanParamsCb: callback for passing back the response
27001 of the Set PNO operation received from the
27002 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027003
Jeff Johnson295189b2012-06-20 16:38:30 -070027004 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027005 callback
27006
Jeff Johnson295189b2012-06-20 16:38:30 -070027007 @return Result of the function call
27008*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027009WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027010WDI_UpdateScanParamsReq
27011(
27012 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
27013 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
27014 void* pUserData
27015)
27016{
27017 WDI_EventInfoType wdiEventData = {{0}};
27018 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27019
27020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027021 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027022 ------------------------------------------------------------------------*/
27023 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27024 {
27025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27026 "WDI API call before module is initialized - Fail request");
27027
Jeff Johnsone7245742012-09-05 17:12:55 -070027028 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027029 }
27030
27031 /*------------------------------------------------------------------------
27032 Fill in Event data and post to the Main FSM
27033 ------------------------------------------------------------------------*/
27034 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027035 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027036 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027037 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027038 wdiEventData.pUserData = pUserData;
27039
27040 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27041}
27042
27043/**
Jeff Johnsone7245742012-09-05 17:12:55 -070027044 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070027045 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070027046
27047 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070027048 pwdiPNOScanReqParams: pointer to the info received
27049 from upper layers
27050 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070027051 and its size
27052
Jeff Johnson295189b2012-06-20 16:38:30 -070027053 @return Result of the function call
27054*/
27055
27056WDI_Status
27057WDI_PackPreferredNetworkList
27058(
27059 WDI_ControlBlockType* pWDICtx,
27060 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
27061 wpt_uint8** ppSendBuffer,
27062 wpt_uint16* pSize
27063)
27064{
Jeff Johnsone7245742012-09-05 17:12:55 -070027065 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027066 wpt_uint16 usDataOffset = 0;
27067 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027068 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027069 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070027070 /*-----------------------------------------------------------------------
27071 Get message buffer
27072 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027073 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027074 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027075 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027076 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070027077 {
27078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070027079 "Unable to get send buffer in Set PNO req %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070027080 pwdiPNOScanReqParams);
27081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027083 }
27084
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027085 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
27086
Jeff Johnson295189b2012-06-20 16:38:30 -070027087 /*-------------------------------------------------------------------------
27088 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
27089 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027090 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070027091 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027092 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070027093 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
27094
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027095 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070027096 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070027097 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070027098 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070027099 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
27100
27101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027102 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027103 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
27104 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
27105 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
27106
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027107 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027108 {
27109 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027110 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070027111 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
27112
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027113 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027115 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070027116
27117 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027118 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070027119 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070027120
27121 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027122 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070027123 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070027124
Jeff Johnsone7245742012-09-05 17:12:55 -070027125 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070027126 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027127 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070027128 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
27129 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27130 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
27131 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027132
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027133 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070027134 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027135 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070027136
27137 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027138 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070027139 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
27140
27141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027142 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027143 pPrefNetwListParams->aNetworks[i].ssId.length,
27144 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070027145 }
27146
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027147 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070027148 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070027149 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
27150 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
27151 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
27152
27153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027154 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027155 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070027156 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
27157 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
27158
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027159 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027160 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027161 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070027162 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027163 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070027164 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
27165 }
27166
27167 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027168 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070027169 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
27170 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
27171 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070027172 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027173
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027174 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070027175 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027176 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027177
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027178 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070027179 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
27180 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
27181 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070027182 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027183
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027184 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070027185 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027186 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027187
27188 /*Set the output values*/
27189 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070027190 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027191
27192 return WDI_STATUS_SUCCESS;
27193}/*WDI_PackPreferredNetworkList*/
27194
27195/**
Jeff Johnsone7245742012-09-05 17:12:55 -070027196 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070027197 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070027198
27199 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 pwdiPNOScanReqParams: pointer to the info received
27201 from upper layers
27202 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070027203 and its size
27204
Jeff Johnson295189b2012-06-20 16:38:30 -070027205 @return Result of the function call
27206*/
27207
27208WDI_Status
27209WDI_PackPreferredNetworkListNew
27210(
27211 WDI_ControlBlockType* pWDICtx,
27212 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
27213 wpt_uint8** ppSendBuffer,
27214 wpt_uint16* pSize
27215)
27216{
Jeff Johnsone7245742012-09-05 17:12:55 -070027217 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027218 wpt_uint16 usDataOffset = 0;
27219 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027220 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027221 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070027222
27223 /*-----------------------------------------------------------------------
27224 Get message buffer
27225 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027226 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027227 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070027228 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027229 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070027230 {
27231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070027232 "Unable to get send buffer in Set PNO req %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070027233 pwdiPNOScanReqParams);
27234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027236 }
27237
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027238 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
27239
Jeff Johnson295189b2012-06-20 16:38:30 -070027240 /*-------------------------------------------------------------------------
27241 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
27242 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027243 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070027244 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027245 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070027246 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
27247
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027248 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070027249 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070027250 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070027251 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070027252 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
27253
27254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027255 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027256 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
27257 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
27258 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
27259
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027260 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027261 {
27262 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027263 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070027264 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
27265
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027266 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027267 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027268 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070027269
27270 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027271 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070027272 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070027273
27274 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027275 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070027276 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070027277
27278 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027279 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070027280 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027281
Jeff Johnsone7245742012-09-05 17:12:55 -070027282 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070027283 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027284 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070027285 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
27286
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027287 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027289 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070027290
27291 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027292 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070027293 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
27294
27295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027296 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027297 pPrefNetwListParams->aNetworks[i].ssId.length,
27298 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070027299 }
27300
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027301 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070027302 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070027303 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
27304 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
27305 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
27306
27307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027308 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027309 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070027310 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
27311 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
27312
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027313 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027314 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027315 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070027316 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027317 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070027318 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
27319 }
27320
27321 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027322 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070027323 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
27324 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
27325 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070027326 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027327
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027328 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070027329 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027330 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027331
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027332 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070027333 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
27334 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
27335 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070027336 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027337
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027338 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070027339 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027340 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027341
Jeff Johnson295189b2012-06-20 16:38:30 -070027342
27343 /*Set the output values*/
27344 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070027345 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027346
27347 return WDI_STATUS_SUCCESS;
27348}/*WDI_PackPreferredNetworkListNew*/
27349
27350/**
27351 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027352
27353 @param pWDICtx: pointer to the WLAN DAL context
27354 pEventData: pointer to the event information structure
27355
Jeff Johnson295189b2012-06-20 16:38:30 -070027356 @return Result of the function call
27357*/
27358WDI_Status
27359WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027360(
Jeff Johnson295189b2012-06-20 16:38:30 -070027361 WDI_ControlBlockType* pWDICtx,
27362 WDI_EventInfoType* pEventData
27363)
27364{
27365 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
27366 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027367 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027368 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027369 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027370
27371 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027372 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027373 -------------------------------------------------------------------------*/
27374 if (( NULL == pEventData ) ||
27375 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
27376 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
27377 {
27378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027382 }
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053027383 /*----------------------------------------------------------------------
27384 Avoid Enable PNO during any active session or an ongoing session
Agrawal Ashishcff31692016-12-16 17:17:50 +053027385 Allow only if SAP auth offload feature is enabled
27386 ----------------------------------------------------------------------*/
27387 if ((pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
27388 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) &&
27389 !WDI_getFwWlanFeatCaps(SAP_OFFLOADS))
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053027390 {
Agrawal Ashishcff31692016-12-16 17:17:50 +053027391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053027392 "%s:(Active/Ongoing Session) - Fail request", __func__);
27393
Agrawal Ashishcff31692016-12-16 17:17:50 +053027394 return WDI_STATUS_E_FAILURE;
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053027395 }
27396
Jeff Johnson295189b2012-06-20 16:38:30 -070027397 /*-------------------------------------------------------------------------
27398 Pack the PNO request structure based on version
27399 -------------------------------------------------------------------------*/
27400 if ( pWDICtx->wdiPNOVersion > 0 )
27401 {
27402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027403 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070027404 pWDICtx->wdiPNOVersion);
27405
27406 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
27407 &pSendBuffer, &usSendSize);
27408 }
27409 else
27410 {
27411 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027412 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070027413 pWDICtx->wdiPNOVersion);
27414
27415 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
27416 &pSendBuffer, &usSendSize);
27417 }
27418
27419 if (( WDI_STATUS_SUCCESS != wdiStatus )||
27420 ( NULL == pSendBuffer )||( 0 == usSendSize ))
27421 {
27422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027423 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027424 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027425 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027426 }
27427
27428 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027429 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027430
27431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027432 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027433 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027434 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27435 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027436}
27437
27438/**
27439 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027440
27441 @param pWDICtx: pointer to the WLAN DAL context
27442 pEventData: pointer to the event information structure
27443
Jeff Johnson295189b2012-06-20 16:38:30 -070027444 @see
27445 @return Result of the function call
27446*/
27447WDI_Status
27448WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027449(
Jeff Johnson295189b2012-06-20 16:38:30 -070027450 WDI_ControlBlockType* pWDICtx,
27451 WDI_EventInfoType* pEventData
27452)
27453{
27454 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
27455 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027456 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027457 wpt_uint16 usDataOffset = 0;
27458 wpt_uint16 usSendSize = 0;
27459 wpt_uint8 ucRssiThreshold;
27460
27461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027463 -------------------------------------------------------------------------*/
27464 if (( NULL == pEventData ) ||
27465 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
27466 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
27467 {
27468 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027469 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027470 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027471 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027472 }
27473
27474 /*-----------------------------------------------------------------------
27475 Get message buffer
27476 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053027477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027478 sizeof(ucRssiThreshold),
27479 &pSendBuffer, &usDataOffset, &usSendSize))||
27480 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
27481 {
27482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070027483 "Unable to get send buffer in Set PNO req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070027484 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
27485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027487 }
27488
27489 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
27490
Jeff Johnsone7245742012-09-05 17:12:55 -070027491 wpalMemoryCopy( pSendBuffer+usDataOffset,
27492 &ucRssiThreshold,
27493 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070027494
27495 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027496 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027497
27498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027499 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27502 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027503}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027504#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
27505/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027506 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070027507
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027508 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027509 by the Device Interface
27510
27511 wdiRoamOffloadScancb: callback for passing back the response
27512 of the Roam Candidate Lookup Req operation received from the
27513 device
27514
27515 pUserData: user data will be passed back with the
27516 callback
27517 @return Result of the function call
27518*/
27519WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027520WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027521(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027522 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027523 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
27524 void* pUserData
27525)
27526{
27527 WDI_EventInfoType wdiEventData = {{0}};
27528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27529
27530 /*------------------------------------------------------------------------
27531 Sanity Check
27532 ------------------------------------------------------------------------*/
27533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27534 {
27535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27536 "WDI API call before module is initialized - Fail request");
27537
27538 return WDI_STATUS_E_NOT_ALLOWED;
27539 }
27540
27541 /*------------------------------------------------------------------------
27542 Fill in Event data and post to the Main FSM
27543 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027544 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
27545 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
27546 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027547 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
27548 wdiEventData.pUserData = pUserData;
27549
27550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27551}
27552
Kapil Guptab3a981b2016-06-26 13:36:51 +053027553WDI_Status
27554WDI_PERRoamScanOffloadReq(WDI_PERRoamOffloadScanInfo
27555 *pwdiPERRoamScanOffloadReqParams,
27556 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb,
27557 void *pUserData)
27558{
27559 WDI_EventInfoType wdiEventData = {{0}};
27560
27561 if (eWLAN_PAL_FALSE == gWDIInitialized) {
27562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27563 "WDI API call before module is initialized - Fail request");
27564
27565 return WDI_STATUS_E_NOT_ALLOWED;
27566 }
27567
27568 wdiEventData.wdiRequest = WDI_PER_ROAM_SCAN_OFFLOAD_REQ;
27569 wdiEventData.pEventData = pwdiPERRoamScanOffloadReqParams;
27570 wdiEventData.uEventDataSize = sizeof(*pwdiPERRoamScanOffloadReqParams);
27571 wdiEventData.pCBfnc = wdiPERRoamOffloadScancb;
27572 wdiEventData.pUserData = pUserData;
27573
27574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27575}
27576
27577WDI_Status
27578WDI_PERRoamScanTriggerReq(WDI_PERRoamTriggerScanInfo
27579 *pwdiPERRoamScanTriggerReqParams,
27580 WDI_PERRoamTriggerScanCb wdiPERRoamTriggerScancb,
27581 void *pUserData)
27582{
27583 WDI_EventInfoType wdiEventData = {{0}};
27584 if (eWLAN_PAL_FALSE == gWDIInitialized) {
27585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27586 "WDI API call before module is initialized - Fail request");
27587
27588 return WDI_STATUS_E_NOT_ALLOWED;
27589 }
27590
27591 wdiEventData.wdiRequest = WDI_PER_ROAM_SCAN_TRIGGER_REQ;
27592 wdiEventData.pEventData = pwdiPERRoamScanTriggerReqParams;
27593 wdiEventData.uEventDataSize = sizeof(*pwdiPERRoamScanTriggerReqParams);
27594 wdiEventData.pCBfnc = wdiPERRoamTriggerScancb;
27595 wdiEventData.pUserData = pUserData;
27596
27597 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27598}
27599
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027600void
27601WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
27602{
27603 switch (wdiEdType)
27604 {
27605 case WDI_ED_NONE:
27606 *EdType = eED_NONE;
27607 break;
27608 case WDI_ED_WEP40:
27609 case WDI_ED_WEP104:
27610 *EdType = eED_WEP;
27611 break;
27612 case WDI_ED_TKIP:
27613 *EdType = eED_TKIP;
27614 break;
27615 case WDI_ED_CCMP:
27616#ifdef WLAN_FEATURE_11W
27617 case WDI_ED_AES_128_CMAC:
27618#endif
27619 *EdType = eED_CCMP;
27620 break;
27621#ifdef FEATURE_WLAN_WAPI
27622 case WDI_ED_WPI:
27623 *EdType = eED_WPI;
27624 break;
27625#endif
27626 case WDI_ED_ANY:
27627 *EdType = eED_ANY;
27628 break;
27629
27630 default:
27631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27632 "%s: Unknown Encryption Type", __func__);
27633 break;
27634 }
27635}
27636
27637/**
27638 @brief Helper function to pack Start Roam Candidate Lookup
27639 Request parameters
27640
27641 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027642 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027643 from upper layers
27644 ppSendBuffer, pSize - out pointers of the packed buffer
27645 and its size
27646
27647 @return Result of the function call
27648*/
27649
27650WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027651WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027652(
27653 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027654 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027655 wpt_uint8** ppSendBuffer,
27656 wpt_uint16* pSize
27657)
27658{
27659 wpt_uint8* pSendBuffer = NULL;
27660 wpt_uint16 usDataOffset = 0;
27661 wpt_uint16 usSendSize = 0;
27662 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
27663 wpt_uint8 i;
27664 /*-----------------------------------------------------------------------
27665 Get message buffer
27666 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027668 sizeof(tRoamCandidateListParams),
27669 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070027670 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027671 {
27672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070027673 "Unable to get send buffer in Start Roam Candidate Lookup Req %pK",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027674 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027675 WDI_ASSERT(0);
27676 return WDI_STATUS_E_FAILURE;
27677 }
27678 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070027679 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027680 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027681 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027682 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027683 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027684 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027685 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027686 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027687 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027688 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027689
27690 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027691 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027692 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027693 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027694 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
27695 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027696 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
27697 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
27698 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
27699 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
27700 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080027701 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027702 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080027703 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027704 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
27705 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
27706 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
27707 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
27708 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
27709 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
27710 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080027711 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027712 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027713 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
27714 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
27715 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Sreelakshmi Konamki70bfdaf2017-05-29 18:47:29 +053027716 pRoamCandidateListParams->WeakZoneRssiThresholdForRoam =
27717 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.WeakZoneRssiThresholdForRoam;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027718
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
27720 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
27721 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
27722 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
27723 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
27724 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Sreelakshmi Konamki70bfdaf2017-05-29 18:47:29 +053027725 "HomeAwayTime=%d RssiThesholdForRoam=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027726 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
27727 pRoamCandidateListParams->RoamScanOffloadEnabled,
27728 pRoamCandidateListParams->Command,
27729 pRoamCandidateListParams->StartScanReason,
27730 pRoamCandidateListParams->NeighborScanTimerPeriod,
27731 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
27732 pRoamCandidateListParams->NeighborScanChannelMinTime,
27733 pRoamCandidateListParams->NeighborScanChannelMaxTime,
27734 pRoamCandidateListParams->EmptyRefreshScanPeriod,
27735 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
27736 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
27737 pRoamCandidateListParams->ConnectedNetwork.authentication,
27738 pRoamCandidateListParams->ConnectedNetwork.encryption,
27739 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
27740 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
Sreelakshmi Konamki70bfdaf2017-05-29 18:47:29 +053027741 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime,
27742 pRoamCandidateListParams->WeakZoneRssiThresholdForRoam);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027743 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027744 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027745 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027746 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027747 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
27748 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027749 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027750 pRoamCandidateListParams->us24GProbeSize);
27751 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027752 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027753 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027754 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027755 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
27756 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027757 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027758 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027759 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
27760 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
27761 pRoamCandidateListParams->nProbes =
27762 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
27763 pRoamCandidateListParams->HomeAwayTime =
27764 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
27765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027766 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
27767 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027769 }
27770
27771
27772 /*Set the output values*/
27773 *ppSendBuffer = pSendBuffer;
27774 *pSize = usSendSize;
27775 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027776}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027777
27778/**
27779 @brief Process Start Roam Candidate Lookup Request function
27780
27781 @param pWDICtx: pointer to the WLAN DAL context
27782 pEventData: pointer to the event information structure
27783
27784 @return Result of the function call
27785*/
27786WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027787WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027788(
27789 WDI_ControlBlockType* pWDICtx,
27790 WDI_EventInfoType* pEventData
27791)
27792{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027793 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027794 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
27795 wpt_uint8* pSendBuffer = NULL;
27796 wpt_uint16 usSendSize = 0;
27797 WDI_Status wdiStatus;
27798 /*-------------------------------------------------------------------------
27799 Sanity check
27800 -------------------------------------------------------------------------*/
27801 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027802 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027803 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
27804 {
27805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27806 "%s: Invalid parameters", __func__);
27807 WDI_ASSERT(0);
27808 return WDI_STATUS_E_FAILURE;
27809 }
27810
27811 /*-------------------------------------------------------------------------
27812 Pack the Start Roam Candidate Lookup request structure based on version
27813 -------------------------------------------------------------------------*/
27814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27815 "%s: Packing Roam Candidate Lookup request ", __func__);
27816
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027817 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027818 &pSendBuffer, &usSendSize);
27819
27820 if (( WDI_STATUS_SUCCESS != wdiStatus )||
27821 ( NULL == pSendBuffer )||( 0 == usSendSize ))
27822 {
27823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27824 "%s: failed to pack request parameters", __func__);
27825 WDI_ASSERT(0);
27826 return wdiStatus;
27827 }
27828
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027829 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
27830 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027831
27832 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027833 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027834 -------------------------------------------------------------------------*/
27835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027836 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027837}
27838
Kapil Guptab3a981b2016-06-26 13:36:51 +053027839
27840WDI_Status
27841WDI_ProcessPERRoamScanOffloadReq(WDI_ControlBlockType *pWDICtx,
27842 WDI_EventInfoType *pEventData)
27843{
27844 wpt_uint16 usSendSize = 0;
27845 wpt_uint16 usDataOffset = 0;
27846 wpt_uint8 *pSendBuffer = NULL;
27847 WDI_PERRoamOffloadScanInfo *wdiPERRoamOffloadReq = NULL;
27848 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb = NULL;
27849 tSetPerRoamConfigReq halPERRoamConfigReq;
27850
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027851 if (!pEventData) {
27852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27853 "%s: *pEventdata is null", __func__);
27854 WDI_ASSERT(0);
27855 return WDI_STATUS_E_FAILURE;
27856 }
27857
Kapil Guptab3a981b2016-06-26 13:36:51 +053027858 wdiPERRoamOffloadReq = (WDI_PERRoamOffloadScanInfo *)pEventData->pEventData;
27859 wdiPERRoamOffloadScancb = (WDI_PERRoamOffloadScanCb)pEventData->pCBfnc;
27860
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027861 if (!wdiPERRoamOffloadReq || !wdiPERRoamOffloadScancb) {
Kapil Guptab3a981b2016-06-26 13:36:51 +053027862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27863 "%s: Invalid parameters", __func__);
27864 WDI_ASSERT(0);
27865 return WDI_STATUS_E_FAILURE;
27866 }
27867
27868 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27869 WDI_PER_ROAM_SCAN_OFFLOAD_REQ,
27870 sizeof(halPERRoamConfigReq.perRoamConfigParams),
27871 &pSendBuffer, &usDataOffset, &usSendSize))||
27872 (usSendSize < (usDataOffset +
27873 sizeof(halPERRoamConfigReq.perRoamConfigParams)))) {
27874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27875 "Unable to get send buffer halPERRoamConfigReq Req");
27876 WDI_ASSERT(0);
27877 return WDI_STATUS_E_FAILURE;
27878 }
27879
27880 halPERRoamConfigReq.perRoamConfigParams.request_id =
27881 wdiPERRoamOffloadReq->requestId;
27882 halPERRoamConfigReq.perRoamConfigParams.waitPeriodForNextPERScan =
27883 wdiPERRoamOffloadReq->waitPeriodForNextPERScan;
27884 halPERRoamConfigReq.perRoamConfigParams.rateUpThreshold =
27885 wdiPERRoamOffloadReq->rateUpThreshold;
27886 halPERRoamConfigReq.perRoamConfigParams.rateDownThreshold =
27887 wdiPERRoamOffloadReq->rateDownThreshold;
27888 halPERRoamConfigReq.perRoamConfigParams.isPERRoamCCAEnabled =
27889 wdiPERRoamOffloadReq->isPERRoamCCAEnabled;
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027890 halPERRoamConfigReq.perRoamConfigParams.PERRoamFullScanThreshold =
27891 wdiPERRoamOffloadReq->PERRoamFullScanThreshold;
Kapil Guptab3a981b2016-06-26 13:36:51 +053027892 halPERRoamConfigReq.perRoamConfigParams.PERroamTriggerPercent =
27893 wdiPERRoamOffloadReq->PERroamTriggerPercent;
27894 halPERRoamConfigReq.perRoamConfigParams.PERtimerThreshold =
27895 wdiPERRoamOffloadReq->PERtimerThreshold;
27896
27897 halPERRoamConfigReq.perRoamConfigParams.reserved = 0;
27898
27899 wpalMemoryCopy(pSendBuffer+usDataOffset,
27900 &halPERRoamConfigReq.perRoamConfigParams,
27901 sizeof(halPERRoamConfigReq.perRoamConfigParams));
27902
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027903 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27904 "waitPeriodForNextPERScan=%d rateUpThreshold=%d rateDownThreshold=%d isPERRoamCCAEnabled=%d",
Kapil Guptab3a981b2016-06-26 13:36:51 +053027905 halPERRoamConfigReq.perRoamConfigParams.waitPeriodForNextPERScan,
27906 halPERRoamConfigReq.perRoamConfigParams.rateUpThreshold,
27907 halPERRoamConfigReq.perRoamConfigParams.rateDownThreshold,
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027908 halPERRoamConfigReq.perRoamConfigParams.isPERRoamCCAEnabled);
27909 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27910 "PERtimerThreshold=%d PERroamTriggerPercent =%d PERRoamFullScanThreshold %d",
Kapil Guptab3a981b2016-06-26 13:36:51 +053027911 halPERRoamConfigReq.perRoamConfigParams.PERtimerThreshold,
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027912 halPERRoamConfigReq.perRoamConfigParams.PERroamTriggerPercent,
27913 halPERRoamConfigReq.perRoamConfigParams.PERRoamFullScanThreshold);
27914
Kapil Guptab3a981b2016-06-26 13:36:51 +053027915 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27916 wdiPERRoamOffloadScancb, pEventData->pUserData,
27917 WDI_PER_ROAM_SCAN_OFFLOAD_RSP);
27918}
27919
27920WDI_Status
27921WDI_ProcessPERRoamScanTriggerReq(WDI_ControlBlockType *pWDICtx,
27922 WDI_EventInfoType *pEventData)
27923{
27924 wpt_uint16 usSendSize = 0;
27925 wpt_uint16 usDataOffset = 0;
27926 wpt_uint8 *pSendBuffer = NULL;
27927 WDI_PERRoamTriggerScanCb wdiPERRoamTriggerScancb = NULL;
27928 WDI_PERRoamTriggerScanInfo *wdiPERRoamTriggerReq;
27929 tStartRoamScanReq halPERRoamTriggerReq;
27930
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027931 if (!pEventData) {
27932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27933 "%s: pEventdata is null", __func__);
27934 WDI_ASSERT(0);
27935 return WDI_STATUS_E_FAILURE;
27936 }
27937
Kapil Guptab3a981b2016-06-26 13:36:51 +053027938 wdiPERRoamTriggerReq = (WDI_PERRoamTriggerScanInfo *) pEventData->pEventData;
27939 wdiPERRoamTriggerScancb = (WDI_PERRoamTriggerScanCb)pEventData->pCBfnc;
27940
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027941 if (!wdiPERRoamTriggerReq || !wdiPERRoamTriggerScancb) {
Kapil Guptab3a981b2016-06-26 13:36:51 +053027942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27943 "%s: Invalid parameters", __func__);
27944 WDI_ASSERT(0);
27945 return WDI_STATUS_E_FAILURE;
27946 }
27947
27948 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27949 WDI_PER_ROAM_SCAN_TRIGGER_REQ,
27950 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams),
27951 &pSendBuffer, &usDataOffset, &usSendSize))||
27952 (usSendSize < (usDataOffset +
27953 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams)))) {
27954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27955 "Unable to get send buffer in GetFrameLog Req");
27956 WDI_ASSERT(0);
27957 return WDI_STATUS_E_FAILURE;
27958 }
27959
27960 halPERRoamTriggerReq.startRoamScanTriggerParams.roamScanReq =
27961 wdiPERRoamTriggerReq->roamScanReq;
27962
27963 wpalMemoryCopy(pSendBuffer+usDataOffset,
27964 &halPERRoamTriggerReq.startRoamScanTriggerParams,
27965 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams));
27966
27967 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27968 wdiPERRoamTriggerScancb, pEventData->pUserData,
27969 WDI_PER_ROAM_SCAN_TRIGGER_RSP);
27970}
27971
27972
27973
27974
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027975/**
27976 @brief Process Start Roam Candidate Lookup Rsp function (called when a
27977 response is being received over the bus from HAL)
27978
27979 @param pWDICtx: pointer to the WLAN DAL context
27980 pEventData: pointer to the event information structure
27981
27982 @see
27983 @return Result of the function call
27984*/
27985WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027986WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027987(
27988 WDI_ControlBlockType* pWDICtx,
27989 WDI_EventInfoType* pEventData
27990)
27991{
27992 WDI_Status wdiStatus;
27993 eHalStatus halStatus;
27994 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
27995
27996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27997
27998 /*-------------------------------------------------------------------------
27999 Sanity check
28000 -------------------------------------------------------------------------*/
28001 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28002 ( NULL == pEventData->pEventData ))
28003 {
28004 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28005 "%s: Invalid parameters", __func__);
28006 WDI_ASSERT(0);
28007 return WDI_STATUS_E_FAILURE;
28008 }
28009
28010 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
28011
28012 /*-------------------------------------------------------------------------
28013 Extract response and send it to UMAC
28014 -------------------------------------------------------------------------*/
28015 halStatus = *((eHalStatus*)pEventData->pEventData);
28016 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28017
28018 /*Notify UMAC*/
28019 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
28020
28021 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070028022}/* WDI_ProcessRoamScanOffloadRsp */
Kapil Guptab3a981b2016-06-26 13:36:51 +053028023
28024WDI_Status
28025WDI_ProcessPERRoamScanOffloadRsp(WDI_ControlBlockType *pWDICtx,
28026 WDI_EventInfoType *pEventData)
28027{
28028 WDI_Status wdiStatus;
28029 eHalStatus halStatus;
28030 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb = NULL;
28031
28032 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28033 (NULL == pEventData->pEventData)) {
28034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28035 "%s: Invalid parameters", __func__);
28036 WDI_ASSERT(0);
28037 return WDI_STATUS_E_FAILURE;
28038 }
28039
28040 wdiPERRoamOffloadScancb = (WDI_PERRoamOffloadScanCb)pWDICtx->pfncRspCB;
28041
28042 halStatus = *((eHalStatus*)pEventData->pEventData);
28043 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28044
28045 /*Notify UMAC*/
28046 wdiPERRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
28047
28048 return WDI_STATUS_SUCCESS;
28049}/* WDI_ProcessPERRoamScanOffloadRsp */
28050
28051WDI_Status
28052WDI_ProcessPERRoamScanTriggerRsp
28053(
28054 WDI_ControlBlockType* pWDICtx,
28055 WDI_EventInfoType* pEventData
28056)
28057{
28058 WDI_Status wdiStatus;
28059 eHalStatus halStatus;
28060 WDI_PERRoamOffloadScanCb wdiPERRoamTriggerScancb = NULL;
28061
28062 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28063 (NULL == pEventData->pEventData)) {
28064 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28065 "%s: Invalid parameters", __func__);
28066 WDI_ASSERT(0);
28067 return WDI_STATUS_E_FAILURE;
28068 }
28069
28070 wdiPERRoamTriggerScancb = (WDI_PERRoamTriggerScanCb)pWDICtx->pfncRspCB;
28071
28072 halStatus = *((eHalStatus*)pEventData->pEventData);
28073 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28074
28075 /* Notify UMAC */
28076 wdiPERRoamTriggerScancb(wdiStatus, pWDICtx->pRspCBUserData);
28077
28078 return WDI_STATUS_SUCCESS;
28079}/* WDI_ProcessPERRoamScanTriggerRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070028080#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028081
Kapil Gupta7a3d9b12016-12-20 20:36:38 +053028082#ifdef WLAN_FEATURE_APFIND
Kapil Gupta04897452017-03-13 12:50:35 +053028083#define FIND_AP_WAKELOCK_TIMEOUT 1000
Kapil Gupta7a3d9b12016-12-20 20:36:38 +053028084/**
28085 @brief Process QRF Preferred Network Found Indication function
28086
28087 @param pWDICtx: pointer to the WLAN DAL context
28088 pEventData: pointer to the event information structure
28089
28090 @see
28091 @return Result of the function call
28092*/
28093WDI_Status
28094WDI_ProcessQRFPrefNetworkFoundInd
28095(
28096 WDI_ControlBlockType* pWDICtx,
28097 WDI_EventInfoType* pEventData
28098)
28099{
28100 WDI_LowLevelIndType wdiInd;
28101
28102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28103 "%s:%d Enter", __func__, __LINE__);
28104
28105 /*-------------------------------------------------------------------------
28106 Sanity check
28107 -------------------------------------------------------------------------*/
28108 if (NULL == pWDICtx)
28109 {
28110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28111 "%s: Invalid parameters", __func__);
28112 WDI_ASSERT( 0 );
28113 return WDI_STATUS_E_FAILURE;
28114 }
Kapil Gupta04897452017-03-13 12:50:35 +053028115 vos_wake_lock_timeout_release(&pWDICtx->find_ap_lock,
28116 FIND_AP_WAKELOCK_TIMEOUT,
28117 WIFI_POWER_EVENT_WAKELOCK_FIND_AP_INDICATION);
Kapil Gupta7a3d9b12016-12-20 20:36:38 +053028118 /*Fill in the indication parameters*/
28119 wdiInd.wdiIndicationType = WDI_AP_FOUND_IND;
28120 if ( pWDICtx->wdiLowLevelIndCB )
28121 {
28122 /*Notify UMAC*/
28123 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28124 }
28125
28126 return WDI_STATUS_SUCCESS;
28127}
28128#endif
28129
Jeff Johnson295189b2012-06-20 16:38:30 -070028130/**
28131 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070028132
28133 @param pWDICtx: pointer to the WLAN DAL context
28134 pEventData: pointer to the event information structure
28135
Jeff Johnson295189b2012-06-20 16:38:30 -070028136 @see
28137 @return Result of the function call
28138*/
28139WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028140WDI_PackUpdateScanParamsReq
28141(
28142 WDI_ControlBlockType* pWDICtx,
28143 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
28144 wpt_uint8** ppSendBuffer,
28145 wpt_uint16* pSize
28146)
28147{
28148 wpt_uint8* pSendBuffer = NULL;
28149 wpt_uint16 usDataOffset = 0;
28150 wpt_uint16 usSendSize = 0;
28151 tUpdateScanParams updateScanParams = {0};
28152
28153
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080028154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028155 "Begin WDI Update Scan Parameters Old Style Params");
28156 /*-----------------------------------------------------------------------
28157 Get message buffer
28158 -----------------------------------------------------------------------*/
28159 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
28160 sizeof(updateScanParams),
28161 &pSendBuffer, &usDataOffset, &usSendSize))||
28162 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
28163 {
28164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028165 "Unable to get send buffer in Update Scan Params req %pK",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028166 pwdiUpdateScanParams);
28167 WDI_ASSERT(0);
28168 return WDI_STATUS_E_FAILURE;
28169 }
28170
28171 //
28172 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
28173 //
28174
28175 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
28176 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
28177
28178 updateScanParams.ucChannelCount =
28179 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
28180 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
28181 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
28182 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
28183
28184 wpalMemoryCopy( updateScanParams.aChannels,
28185 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
28186 updateScanParams.ucChannelCount);
28187
28188
28189 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
28190 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
28191 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
28192 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
28193 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
28194
28195 wpalMemoryCopy( pSendBuffer+usDataOffset,
28196 &updateScanParams,
28197 sizeof(updateScanParams));
28198
28199 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
28200 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
28201
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080028202 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028203 "End Update Scan Parameters Old Style");
28204
28205 /*Set the output values*/
28206 *ppSendBuffer = pSendBuffer;
28207 *pSize = usSendSize;
28208
28209 return WDI_STATUS_SUCCESS;
28210}
28211
28212/**
28213 @brief Process Update Scan Params function
28214
28215 @param pWDICtx: pointer to the WLAN DAL context
28216 pEventData: pointer to the event information structure
28217
28218 @see
28219 @return Result of the function call
28220*/
28221WDI_Status
28222WDI_PackUpdateScanParamsReqEx
28223(
28224 WDI_ControlBlockType* pWDICtx,
28225 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
28226 wpt_uint8** ppSendBuffer,
28227 wpt_uint16* pSize
28228)
28229{
28230 wpt_uint8* pSendBuffer = NULL;
28231 wpt_uint16 usDataOffset = 0;
28232 wpt_uint16 usSendSize = 0;
28233 tUpdateScanParamsEx updateScanParams = {0};
28234
28235
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028236 /*-----------------------------------------------------------------------
28237 Get message buffer
28238 -----------------------------------------------------------------------*/
28239 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
28240 sizeof(updateScanParams),
28241 &pSendBuffer, &usDataOffset, &usSendSize))||
28242 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
28243 {
28244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028245 "Unable to get send buffer in Update Scan Params Ex req %pK",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028246 pwdiUpdateScanParams);
28247 WDI_ASSERT(0);
28248 return WDI_STATUS_E_FAILURE;
28249 }
28250
28251 //
28252 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
28253 //
28254
28255 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
28256 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
28257
28258 updateScanParams.ucChannelCount =
28259 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
28260 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
28261 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
28262 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
28263
28264 wpalMemoryCopy( updateScanParams.aChannels,
28265 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
28266 updateScanParams.ucChannelCount);
28267
28268
28269 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
28270 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
28271 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
28272 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
28273 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
28274
28275 wpalMemoryCopy( pSendBuffer+usDataOffset,
28276 &updateScanParams,
28277 sizeof(updateScanParams));
28278
28279 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
28280 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
28281
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028282 /*Set the output values*/
28283 *ppSendBuffer = pSendBuffer;
28284 *pSize = usSendSize;
28285
28286 return WDI_STATUS_SUCCESS;
28287}
28288
28289/**
28290 @brief Process Update Scan Params function
28291
28292 @param pWDICtx: pointer to the WLAN DAL context
28293 pEventData: pointer to the event information structure
28294
28295 @see
28296 @return Result of the function call
28297*/
28298WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028299WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028300(
Jeff Johnson295189b2012-06-20 16:38:30 -070028301 WDI_ControlBlockType* pWDICtx,
28302 WDI_EventInfoType* pEventData
28303)
28304{
28305 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
28306 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028307 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028308 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080028309 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028310
28311 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028312 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028313 -------------------------------------------------------------------------*/
28314 if (( NULL == pEventData ) ||
28315 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
28316 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
28317 {
28318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028319 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028320 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028321 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028322 }
28323
28324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28325 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070028326
28327 //
28328 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
28329 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028330 if ( pWDICtx->wlanVersion.revision < 1 )
28331 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080028332 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028333 &pSendBuffer, &usSendSize);
28334 }
28335 else
28336 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080028337 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
28338 &pSendBuffer, &usSendSize);
28339 }
28340
28341 if(WDI_STATUS_SUCCESS != wdiStatus)
28342 {
28343 //memory allocation failed
28344 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028345 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028346
Jeff Johnson295189b2012-06-20 16:38:30 -070028347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028348 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028349 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028351 wdiUpdateScanParamsCb, pEventData->pUserData,
28352 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028353}
28354
28355/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080028356 @brief Process Update Channel Params function
28357
28358 @param pWDICtx: pointer to the WLAN DAL context
28359 pEventData: pointer to the event information structure
28360
28361 @see
28362 @return Result of the function call
28363*/
28364WDI_Status
28365WDI_ProcessUpdateChannelParamsReq
28366(
28367 WDI_ControlBlockType* pWDICtx,
28368 WDI_EventInfoType* pEventData
28369)
28370{
28371 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
28372 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
28373 wpt_uint8* pSendBuffer = NULL;
28374 wpt_uint16 usDataOffset = 0;
28375 wpt_uint16 usSendSize = 0;
28376 tUpdateChannelReqType *updateChannelParams;
28377 wpt_uint32 usUpdateChanParamSize;
28378 wpt_uint8 num_channels = 0;
28379
28380 /*-------------------------------------------------------------------------
28381 Sanity check
28382 -------------------------------------------------------------------------*/
28383 if (( NULL == pEventData ) ||
28384 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
28385 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
28386 {
28387 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28388 "%s: Invalid parameters", __func__);
28389 WDI_ASSERT(0);
28390 return WDI_STATUS_E_FAILURE;
28391 }
28392 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053028393 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080028394
28395 /*-----------------------------------------------------------------------
28396 Get message buffer
28397 -----------------------------------------------------------------------*/
28398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28399 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
28400 &pSendBuffer, &usDataOffset, &usSendSize))||
28401 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
28402 {
28403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028404 "Unable to get send buffer in Update Channel Params req %pK",
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080028405 pwdiUpdateChanListParams);
28406 WDI_ASSERT(0);
28407 return WDI_STATUS_E_FAILURE;
28408 }
28409 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
28410
28411 updateChannelParams->numChan = num_channels;
28412 wpalMemoryCopy(&updateChannelParams->chanParam,
28413 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
28414 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
28415
28416 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
28417 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
28418
28419 /*-------------------------------------------------------------------------
28420 Send Update channel request to fw
28421 -------------------------------------------------------------------------*/
28422 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
28423 wdiUpdateChanParamsCb, pEventData->pUserData,
28424 WDI_UPDATE_CHAN_RESP);
28425}
28426
28427/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028428 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070028429
28430 @param pWDICtx: pointer to the WLAN DAL context
28431 pEventData: pointer to the event information structure
28432
Jeff Johnson295189b2012-06-20 16:38:30 -070028433 @see
28434 @return Result of the function call
28435*/
28436WDI_Status
28437WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070028438(
Jeff Johnson295189b2012-06-20 16:38:30 -070028439 WDI_ControlBlockType* pWDICtx,
28440 WDI_EventInfoType* pEventData
28441)
28442{
Srikant Kuppa066904f2013-05-07 13:56:02 -070028443 WDI_LowLevelIndType wdiInd;
28444 tpPrefNetwFoundParams pNetwFoundParams;
28445 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070028446
28447
28448 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028449 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028450 -------------------------------------------------------------------------*/
28451 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28452 ( NULL == pEventData->pEventData ))
28453 {
28454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028455 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028456 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070028457 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028458 }
28459
28460 /*-------------------------------------------------------------------------
28461 Extract indication and send it to UMAC
28462 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070028463 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
28464
28465 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
28466 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
28467 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
28468
28469 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
28470 {
28471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28472 "%s: fail to allocate memory", __func__);
28473 return WDI_STATUS_MEM_FAILURE;
28474 }
28475
28476 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
28477 (pNetwFoundParams->ssId.length < 32 )?
28478 pNetwFoundParams->ssId.length : 32;
28479 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
28480 pNetwFoundParams->ssId.ssId,
28481 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
28482 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
28483 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
28484 pNetwFoundParams->frameLength;
28485 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
28486 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
28487 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028488
28489 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028490 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070028491
Jeff Johnson295189b2012-06-20 16:38:30 -070028492 // DEBUG
28493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053028494 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070028495 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070028496 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070028497 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070028498 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070028499 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
28500
ltimariub77f24b2013-01-24 18:54:33 -080028501 if ( pWDICtx->wdiLowLevelIndCB )
28502 {
28503 /*Notify UMAC*/
28504 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28505 }
Nishank Aggarwal760a2e42017-02-14 12:49:20 +053028506 else
28507 vos_mem_free( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028508
28509 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028510}
28511
28512/**
28513 @brief Process PNO Rsp function (called when a
28514 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028515
28516 @param pWDICtx: pointer to the WLAN DAL context
28517 pEventData: pointer to the event information structure
28518
Jeff Johnson295189b2012-06-20 16:38:30 -070028519 @see
28520 @return Result of the function call
28521*/
28522WDI_Status
28523WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028524(
Jeff Johnson295189b2012-06-20 16:38:30 -070028525 WDI_ControlBlockType* pWDICtx,
28526 WDI_EventInfoType* pEventData
28527)
28528{
28529 WDI_Status wdiStatus;
28530 eHalStatus halStatus;
28531 WDI_PNOScanCb wdiPNOScanCb = NULL;
28532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28533
28534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028536 -------------------------------------------------------------------------*/
28537 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28538 ( NULL == pEventData->pEventData ))
28539 {
28540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028541 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028542 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028543 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028544 }
28545
28546
Jeff Johnsone7245742012-09-05 17:12:55 -070028547 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028548
28549 /*-------------------------------------------------------------------------
28550 Extract response and send it to UMAC
28551 -------------------------------------------------------------------------*/
28552 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028553 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028554
28555 /*Notify UMAC*/
28556 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
28557
Jeff Johnsone7245742012-09-05 17:12:55 -070028558 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028559}/*WDI_ProcessSetPreferredNetworkRsp*/
28560
28561/**
28562 @brief Process RSSI Filter Rsp function (called when a
28563 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028564
28565 @param pWDICtx: pointer to the WLAN DAL context
28566 pEventData: pointer to the event information structure
28567
Jeff Johnson295189b2012-06-20 16:38:30 -070028568 @see
28569 @return Result of the function call
28570*/
28571WDI_Status
28572WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028573(
Jeff Johnson295189b2012-06-20 16:38:30 -070028574 WDI_ControlBlockType* pWDICtx,
28575 WDI_EventInfoType* pEventData
28576)
28577{
28578 WDI_Status wdiStatus;
28579 eHalStatus halStatus;
28580 WDI_RssiFilterCb wdiRssiFilterCb;
28581 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28582
28583 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028584 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028585 -------------------------------------------------------------------------*/
28586 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28587 ( NULL == pEventData->pEventData ))
28588 {
28589 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028591 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028592 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028593 }
28594
Jeff Johnsone7245742012-09-05 17:12:55 -070028595 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028596
28597 /*-------------------------------------------------------------------------
28598 Extract response and send it to UMAC
28599 -------------------------------------------------------------------------*/
28600 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028601 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028602
28603 /*Notify UMAC*/
28604 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
28605
Jeff Johnsone7245742012-09-05 17:12:55 -070028606 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028607}/*WDI_ProcessSetRssiFilterRsp*/
28608
28609/**
28610 @brief Process Update Scan Params Rsp function (called when a
28611 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028612
28613 @param pWDICtx: pointer to the WLAN DAL context
28614 pEventData: pointer to the event information structure
28615
Jeff Johnson295189b2012-06-20 16:38:30 -070028616 @see
28617 @return Result of the function call
28618*/
28619WDI_Status
28620WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028621(
Jeff Johnson295189b2012-06-20 16:38:30 -070028622 WDI_ControlBlockType* pWDICtx,
28623 WDI_EventInfoType* pEventData
28624)
28625{
28626 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070028627 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028628 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028629 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28631
28632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028634 -------------------------------------------------------------------------*/
28635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28636 ( NULL == pEventData->pEventData ))
28637 {
28638 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028642 }
28643
28644 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028645 "%s: Process UPD scan params ptr : %pK",
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028646 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028647
Jeff Johnsone7245742012-09-05 17:12:55 -070028648 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028649
28650 /*-------------------------------------------------------------------------
28651 Extract response and send it to UMAC
28652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028653 wpalMemoryCopy( (void *)&halUpdScanParams.status,
28654 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028655 sizeof(halUpdScanParams.status));
28656
28657 uStatus = halUpdScanParams.status;
28658
28659 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070028660 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070028661
28662 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028663 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070028664
Jeff Johnsone7245742012-09-05 17:12:55 -070028665 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028666
28667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028668 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070028669 halUpdScanParams.status);
28670
28671 /*Notify UMAC*/
28672 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28673
Jeff Johnsone7245742012-09-05 17:12:55 -070028674 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028675}
28676#endif // FEATURE_WLAN_SCAN_PNO
28677
28678#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070028679WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028680WDI_8023MulticastListReq
28681(
28682 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
28683 WDI_8023MulticastListCb wdi8023MulticastListCallback,
28684 void* pUserData
28685)
28686{
28687 WDI_EventInfoType wdiEventData;
28688 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28689
28690 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028691 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028692
28693 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028694 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028695 ------------------------------------------------------------------------*/
28696 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28697 {
28698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28699 "WDI API call before module is initialized - Fail request");
28700
Jeff Johnsone7245742012-09-05 17:12:55 -070028701 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028702 }
28703
28704 /*------------------------------------------------------------------------
28705 Fill in Event data and post to the Main FSM
28706 ------------------------------------------------------------------------*/
28707 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028708 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028709 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028710 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028711 wdiEventData.pUserData = pUserData;
28712
28713 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28714}
28715
Jeff Johnsone7245742012-09-05 17:12:55 -070028716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028717WDI_ReceiveFilterSetFilterReq
28718(
28719 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
28720 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
28721 void* pUserData
28722)
28723{
28724 WDI_EventInfoType wdiEventData;
28725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28726
28727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028728 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028729
28730 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028731 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028732 ------------------------------------------------------------------------*/
28733 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28734 {
28735 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28736 "WDI API call before module is initialized - Fail request");
28737
Jeff Johnsone7245742012-09-05 17:12:55 -070028738 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028739 }
28740
28741 /*------------------------------------------------------------------------
28742 Fill in Event data and post to the Main FSM
28743 ------------------------------------------------------------------------*/
28744 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028745 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
28746 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070028747 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
28748 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028749 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028750 wdiEventData.pUserData = pUserData;
28751
28752
28753 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28754}
28755
Jeff Johnsone7245742012-09-05 17:12:55 -070028756WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028757WDI_FilterMatchCountReq
28758(
28759 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
28760 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
28761 void* pUserData
28762)
28763{
28764 WDI_EventInfoType wdiEventData;
28765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28766
28767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028768 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028769
28770 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028771 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028772 ------------------------------------------------------------------------*/
28773 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28774 {
28775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28776 "WDI API call before module is initialized - Fail request");
28777
Jeff Johnsone7245742012-09-05 17:12:55 -070028778 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028779 }
28780
28781 /*------------------------------------------------------------------------
28782 Fill in Event data and post to the Main FSM
28783 ------------------------------------------------------------------------*/
28784 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028785 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028786 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028787 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028788 wdiEventData.pUserData = pUserData;
28789
28790
28791 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28792}
28793
Jeff Johnsone7245742012-09-05 17:12:55 -070028794WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028795WDI_ReceiveFilterClearFilterReq
28796(
28797 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
28798 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
28799 void* pUserData
28800)
28801{
28802 WDI_EventInfoType wdiEventData;
28803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28804
28805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028806 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028807
28808 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028809 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028810 ------------------------------------------------------------------------*/
28811 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28812 {
28813 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28814 "WDI API call before module is initialized - Fail request");
28815
Jeff Johnsone7245742012-09-05 17:12:55 -070028816 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028817 }
28818
28819 /*------------------------------------------------------------------------
28820 Fill in Event data and post to the Main FSM
28821 ------------------------------------------------------------------------*/
28822 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028823 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028824 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028825 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028826 wdiEventData.pUserData = pUserData;
28827
28828
28829 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28830}
28831
28832/**
28833 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028834
28835 @param pWDICtx: pointer to the WLAN DAL context
28836 pEventData: pointer to the event information structure
28837
Jeff Johnson295189b2012-06-20 16:38:30 -070028838 @see
28839 @return Result of the function call
28840*/
28841WDI_Status
28842WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028843(
Jeff Johnson295189b2012-06-20 16:38:30 -070028844 WDI_ControlBlockType* pWDICtx,
28845 WDI_EventInfoType* pEventData
28846)
28847{
28848 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
28849 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028850 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028851 wpt_uint16 usDataOffset = 0;
28852 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028853 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028854 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070028855 wpt_uint8 ucCurrentBSSSesIdx = 0;
28856 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028857
28858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028859 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028860
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028861 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
28862 if( NULL == pRcvFltMcAddrListType )
28863 {
28864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28865 "Failed to alloc in WDI_Process8023MulticastListReq");
28866 return WDI_STATUS_E_FAILURE;
28867 }
28868
Jeff Johnson295189b2012-06-20 16:38:30 -070028869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028871 -------------------------------------------------------------------------*/
28872 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028873 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028874 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028875 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028876 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
28877 {
28878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028879 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028880 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028882 return WDI_STATUS_E_FAILURE;
28883 }
28884
28885 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28886 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
28887 &pBSSSes);
28888 if ( NULL == pBSSSes )
28889 {
28890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028891 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028892 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070028893 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028894 }
28895
28896 /*-----------------------------------------------------------------------
28897 Get message buffer
28898 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028899 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28900 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028901 sizeof(tHalRcvFltMcAddrListType),
28902 &pSendBuffer, &usDataOffset, &usSendSize))||
28903 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
28904 {
28905 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28906 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028907 "WDI_Process8023MulticastListReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070028908 pEventData, pwdiFltPktSetMcListReqParamsType,
28909 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070028910 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028913 }
28914
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028915 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070028916 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028917 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070028918 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028919 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070028920 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
28921 sizeof(tSirMacAddr));
28922 }
28923
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028924 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028925 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028926 pRcvFltMcAddrListType,
28927 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070028928
28929 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028930 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028931
28932
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028933 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028935 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028936 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028937 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028938 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028939 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028940}
28941
28942/**
28943 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028944
28945 @param pWDICtx: pointer to the WLAN DAL context
28946 pEventData: pointer to the event information structure
28947
Jeff Johnson295189b2012-06-20 16:38:30 -070028948 @see
28949 @return Result of the function call
28950*/
28951WDI_Status
28952WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028953(
Jeff Johnson295189b2012-06-20 16:38:30 -070028954 WDI_ControlBlockType* pWDICtx,
28955 WDI_EventInfoType* pEventData
28956)
28957{
28958 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
28959 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028960 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028961 wpt_uint16 usDataOffset = 0;
28962 wpt_uint16 usSendSize = 0;
28963 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028964 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028965 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070028966 wpt_uint8 ucCurrentBSSSesIdx = 0;
28967 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028968 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
28969 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070028970
28971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028972 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028973
28974 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028975 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028976 -------------------------------------------------------------------------*/
28977 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028978 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070028979 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028980 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028981 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
28982 {
28983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028984 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028985 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028986 return WDI_STATUS_E_FAILURE;
28987 }
28988
28989 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28990 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
28991 &pBSSSes);
28992 if ( NULL == pBSSSes )
28993 {
28994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028995 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028997 }
28998
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028999 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
29000 {
Jeff Johnson295189b2012-06-20 16:38:30 -070029001
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029002 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
29003 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
29004 * sizeof(tHalSessionizedRcvPktFilterCfgType));
29005
29006 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
29007 usSessRcvPktFilterCfgSize);
29008
29009 if(NULL == pSessRcvPktFilterCfg)
29010 {
29011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29012 "%s: Failed to allocate memory for "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029013 "tHalRcvPktFilterCfgType: %pK %pK %pK ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029014 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029015 WDI_ASSERT(0);
29016 return WDI_STATUS_E_FAILURE;
29017 }
29018
29019 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
29020
29021 /*-----------------------------------------------------------------------
29022 Get message buffer
29023 -----------------------------------------------------------------------*/
29024
29025 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
29026 usSessRcvPktFilterCfgSize,
29027 &pSendBuffer, &usDataOffset, &usSendSize))||
29028 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
29029 {
29030 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29031 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029032 "WDI_ProcessReceiveFilterSetFilterReq() %pK %pK %pK",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029033 pEventData, pwdiSetRcvPktFilterReqInfo,
29034 wdiReceiveFilterSetFilterCb);
29035 WDI_ASSERT(0);
29036 wpalMemoryFree(pSessRcvPktFilterCfg);
29037 return WDI_STATUS_E_FAILURE;
29038 }
29039
29040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029041 "UsData Off %d UsSend %d cfg %pK",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029042 usSendSize,pSessRcvPktFilterCfg);
29043
29044 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
29045 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
29046 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
29047 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
29048
29049 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
29050
29051 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29052 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
29053 pSessRcvPktFilterCfg->filterType);
29054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29055 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
29056 pSessRcvPktFilterCfg->coleasceTime);
29057
29058 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
29059 {
29060 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
29061 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
29062 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
29063 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
29064 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
29065 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
29066 pSessRcvPktFilterCfg->paramsData[i].dataLength =
29067 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
29068
29069 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
29070 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
29071 8);
29072 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
29073 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
29074 8);
29075
29076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029077 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029078 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
29079 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
29080
29081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029082 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029083 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
29084 pSessRcvPktFilterCfg->paramsData[i].dataLength);
29085
29086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029087 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029088 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
29089 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
29090 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
29091 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
29092 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
29093 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
29094
29095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029096 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029097 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
29098 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
29099 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
29100 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
29101 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
29102 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
29103 }
29104
29105 wpalMemoryCopy( pSendBuffer+usDataOffset,
29106 pSessRcvPktFilterCfg,
29107 usSessRcvPktFilterCfgSize);
29108
29109
29110 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
29111 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
29112
29113 wpalMemoryFree(pSessRcvPktFilterCfg);
29114
29115 }
29116 /*If SLM_SESSIONIZATION is not supported then do this */
29117 else
29118 {
29119 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
29120 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
29121 * sizeof(tHalRcvPktFilterParams));
29122
29123 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070029124 usRcvPktFilterCfgSize);
29125
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029126 if(NULL == pRcvPktFilterCfg)
29127 {
29128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29129 "%s: Failed to allocate memory for "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029130 "tHalRcvPktFilterCfgType: %pK %pK %pK ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029131 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029132 WDI_ASSERT(0);
29133 return WDI_STATUS_E_FAILURE;
29134 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029135
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029136 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070029137
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029138 /*-----------------------------------------------------------------------
29139 Get message buffer
29140 -----------------------------------------------------------------------*/
29141 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070029142 usRcvPktFilterCfgSize,
29143 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029144 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
29145 {
29146 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070029147 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029148 "WDI_ProcessReceiveFilterSetFilterReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070029149 pEventData, pwdiSetRcvPktFilterReqInfo,
29150 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029151 WDI_ASSERT(0);
29152 wpalMemoryFree(pRcvPktFilterCfg);
29153 return WDI_STATUS_E_FAILURE;
29154 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029155
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029156 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070029157 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070029158 usSendSize,usRcvPktFilterCfgSize);
29159
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029160 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
29161 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
29162 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
29163 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070029164
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070029166 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070029167 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070029169 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070029170 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070029171
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029172 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
29173 {
29174 pRcvPktFilterCfg->paramsData[i].protocolLayer =
29175 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
29176 pRcvPktFilterCfg->paramsData[i].cmpFlag =
29177 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
29178 pRcvPktFilterCfg->paramsData[i].dataOffset =
29179 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
29180 pRcvPktFilterCfg->paramsData[i].dataLength =
29181 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070029182
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029183 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070029184 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
29185 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029186 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070029187 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
29188 8);
29189
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029191 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070029192 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070029193 pRcvPktFilterCfg->paramsData[i].cmpFlag);
29194
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029196 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029197 pRcvPktFilterCfg->paramsData[i].dataOffset,
29198 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070029199
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029201 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029202 pRcvPktFilterCfg->paramsData[i].compareData[0],
29203 pRcvPktFilterCfg->paramsData[i].compareData[1],
29204 pRcvPktFilterCfg->paramsData[i].compareData[2],
29205 pRcvPktFilterCfg->paramsData[i].compareData[3],
29206 pRcvPktFilterCfg->paramsData[i].compareData[4],
29207 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070029208
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029210 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029211 pRcvPktFilterCfg->paramsData[i].dataMask[0],
29212 pRcvPktFilterCfg->paramsData[i].dataMask[1],
29213 pRcvPktFilterCfg->paramsData[i].dataMask[2],
29214 pRcvPktFilterCfg->paramsData[i].dataMask[3],
29215 pRcvPktFilterCfg->paramsData[i].dataMask[4],
29216 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
29217 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029218
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029219 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070029220 pRcvPktFilterCfg,
29221 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070029222
29223
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029224 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
29225 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029226
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029228 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029229 wpalMemoryFree(pRcvPktFilterCfg);
29230 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029231 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029232 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029233 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029234 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070029235 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070029236 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029237}
29238
29239/**
29240 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070029241
29242 @param pWDICtx: pointer to the WLAN DAL context
29243 pEventData: pointer to the event information structure
29244
Jeff Johnson295189b2012-06-20 16:38:30 -070029245 @see
29246 @return Result of the function call
29247*/
29248WDI_Status
29249WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070029250(
Jeff Johnson295189b2012-06-20 16:38:30 -070029251 WDI_ControlBlockType* pWDICtx,
29252 WDI_EventInfoType* pEventData
29253)
29254{
29255 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
29256 NULL;
29257 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
29258 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070029259 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029260 wpt_uint16 usDataOffset = 0;
29261 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029262 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
29263 wpt_uint8 ucCurrentBSSSesIdx = 0;
29264 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029265
29266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029267 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029268
29269 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029270 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029271 -------------------------------------------------------------------------*/
29272 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070029273 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070029274 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070029275 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070029276 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
29277 {
29278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029282 }
29283
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029284 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
29285 pwdiRcvFltPktMatchCntReqParamsType->bssId,
29286 &pBSSSes);
29287 if ( NULL == pBSSSes )
29288 {
29289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029290 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029291 return WDI_STATUS_E_FAILURE;
29292 }
29293
Jeff Johnson295189b2012-06-20 16:38:30 -070029294 /*-----------------------------------------------------------------------
29295 Get message buffer
29296 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029297 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29298 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029299 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029300 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029301 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029302 {
29303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29304 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029305 "WDI_ProcessFilterMatchCountReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070029306 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
29307 wdiFilterMatchCountCb);
29308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029310 }
29311
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029312 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
29313 wpalMemoryCopy( pSendBuffer+usDataOffset,
29314 &rcvFltPktMatchCntReqParam,
29315 sizeof(rcvFltPktMatchCntReqParam));
29316
Jeff Johnson295189b2012-06-20 16:38:30 -070029317 //
29318 // Don't need to fill send buffer other than header
29319 //
29320 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070029321 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029322
29323
29324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029325 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029326 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029327 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29328 wdiFilterMatchCountCb,
29329 pEventData->pUserData,
29330 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029331}
29332
29333/**
29334 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070029335
29336 @param pWDICtx: pointer to the WLAN DAL context
29337 pEventData: pointer to the event information structure
29338
Jeff Johnson295189b2012-06-20 16:38:30 -070029339 @see
29340 @return Result of the function call
29341*/
29342WDI_Status
29343WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070029344(
Jeff Johnson295189b2012-06-20 16:38:30 -070029345 WDI_ControlBlockType* pWDICtx,
29346 WDI_EventInfoType* pEventData
29347)
Jeff Johnsone7245742012-09-05 17:12:55 -070029348{
Jeff Johnson295189b2012-06-20 16:38:30 -070029349 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
29350 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070029351 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029352 wpt_uint16 usDataOffset = 0;
29353 wpt_uint16 usSendSize = 0;
29354 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029355 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070029356 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029357
29358 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029359 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029360
29361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029363 -------------------------------------------------------------------------*/
29364 if (( NULL == pEventData ) ||
29365 ( NULL == (pwdiRcvFltPktClearReqParamsType =
29366 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070029367 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070029368 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
29369 {
29370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029371 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029373 return WDI_STATUS_E_FAILURE;
29374 }
29375
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029376 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070029377 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
29378 &pBSSSes);
29379 if ( NULL == pBSSSes )
29380 {
29381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029382 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070029383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029384 }
29385
29386 /*-----------------------------------------------------------------------
29387 Get message buffer
29388 -----------------------------------------------------------------------*/
29389 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070029390 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070029391 sizeof(tHalRcvFltPktClearParam),
29392 &pSendBuffer, &usDataOffset, &usSendSize))||
29393 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
29394 {
29395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29396 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029397 "WDI_ProcessReceiveFilterClearFilterReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070029398 pEventData, pwdiRcvFltPktClearReqParamsType,
29399 wdiRcvFltPktClearFilterCb);
29400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029402 }
29403
29404
29405 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070029406 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070029407 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070029408 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070029409
Jeff Johnsone7245742012-09-05 17:12:55 -070029410 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
29411 wpalMemoryCopy( pSendBuffer+usDataOffset,
29412 &rcvFltPktClearParam,
29413 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070029414
29415 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070029416 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029417
29418
29419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029420 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029421 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029422 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070029423 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070029424 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029425}
29426
29427/**
29428 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070029429
29430 @param pWDICtx: pointer to the WLAN DAL context
29431 pEventData: pointer to the event information structure
29432
Jeff Johnson295189b2012-06-20 16:38:30 -070029433 @see
29434 @return Result of the function call
29435*/
29436WDI_Status
29437WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029438(
Jeff Johnson295189b2012-06-20 16:38:30 -070029439 WDI_ControlBlockType* pWDICtx,
29440 WDI_EventInfoType* pEventData
29441)
29442{
Jeff Johnson295189b2012-06-20 16:38:30 -070029443 eHalStatus halStatus;
29444 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029445 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
29446 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070029447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29448
29449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029450 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029451
29452 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029453 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029454 -------------------------------------------------------------------------*/
29455 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29456 ( NULL == pEventData->pEventData ))
29457 {
29458 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029462 }
29463
Jeff Johnsone7245742012-09-05 17:12:55 -070029464 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029465
29466 /*-------------------------------------------------------------------------
29467 Extract response and send it to UMAC
29468 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029469 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29470 {
29471 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
29472 pEventData->pEventData,
29473 sizeof(halRcvFltPktSetMcListRsp));
29474
29475 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
29476 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
29477 wdiRcvFltPktSetMcListRspInfo.bssIdx =
29478 halRcvFltPktSetMcListRsp.bssIdx;
29479 }
29480 else
29481 {
29482 halStatus = *((eHalStatus*)pEventData->pEventData);
29483 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29484 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029485
29486 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029487 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029488
Jeff Johnsone7245742012-09-05 17:12:55 -070029489 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029490}
29491
29492/**
29493 @brief Process Set Rsp function (called when a
29494 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070029495
29496 @param pWDICtx: pointer to the WLAN DAL context
29497 pEventData: pointer to the event information structure
29498
Jeff Johnson295189b2012-06-20 16:38:30 -070029499 @see
29500 @return Result of the function call
29501*/
29502WDI_Status
29503WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029504(
Jeff Johnson295189b2012-06-20 16:38:30 -070029505 WDI_ControlBlockType* pWDICtx,
29506 WDI_EventInfoType* pEventData
29507)
29508{
Jeff Johnson295189b2012-06-20 16:38:30 -070029509 eHalStatus halStatus;
29510 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029511 tHalSetPktFilterRspParams halSetPktFilterRspParams;
29512 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070029513 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29514
29515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029516 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029517
29518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029519 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029520 -------------------------------------------------------------------------*/
29521 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29522 ( NULL == pEventData->pEventData ))
29523 {
29524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029525 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029526 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029527 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029528 }
29529
29530 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070029531 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029532
29533 /*-------------------------------------------------------------------------
29534 Extract response and send it to UMAC
29535 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029536 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29537 {
29538 wpalMemoryCopy( &halSetPktFilterRspParams,
29539 pEventData->pEventData,
29540 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029541
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029542 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
29543 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
29544 }
29545 else
29546 {
29547 halStatus = *((eHalStatus*)pEventData->pEventData);
29548 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29549 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029550 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029551 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029552
Jeff Johnsone7245742012-09-05 17:12:55 -070029553 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029554}
29555
29556/**
29557 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070029558
29559 @param pWDICtx: pointer to the WLAN DAL context
29560 pEventData: pointer to the event information structure
29561
Jeff Johnson295189b2012-06-20 16:38:30 -070029562 @see
29563 @return Result of the function call
29564*/
29565WDI_Status
29566WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029567(
Jeff Johnson295189b2012-06-20 16:38:30 -070029568 WDI_ControlBlockType* pWDICtx,
29569 WDI_EventInfoType* pEventData
29570)
29571{
Jeff Johnson295189b2012-06-20 16:38:30 -070029572 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029573 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029574 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
29575 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029576
29577 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29578
29579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029580 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029581
29582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029584 -------------------------------------------------------------------------*/
29585 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29586 ( NULL == pEventData->pEventData ))
29587 {
29588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029592 }
29593
Jeff Johnsone7245742012-09-05 17:12:55 -070029594 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029595
29596 /*-------------------------------------------------------------------------
29597 Extract response and send it to UMAC
29598 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029599 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29600 {
29601 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
29602 pEventData->pEventData,
29603 sizeof(halRcvFltrPktMatachRsp));
29604
29605 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
29606 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
29607 }
29608 else
29609 {
29610 halStatus = *((eHalStatus*)pEventData->pEventData);
29611 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29612 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029613
29614 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029615 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029616
Jeff Johnsone7245742012-09-05 17:12:55 -070029617 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029618}
29619
29620/**
29621 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070029622
29623 @param pWDICtx: pointer to the WLAN DAL context
29624 pEventData: pointer to the event information structure
29625
Jeff Johnson295189b2012-06-20 16:38:30 -070029626 @see
29627 @return Result of the function call
29628*/
29629WDI_Status
29630WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029631(
Jeff Johnson295189b2012-06-20 16:38:30 -070029632 WDI_ControlBlockType* pWDICtx,
29633 WDI_EventInfoType* pEventData
29634)
29635{
Jeff Johnson295189b2012-06-20 16:38:30 -070029636 eHalStatus halStatus;
29637 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029638 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
29639 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070029640 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29641
29642 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029643 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029644
29645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029647 -------------------------------------------------------------------------*/
29648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29649 ( NULL == pEventData->pEventData ))
29650 {
29651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029655 }
29656
29657 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070029658 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029659
29660 /*-------------------------------------------------------------------------
29661 Extract response and send it to UMAC
29662 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029663 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29664 {
29665 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
29666 pEventData->pEventData,
29667 sizeof(halRcvFltPktClearRspMsg));
29668
29669 wdiRcvFltPktClearRspParamsType.wdiStatus =
29670 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
29671 wdiRcvFltPktClearRspParamsType.bssIdx =
29672 halRcvFltPktClearRspMsg.bssIdx;
29673 }
29674 else
29675 {
29676 halStatus = *((eHalStatus*)pEventData->pEventData);
29677 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29678 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029679
29680 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029681 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029682
Jeff Johnsone7245742012-09-05 17:12:55 -070029683 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029684}
29685#endif // WLAN_FEATURE_PACKET_FILTERING
29686
29687/**
29688 @brief Process Shutdown Rsp function
29689 There is no shutdown response comming from HAL
29690 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070029691
Jeff Johnson295189b2012-06-20 16:38:30 -070029692 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070029693 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070029694
29695 @see
29696 @return Result of the function call
29697*/
29698WDI_Status
29699WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029700(
Jeff Johnson295189b2012-06-20 16:38:30 -070029701 WDI_ControlBlockType* pWDICtx,
29702 WDI_EventInfoType* pEventData
29703)
29704{
29705 /*There is no shutdown response comming from HAL - function just kept for
29706 simmetry */
29707 WDI_ASSERT(0);
29708 return WDI_STATUS_SUCCESS;
29709}/*WDI_ProcessShutdownRsp*/
29710
29711/**
29712 @brief WDI_SetPowerParamsReq
29713
Jeff Johnsone7245742012-09-05 17:12:55 -070029714 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070029715 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070029716
Jeff Johnson295189b2012-06-20 16:38:30 -070029717 wdiPowerParamsCb: callback for passing back the response
29718 of the Set Power Params operation received from the
29719 device
Jeff Johnsone7245742012-09-05 17:12:55 -070029720
Jeff Johnson295189b2012-06-20 16:38:30 -070029721 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070029722 callback
29723
Jeff Johnson295189b2012-06-20 16:38:30 -070029724 @return Result of the function call
29725*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029726WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070029727WDI_SetPowerParamsReq
29728(
29729 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
29730 WDI_SetPowerParamsCb wdiPowerParamsCb,
29731 void* pUserData
29732)
29733{
29734 WDI_EventInfoType wdiEventData;
29735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29736
29737 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029738 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070029739 ------------------------------------------------------------------------*/
29740 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29741 {
29742 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29743 "WDI API call before module is initialized - Fail request");
29744
Jeff Johnsone7245742012-09-05 17:12:55 -070029745 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070029746 }
29747
29748 /*------------------------------------------------------------------------
29749 Fill in Event data and post to the Main FSM
29750 ------------------------------------------------------------------------*/
29751 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070029752 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029753 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070029754 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070029755 wdiEventData.pUserData = pUserData;
29756
29757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29758}/*WDI_SetPowerParamsReq*/
29759
29760/**
29761 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070029762
29763 @param pWDICtx: pointer to the WLAN DAL context
29764 pEventData: pointer to the event information structure
29765
Jeff Johnson295189b2012-06-20 16:38:30 -070029766 @see
29767 @return Result of the function call
29768*/
29769WDI_Status
29770WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070029771(
Jeff Johnson295189b2012-06-20 16:38:30 -070029772 WDI_ControlBlockType* pWDICtx,
29773 WDI_EventInfoType* pEventData
29774)
29775{
29776 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
29777 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070029778 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029779 wpt_uint16 usDataOffset = 0;
29780 wpt_uint16 usSendSize = 0;
29781 tSetPowerParamsType powerParams;
29782
29783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029785 -------------------------------------------------------------------------*/
29786 if (( NULL == pEventData ) ||
29787 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
29788 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
29789 {
29790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029794 }
29795
29796 /*-----------------------------------------------------------------------
29797 Get message buffer
29798 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029799 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070029800 sizeof(powerParams),
29801 &pSendBuffer, &usDataOffset, &usSendSize))||
29802 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
29803 {
29804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029805 "Unable to get send buffer in Set PNO req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070029806 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
29807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029809 }
29810
29811 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070029812 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070029813 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
29814
29815 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029816 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070029817 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
29818
29819 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070029820 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070029821 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
29822
29823 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070029824 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070029825 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
29826
29827 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070029828 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070029829 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
29830
29831 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070029832 powerParams.uBETInterval =
29833 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070029834
Yue Mac24062f2013-05-13 17:01:29 -070029835 /* MAX LI for modulated DTIM */
29836 powerParams.uMaxLIModulatedDTIM =
29837 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070029838
29839 wpalMemoryCopy( pSendBuffer+usDataOffset,
29840 &powerParams,
29841 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029842
29843 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070029844 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029845
29846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029847 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029849 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29850 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029851}
29852
29853/**
29854 @brief Process Power Params Rsp function (called when a
29855 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070029856
29857 @param pWDICtx: pointer to the WLAN DAL context
29858 pEventData: pointer to the event information structure
29859
Jeff Johnson295189b2012-06-20 16:38:30 -070029860 @see
29861 @return Result of the function call
29862*/
29863WDI_Status
29864WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029865(
Jeff Johnson295189b2012-06-20 16:38:30 -070029866 WDI_ControlBlockType* pWDICtx,
29867 WDI_EventInfoType* pEventData
29868)
29869{
29870 WDI_Status wdiStatus;
29871 eHalStatus halStatus;
29872 WDI_SetPowerParamsCb wdiPowerParamsCb;
29873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29874
29875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029877 -------------------------------------------------------------------------*/
29878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29879 ( NULL == pEventData->pEventData ))
29880 {
29881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029885 }
29886
Jeff Johnsone7245742012-09-05 17:12:55 -070029887 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029888
29889 /*-------------------------------------------------------------------------
29890 Extract response and send it to UMAC
29891 -------------------------------------------------------------------------*/
29892 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070029893 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070029894
29895 /*Notify UMAC*/
29896 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29897
Jeff Johnsone7245742012-09-05 17:12:55 -070029898 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029899}/*WDI_ProcessSetPowerParamsRsp*/
29900
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029901/**
29902 @brief WDI_dhcpStartInd
29903 Host will send an event to the FW when DHCP is initiated
29904
29905 @param
29906 WDI_DHCPInd: DHCP Indication
29907 @see
29908 @return Result of the function call
29909*/
29910WDI_Status
29911WDI_dhcpStartInd
29912(
29913 WDI_DHCPInd *wdiDHCPInd
29914)
29915{
29916 WDI_EventInfoType wdiEventData;
29917
29918 /*------------------------------------------------------------------------
29919 Sanity Check
29920 ------------------------------------------------------------------------*/
29921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29922 {
29923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29924 "WDI API call before module is initialized - Fail request");
29925
29926 return WDI_STATUS_E_NOT_ALLOWED;
29927 }
29928
29929 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
29930 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053029931 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029932 wdiEventData.pCBfnc = NULL;
29933 wdiEventData.pUserData = NULL;
29934
29935 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29936}
29937
29938
29939/**
29940 @brief WDI_dhcpStopInd
29941 Host will send an event to the FW when DHCP is completed
29942
29943 @param
29944 WDI_DHCPInd: DHCP Indication
29945 @see
29946 @return Result of the function call
29947*/
29948WDI_Status
29949WDI_dhcpStopInd
29950(
29951 WDI_DHCPInd *wdiDHCPInd
29952)
29953{
29954 WDI_EventInfoType wdiEventData;
29955
29956 /*------------------------------------------------------------------------
29957 Sanity Check
29958 ------------------------------------------------------------------------*/
29959 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29960 {
29961 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29962 "WDI API call before module is initialized - Fail request");
29963
29964 return WDI_STATUS_E_NOT_ALLOWED;
29965 }
29966
29967 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
29968 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053029969 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029970 wdiEventData.pCBfnc = NULL;
29971 wdiEventData.pUserData = NULL;
29972
29973 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29974}
29975
Abhishek Singh7cd040e2016-01-07 10:51:04 +053029976#ifdef WLAN_FEATURE_RMC
29977/**
29978 @brief WDI_TXFailMonitorInd
29979 Host will send an event to the FW to start TX Fail Monitor
29980
29981 @param
29982 WDI_TXFailMonitorInd
29983 @see
29984 @return Result of the function call
29985*/
29986WDI_Status
29987WDI_TXFailMonitorStartStopInd
29988(
29989 WDI_TXFailMonitorInd *wdiTXFailMonitorInd
29990)
29991{
29992 WDI_EventInfoType wdiEventData;
29993
29994 /*------------------------------------------------------------------------
29995 Sanity Check
29996 ------------------------------------------------------------------------*/
29997 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29998 {
29999 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30000 "WDI API call before module is initialized - Fail request");
30001
30002 return WDI_STATUS_E_NOT_ALLOWED;
30003 }
30004
30005 wdiEventData.wdiRequest = WDI_TX_FAIL_MONITOR_IND;
30006 wdiEventData.pEventData = wdiTXFailMonitorInd;
30007 wdiEventData.uEventDataSize = sizeof(wdiTXFailMonitorInd);
30008 wdiEventData.pCBfnc = NULL;
30009 wdiEventData.pUserData = NULL;
30010
30011 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30012}
30013#endif /* WLAN_FEATURE_RMC */
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030014
30015/**
30016 @brief Process DHCP Start Indication message and post it to HAL
30017
30018 @param pWDICtx: pointer to the WLAN DAL context
30019 pEventData: pointer to the event information structure
30020
30021 @see
30022 @return Result of the function call
30023*/
30024WDI_Status
30025WDI_ProcessDHCPStartInd
30026(
30027 WDI_ControlBlockType* pWDICtx,
30028 WDI_EventInfoType* pEventData
30029)
30030{
30031 wpt_uint8* pSendBuffer = NULL;
30032 wpt_uint16 usDataOffset = 0;
30033 wpt_uint16 usSendSize = 0;
30034 wpt_uint16 usLen = 0;
30035 WDI_DHCPInd* pwdiDHCPInd = NULL;
30036 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053030037 WDI_Status wdiStatus;
30038
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030039
30040 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30041
30042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30043 "%s", __func__);
30044
30045 /*-------------------------------------------------------------------------
30046 Sanity check
30047 -------------------------------------------------------------------------*/
30048 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30049 {
30050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30051 "%s: Invalid parameters", __func__);
30052 WDI_ASSERT(0);
30053 return WDI_STATUS_E_FAILURE;
30054 }
30055 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
30056 /*-----------------------------------------------------------------------
30057 Get message buffer
30058 -----------------------------------------------------------------------*/
30059
30060 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30061 WDI_DHCP_START_IND,
30062 sizeof(tDHCPInfo),
30063 &pSendBuffer, &usDataOffset, &usSendSize))||
30064 ( usSendSize < (usDataOffset + usLen )))
30065 {
30066 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030067 "Unable to get send buffer in DHCP Start req %pK ",
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030068 pEventData);
30069 WDI_ASSERT(0);
30070 return WDI_STATUS_E_FAILURE;
30071 }
30072
Sandeep Puligillaee789512014-02-13 19:14:52 +053030073 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030074 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
30075 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
30076 WDI_MAC_ADDR_LEN);
30077
30078 pWDICtx->pReqStatusUserData = NULL;
30079 pWDICtx->pfncRspCB = NULL;
30080
30081 /*-------------------------------------------------------------------------
30082 Send DHCP Start Indication to HAL
30083 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053030084 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30085 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030086}/*WDI_ProcessDHCPStartInd*/
30087
30088/**
30089 @brief Process DHCP Stop indication message and post it to HAL
30090
30091 @param pWDICtx: pointer to the WLAN DAL context
30092 pEventData: pointer to the event information structure
30093
30094 @see
30095 @return Result of the function call
30096*/
30097WDI_Status
30098WDI_ProcessDHCPStopInd
30099(
30100 WDI_ControlBlockType* pWDICtx,
30101 WDI_EventInfoType* pEventData
30102)
30103{
30104 wpt_uint8* pSendBuffer = NULL;
30105 wpt_uint16 usDataOffset = 0;
30106 wpt_uint16 usSendSize = 0;
30107 wpt_uint16 usLen = 0;
30108 WDI_DHCPInd* pwdiDHCPInd = NULL;
30109 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053030110 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030111
30112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30113
30114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30115 "%s", __func__);
30116
30117 /*-------------------------------------------------------------------------
30118 Sanity check
30119 -------------------------------------------------------------------------*/
30120
30121 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30122 {
30123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30124 "%s: Invalid parameters", __func__);
30125 WDI_ASSERT(0);
30126 return WDI_STATUS_E_FAILURE;
30127 }
30128 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
30129 /*-----------------------------------------------------------------------
30130 Get message buffer
30131 -----------------------------------------------------------------------*/
30132
30133 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30134 WDI_DHCP_STOP_IND,
30135 sizeof(tDHCPInfo),
30136 &pSendBuffer, &usDataOffset, &usSendSize))||
30137 ( usSendSize < (usDataOffset + usLen )))
30138 {
30139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030140 "Unable to get send buffer in DHCP Start req %pK ",
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030141 pEventData);
30142 WDI_ASSERT(0);
30143 return WDI_STATUS_E_FAILURE;
30144 }
30145
Sandeep Puligillaee789512014-02-13 19:14:52 +053030146 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030147 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
30148 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
30149 WDI_MAC_ADDR_LEN);
30150
30151 pWDICtx->pReqStatusUserData = NULL;
30152 pWDICtx->pfncRspCB = NULL;
30153 /*-------------------------------------------------------------------------
30154 Send DHCP Stop indication to HAL
30155 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053030156 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30157 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030158
30159}/*WDI_ProcessDHCPStopInd*/
30160
Abhishek Singh7cd040e2016-01-07 10:51:04 +053030161#ifdef WLAN_FEATURE_RMC
30162/**
30163 @brief Process TX Fail monitor indication
30164
30165 @param pWDICtx: pointer to the WLAN DAL context
30166 pEventData: pointer to the event information structure
30167
30168 @see
30169 @return Result of the function call
30170*/
30171WDI_Status
30172WDI_ProcessTXFailMonitor
30173(
30174 WDI_ControlBlockType* pWDICtx,
30175 WDI_EventInfoType* pEventData
30176)
30177{
30178 wpt_uint8* pSendBuffer = NULL;
30179 wpt_uint16 usDataOffset = 0;
30180 wpt_uint16 usSendSize = 0;
30181 wpt_uint16 usLen = 0;
30182 WDI_TXFailMonitorInd* pwdiTxFailMonitorInd = NULL;
30183 tTXFailMonitorInfo* pTXFailMonitorInfo;
30184 WDI_Status wdiStatus;
30185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30186
30187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30188 "%s", __func__);
30189
30190 /*-------------------------------------------------------------------------
30191 Sanity check
30192 -------------------------------------------------------------------------*/
30193
30194 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30195 {
30196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30197 "%s: Invalid parameters", __func__);
30198 WDI_ASSERT(0);
30199 return WDI_STATUS_E_FAILURE;
30200 }
30201 pwdiTxFailMonitorInd = (WDI_TXFailMonitorInd*)pEventData->pEventData;
30202 /*-----------------------------------------------------------------------
30203 Get message buffer
30204 -----------------------------------------------------------------------*/
30205
30206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30207 WDI_TX_FAIL_MONITOR_IND,
30208 sizeof(tDHCPInfo),
30209 &pSendBuffer, &usDataOffset, &usSendSize))||
30210 ( usSendSize < (usDataOffset + usLen )))
30211 {
30212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030213 "Unable to get send buffer in DHCP Start req %pK ",
Abhishek Singh7cd040e2016-01-07 10:51:04 +053030214 pEventData);
30215 WDI_ASSERT(0);
30216 return WDI_STATUS_E_FAILURE;
30217 }
30218
30219 pTXFailMonitorInfo = (tTXFailMonitorInfo*)pSendBuffer+usDataOffset;
30220 pTXFailMonitorInfo->tx_fail_count = pwdiTxFailMonitorInd->tx_fail_count;
30221
30222 pWDICtx->pReqStatusUserData = pwdiTxFailMonitorInd->pUserData;
30223 pWDICtx->wdiReqStatusCB = pwdiTxFailMonitorInd->wdiReqStatusCB;
30224 /*-------------------------------------------------------------------------
30225 Send TX Fail Monitor start/stop indication to HAL
30226 -------------------------------------------------------------------------*/
30227 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30228
30229 return (wdiStatus != WDI_STATUS_SUCCESS)?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30230}/*WDI_ProcessTXFailMonitor*/
30231#endif /* WLAN_FEATURE_RMC */
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030232
Jeff Johnson295189b2012-06-20 16:38:30 -070030233#ifdef WLAN_FEATURE_GTK_OFFLOAD
30234/**
30235 @brief WDI_GTKOffloadReq will be called when the upper MAC
30236 wants to set GTK Rekey Counter while in power save. Upon
30237 the call of this API the WLAN DAL will pack and send a
30238 HAL GTK offload request message to the lower RIVA
30239 sub-system if DAL is in state STARTED.
30240
30241 In state BUSY this request will be queued. Request won't
30242 be allowed in any other state.
30243
30244 WDI_PostAssocReq must have been called.
30245
30246 @param pwdiGtkOffloadParams: the GTK offload as specified
30247 by the Device Interface
30248
30249 wdiGtkOffloadCb: callback for passing back the response
30250 of the GTK offload operation received from the device
30251
30252 pUserData: user data will be passed back with the
30253 callback
30254
30255 @see WDI_PostAssocReq
30256 @return Result of the function call
30257*/
30258WDI_Status
30259WDI_GTKOffloadReq
30260(
30261 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
30262 WDI_GtkOffloadCb wdiGtkOffloadCb,
30263 void* pUserData
30264)
30265{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030266 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070030267 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30268
30269 /*------------------------------------------------------------------------
30270 Sanity Check
30271 ------------------------------------------------------------------------*/
30272 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30273 {
30274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30275 "WDI API call before module is initialized - Fail request");
30276
30277 return WDI_STATUS_E_NOT_ALLOWED;
30278 }
30279
30280 /*------------------------------------------------------------------------
30281 Fill in Event data and post to the Main FSM
30282 ------------------------------------------------------------------------*/
30283 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
30284 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070030285 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070030286 wdiEventData.pCBfnc = wdiGtkOffloadCb;
30287 wdiEventData.pUserData = pUserData;
30288
30289 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30290}
30291
30292
30293/**
30294 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
30295 MAC wants to get GTK Rekey Counter while in power save.
30296 Upon the call of this API the WLAN DAL will pack and
30297 send a HAL GTK offload request message to the lower RIVA
30298 sub-system if DAL is in state STARTED.
30299
30300 In state BUSY this request will be queued. Request won't
30301 be allowed in any other state.
30302
30303 WDI_PostAssocReq must have been called.
30304
30305 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
30306 Information Message as specified by the
30307 Device Interface
30308
30309 wdiGtkOffloadGetInfoCb: callback for passing back the
30310 response of the GTK offload operation received from the
30311 device
30312
30313 pUserData: user data will be passed back with the
30314 callback
30315
30316 @see WDI_PostAssocReq
30317 @return Result of the function call
30318*/
30319WDI_Status
30320WDI_GTKOffloadGetInfoReq
30321(
30322 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
30323 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
30324 void* pUserData
30325)
30326{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030327 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070030328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30329
30330 /*------------------------------------------------------------------------
30331 Sanity Check
30332 ------------------------------------------------------------------------*/
30333 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30334 {
30335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30336 "WDI API call before module is initialized - Fail request");
30337
30338 return WDI_STATUS_E_NOT_ALLOWED;
30339 }
30340
30341 /*------------------------------------------------------------------------
30342 Fill in Event data and post to the Main FSM
30343 ------------------------------------------------------------------------*/
30344 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
30345 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
30346 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
30347 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
30348 wdiEventData.pUserData = pUserData;
30349
30350 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30351}
30352
30353
30354/**
30355 @brief Process set GTK Offload Request function
30356
30357 @param pWDICtx: pointer to the WLAN DAL context
30358 pEventData: pointer to the event information structure
30359
30360 @see
30361 @return Result of the function call
30362*/
30363WDI_Status
30364WDI_ProcessGTKOffloadReq
30365(
30366 WDI_ControlBlockType* pWDICtx,
30367 WDI_EventInfoType* pEventData
30368)
30369{
30370 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
30371 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
30372 wpt_uint8* pSendBuffer = NULL;
30373 wpt_uint16 usDataOffset = 0;
30374 wpt_uint16 usSendSize = 0;
30375 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030376 wpt_uint8 ucCurrentSessionId = 0;
30377 WDI_BSSSessionType* pBSSSes = NULL;
30378
Jeff Johnson295189b2012-06-20 16:38:30 -070030379 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30380
30381 /*-------------------------------------------------------------------------
30382 Sanity check
30383 -------------------------------------------------------------------------*/
30384 if (( NULL == pEventData ) ||
30385 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
30386 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
30387 {
30388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030389 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030390 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030391 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070030392 }
30393
30394 /*-----------------------------------------------------------------------
30395 Get message buffer
30396 -----------------------------------------------------------------------*/
30397 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
30398 sizeof(gtkOffloadReqParams),
30399 &pSendBuffer, &usDataOffset, &usSendSize))||
30400 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
30401 {
30402 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030403 "Unable to get send buffer in GTK offload req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070030404 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
30405 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030406 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070030407 }
30408
30409 //
30410 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
30411 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030412 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
30413 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
30414 &pBSSSes);
30415 if ( NULL == pBSSSes )
30416 {
30417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030418 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030419 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030420 }
30421
30422 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
30423
Jeff Johnson295189b2012-06-20 16:38:30 -070030424 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
30425 // Copy KCK
30426 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
30427 // Copy KEK
30428 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
30429 // Copy KeyReplayCounter
30430 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
30431
30432 wpalMemoryCopy( pSendBuffer+usDataOffset,
30433 &gtkOffloadReqParams,
30434 sizeof(gtkOffloadReqParams));
30435
30436 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
30437 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
30438
30439 /*-------------------------------------------------------------------------
30440 Send Get STA Request to HAL
30441 -------------------------------------------------------------------------*/
30442 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30443 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030444
30445fail:
30446 // Release the message buffer so we don't leak
30447 wpalMemoryFree(pSendBuffer);
30448
30449failRequest:
30450 //WDA should have failure check to avoid the memory leak
30451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070030452}
30453
30454
30455/**
30456 @brief Process GTK Offload Get Information Request function
30457
30458 @param pWDICtx: pointer to the WLAN DAL context
30459 pEventData: pointer to the event information structure
30460
30461 @see
30462 @return Result of the function call
30463*/
30464WDI_Status
30465WDI_ProcessGTKOffloadGetInfoReq
30466(
30467 WDI_ControlBlockType* pWDICtx,
30468 WDI_EventInfoType* pEventData
30469)
30470{
30471 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
30472 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
30473 wpt_uint8* pSendBuffer = NULL;
30474 wpt_uint16 usDataOffset = 0;
30475 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030476 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
30477 wpt_uint8 ucCurrentSessionId = 0;
30478 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070030479
30480 /*-------------------------------------------------------------------------
30481 Sanity check
30482 -------------------------------------------------------------------------*/
30483 if (( NULL == pEventData ) ||
30484 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
30485 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
30486 {
30487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030488 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030489 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030490 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070030491 }
30492
30493 /*-----------------------------------------------------------------------
30494 Get message buffer
30495 -----------------------------------------------------------------------*/
30496 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030497 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070030498 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030499 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070030500 {
30501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030502 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070030503 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
30504 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030505 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070030506 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030507 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
30508 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
30509 &pBSSSes);
30510 if ( NULL == pBSSSes )
30511 {
30512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030513 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030514 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030515 }
30516 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070030517
30518 //
30519 // Don't need to fill send buffer other than header
30520 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030521 wpalMemoryCopy( pSendBuffer+usDataOffset,
30522 &halGtkOffloadGetInfoReqParams,
30523 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070030524
30525 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
30526 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
30527
30528 /*-------------------------------------------------------------------------
30529 Send Get STA Request to HAL
30530 -------------------------------------------------------------------------*/
30531 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30532 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030533fail:
30534 // Release the message buffer so we don't leak
30535 wpalMemoryFree(pSendBuffer);
30536
30537failRequest:
30538 //WDA should have failure check to avoid the memory leak
30539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070030540}
30541
30542/**
30543 @brief Process host offload Rsp function (called when a
30544 response is being received over the bus from HAL)
30545
30546 @param pWDICtx: pointer to the WLAN DAL context
30547 pEventData: pointer to the event information structure
30548
30549 @see
30550 @return Result of the function call
30551*/
30552WDI_Status
30553WDI_ProcessGtkOffloadRsp
30554(
30555 WDI_ControlBlockType* pWDICtx,
30556 WDI_EventInfoType* pEventData
30557)
30558{
Jeff Johnson295189b2012-06-20 16:38:30 -070030559 eHalStatus halStatus;
30560 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030561 tHalGtkOffloadRspParams halGtkOffloadRspParams;
30562 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070030563
30564 /*-------------------------------------------------------------------------
30565 Sanity check
30566 -------------------------------------------------------------------------*/
30567 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30568 ( NULL == pEventData->pEventData))
30569 {
30570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030571 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030572 WDI_ASSERT(0);
30573 return WDI_STATUS_E_FAILURE;
30574 }
30575
Wilson Yang00256342013-10-10 23:13:38 -070030576 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
30577
Jeff Johnson295189b2012-06-20 16:38:30 -070030578 /*-------------------------------------------------------------------------
30579 Extract response and send it to UMAC
30580 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030581 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
30582 {
30583 wpalMemoryCopy( &halGtkOffloadRspParams,
30584 pEventData->pEventData,
30585 sizeof(halGtkOffloadRspParams));
30586
30587 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030588 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030589 wdiGtkOffloadRsparams.bssIdx =
30590 halGtkOffloadRspParams.bssIdx;
30591 }
30592 else
30593 {
30594 halStatus = *((eHalStatus*)pEventData->pEventData);
30595 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30596 }
Jeff Johnson295189b2012-06-20 16:38:30 -070030597
30598 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030599 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070030600
30601 return WDI_STATUS_SUCCESS;
30602}
30603
30604/**
30605 @brief Process GTK Offload Get Information Response function
30606
30607 @param pWDICtx: pointer to the WLAN DAL context
30608 pEventData: pointer to the event information structure
30609
30610 @see
30611 @return Result of the function call
30612*/
30613WDI_Status
30614WDI_ProcessGTKOffloadGetInfoRsp
30615(
30616 WDI_ControlBlockType* pWDICtx,
30617 WDI_EventInfoType* pEventData
30618)
30619{
Jeff Johnson295189b2012-06-20 16:38:30 -070030620 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070030621 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030622 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
30623 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030624 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070030625
Jeff Johnson295189b2012-06-20 16:38:30 -070030626
30627 /*-------------------------------------------------------------------------
30628 Sanity check
30629 -------------------------------------------------------------------------*/
30630 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30631 ( NULL == pEventData->pEventData ))
30632 {
30633 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030634 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030635 WDI_ASSERT(0);
30636 return WDI_STATUS_E_FAILURE;
30637 }
30638
Wilson Yang00256342013-10-10 23:13:38 -070030639 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
30640
30641 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070030642 Extract response and send it to UMAC
30643 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030644 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
30645 {
30646 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
30647 pEventData->pEventData,
30648 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070030649
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030650 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030651 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030652 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
30653 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
30654 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
30655 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
30656 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
30657 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
30658 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
30659 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030660
30661 wpalMutexAcquire(&pWDICtx->wptMutex);
30662 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
30663 &pBSSSes);
30664
30665 if ( NULL == pBSSSes )
30666 {
30667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30668 "Association sequence for this BSS does not exist or "
30669 "association no longer in progress - mysterious HAL response");
30670 wpalMutexRelease(&pWDICtx->wptMutex);
30671 return WDI_STATUS_E_NOT_ALLOWED;
30672 }
30673
30674 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
30675 sizeof (wpt_macAddr));
30676 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030677 }
30678 else
30679 {
30680 halStatus = *((eHalStatus*)pEventData->pEventData);
30681 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30682 }
Jeff Johnson295189b2012-06-20 16:38:30 -070030683 /*Notify UMAC*/
30684 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
30685 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030686 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070030687
30688 return WDI_STATUS_SUCCESS;
30689}
30690#endif // WLAN_FEATURE_GTK_OFFLOAD
30691
30692#ifdef WLAN_WAKEUP_EVENTS
30693WDI_Status
30694WDI_ProcessWakeReasonInd
30695(
30696 WDI_ControlBlockType* pWDICtx,
30697 WDI_EventInfoType* pEventData
30698)
30699{
30700 WDI_LowLevelIndType *pWdiInd;
30701 tpWakeReasonParams pWakeReasonParams;
30702 wpt_uint32 allocSize = 0;
30703
30704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030705 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030706
30707 /*-------------------------------------------------------------------------
30708 Sanity check
30709 -------------------------------------------------------------------------*/
30710 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30711 ( NULL == pEventData->pEventData ))
30712 {
30713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030715 WDI_ASSERT( 0 );
30716 return WDI_STATUS_E_FAILURE;
30717 }
30718
30719 /*-------------------------------------------------------------------------
30720 Extract indication and send it to UMAC
30721 -------------------------------------------------------------------------*/
30722 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
30723
30724 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
30725
30726 //Allocate memory for WDI_WakeReasonIndType structure
30727 pWdiInd = wpalMemoryAllocate(allocSize) ;
30728
30729 if(NULL == pWdiInd)
30730 {
30731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030732 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %pK %pK %pK ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030733 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070030734 WDI_ASSERT(0);
30735 return WDI_STATUS_E_FAILURE;
30736 }
30737
30738 wpalMemoryZero(pWdiInd, allocSize);
30739
30740 /* Fill in the indication parameters*/
30741 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
30742 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
30743 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
30744 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
30745 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
30746 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
30747 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
30748 &(pWakeReasonParams->aDataStart[0]),
30749 pWakeReasonParams->ulStoredDataLen);
30750
ltimariub77f24b2013-01-24 18:54:33 -080030751
30752 if ( pWDICtx->wdiLowLevelIndCB )
30753 {
30754 /*Notify UMAC*/
30755 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
30756 }
Jeff Johnson295189b2012-06-20 16:38:30 -070030757
30758 //Free memory allocated for WDI_WakeReasonIndType structure
30759 wpalMemoryFree(pWdiInd);
30760
30761 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030762 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030763
30764 return WDI_STATUS_SUCCESS;
30765}
30766#endif // WLAN_WAKEUP_EVENTS
30767
30768void WDI_GetWcnssCompiledApiVersion
30769(
30770 WDI_WlanVersionType *pWcnssApiVersion
30771)
30772{
30773 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
30774 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
30775 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
30776 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
30777}
30778
30779/**
30780 @brief Process Set TM Level Rsp function (called when a
30781 response is being received over the bus from HAL)
30782
30783 @param pWDICtx: pointer to the WLAN DAL context
30784 pEventData: pointer to the event information structure
30785
30786 @see
30787 @return Result of the function call
30788*/
30789WDI_Status
30790WDI_ProcessSetTmLevelRsp
30791(
30792 WDI_ControlBlockType* pWDICtx,
30793 WDI_EventInfoType* pEventData
30794)
30795{
30796 WDI_Status wdiStatus;
30797 eHalStatus halStatus;
30798 WDI_SetTmLevelCb wdiSetTmLevelCb;
30799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30800
30801 /*-------------------------------------------------------------------------
30802 Sanity check
30803 -------------------------------------------------------------------------*/
30804 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30805 ( NULL == pEventData->pEventData ))
30806 {
30807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030809 WDI_ASSERT(0);
30810 return WDI_STATUS_E_FAILURE;
30811 }
30812
30813 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
30814
30815 /*-------------------------------------------------------------------------
30816 Extract response and send it to UMAC
30817 -------------------------------------------------------------------------*/
30818 halStatus = *((eHalStatus*)pEventData->pEventData);
30819 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30820
30821 /*Notify UMAC*/
30822 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
30823
30824 return WDI_STATUS_SUCCESS;
30825}/*WDI_ProcessSetTmLevelRsp*/
30826
30827/**
30828 @brief Process Set Thermal Mitigation level Changed request
30829
30830 @param pWDICtx: pointer to the WLAN DAL context
30831 pEventData: pointer to the event information structure
30832
30833 @see
30834 @return Result of the function call
30835*/
30836WDI_Status
30837WDI_ProcessSetTmLevelReq
30838(
30839 WDI_ControlBlockType* pWDICtx,
30840 WDI_EventInfoType* pEventData
30841)
30842{
30843 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
30844 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
30845 wpt_uint8* pSendBuffer = NULL;
30846 wpt_uint16 usDataOffset = 0;
30847 wpt_uint16 usSendSize = 0;
30848 tSetThermalMitgationType halTmMsg;
30849
30850 /*-------------------------------------------------------------------------
30851 Sanity check
30852 -------------------------------------------------------------------------*/
30853 if (( NULL == pEventData ) ||
30854 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
30855 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
30856 {
30857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030858 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030859 WDI_ASSERT(0);
30860 return WDI_STATUS_E_FAILURE;
30861 }
30862
30863 /*-----------------------------------------------------------------------
30864 Get message buffer
30865 -----------------------------------------------------------------------*/
30866 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
30867 sizeof(halTmMsg),
30868 &pSendBuffer, &usDataOffset, &usSendSize))||
30869 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
30870 {
30871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030872 "Unable to get send buffer in Set PNO req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070030873 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
30874 WDI_ASSERT(0);
30875 return WDI_STATUS_E_FAILURE;
30876 }
30877
30878 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
30879 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
30880
30881 wpalMemoryCopy( pSendBuffer+usDataOffset,
30882 &halTmMsg,
30883 sizeof(halTmMsg));
30884
30885 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
30886 pWDICtx->pfncRspCB = NULL;
30887 /*-------------------------------------------------------------------------
30888 Send Get STA Request to HAL
30889 -------------------------------------------------------------------------*/
30890 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30891 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
30892}
30893
30894/* Fill the value from the global features enabled array to the global capabilities
30895 * bitmap struct
30896 */
30897static void
30898FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
30899{
30900 wpt_int8 i;
30901 for (i=0; i<len; i++)
30902 {
30903 setFeatCaps(fCaps, enabledFeat[i]);
30904 }
30905}
30906
30907/**
30908 @brief WDI_featureCapsExchangeReq
30909 Post feature capability bitmap exchange event.
30910 Host will send its own capability to FW in this req and
30911 expect FW to send its capability back as a bitmap in Response
30912
30913 @param
30914
30915 wdiFeatureCapsExchangeCb: callback called on getting the response.
30916 It is kept to mantain similarity between WDI reqs and if needed, can
30917 be used in future. Currently, It is set to NULL
30918
30919 pUserData: user data will be passed back with the
30920 callback
30921
30922 @see
30923 @return Result of the function call
30924*/
30925WDI_Status
30926WDI_featureCapsExchangeReq
30927(
30928 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
30929 void* pUserData
30930)
30931{
30932 WDI_EventInfoType wdiEventData;
30933 wpt_int32 fCapsStructSize;
30934
30935 /*------------------------------------------------------------------------
30936 Sanity Check
30937 ------------------------------------------------------------------------*/
30938 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30939 {
30940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30941 "WDI API call before module is initialized - Fail request");
30942
30943 return WDI_STATUS_E_NOT_ALLOWED;
30944 }
30945
30946 /* Allocate memory separately for global variable carrying FW caps */
30947 fCapsStructSize = sizeof(tWlanFeatCaps);
30948 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
30949 if ( NULL == gpHostWlanFeatCaps )
30950 {
30951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030952 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070030953 WDI_ASSERT(0);
30954 return WDI_STATUS_MEM_FAILURE;
30955 }
30956
30957 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
30958
30959 /*------------------------------------------------------------------------
30960 Fill in Event data and post to the Main FSM
30961 ------------------------------------------------------------------------*/
30962 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
30963 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053030964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030965 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070030966 gpHostWlanFeatCaps->featCaps[0],
30967 gpHostWlanFeatCaps->featCaps[1],
30968 gpHostWlanFeatCaps->featCaps[2],
30969 gpHostWlanFeatCaps->featCaps[3]
30970 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053030971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053030972 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070030973 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
30974 wdiEventData.pEventData = gpHostWlanFeatCaps;
30975 wdiEventData.uEventDataSize = fCapsStructSize;
30976 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
30977 wdiEventData.pUserData = pUserData;
30978
30979 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30980}
30981
30982/**
Yathish9f22e662012-12-10 14:21:35 -080030983 @brief Disable Active mode offload in Host
30984
30985 @param void
30986 @see
30987 @return void
30988*/
30989void
30990WDI_disableCapablityFeature(wpt_uint8 feature_index)
30991{
30992 supportEnabledFeatures[feature_index] = 0;
30993 return;
30994}
30995
30996/**
Jeff Johnson295189b2012-06-20 16:38:30 -070030997 @brief Process Host-FW Capability Exchange Request function
30998
30999 @param pWDICtx: pointer to the WLAN DAL context
31000 pEventData: pointer to the event information structure
31001
31002 @see
31003 @return Result of the function call
31004*/
31005WDI_Status
31006WDI_ProcessFeatureCapsExchangeReq
31007(
31008 WDI_ControlBlockType* pWDICtx,
31009 WDI_EventInfoType* pEventData
31010)
31011{
31012 wpt_uint8* pSendBuffer = NULL;
31013 wpt_uint16 usDataOffset = 0;
31014 wpt_uint16 usSendSize = 0;
31015 wpt_uint16 usLen = 0;
31016
31017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31018
31019 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031020 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070031021
31022 /*-------------------------------------------------------------------------
31023 Sanity check
31024 -------------------------------------------------------------------------*/
31025 /* Call back function is NULL since not required for cap exchange req */
31026 if (( NULL == pEventData ) ||
31027 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
31028 {
31029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070031031 WDI_ASSERT(0);
31032 return WDI_STATUS_E_FAILURE;
31033 }
31034
31035 /*-----------------------------------------------------------------------
31036 Get message buffer
31037 -----------------------------------------------------------------------*/
31038 usLen = sizeof(tWlanFeatCaps);
31039
31040 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31041 WDI_FEATURE_CAPS_EXCHANGE_REQ,
31042 usLen,
31043 &pSendBuffer, &usDataOffset, &usSendSize))||
31044 ( usSendSize < (usDataOffset + usLen )))
31045 {
31046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070031047 "Unable to get send buffer in feat caps exchange req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070031048 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
31049 WDI_ASSERT(0);
31050 return WDI_STATUS_E_FAILURE;
31051 }
31052
31053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031054 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070031055 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
31056 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
31057 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
31058 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
31059 );
31060
31061 /* Copy host caps after the offset in the send buffer */
31062 wpalMemoryCopy( pSendBuffer+usDataOffset,
31063 (tWlanFeatCaps *)pEventData->pEventData,
31064 usLen);
31065
31066 /*-------------------------------------------------------------------------
31067 Send Start Request to HAL
31068 -------------------------------------------------------------------------*/
31069 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Rajeev Kumar Sirasanagandla4c068d42019-02-22 21:39:36 +053031070 pEventData->pCBfnc,
Jeff Johnson295189b2012-06-20 16:38:30 -070031071 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
31072
31073}/*WDI_ProcessFeatureCapsExchangeReq*/
31074
31075/**
31076 @brief Process Host-FW Capability Exchange Response function
31077
31078 @param pWDICtx: pointer to the WLAN DAL context
31079 pEventData: pointer to the event information structure
31080
31081 @see
31082 @return Result of the function call
31083*/
31084WDI_Status
31085WDI_ProcessFeatureCapsExchangeRsp
31086(
31087 WDI_ControlBlockType* pWDICtx,
31088 WDI_EventInfoType* pEventData
31089)
31090{
31091 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
31092 wpt_int32 fCapsStructSize;
31093 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31094
31095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031096 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070031097
31098 /*-------------------------------------------------------------------------
31099 Sanity check
31100 -------------------------------------------------------------------------*/
31101 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31102 ( NULL == pEventData->pEventData ))
31103 {
31104 /* It will go here when riva is old (doesn't understand this msg) and host is new */
31105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031106 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070031107 WDI_ASSERT(0);
31108 return WDI_STATUS_E_FAILURE;
31109 }
31110
31111 /* Allocate memory separately for global variable carrying FW caps */
31112 fCapsStructSize = sizeof(tWlanFeatCaps);
31113 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
31114 if ( NULL == gpFwWlanFeatCaps )
31115 {
31116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031117 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070031118 WDI_ASSERT(0);
31119 return WDI_STATUS_MEM_FAILURE;
31120 }
31121
31122 /*-------------------------------------------------------------------------
31123 Unpack HAL Response Message - the header was already extracted by the
31124 main Response Handling procedure
31125 -------------------------------------------------------------------------*/
31126 /*-------------------------------------------------------------------------
31127 Extract response and send it to UMAC
31128 -------------------------------------------------------------------------*/
31129
31130 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
31131 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053031132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031133 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070031134 gpFwWlanFeatCaps->featCaps[0],
31135 gpFwWlanFeatCaps->featCaps[1],
31136 gpFwWlanFeatCaps->featCaps[2],
31137 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053031138 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053031139
Ratheesh S P36dbc932015-08-07 14:28:57 +053031140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053031141 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070031142 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
31143
31144 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
Rajeev Kumar Sirasanagandla4c068d42019-02-22 21:39:36 +053031145 if (wdiFeatureCapsExchangeCb)
31146 wdiFeatureCapsExchangeCb(NULL, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070031147
31148 return WDI_STATUS_SUCCESS;
31149}
31150
Mohit Khanna4a70d262012-09-11 16:30:12 -070031151#ifdef WLAN_FEATURE_11AC
31152WDI_Status
31153WDI_ProcessUpdateVHTOpModeRsp
31154(
31155 WDI_ControlBlockType* pWDICtx,
31156 WDI_EventInfoType* pEventData
31157)
31158{
31159 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
31160 WDI_Status wdiStatus;
31161 eHalStatus halStatus;
31162
31163 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31164
31165 /*-------------------------------------------------------------------------
31166 Sanity check
31167 -------------------------------------------------------------------------*/
31168 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31169 ( NULL == pEventData->pEventData))
31170 {
31171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031172 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031173 WDI_ASSERT(0);
31174 return WDI_STATUS_E_FAILURE;
31175 }
31176 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
31177
31178 /*-------------------------------------------------------------------------
31179 Extract response and send it to UMAC
31180 -------------------------------------------------------------------------*/
31181 halStatus = *((eHalStatus*)pEventData->pEventData);
31182 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31183
31184 /*Notify UMAC*/
31185 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
31186
31187 return WDI_STATUS_SUCCESS;
31188}
31189#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070031190/**
31191 @brief WDI_getHostWlanFeatCaps
31192 WDI API that returns whether the feature passed to it as enum value in
31193 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
31194 variable storing host capability bitmap to find this. This can be used by
31195 other moduels to decide certain things like call different APIs based on
31196 whether a particular feature is supported.
31197
31198 @param
31199
31200 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
31201
31202 @see
31203 @return
31204 0 - if the feature is NOT supported in host
31205 any non-zero value - if the feature is SUPPORTED in host.
31206*/
31207wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
31208{
31209 wpt_uint8 featSupported = 0;
31210 if (gpHostWlanFeatCaps != NULL)
31211 {
31212 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
31213 }
31214 else
31215 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070031216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070031217 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070031218 }
31219 return featSupported;
31220}
31221
31222/**
31223 @brief WDI_getFwWlanFeatCaps
31224 WDI API that returns whether the feature passed to it as enum value in
31225 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
31226 variable storing host capability bitmap to find this. This can be used by
31227 other moduels to decide certain things like call different APIs based on
31228 whether a particular feature is supported.
31229
31230 @param
31231
31232 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
31233 in wlan_hal_msg.h.
31234
31235 @see
31236 @return
31237 0 - if the feature is NOT supported in FW
31238 any non-zero value - if the feature is SUPPORTED in FW.
31239*/
31240wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
31241{
31242 wpt_uint8 featSupported = 0;
31243 if (gpFwWlanFeatCaps != NULL)
31244 {
31245 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
31246 }
31247 else
31248 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070031249 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070031250 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070031251 }
31252 return featSupported;
31253}
Mohit Khanna4a70d262012-09-11 16:30:12 -070031254
Katya Nigamf0511f62015-05-05 16:40:57 +053031255wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
31256{
31257 /* 5gHz Channel */
31258 if( channel >= 34 && channel <= 165 )
31259 {
31260 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
31261 {
31262 if ( channel== 36 || channel == 52 || channel == 100 ||
31263 channel == 116 || channel == 149 )
31264 {
31265 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
31266 }
31267 else if ( channel == 40 || channel == 56 || channel == 104 ||
31268 channel == 120 || channel == 153 )
31269 {
31270 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
31271 }
31272 else if ( channel == 44 || channel == 60 || channel == 108 ||
31273 channel == 124 || channel == 157 )
31274 {
31275 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
31276 }
31277 else if ( channel == 48 || channel == 64 || channel == 112 ||
31278 channel == 128 || channel == 144 || channel == 161 )
31279 {
31280 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
31281 }
31282 else if ( channel == 165 )
31283 {
31284 return PHY_SINGLE_CHANNEL_CENTERED;
31285 }
31286 }
31287
31288 else
31289 {
31290 if ( channel== 40 || channel == 48 || channel == 56 ||
31291 channel == 64 || channel == 104 || channel == 112 ||
31292 channel == 120 || channel == 128 || channel == 136 ||
31293 channel == 144 || channel == 153 || channel == 161 )
31294 {
31295 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
31296 }
31297 else if ( channel== 36 || channel == 44 || channel == 52 ||
31298 channel == 60 || channel == 100 || channel == 108 ||
31299 channel == 116 || channel == 124 || channel == 132 ||
31300 channel == 140 || channel == 149 || channel == 157 )
31301 {
31302 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
31303 }
31304 else if ( channel == 165 )
31305 {
31306 return PHY_SINGLE_CHANNEL_CENTERED;
31307 }
31308 }
31309 }
31310
31311 /* 2.4Ghz Channel */
31312 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
31313 {
31314 if (channel >= 1 && channel <= 7)
31315 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
31316 else if (channel >= 8 && channel <= 13)
31317 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
31318 else if (channel ==14)
31319 return PHY_SINGLE_CHANNEL_CENTERED;
31320 }
31321 return PHY_SINGLE_CHANNEL_CENTERED;
31322}
31323
Mohit Khanna4a70d262012-09-11 16:30:12 -070031324#ifdef WLAN_FEATURE_11AC
31325WDI_Status
31326WDI_ProcessUpdateVHTOpModeReq
31327(
31328 WDI_ControlBlockType* pWDICtx,
31329 WDI_EventInfoType* pEventData
31330)
31331{
31332 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
31333 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
31334 wpt_uint8* pSendBuffer = NULL;
31335 wpt_uint16 usDataOffset = 0;
31336 wpt_uint16 usSendSize = 0;
31337
31338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31339
31340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031341 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031342
31343 /*-------------------------------------------------------------------------
31344 Sanity check
31345 -------------------------------------------------------------------------*/
31346 if (( NULL == pEventData ) ||
31347 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
31348 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
31349 {
31350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031351 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031352 WDI_ASSERT(0);
31353 return WDI_STATUS_E_FAILURE;
31354 }
31355
31356 /*-----------------------------------------------------------------------
31357 Get message buffer
31358 -----------------------------------------------------------------------*/
31359 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
31360 sizeof(WDI_UpdateVHTOpMode),
31361 &pSendBuffer, &usDataOffset, &usSendSize))||
31362 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
31363 {
31364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31365 "Unable to get send buffer in update vht opMode req");
31366 WDI_ASSERT(0);
31367 return WDI_STATUS_E_FAILURE;
31368 }
31369
31370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031371 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031372
31373 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
31374 sizeof(WDI_UpdateVHTOpMode));
31375
31376 /*-------------------------------------------------------------------------
31377 Send Start Request to HAL
31378 -------------------------------------------------------------------------*/
31379 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31380 wdiVHTOpModeCb,
31381 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
31382
31383}
31384
31385WDI_Status
31386WDI_UpdateVHTOpModeReq
31387(
31388 WDI_UpdateVHTOpMode *pData,
31389 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
31390 void* pUserData
31391)
31392{
31393 WDI_EventInfoType wdiEventData;
31394
31395 /*------------------------------------------------------------------------
31396 Sanity Check
31397 ------------------------------------------------------------------------*/
31398 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31399 {
31400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31401 "WDI API call before module is initialized - Fail request");
31402
31403 return WDI_STATUS_E_NOT_ALLOWED;
31404 }
31405
31406 /*------------------------------------------------------------------------
31407 Fill in Event data and post to the Main FSM
31408 ------------------------------------------------------------------------*/
31409 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
31410 wdiEventData.pEventData = pData;
31411 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
31412 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
31413 wdiEventData.pUserData = pUserData;
31414
31415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031416 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031417
31418 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31419
31420}
31421#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070031422
31423/**
31424 @brief WDI_TransportChannelDebug -
31425 Display DXE Channel debugging information
31426 User may request to display DXE channel snapshot
31427 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070031428
Jeff Johnsonb88db982012-12-10 13:34:59 -080031429 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053031430 @param debugFlags : Enable stall detect features
31431 defined by WPAL_DeviceDebugFlags
31432 These features may effect
31433 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070031434 @see
31435 @return none
31436*/
31437void WDI_TransportChannelDebug
31438(
31439 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053031440 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070031441)
31442{
Mihir Shete40a55652014-03-02 14:14:47 +053031443 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070031444 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070031445}
Sravan Kumar Kairam6eac7522015-11-27 23:37:02 +053031446
31447/**
31448 @brief WDI_TransportKickDxe -
31449 Request Kick DXE when HDD TX time out happen
31450
31451 @param none
31452 @see
31453 @return none
31454*/
31455void WDI_TransportKickDxe()
31456{
31457 WDTS_ChannelKickDxe();
31458 return;
31459}
31460
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070031461/**
31462 @brief WDI_SsrTimerCB
31463 Callback function for SSR timer, if this is called then the graceful
31464 shutdown for Riva did not happen.
31465
31466 @param pUserData : user data to timer
31467
31468 @see
31469 @return none
31470*/
31471void
31472WDI_SsrTimerCB
31473(
31474 void *pUserData
31475)
31476{
31477 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
31478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31479
31480 if (NULL == pWDICtx )
31481 {
31482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031483 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070031484 WDI_ASSERT(0);
31485 return;
31486 }
31487 wpalRivaSubystemRestart();
31488
31489 return;
31490
31491}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070031492
31493/**
31494 @brief WDI_SetEnableSSR -
31495 This API is called to enable/disable SSR on WDI timeout.
31496
31497 @param enableSSR : enable/disable SSR
31498
31499 @see
31500 @return none
31501*/
31502void WDI_SetEnableSSR(wpt_boolean enableSSR)
31503{
31504 gWDICb.bEnableSSR = enableSSR;
31505}
Leo Chang9056f462013-08-01 19:21:11 -070031506
Agrawal Ashishaf1de652016-03-02 18:03:43 +053031507/**
31508 * WDI_SetMgmtPktViaWQ5() - Set INI params sendMgmtPktViaWQ5 to Control
31509 * Block Type.
31510 * @sendMgmtPktViaWQ5: INI params to enable/disable sending mgmt pkt via WQ5.
31511 *
31512 * Return: void
31513 */
31514void WDI_SetMgmtPktViaWQ5(wpt_boolean sendMgmtPktViaWQ5)
31515{
31516 gWDICb.sendMgmtPktViaWQ5 = sendMgmtPktViaWQ5;
31517}
31518
Leo Chang9056f462013-08-01 19:21:11 -070031519
31520#ifdef FEATURE_WLAN_LPHB
31521/**
Leo Changd9df8aa2013-09-26 13:32:26 -070031522 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070031523 This function will be invoked when FW detects low power
31524 heart beat failure
31525
31526 @param pWDICtx : wdi context
31527 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070031528 @see
31529 @return Result of the function call
31530*/
31531WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070031532WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070031533(
31534 WDI_ControlBlockType* pWDICtx,
31535 WDI_EventInfoType* pEventData
31536)
31537{
31538 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070031539 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070031540 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31541
31542 /*-------------------------------------------------------------------------
31543 Sanity check
31544 -------------------------------------------------------------------------*/
31545 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31546 (NULL == pEventData->pEventData))
31547 {
31548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31549 "%s: Invalid parameters", __func__);
31550 WDI_ASSERT(0);
31551 return WDI_STATUS_E_FAILURE;
31552 }
31553
31554 /*-------------------------------------------------------------------------
31555 Extract indication and send it to UMAC
31556 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070031557 wpalMemoryCopy(&lphbIndicationParam,
31558 pEventData->pEventData,
31559 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070031560
Leo Changd9df8aa2013-09-26 13:32:26 -070031561 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070031562 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070031563 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070031564 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070031565 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070031566 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070031567 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070031568 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070031569 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070031570 /*Notify UMAC*/
31571 if (pWDICtx->wdiLowLevelIndCB)
31572 {
31573 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31574 }
31575
31576 return WDI_STATUS_SUCCESS;
31577}
31578
31579/**
31580 @brief WDI_ProcessLphbCfgRsp -
31581 LPHB configuration response from FW
31582
31583 @param pWDICtx : wdi context
31584 pEventData : indication data
31585
31586 @see
31587 @return Result of the function call
31588*/
31589WDI_Status WDI_ProcessLphbCfgRsp
31590(
31591 WDI_ControlBlockType* pWDICtx,
31592 WDI_EventInfoType* pEventData
31593)
31594{
31595 WDI_Status wdiStatus;
31596 eHalStatus halStatus;
31597 WDI_LphbCfgCb wdiLphbCfgCb;
31598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31599
31600 /*-------------------------------------------------------------------------
31601 Sanity check
31602 -------------------------------------------------------------------------*/
31603 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31604 (NULL == pEventData->pEventData))
31605 {
31606 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31607 "%s: Invalid parameters", __func__);
31608 WDI_ASSERT(0);
31609 return WDI_STATUS_E_FAILURE;
31610 }
31611
31612 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
31613
31614 /*-------------------------------------------------------------------------
31615 Extract response and send it to UMAC
31616 -------------------------------------------------------------------------*/
31617 halStatus = *((eHalStatus*)pEventData->pEventData);
31618 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31619
31620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31621 "LPHB Cfg Rsp Return status %d", wdiStatus);
31622 /*Notify UMAC*/
31623 if (NULL != wdiLphbCfgCb)
31624 {
31625 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
31626 }
31627
31628 return WDI_STATUS_SUCCESS;
31629}
31630
31631/**
31632 @brief WDI_ProcessLPHBConfReq -
31633 LPHB configuration request to FW
31634
31635 @param pWDICtx : wdi context
31636 pEventData : indication data
31637
31638 @see
31639 @return none
31640*/
31641WDI_Status WDI_ProcessLPHBConfReq
31642(
31643 WDI_ControlBlockType* pWDICtx,
31644 WDI_EventInfoType* pEventData
31645)
31646{
31647 WDI_LPHBReq *pLphbReqParams;
31648 WDI_Status wdiStatus;
31649 wpt_uint8* pSendBuffer = NULL;
31650 wpt_uint16 usDataOffset = 0;
31651 wpt_uint16 usSendSize = 0;
31652 tHalLowPowerHeartBeatReq *halLphbReqRarams;
31653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31654
31655 /*-------------------------------------------------------------------------
31656 Sanity check
31657 -------------------------------------------------------------------------*/
31658 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31659 {
31660 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31661 "%s: Invalid parameters in Suspend ind",__func__);
31662 WDI_ASSERT(0);
31663 return WDI_STATUS_E_FAILURE;
31664 }
31665
31666 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
31667
31668 /*-----------------------------------------------------------------------
31669 Get message buffer
31670 -----------------------------------------------------------------------*/
31671 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31672 WDI_LPHB_CFG_REQ,
31673 sizeof(tHalLowPowerHeartBeatReqMsg),
31674 &pSendBuffer, &usDataOffset, &usSendSize))||
31675 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
31676 {
31677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31678 "Unable to get send buffer in LPHB Ind ");
31679 WDI_ASSERT(0);
31680 return WDI_STATUS_E_FAILURE;
31681 }
31682
31683 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
31684 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
31685
31686 halLphbReqRarams->lowPowerHeartBeatCmdType =
31687 (tANI_U16)(++pLphbReqParams->cmd);
31688 switch ((tANI_U16)pLphbReqParams->cmd)
31689 {
31690 case WDI_LPHB_SET_EN_PARAMS_INDID:
31691 halLphbReqRarams->sessionIdx =
31692 pLphbReqParams->params.lphbEnableReq.session;
31693 halLphbReqRarams->options.control.heartBeatEnable =
31694 pLphbReqParams->params.lphbEnableReq.enable;
31695 halLphbReqRarams->options.control.heartBeatType =
31696 pLphbReqParams->params.lphbEnableReq.item;
31697 break;
31698
31699 case WDI_LPHB_SET_TCP_PARAMS_INDID:
31700 halLphbReqRarams->sessionIdx =
31701 pLphbReqParams->params.lphbTcpParamReq.session;
31702 halLphbReqRarams->options.tcpParams.timeOutSec =
31703 pLphbReqParams->params.lphbTcpParamReq.timeout;
31704 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
31705 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
31706 sizeof(v_U32_t));
31707 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
31708 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
31709 sizeof(v_U32_t));
31710
31711 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
31712 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
31713 WDI_MAC_ADDR_LEN);
31714
31715 halLphbReqRarams->options.tcpParams.hostPort =
31716 pLphbReqParams->params.lphbTcpParamReq.src_port;
31717 halLphbReqRarams->options.tcpParams.destPort =
31718 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070031719 halLphbReqRarams->options.tcpParams.timePeriodSec =
31720 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
31721 halLphbReqRarams->options.tcpParams.tcpSn =
31722 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070031723 break;
31724
31725 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
31726 halLphbReqRarams->sessionIdx =
31727 pLphbReqParams->params.lphbTcpFilterReq.session;
31728 halLphbReqRarams->options.tcpUdpFilter.offset =
31729 pLphbReqParams->params.lphbTcpFilterReq.offset;
31730 halLphbReqRarams->options.tcpUdpFilter.filterLength =
31731 pLphbReqParams->params.lphbTcpFilterReq.length;
31732 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
31733 pLphbReqParams->params.lphbTcpFilterReq.filter,
31734 WDI_LPHB_FILTER_LEN);
31735 break;
31736
31737 case WDI_LPHB_SET_UDP_PARAMS_INDID:
31738 halLphbReqRarams->sessionIdx =
31739 pLphbReqParams->params.lphbUdpParamReq.session;
31740 halLphbReqRarams->options.udpParams.timeOutSec =
31741 pLphbReqParams->params.lphbUdpParamReq.timeout;
31742 halLphbReqRarams->options.udpParams.timePeriodSec =
31743 pLphbReqParams->params.lphbUdpParamReq.interval;
31744 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
31745 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
31746 sizeof(v_U32_t));
31747 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
31748 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
31749 sizeof(v_U32_t));
31750
31751 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
31752 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
31753 WDI_MAC_ADDR_LEN);
31754
31755 halLphbReqRarams->options.udpParams.hostPort =
31756 pLphbReqParams->params.lphbUdpParamReq.src_port;
31757 halLphbReqRarams->options.udpParams.destPort =
31758 pLphbReqParams->params.lphbUdpParamReq.dst_port;
31759 break;
31760
31761 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
31762 halLphbReqRarams->sessionIdx =
31763 pLphbReqParams->params.lphbUdpFilterReq.session;
31764 halLphbReqRarams->options.tcpUdpFilter.offset =
31765 pLphbReqParams->params.lphbUdpFilterReq.offset;
31766 halLphbReqRarams->options.tcpUdpFilter.filterLength =
31767 pLphbReqParams->params.lphbUdpFilterReq.length;
31768 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
31769 pLphbReqParams->params.lphbUdpFilterReq.filter,
31770 WDI_LPHB_FILTER_LEN);
31771 break;
31772
31773 case WDI_LPHB_SET_NETWORK_INFO_INDID:
31774 /* NA */
31775 break;
31776
31777 default:
31778 break;
31779 }
31780
31781 /*-------------------------------------------------------------------------
31782 Send Suspend Request to HAL
31783 -------------------------------------------------------------------------*/
31784 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31785 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31786
31787 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31788 usSendSize, pWDICtx->pfncRspCB,
31789 pWDICtx->pReqStatusUserData,
31790 WDI_LPHB_CFG_RESP);
31791
31792 return wdiStatus;
31793}
31794
31795/**
31796 @brief WDI_LPHBConfReq -
31797 LPHB configuration request API
31798
31799 @param lphbconfParam : configuration parameter
31800 usrData : client context
31801 lphbCfgCb : callback function pointer
31802
31803 @see
31804 @return Success or fail status code
31805*/
31806WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
31807 void *usrData, WDI_LphbCfgCb lphbCfgCb)
31808{
31809 WDI_EventInfoType wdiEventData;
31810
31811 /*------------------------------------------------------------------------
31812 Sanity Check
31813 ------------------------------------------------------------------------*/
31814 if (eWLAN_PAL_FALSE == gWDIInitialized)
31815 {
31816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31817 "WDI API call before module is initialized - Fail request");
31818
31819 return WDI_STATUS_E_NOT_ALLOWED;
31820 }
31821
31822 /*------------------------------------------------------------------------
31823 Fill in Event data and post to the Main FSM
31824 ------------------------------------------------------------------------*/
31825 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
31826 wdiEventData.pEventData = lphbconfParam;
31827 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
31828 wdiEventData.pCBfnc = lphbCfgCb;
31829 wdiEventData.pUserData = usrData;
31830
31831 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31832}
31833#endif /* FEATURE_WLAN_LPHB */
31834
Ravi Joshid2ca7c42013-07-23 08:37:49 -070031835/**
31836 @brief WDI_ProcessIbssPeerInactivityInd
31837 Process peer inactivity indication coming from HAL
31838
31839 @param pWDICtx: pointer to the WLAN DAL context
31840 pEventData: pointer to the event information structure
31841 @see
31842 @return Result of the function call
31843*/
31844WDI_Status
31845WDI_ProcessIbssPeerInactivityInd
31846(
31847 WDI_ControlBlockType* pWDICtx,
31848 WDI_EventInfoType* pEventData
31849)
31850{
31851 WDI_LowLevelIndType wdiInd;
31852 tIbssPeerInactivityIndMsg halIbssIndMsg;
31853
31854 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31855
31856 /*-------------------------------------------------------------------------
31857 Sanity check
31858 -------------------------------------------------------------------------*/
31859 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31860 ( NULL == pEventData->pEventData ))
31861 {
31862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31863 "%s: Invalid parameters", __func__);
31864 WDI_ASSERT( 0 );
31865 return WDI_STATUS_E_FAILURE;
31866 }
31867
31868 /*-------------------------------------------------------------------------
31869 Extract indication and send it to UMAC
31870 -------------------------------------------------------------------------*/
31871 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
31872 pEventData->pEventData,
31873 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
31874
31875 /*Fill in the indication parameters*/
31876 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
31877
31878 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
31879 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
31880
31881 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
31882 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
31883
31884 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
31885 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
31886 sizeof(tSirMacAddr));
31887
31888 /*Notify UMAC*/
31889 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31890
31891 return WDI_STATUS_SUCCESS;
31892
31893} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053031894
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031895
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031896/**
31897*@brief WDI_RateUpdateInd will be called when the upper MAC
31898 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053031899
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031900
31901 @param wdiRateUpdateIndParams:
31902
31903
31904 @see
31905 @return Result of the function call
31906*/
31907WDI_Status
31908WDI_RateUpdateInd
31909(
31910 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
31911)
31912{
31913 WDI_EventInfoType wdiEventData;
31914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31915
31916 /*------------------------------------------------------------------------
31917 Sanity Check
31918 ------------------------------------------------------------------------*/
31919 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31920 {
31921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31922 "WDI API call before module is initialized - Fail request");
31923
31924 return WDI_STATUS_E_NOT_ALLOWED;
31925 }
31926
31927 /*------------------------------------------------------------------------
31928 Fill in Event data and post to the Main FSM
31929 ------------------------------------------------------------------------*/
31930 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
31931 wdiEventData.pEventData = wdiRateUpdateIndParams;
31932 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
31933 wdiEventData.pCBfnc = NULL;
31934 wdiEventData.pUserData = NULL;
31935
31936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31937
31938}/* WDI_RateUpdateInd */
31939
31940/**
31941 @brief Process Rate Update Indication and post it to HAL
31942
31943 @param pWDICtx: pointer to the WLAN DAL context
31944 pEventData: pointer to the event information structure
31945
31946 @see
31947 @return Result of the function call
31948*/
31949WDI_Status
31950WDI_ProcessRateUpdateInd
31951(
31952 WDI_ControlBlockType* pWDICtx,
31953 WDI_EventInfoType* pEventData
31954)
31955{
31956 wpt_uint8* pSendBuffer = NULL;
31957 wpt_uint16 usDataOffset = 0;
31958 wpt_uint16 usSendSize = 0;
31959 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
31960 tHalRateUpdateInd *pRateUpdateInd;
31961 WDI_Status wdiStatus;
31962
31963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31964
31965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31966 "%s", __func__);
31967
31968 /*-------------------------------------------------------------------------
31969 Sanity check
31970 -------------------------------------------------------------------------*/
31971 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31972 {
31973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31974 "%s: Invalid parameters", __func__);
31975 WDI_ASSERT(0);
31976 return WDI_STATUS_E_FAILURE;
31977 }
31978 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
31979 /*-----------------------------------------------------------------------
31980 Get message buffer
31981 -----------------------------------------------------------------------*/
31982
31983 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31984 WDI_RATE_UPDATE_IND,
31985 sizeof(tHalRateUpdateParams),
31986 &pSendBuffer, &usDataOffset, &usSendSize))||
31987 ( usSendSize < (usDataOffset +
31988 sizeof(tHalRateUpdateParams) )))
31989 {
31990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070031991 "Unable to get send buffer in Rate Update Indication %pK ",
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031992 pEventData);
31993 WDI_ASSERT(0);
31994 return WDI_STATUS_E_FAILURE;
31995 }
31996
31997 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
31998
31999 /* Copy the bssid */
32000 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
32001 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
32002
32003 /* Copy the tx flags */
32004 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
32005 pwdiRateUpdateInd->ucastDataRateTxFlag;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032006 pRateUpdateInd->halRateUpdateParams.rmcDataRateTxFlag =
32007 pwdiRateUpdateInd->rmcDataRateTxFlag;
Chittajit Mitraf5413a42013-10-18 14:20:08 -070032008 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
32009 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
32010 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
32011 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
32012
32013 /* Copy the tx rates */
32014 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
32015 pwdiRateUpdateInd->ucastDataRate;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032016 pRateUpdateInd->halRateUpdateParams.rmcDataRate =
32017 pwdiRateUpdateInd->rmcDataRate;
Chittajit Mitraf5413a42013-10-18 14:20:08 -070032018 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
32019 pwdiRateUpdateInd->mcastDataRate24GHz;
32020 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
32021 pwdiRateUpdateInd->mcastDataRate5GHz;
32022
32023 /*-------------------------------------------------------------------------
32024 Send Rate Update Indication to HAL
32025 -------------------------------------------------------------------------*/
32026 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
32027 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
32028
32029 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
32030
32031 return (wdiStatus != WDI_STATUS_SUCCESS) ?
32032 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
32033
32034} /* WDI_ProcessRateUpdateInd */
32035
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032036#ifdef WLAN_FEATURE_RMC
32037WDI_Status
32038WDI_ProcessRMCRulerResp
32039(
32040 WDI_ControlBlockType* pWDICtx,
32041 WDI_EventInfoType* pEventData
32042)
32043{
32044 tHalRmcRulerRspMsg halRmcRulerRspMsg;
32045 WDI_RmcRulerRspCb wdiRmcRulerRspCb;
32046 WDI_RmcRspParamsType wdiRmcRsp;
32047
32048 /* Sanity check */
32049 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32050 ( NULL == pEventData->pEventData ))
32051 {
32052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32053 "%s: Invalid parameters", __func__);
32054 WDI_ASSERT( 0 );
32055 return WDI_STATUS_E_FAILURE;
32056 }
32057
32058 wdiRmcRulerRspCb = (WDI_RmcRulerRspCb)pWDICtx->pfncRspCB;
32059
32060 /* Extract indication and send it to UMAC */
32061 wpalMemoryCopy( &halRmcRulerRspMsg.rulerRspParams,
32062 pEventData->pEventData,
32063 sizeof(halRmcRulerRspMsg.rulerRspParams) );
32064
32065 wdiRmcRsp.status = halRmcRulerRspMsg.rulerRspParams.status;
32066 wpalMemoryCopy(wdiRmcRsp.mcastTransmitter,
32067 &halRmcRulerRspMsg.rulerRspParams.mcastTransmitter,
32068 sizeof(wdiRmcRsp.mcastTransmitter));
32069 wpalMemoryCopy(wdiRmcRsp.mcastGroup,
32070 &halRmcRulerRspMsg.rulerRspParams.mcastGroup,
32071 sizeof(wdiRmcRsp.mcastGroup));
32072
32073 switch (halRmcRulerRspMsg.rulerRspParams.cmd)
32074 {
32075 default:
32076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32077 "%s: Invalid command %d", __func__,
32078 halRmcRulerRspMsg.rulerRspParams.cmd);
32079 return WDI_STATUS_E_FAILURE;
32080
32081 case WLAN_HAL_SUGGEST_RULER:
32082 {
32083 /* Fill in the indication parameters */
32084 wdiRmcRsp.cmd = eWDI_SUGGEST_RULER_CMD;
32085 wpalMemoryCopy(wdiRmcRsp.ruler,
32086 &halRmcRulerRspMsg.rulerRspParams.ruler,
32087 sizeof(halRmcRulerRspMsg.rulerRspParams.ruler));
32088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32089 "%s Suggest_Ruler", __func__);
32090 break;
32091 }
32092
32093 case WLAN_HAL_BECOME_RULER:
32094 {
32095 /* Fill in the indication parameters */
32096 wdiRmcRsp.cmd = eWDI_BECOME_RULER_CMD;
32097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32098 "%s Become_Ruler", __func__);
32099 break;
32100 }
32101 }
32102
32103 /* Notify UMAC */
32104 wdiRmcRulerRspCb(&wdiRmcRsp, pWDICtx->pRspCBUserData);
32105
32106 return WDI_STATUS_SUCCESS;
32107}
32108
32109WDI_Status
32110WDI_ProcessRMCUpdateIndToHost
32111(
32112 WDI_ControlBlockType* pWDICtx,
32113 WDI_EventInfoType* pEventData
32114)
32115{
32116 WDI_LowLevelIndType wdiInd;
32117 tHalRmcUpdateInd halRmcUpdateInd;
32118
32119 /* Sanity check */
32120 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32121 ( NULL == pEventData->pEventData ))
32122 {
32123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32124 "%s: Invalid parameters", __func__);
32125 WDI_ASSERT( 0 );
32126 return WDI_STATUS_E_FAILURE;
32127 }
32128
32129 /* Extract indication and send it to UMAC */
32130 wpalMemoryCopy( &halRmcUpdateInd.rulerIndParams,
32131 pEventData->pEventData,
32132 sizeof(halRmcUpdateInd.rulerIndParams) );
32133
32134 switch (halRmcUpdateInd.rulerIndParams.indication)
32135 {
32136 default:
32137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32138 "%s: Invalid command %d", __func__,
32139 halRmcUpdateInd.rulerIndParams.indication);
32140 return WDI_STATUS_E_FAILURE;
32141
32142 case WLAN_HAL_RULER_PICK_NEW:
32143 {
32144 /* Fill in the indication parameters */
32145 wdiInd.wdiIndicationType = WDI_RMC_RULER_PICK_NEW;
32146 wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.indication
32147 = halRmcUpdateInd.rulerIndParams.indication;
32148 wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.role
32149 = halRmcUpdateInd.rulerIndParams.role;
32150 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd. \
32151 mcastTransmitter,
32152 &halRmcUpdateInd.rulerIndParams.mcastTransmitter,
32153 sizeof(tSirMacAddr) );
32154 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.mcastGroup,
32155 &halRmcUpdateInd.rulerIndParams.mcastGroup,
32156 sizeof(tSirMacAddr) );
32157 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.mcastRuler,
32158 &halRmcUpdateInd.rulerIndParams.mcastRuler,
32159 sizeof(tSirMacAddr) );
32160 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.ruler,
32161 &halRmcUpdateInd.rulerIndParams.ruler,
32162 sizeof(tSirMacAddr) * HAL_NUM_MAX_RULERS );
32163 break;
32164 }
32165 }
32166
32167
32168 /* Notify UMAC */
32169 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32170
32171 return WDI_STATUS_SUCCESS;
32172}
32173
32174WDI_Status
32175WDI_RmcRulerReq
32176(
32177 WDI_RmcRulerReqParams *wdiRmcRulerReqParams,
32178 WDI_RmcRulerRspCb wdiRmcRulerRspCb,
32179 void *usrData
32180)
32181{
32182 WDI_EventInfoType wdiEventData;
32183 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32184
32185 /*------------------------------------------------------------------------
32186 Sanity Check
32187 ------------------------------------------------------------------------*/
32188 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32189 {
32190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32191 "WDI API call before module is initialized - Fail request");
32192
32193 return WDI_STATUS_E_NOT_ALLOWED;
32194 }
32195
32196 /*------------------------------------------------------------------------
32197 Fill in Event data and post to the Main FSM
32198 ------------------------------------------------------------------------*/
32199 wdiEventData.wdiRequest = WDI_RMC_RULER_REQ;
32200 wdiEventData.pEventData = wdiRmcRulerReqParams;
32201 wdiEventData.uEventDataSize = sizeof(WDI_RmcRulerReqParams);
32202 wdiEventData.pCBfnc = wdiRmcRulerRspCb;
32203 wdiEventData.pUserData = usrData;
32204
32205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32206
32207} /* WDI_RmcRulerReq */
32208
32209WDI_Status
32210WDI_RmcUpdateInd
32211(
32212 WDI_RmcUpdateIndParams *wdiRmcUpdateIndParams
32213)
32214{
32215 WDI_EventInfoType wdiEventData;
32216 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32217
32218 /*------------------------------------------------------------------------
32219 Sanity Check
32220 ------------------------------------------------------------------------*/
32221 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32222 {
32223 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32224 "WDI API call before module is initialized - Fail request");
32225
32226 return WDI_STATUS_E_NOT_ALLOWED;
32227 }
32228
32229 /*------------------------------------------------------------------------
32230 Fill in Event data and post to the Main FSM
32231 ------------------------------------------------------------------------*/
32232 wdiEventData.wdiRequest = WDI_RMC_UPDATE_IND;
32233 wdiEventData.pEventData = wdiRmcUpdateIndParams;
32234 wdiEventData.uEventDataSize = sizeof(WDI_RmcUpdateIndParams);
32235 wdiEventData.pCBfnc = NULL;
32236 wdiEventData.pUserData = NULL;
32237
32238 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32239
32240}/* WDI_RmcUpdateInd */
32241
32242WDI_Status
32243WDI_ProcessRMCRulerReq
32244(
32245 WDI_ControlBlockType* pWDICtx,
32246 WDI_EventInfoType* pEventData
32247)
32248{
32249 WDI_Status wdiStatus;
32250 wpt_uint8* pSendBuffer = NULL;
32251 wpt_uint16 usDataOffset = 0;
32252 wpt_uint16 usSendSize = 0;
32253 WDI_RmcRulerReqParams *pwdiRulerReq = NULL;
32254 tHalRmcRulerReqMsg *pRulerReq;
32255
32256 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32257
32258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32259 "%s", __func__);
32260
32261 /*-------------------------------------------------------------------------
32262 Sanity check
32263 -------------------------------------------------------------------------*/
32264 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32265 {
32266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32267 "%s: Invalid parameters", __func__);
32268 WDI_ASSERT(0);
32269 return WDI_STATUS_E_FAILURE;
32270 }
32271 pwdiRulerReq = (WDI_RmcRulerReqParams *)pEventData->pEventData;
32272 /*-----------------------------------------------------------------------
32273 Get message buffer
32274 -----------------------------------------------------------------------*/
32275
32276 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32277 WDI_RMC_RULER_REQ,
32278 sizeof(tHalRmcRulerReqParams),
32279 &pSendBuffer, &usDataOffset, &usSendSize))||
32280 ( usSendSize < (usDataOffset +
32281 sizeof(tHalRmcRulerReqParams) )))
32282 {
32283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032284 "Unable to get send buffer in Ruler Req %pK ",
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032285 pEventData);
32286 WDI_ASSERT(0);
32287 return WDI_STATUS_E_FAILURE;
32288 }
32289
32290 pRulerReq = (tHalRmcRulerReqMsg *)pSendBuffer;
32291 pRulerReq->rulerReqParams.cmd = pwdiRulerReq->cmd;
32292 wpalMemoryCopy(pRulerReq->rulerReqParams.mcastTransmitter,
32293 pwdiRulerReq->mcastTransmitter, WDI_MAC_ADDR_LEN);
32294 wpalMemoryCopy(pRulerReq->rulerReqParams.mcastGroup,
32295 pwdiRulerReq->mcastGroup, WDI_MAC_ADDR_LEN);
32296 wpalMemoryCopy(pRulerReq->rulerReqParams.blacklist,
32297 pwdiRulerReq->blacklist,
32298 WDI_MAC_ADDR_LEN * HAL_NUM_MAX_RULERS);
32299
32300 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32301 pWDICtx->pfncRspCB = pEventData->pCBfnc;
32302
32303 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
32304 usSendSize, pWDICtx->pfncRspCB,
32305 pWDICtx->pReqStatusUserData,
32306 WDI_RMC_RULER_RESP);
32307 return wdiStatus;
32308
32309} /* WDI_ProcessRMCRulerReq */
32310
32311/**
32312 @brief Process Update Indication and post it to HAL
32313
32314 @param pWDICtx: pointer to the WLAN DAL context
32315 pEventData: pointer to the event information structure
32316
32317 @see
32318 @return Result of the function call
32319*/
32320WDI_Status
32321WDI_ProcessRMCUpdateInd
32322(
32323 WDI_ControlBlockType* pWDICtx,
32324 WDI_EventInfoType* pEventData
32325)
32326{
32327 wpt_uint8* pSendBuffer = NULL;
32328 wpt_uint16 usDataOffset = 0;
32329 wpt_uint16 usSendSize = 0;
32330 WDI_RmcUpdateIndParams *pwdiUpdateInd = NULL;
32331 tHalRmcUpdateInd *pUpdateInd;
32332 WDI_Status wdiStatus;
32333
32334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32335
32336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32337 "%s", __func__);
32338
32339 /*-------------------------------------------------------------------------
32340 Sanity check
32341 -------------------------------------------------------------------------*/
32342 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32343 {
32344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32345 "%s: Invalid parameters", __func__);
32346 WDI_ASSERT(0);
32347 return WDI_STATUS_E_FAILURE;
32348 }
32349 pwdiUpdateInd = (WDI_RmcUpdateIndParams *)pEventData->pEventData;
32350 /*-----------------------------------------------------------------------
32351 Get message buffer
32352 -----------------------------------------------------------------------*/
32353
32354 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32355 WDI_RMC_UPDATE_IND,
32356 sizeof(tHalRmcUpdateIndParams),
32357 &pSendBuffer, &usDataOffset, &usSendSize))||
32358 ( usSendSize < (usDataOffset +
32359 sizeof(tHalRmcUpdateIndParams) )))
32360 {
32361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032362 "Unable to get send buffer in RMC Update Indication %pK ",
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032363 pEventData);
32364 WDI_ASSERT(0);
32365 return WDI_STATUS_E_FAILURE;
32366 }
32367
32368 pUpdateInd = (tHalRmcUpdateInd *)pSendBuffer;
32369
32370 pUpdateInd->rulerIndParams.indication = pwdiUpdateInd->indication;
32371 pUpdateInd->rulerIndParams.role = pwdiUpdateInd->role;
32372
32373 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastTransmitter,
32374 pwdiUpdateInd->mcastTransmitter, WDI_MAC_ADDR_LEN);
32375 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastGroup,
32376 pwdiUpdateInd->mcastGroup, WDI_MAC_ADDR_LEN);
32377 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastRuler,
32378 pwdiUpdateInd->mcastRuler, WDI_MAC_ADDR_LEN);
32379 /* Zero out parameters not needed for this command */
32380 wpalMemoryZero(pUpdateInd->rulerIndParams.ruler,
32381 WDI_MAC_ADDR_LEN * HAL_NUM_MAX_RULERS);
32382
32383
32384 /*-------------------------------------------------------------------------
32385 Send Update Indication to HAL
32386 -------------------------------------------------------------------------*/
32387 pWDICtx->wdiReqStatusCB = pwdiUpdateInd->wdiReqStatusCB;
32388 pWDICtx->pReqStatusUserData = pwdiUpdateInd->pUserData;
32389
32390 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
32391
32392 return (wdiStatus != WDI_STATUS_SUCCESS) ?
32393 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
32394
32395} /* WDI_ProcessRMCUpdateInd */
32396
32397/**
32398 @brief Process peer info req
32399
32400 @param pWDICtx: pointer to the WLAN DAL context
32401 pEventData: pointer to the event information structure
32402
32403 @see
32404 @return Result of the function call
32405*/
32406WDI_Status
32407WDI_IbssPeerInfoReq
32408(
32409 WDI_IbssPeerInfoReqType* wdiPeerInfoReqParams,
32410 WDI_IbssPeerInfoReqCb wdiIbssPeerInfoReqCb,
32411 void* pUserData
32412)
32413{
32414
32415 WDI_EventInfoType wdiEventData;
32416
32417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32418 /*------------------------------------------------------------------------
32419 Sanity Check
32420 ------------------------------------------------------------------------*/
32421 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32422 {
32423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32424 "WDI API call before module is initialized - Fail request");
32425
32426 return WDI_STATUS_E_NOT_ALLOWED;
32427 }
32428
32429 /*------------------------------------------------------------------------
32430 Fill in Event data and post to the Main FSM
32431 ------------------------------------------------------------------------*/
32432 wdiEventData.wdiRequest = WDI_HAL_IBSS_PEER_INFO_REQ;
32433 wdiEventData.pEventData = wdiPeerInfoReqParams;
32434 wdiEventData.uEventDataSize = sizeof(WDI_IbssPeerInfoReqType);
32435 wdiEventData.pCBfnc = wdiIbssPeerInfoReqCb;
32436 wdiEventData.pUserData = pUserData;
32437
32438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32439}
32440
32441/**
32442 @brief Process peer info req
32443
32444 @param pWDICtx: pointer to the WLAN DAL context
32445 pEventData: pointer to the event information structure
32446
32447 @see
32448 @return Result of the function call
32449*/
32450WDI_Status
32451WDI_ProcessIbssPeerInfoReq
32452(
32453 WDI_ControlBlockType* pWDICtx,
32454 WDI_EventInfoType* pEventData
32455)
32456{
32457 WDI_Status wdiStatus;
32458 wpt_uint8* pSendBuffer = NULL;
32459 wpt_uint16 usDataOffset = 0;
32460 wpt_uint16 usSendSize = 0;
32461 WDI_IbssPeerInfoReqType *pwdiInfoReq = NULL;
32462 tHalIbssPeerInfoReq *pPeerInfoReq;
32463 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
32464
32465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32466
32467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32468 "%s", __func__);
32469
32470 /*-------------------------------------------------------------------------
32471 Sanity check
32472 -------------------------------------------------------------------------*/
32473 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32474 {
32475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32476 "%s: Invalid parameters", __func__);
32477 WDI_ASSERT(0);
32478 return WDI_STATUS_E_FAILURE;
32479 }
32480 pwdiInfoReq = (WDI_IbssPeerInfoReqType *)pEventData->pEventData;
32481 /*-----------------------------------------------------------------------
32482 Get message buffer
32483 -----------------------------------------------------------------------*/
32484
32485 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32486 WDI_HAL_IBSS_PEER_INFO_REQ,
32487 sizeof(tHalIbssPeerInfoReqParams),
32488 &pSendBuffer, &usDataOffset, &usSendSize))||
32489 ( usSendSize < (usDataOffset +
32490 sizeof(tHalIbssPeerInfoReqParams) )))
32491 {
32492 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032493 "Unable to get send buffer in IBSS Peer Info Req %pK ",
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032494 pEventData);
32495 WDI_ASSERT(0);
32496 return WDI_STATUS_E_FAILURE;
32497 }
32498
32499 pPeerInfoReq = (tHalIbssPeerInfoReq *)pSendBuffer;
32500 if (VOS_FALSE == pwdiInfoReq->wdiAllPeerInfoReqd)
32501 {
32502 if (pSTATable[pwdiInfoReq->wdiStaIdx].valid)
32503 {
32504 pPeerInfoReq->ibssPeerInfoReqParams.bssIdx =
32505 pSTATable[pwdiInfoReq->wdiStaIdx].bssIdx;
32506 }
32507 else
32508 {
32509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32510 "Unable to find BSSIDX for STAIDX %d ",
32511 pwdiInfoReq->wdiStaIdx);
32512 return WDI_STATUS_E_FAILURE;
32513 }
32514 }
32515 else
32516 pPeerInfoReq->ibssPeerInfoReqParams.bssIdx = 0;
32517
32518 pPeerInfoReq->ibssPeerInfoReqParams.staIdx = pwdiInfoReq->wdiStaIdx;
32519 pPeerInfoReq->ibssPeerInfoReqParams.allPeerInfoReqd = pwdiInfoReq->wdiAllPeerInfoReqd;
32520
32521 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32522 pWDICtx->pfncRspCB = pEventData->pCBfnc;
32523
32524 /*-------------------------------------------------------------------------
32525 Send IBSS Peer Info request to HAL
32526 -------------------------------------------------------------------------*/
32527 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
32528 usSendSize, pWDICtx->pfncRspCB,
32529 pWDICtx->pReqStatusUserData,
32530 WDI_HAL_IBSS_PEER_INFO_RSP);
32531 return wdiStatus;
32532}
32533
32534/**
32535 @brief Process peer info resp
32536
32537 @param pWDICtx: pointer to the WLAN DAL context
32538 pEventData: pointer to the event information structure
32539
32540 @see
32541 @return Result of the function call
32542*/
32543WDI_Status
32544WDI_ProcessIbssPeerInfoRsp
32545(
32546 WDI_ControlBlockType* pWDICtx,
32547 WDI_EventInfoType* pEventData
32548)
32549{
32550 WDI_IbssPeerInfoReqCb wdiPeerInfoCb = NULL;
32551 tHalIbssPeerParams *pHalPeerInfoParams;
32552 WDI_IbssPeerInfoRspParams wdiPeerInfoRspParams;
32553 wpt_uint32 allocSize=0;
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032554 WDI_IbssPeerInfoParams *pPeerInfoParams = NULL;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032555 wpt_uint8 wdiCount=0;
32556
32557 /*-------------------------------------------------------------------------
32558 Sanity check
32559 -------------------------------------------------------------------------*/
32560 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32561 ( NULL == pEventData->pEventData))
32562 {
32563 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32564 "%s: Invalid parameters", __func__);
32565 WDI_ASSERT(0);
32566 return WDI_STATUS_E_FAILURE;
32567 }
32568
32569 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32570
32571 wdiPeerInfoCb = (WDI_IbssPeerInfoReqCb)pWDICtx->pfncRspCB;
32572
32573 /*-------------------------------------------------------------------------
32574 Extract response and send it to UMAC
32575 -------------------------------------------------------------------------*/
32576 pHalPeerInfoParams =
32577 ((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->ibssPeerParams;
32578 wdiPeerInfoRspParams.wdiStatus =
32579 WDI_HAL_2_WDI_STATUS(((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->status);
32580 wdiPeerInfoRspParams.wdiNumPeers =
32581 ((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->numOfPeers;
32582
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032583 if (!wdiPeerInfoRspParams.wdiNumPeers) {
32584 wdiPeerInfoRspParams.wdiPeerInfoParams = NULL;
32585 goto error;
32586 }
32587 if (wdiPeerInfoRspParams.wdiNumPeers >=
32588 WDI_MAX_IBSS_PEER_SUPPORED_STAS) {
32589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32590 "Number of stations %d exceed max supported stations %d set max",
32591 wdiPeerInfoRspParams.wdiNumPeers,
32592 WDI_MAX_IBSS_PEER_SUPPORED_STAS);
32593 wdiPeerInfoRspParams.wdiNumPeers =
32594 WDI_MAX_IBSS_PEER_SUPPORED_STAS - 1;
32595 }
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032596 /* Size of peer info data received from DAL */
32597 allocSize = (sizeof(WDI_IbssPeerInfoParams) * (wdiPeerInfoRspParams.wdiNumPeers));
32598
32599 pPeerInfoParams = (WDI_IbssPeerInfoParams*)wpalMemoryAllocate(allocSize);
32600
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032601 if (NULL == pPeerInfoParams)
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032602 {
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032604 "Failed to allocate memory in ibss peer info response %pK %pK %pK ",
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032605 pWDICtx, pEventData, pEventData->pEventData);
32606 wdiPeerInfoRspParams.wdiPeerInfoParams = NULL;
32607 goto error;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032608 }
32609
32610 for (wdiCount = 0; wdiCount < wdiPeerInfoRspParams.wdiNumPeers; wdiCount++)
32611 {
32612 tHalIbssPeerParams *pHalTemp = &pHalPeerInfoParams[wdiCount];
32613 WDI_IbssPeerInfoParams *pWdiTemp = &pPeerInfoParams[wdiCount];
32614 pWdiTemp->wdiStaIdx = pHalTemp->staIdx;
32615 pWdiTemp->wdiRssi = pHalTemp->rssi;
32616 pWdiTemp->wdiMcsIndex = pHalTemp->mcsIndex;
32617 pWdiTemp->wdiTxRate = pHalTemp->txRate;
32618 pWdiTemp->wdiTxRateFlags = pHalTemp->txRateFlags;
32619 }
32620
32621 wdiPeerInfoRspParams.wdiPeerInfoParams = pPeerInfoParams;
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032622error:
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032623 /*Notify UMAC*/
32624 if (wdiPeerInfoCb)
32625 {
32626 wdiPeerInfoCb(&wdiPeerInfoRspParams, pWDICtx->pRspCBUserData);
32627 }
32628
32629 /* Free the allocation */
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032630 if(pPeerInfoParams)
32631 vos_mem_free (pPeerInfoParams);
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032632
32633 return WDI_STATUS_SUCCESS;
32634}
32635#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070032636#ifdef FEATURE_WLAN_BATCH_SCAN
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032637
Rajeev79dbe4c2013-10-05 11:03:42 +053032638/**
32639 @brief Process stop batch indication from WDA
32640
32641 @param pWDICtx: pointer to the WLAN DAL context
32642 pEventData: pointer to the event information structure
32643
32644 @see
32645 @return Result of the function call
32646*/
32647WDI_Status
32648WDI_ProcessStopBatchScanInd
32649(
32650 WDI_ControlBlockType* pWDICtx,
32651 WDI_EventInfoType* pEventData
32652)
32653{
32654 wpt_uint8* pSendBuffer = NULL;
32655 wpt_uint16 usDataOffset = 0;
32656 wpt_uint16 usSendSize = 0;
32657 WDI_Status wdiStatus;
32658 tHalBatchScanStopIndParam *pHalInd = NULL;
32659 WDI_StopBatchScanIndType *pWdiInd = NULL;
32660
32661
32662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32663
32664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32665 "%s", __func__);
32666
32667 /*-------------------------------------------------------------------------
32668 Sanity check
32669 -------------------------------------------------------------------------*/
32670
32671 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32672 {
32673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32674 "%s: Invalid parameters", __func__);
32675 WDI_ASSERT(0);
32676 return WDI_STATUS_E_FAILURE;
32677 }
32678 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
32679 /*-----------------------------------------------------------------------
32680 Get message buffer
32681 -----------------------------------------------------------------------*/
32682
32683 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32684 WDI_STOP_BATCH_SCAN_IND,
32685 sizeof(tHalBatchScanStopIndParam),
32686 &pSendBuffer, &usDataOffset, &usSendSize))||
32687 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
32688 {
32689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032690 "Unable to get send buffer in stop batch scan ind %pK ",
Rajeev79dbe4c2013-10-05 11:03:42 +053032691 pEventData);
32692 WDI_ASSERT(0);
32693 return WDI_STATUS_E_FAILURE;
32694 }
32695
32696 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
32697 pHalInd->param = pWdiInd->param;
32698
32699 pWDICtx->pReqStatusUserData = NULL;
32700 pWDICtx->pfncRspCB = NULL;
32701 /*-------------------------------------------------------------------------
32702 Send Stop batch scan indication to HAL
32703 -------------------------------------------------------------------------*/
32704 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32705 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32706}
32707
32708/**
32709 @brief This API is called to trigger batch scan results from FW
32710
32711 @param pWDICtx: pointer to the WLAN DAL context
32712 pEventData: pointer to the event information structure
32713
32714 @see
32715 @return Result of the function call
32716*/
32717WDI_Status
32718WDI_ProcessTriggerBatchScanResultInd
32719(
32720 WDI_ControlBlockType* pWDICtx,
32721 WDI_EventInfoType* pEventData
32722)
32723{
32724 WDI_Status wdiStatus;
32725 wpt_uint8* pSendBuffer = NULL;
32726 wpt_uint16 usDataOffset = 0;
32727 wpt_uint16 usSendSize = 0;
32728 tHalBatchScanTriggerResultParam *pHalInd = NULL;
32729 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
32730
32731
32732 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32733
32734 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32735 "%s", __func__);
32736
32737 /*-------------------------------------------------------------------------
32738 Sanity check
32739 -------------------------------------------------------------------------*/
32740
32741 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32742 {
32743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32744 "%s: Invalid parameters", __func__);
32745 WDI_ASSERT(0);
32746 return WDI_STATUS_E_FAILURE;
32747 }
32748 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
32749 /*-----------------------------------------------------------------------
32750 Get message buffer
32751 -----------------------------------------------------------------------*/
32752
32753 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32754 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
32755 sizeof(tHalBatchScanTriggerResultParam),
32756 &pSendBuffer, &usDataOffset, &usSendSize))||
32757 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
32758 {
32759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032760 "Unable to get send buffer in stop batch scan ind %pK ",
Rajeev79dbe4c2013-10-05 11:03:42 +053032761 pEventData);
32762 WDI_ASSERT(0);
32763 return WDI_STATUS_E_FAILURE;
32764 }
32765
32766 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
32767 pHalInd->param = pWdiInd->param;
32768
32769 pWDICtx->pReqStatusUserData = NULL;
32770 pWDICtx->pfncRspCB = NULL;
32771 /*-------------------------------------------------------------------------
32772 Send trigger batch scan result indication to HAL
32773 -------------------------------------------------------------------------*/
32774 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32775 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32776}
32777
32778
32779/**
32780 @brief Process set batch scan response from FW
32781
32782 @param pWDICtx: pointer to the WLAN DAL context
32783 pEventData: pointer to the event information structure
32784
32785 @see
32786 @return Result of the function call
32787*/
32788WDI_Status
32789WDI_ProcessSetBatchScanRsp
32790(
32791 WDI_ControlBlockType* pWDICtx,
32792 WDI_EventInfoType* pEventData
32793)
32794{
32795 WDI_SetBatchScanCb wdiSetBatchScanCb;
32796 WDI_SetBatchScanRspType *pSetBatchScanRsp;
32797
32798 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
32799 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32800
32801 /*sanity check*/
32802 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32803 ( NULL == pEventData->pEventData))
32804 {
32805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32806 "%s: Invalid parameters", __func__);
32807 WDI_ASSERT(0);
32808 return WDI_STATUS_E_FAILURE;
32809 }
32810
32811 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
32812 if ( NULL == wdiSetBatchScanCb)
32813 {
32814 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32815 "%s: call back function is NULL", __func__);
32816 WDI_ASSERT(0);
32817 return WDI_STATUS_E_FAILURE;
32818 }
32819
32820 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
32821
32822 if (NULL == pSetBatchScanRsp)
32823 {
32824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032825 "Failed to allocate memory in set batch scan response %pK %pK %pK ",
Rajeev79dbe4c2013-10-05 11:03:42 +053032826 pWDICtx, pEventData, pEventData->pEventData);
32827 WDI_ASSERT(0);
32828 return WDI_STATUS_E_FAILURE;
32829 }
32830
Sunil Duttbd736ed2014-05-26 21:19:41 +053032831 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032832 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
32833
32834 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
32835
Sunil Duttbd736ed2014-05-26 21:19:41 +053032836 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032837 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
32838
32839 wpalMemoryFree(pSetBatchScanRsp);
32840
32841 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032842}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053032843
32844/**
32845 @brief Process batch scan result indication from FW
32846
32847 @param pWDICtx: pointer to the WLAN DAL context
32848 pEventData: pointer to the event information structure
32849
32850 @see
32851 @return Result of the function call
32852*/
32853WDI_Status
32854WDI_ProcessBatchScanResultInd
32855(
32856 WDI_ControlBlockType* pWDICtx,
32857 WDI_EventInfoType* pEventData
32858)
32859{
32860 void *pBatchScanResultInd;
32861 WDI_LowLevelIndType wdiInd;
32862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32863
Sunil Duttbd736ed2014-05-26 21:19:41 +053032864 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053032865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32866 ( NULL == pEventData->pEventData))
32867 {
32868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32869 "%s: Invalid parameters", __func__);
32870 WDI_ASSERT(0);
32871 return WDI_STATUS_E_FAILURE;
32872 }
32873
Sunil Duttbd736ed2014-05-26 21:19:41 +053032874 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032875 pBatchScanResultInd = (void *)pEventData->pEventData;
32876
Sunil Duttbd736ed2014-05-26 21:19:41 +053032877 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053032878 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
32879
32880 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
32881
Sunil Duttbd736ed2014-05-26 21:19:41 +053032882 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032883 if (pWDICtx->wdiLowLevelIndCB)
32884 {
32885 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32886 }
32887 else
32888 {
32889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32890 "%s: WDILowLevelIndCb is null", __func__);
32891 WDI_ASSERT(0);
32892 return WDI_STATUS_E_FAILURE;
32893 }
32894
32895 return WDI_STATUS_SUCCESS;
32896} /*End of WDI_ProcessBatchScanResultInd*/
32897
Sunil Duttbd736ed2014-05-26 21:19:41 +053032898#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32899/**
32900 @brief Process Link Layer Statistics Result indication from FW
32901
32902 @param pWDICtx: pointer to the WLAN DAL context
32903 pEventData: pointer to the event information structure
32904
32905 @see
32906 @return Result of the function call
32907*/
32908WDI_Status
32909WDI_ProcessLinkLayerStatsResultsInd
32910(
32911 WDI_ControlBlockType* pWDICtx,
32912 WDI_EventInfoType* pEventData
32913)
32914{
32915 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053032916 WDI_LLstatsResultsType *halLLStatsResults;
32917 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032918 WDI_LowLevelIndType wdiInd;
32919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32920
32921 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32922 "%s: Event RESULTS Indication", __func__);
32923
32924 /* sanity check */
32925 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32926 ( NULL == pEventData->pEventData))
32927 {
32928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32929 "%s: Invalid parameters", __func__);
32930 WDI_ASSERT(0);
32931 return WDI_STATUS_E_FAILURE;
32932 }
32933
32934 /* extract response and send it to UMAC */
32935 pLinkLayerStatsInd = (void *)pEventData->pEventData;
32936
32937 /* Fill in the indication parameters */
32938 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
32939
Dino Mycled3d50022014-07-07 12:58:25 +053032940 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
32941 = pLinkLayerStatsInd;
32942
32943 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
32944
32945
32946 /* Need to fill in the MAC address */
32947 if ( WDI_STATUS_SUCCESS !=
32948 WDI_STATableGetStaMacAddr(pWDICtx,
32949 halLLStatsResults->iface_id,
32950 &macAddr))
32951 {
32952 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32953 " ifaceId: %u does not exist in the WDI Station Table",
32954 halLLStatsResults->iface_id);
32955
32956 return WDI_STATUS_E_FAILURE;
32957 }
32958 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
32959 macAddr, WDI_MAC_ADDR_LEN);
32960
32961 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32962 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
32963 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053032964
32965 /* Notify UMAC */
32966 if (pWDICtx->wdiLowLevelIndCB)
32967 {
32968 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32969 }
32970 else
32971 {
32972 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32973 "%s: WDILowLevelIndCb is null", __func__);
32974 WDI_ASSERT(0);
32975 return WDI_STATUS_E_FAILURE;
32976 }
32977
32978 return WDI_STATUS_SUCCESS;
32979} /* End of WDI_ProcessLinkLayerStatsResultsInd */
32980#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
32981
Rajeev79dbe4c2013-10-05 11:03:42 +053032982/**
32983 @brief WDI_ProcessSetBatchScanReq -
32984 Set batch scan request to FW
32985
32986 @param pWDICtx : wdi context
32987 pEventData : indication data
32988
32989 @see
32990 @return none
32991*/
32992WDI_Status WDI_ProcessSetBatchScanReq
32993(
32994 WDI_ControlBlockType* pWDICtx,
32995 WDI_EventInfoType* pEventData
32996)
32997{
32998 WDI_SetBatchScanReqType *pWdiReq;
32999 WDI_Status wdiStatus;
33000 wpt_uint8* pSendBuffer = NULL;
33001 wpt_uint16 usDataOffset = 0;
33002 wpt_uint16 usSendSize = 0;
33003 tHalBatchScanSetParams *pHalReq;
33004 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33005
33006 /*sanity check*/
33007 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
33008 {
33009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33010 "%s: Invalid parameters in set batch scan request", __func__);
33011 WDI_ASSERT(0);
33012 return WDI_STATUS_E_FAILURE;
33013 }
33014
33015
33016 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
33017
33018
33019 /*get message buffer*/
33020 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
33021 WDI_SET_BATCH_SCAN_REQ,
33022 sizeof(tHalBatchScanSetParams),
33023 &pSendBuffer, &usDataOffset, &usSendSize))||
33024 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
33025 {
33026 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33027 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
33028 WDI_ASSERT(0);
33029 return WDI_STATUS_E_FAILURE;
33030 }
33031
33032 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
33033
33034 pHalReq->rtt = pWdiReq->rtt;
33035 pHalReq->rfBand = pWdiReq->rfBand;
33036 pHalReq->bestNetworks = pWdiReq->bestNetwork;
33037 pHalReq->scanInterval = pWdiReq->scanFrequency;
33038 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
33039
33040 /*send set batch scan request to fw*/
33041 pWDICtx->pfncRspCB = pEventData->pCBfnc;
33042 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33043
33044 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
33045 usSendSize, pWDICtx->pfncRspCB,
33046 pWDICtx->pReqStatusUserData,
33047 WDI_SET_BATCH_SCAN_RESP);
33048
33049 return wdiStatus;
33050}
33051
33052/**
33053 @brief WDI_SetBatchScanReq
33054 This API is called to set batch scan request in FW
33055
33056 @param pBatchScanReqParam : pointer to set batch scan re param
33057 usrData : Client context
33058 setBatchScanRspCb : set batch scan resp callback
33059 @see
33060 @return SUCCESS or FAIL
33061*/
33062WDI_Status WDI_SetBatchScanReq
33063(
33064 void *pBatchScanReqParam,
33065 void *usrData,
33066 WDI_SetBatchScanCb setBatchScanRspCb
33067)
33068{
33069 WDI_EventInfoType wdiEventData;
33070
33071 /*sanity check*/
33072 if (eWLAN_PAL_FALSE == gWDIInitialized)
33073 {
33074 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33075 "WDI API call before module is initialized - Fail request");
33076
33077 return WDI_STATUS_E_NOT_ALLOWED;
33078 }
33079
33080 /* fill in event data and post to the main FSM */
33081 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
33082 wdiEventData.pEventData = pBatchScanReqParam;
33083 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
33084 wdiEventData.pCBfnc = setBatchScanRspCb;
33085 wdiEventData.pUserData = usrData;
33086
33087 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33088}
33089
33090/**
33091 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
33092
33093 @param None
33094
33095 @see
33096
33097 @return Status of the request
33098*/
33099WDI_Status
33100WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
33101{
33102 WDI_EventInfoType wdiEventData;
33103
33104 /*-------------------------------------------------------------------------
33105 Sanity Check
33106 ------------------------------------------------------------------------*/
33107 if (eWLAN_PAL_FALSE == gWDIInitialized)
33108 {
33109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33110 "WDI API call before module is initialized - Fail request!");
33111
33112 return WDI_STATUS_E_NOT_ALLOWED;
33113 }
33114
33115 /*-------------------------------------------------------------------------
33116 Fill in Event data and post to the Main FSM
33117 ------------------------------------------------------------------------*/
33118 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
33119 wdiEventData.pEventData = pWdiReq;
33120 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
33121 wdiEventData.pCBfnc = NULL;
33122 wdiEventData.pUserData = NULL;
33123
33124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33125}
33126
33127/**
33128 @brief WDI_TriggerBatchScanResultInd
33129 This API is called to pull batch scan result from FW
33130
33131 @param pWdiReq : pointer to get batch scan ind param
33132 @see
33133 @return SUCCESS or FAIL
33134*/
33135WDI_Status WDI_TriggerBatchScanResultInd
33136(
33137 WDI_TriggerBatchScanResultIndType *pWdiReq
33138)
33139{
33140 WDI_EventInfoType wdiEventData;
33141 /*-------------------------------------------------------------------------
33142 Sanity Check
33143 ------------------------------------------------------------------------*/
33144 if (eWLAN_PAL_FALSE == gWDIInitialized)
33145 {
33146 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33147 "WDI API call before module is initialized - Fail request!");
33148
33149 return WDI_STATUS_E_NOT_ALLOWED;
33150 }
33151
33152 /*-------------------------------------------------------------------------
33153 Fill in Event data and post to the Main FSM
33154 ------------------------------------------------------------------------*/
33155 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
33156 wdiEventData.pEventData = pWdiReq;
33157 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
33158 wdiEventData.pCBfnc = NULL;
33159 wdiEventData.pUserData = NULL;
33160
33161 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33162}
Rajeev79dbe4c2013-10-05 11:03:42 +053033163#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080033164
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080033165/**
33166 @brief Process Update Channel Rsp function (called when a response is
33167 being received over the bus from HAL)
33168
33169 @param pWDICtx: pointer to the WLAN DAL context
33170 pEventData: pointer to the event information structure
33171
33172 @see
33173 @return Result of the function call
33174*/
33175WDI_Status
33176WDI_ProcessUpdateChanRsp
33177(
33178 WDI_ControlBlockType* pWDICtx,
33179 WDI_EventInfoType* pEventData
33180)
33181{
33182 WDI_Status wdiStatus;
33183 eHalStatus halStatus;
33184 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
33185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33186
33187 /*-------------------------------------------------------------------------
33188 Sanity check
33189 -------------------------------------------------------------------------*/
33190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33191 ( NULL == pEventData->pEventData))
33192 {
33193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33194 "%s: Invalid parameters", __func__);
33195 WDI_ASSERT(0);
33196 return WDI_STATUS_E_FAILURE;
33197 }
33198
33199 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
33200
33201 /*-------------------------------------------------------------------------
33202 Extract response and send it to UMAC
33203 -------------------------------------------------------------------------*/
33204 halStatus = *((eHalStatus*)pEventData->pEventData);
33205 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
33206
33207 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
33208
33209 return WDI_STATUS_SUCCESS;
33210}/*WDI_ProcessUpdateChanRsp*/
33211
Leo Chang0b0e45a2013-12-15 15:18:55 -080033212#ifdef FEATURE_WLAN_CH_AVOID
33213/**
33214 @brief v -WDI_ProcessChAvoidInd
33215
33216
33217 @param pWDICtx : wdi context
33218 pEventData : indication data
33219 @see
33220 @return Result of the function call
33221*/
33222WDI_Status
33223WDI_ProcessChAvoidInd
33224(
33225 WDI_ControlBlockType* pWDICtx,
33226 WDI_EventInfoType* pEventData
33227)
33228{
33229 WDI_LowLevelIndType wdiInd;
33230 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
33231 wpt_uint16 rangeLoop;
Abhishek Singhf5590652016-02-09 16:53:03 +053033232 wpt_uint32 dataSize;
Leo Chang0b0e45a2013-12-15 15:18:55 -080033233 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33234
33235 /*-------------------------------------------------------------------------
33236 Sanity check
33237 -------------------------------------------------------------------------*/
33238 if ((NULL == pWDICtx) || (NULL == pEventData) ||
33239 (NULL == pEventData->pEventData))
33240 {
33241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33242 "%s: Invalid parameters", __func__);
33243 WDI_ASSERT(0);
33244 return WDI_STATUS_E_FAILURE;
33245 }
33246
Abhishek Singhf5590652016-02-09 16:53:03 +053033247 dataSize = sizeof(tHalAvoidFreqRangeIndParams);
33248 if (dataSize > pEventData->uEventDataSize)
33249 dataSize = pEventData->uEventDataSize;
33250
Leo Chang0b0e45a2013-12-15 15:18:55 -080033251 /*-------------------------------------------------------------------------
33252 Extract indication and send it to UMAC
33253 -------------------------------------------------------------------------*/
33254 wpalMemoryCopy(&chAvoidIndicationParam,
33255 pEventData->pEventData,
Abhishek Singhf5590652016-02-09 16:53:03 +053033256 dataSize);
Leo Chang0b0e45a2013-12-15 15:18:55 -080033257
Abhishek Singhe34eb552015-06-18 10:12:15 +053033258 /* Avoid Over flow */
33259 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
33260 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
33261
Leo Chang0b0e45a2013-12-15 15:18:55 -080033262 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
33263 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
33264 chAvoidIndicationParam.avoidCnt;
33265 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
33266 (void *)chAvoidIndicationParam.avoidRange,
33267 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
33268 sizeof(WDI_ChAvoidFreqType));
33269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33270 "%s: band count %d", __func__,
33271 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
33272 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
33273 {
33274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33275 "%s: srart freq %d, end freq %d", __func__,
33276 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
33277 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
33278 }
33279
33280 /*Notify UMAC*/
33281 if (pWDICtx->wdiLowLevelIndCB)
33282 {
33283 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
33284 }
33285
33286 return WDI_STATUS_SUCCESS;
33287}
Atul Mittalc0f739f2014-07-31 13:47:47 +053033288
Leo Chang0b0e45a2013-12-15 15:18:55 -080033289#endif /* FEATURE_WLAN_CH_AVOID */
33290
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033291/**
33292 @brief Process OBSS Start scan result indication
33293
33294 @param pWDICtx: pointer to the WLAN DAL context
33295 pEventData: pointer to the event information structure
33296
33297 @see
33298 @return Result of the function call
33299*/
33300WDI_Status
33301WDI_ProcessHT40OBSSScanInd
33302(
33303 WDI_ControlBlockType* pWDICtx,
33304 WDI_EventInfoType* pEventData
33305)
33306{
33307 wpt_uint8* pSendBuffer = NULL;
33308 wpt_uint16 usDataOffset = 0;
33309 wpt_uint16 usSendSize = 0;
33310 wpt_uint16 usLen = 0;
33311 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
33312 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
33313 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
33314 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
33315
33316 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33317
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053033318 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033319 "%s", __func__);
33320
33321 /*-------------------------------------------------------------------------
33322 Sanity check
33323 -------------------------------------------------------------------------*/
33324 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
33325 {
33326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33327 "%s: Invalid parameters", __func__);
33328 WDI_ASSERT(0);
33329 return WDI_STATUS_E_FAILURE;
33330 }
33331 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
33332
33333 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
33334 /*-----------------------------------------------------------------------
33335 Get message buffer
33336 -----------------------------------------------------------------------*/
33337
33338 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33339 WDI_START_HT40_OBSS_SCAN_IND,
33340 sizeof(tHT40ObssScanIndType),
33341 &pSendBuffer, &usDataOffset, &usSendSize))||
33342 ( usSendSize < (usDataOffset + usLen )))
33343 {
33344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070033345 "Unable to get send buffer in HT40 OBSS Start req %pK ",
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033346 pEventData);
33347 WDI_ASSERT(0);
33348 return WDI_STATUS_E_FAILURE;
33349 }
33350 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
33351 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
33352 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
33353 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
33354 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
33355 pHT40ObssScanInd->OBSSScanActiveDwellTime =
33356 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
33357 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
33358 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
33359 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
33360 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
33361 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
33362 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
33363 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
33364 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
33365 pHT40ObssScanInd->OBSSScanActivityThreshold =
33366 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
33367 pHT40ObssScanInd->selfStaIdx =
33368 pwdiHT40OBSSScanInd->selfStaIdx;
33369 pHT40ObssScanInd->bssIdx =
33370 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053033371 pHT40ObssScanInd->currentOperatingClass =
33372 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033373 pHT40ObssScanInd->fortyMHZIntolerent =
33374 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
33375 pHT40ObssScanInd->channelCount =
33376 pwdiHT40OBSSScanInd->channelCount;
33377
33378 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
33379 WDI_ROAM_SCAN_MAX_CHANNELS);
33380 pHT40ObssScanInd->ieFieldLen =
33381 pwdiHT40OBSSScanInd->ieFieldLen;
33382
33383 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
33384 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
33385 pWDICtx->pReqStatusUserData = NULL;
33386 pWDICtx->pfncRspCB = NULL;
33387
33388 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
33389 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
33390
33391 /*-------------------------------------------------------------------------
33392 Send OBSS Start Indication to HAL
33393 -------------------------------------------------------------------------*/
33394 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
33395 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
33396
33397} /*End of WDI_ProcessHT40OBSSStartScanInd*/
33398
33399
33400/**
33401 @brief wdi_HT40OBSSScanInd
33402 This API is called to start OBSS scan
33403
33404 @param pWdiReq : pointer to get ind param
33405 @see
33406 @return SUCCESS or FAIL
33407*/
33408WDI_Status WDI_HT40OBSSScanInd
33409(
33410 WDI_HT40ObssScanParamsType *pWdiReq
33411)
33412{
33413 WDI_EventInfoType wdiEventData;
33414
33415 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33416 "%s", __func__);
33417 /*-------------------------------------------------------------------------
33418 Sanity Check
33419 ------------------------------------------------------------------------*/
33420 if (eWLAN_PAL_FALSE == gWDIInitialized)
33421 {
33422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33423 "WDI API call before module is initialized - Fail request!");
33424
33425 return WDI_STATUS_E_NOT_ALLOWED;
33426 }
33427
33428 /*-------------------------------------------------------------------------
33429 Fill in Event data and post to the Main FSM
33430 ------------------------------------------------------------------------*/
33431 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
33432 wdiEventData.pEventData = pWdiReq;
33433 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
33434 wdiEventData.pCBfnc = NULL;
33435 wdiEventData.pUserData = NULL;
33436
33437
33438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33439}
33440
33441/**
33442 @brief Process OBSS Stop scan result
33443
33444 @param pWDICtx: pointer to the WLAN DAL context
33445 pEventData: pointer to the event information structure
33446
33447 @see
33448 @return Result of the function call
33449*/
33450WDI_Status
33451WDI_ProcessHT40OBSSStopScanInd
33452(
33453 WDI_ControlBlockType* pWDICtx,
33454 WDI_EventInfoType* pEventData
33455)
33456{
33457 wpt_uint8* pSendBuffer = NULL;
33458 wpt_uint16 usDataOffset = 0;
33459 wpt_uint16 usSendSize = 0;
33460 wpt_uint16 usLen = 0;
33461 wpt_uint8 *wdiBssIdx = 0;
33462 tANI_U8 *bssIdx = 0;
33463 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
33464
33465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33466
33467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33468 "%s", __func__);
33469
33470 /*-------------------------------------------------------------------------
33471 Sanity check
33472 -------------------------------------------------------------------------*/
33473 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
33474 {
33475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33476 "%s: Invalid parameters", __func__);
33477 WDI_ASSERT(0);
33478 return WDI_STATUS_E_FAILURE;
33479 }
33480 bssIdx = (wpt_uint8*)pEventData->pEventData;
33481 /*-----------------------------------------------------------------------
33482 Get message buffer
33483 -----------------------------------------------------------------------*/
33484
33485 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33486 WDI_STOP_HT40_OBSS_SCAN_IND,
33487 sizeof(tANI_U8),
33488 &pSendBuffer, &usDataOffset, &usSendSize))||
33489 ( usSendSize < (usDataOffset + usLen )))
33490 {
33491 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070033492 "Unable to get send buffer in HT40 OBSS Start req %pK ",
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033493 pEventData);
33494 WDI_ASSERT(0);
33495 return WDI_STATUS_E_FAILURE;
33496 }
33497
33498 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
33499 bssIdx = wdiBssIdx;
33500
33501 pWDICtx->pReqStatusUserData = NULL;
33502 pWDICtx->pfncRspCB = NULL;
33503
33504 /*-------------------------------------------------------------------------
33505 Send DHCP Start Indication to HAL
33506 -------------------------------------------------------------------------*/
33507 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
33508 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
33509} /*End of WDI_ProcessHT40OBSSStopScanInd*/
33510
33511/**
33512 @brief WDI_HT40OBSSStopScanInd
33513 This API is called to start OBSS scan
33514 @param pWdiReq : pointer to get ind param
33515 @see
33516 @return SUCCESS or FAIL
33517*/
33518WDI_Status WDI_HT40OBSSStopScanInd
33519(
33520 wpt_uint8 bssIdx
33521)
33522{
33523 WDI_EventInfoType wdiEventData;
33524
33525 /*-------------------------------------------------------------------------
33526 Sanity Check
33527 ------------------------------------------------------------------------*/
33528 if (eWLAN_PAL_FALSE == gWDIInitialized)
33529 {
33530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33531 "WDI API call before module is initialized - Fail request!");
33532
33533 return WDI_STATUS_E_NOT_ALLOWED;
33534 }
33535
33536 /*-------------------------------------------------------------------------
33537 Fill in Event data and post to the Main FSM
33538 ------------------------------------------------------------------------*/
33539 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
33540 wdiEventData.pEventData = &bssIdx;
33541 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
33542 wdiEventData.pCBfnc = NULL;
33543 wdiEventData.pUserData = NULL;
33544
33545 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33546}
33547
c_hpothu86041002014-04-14 19:06:51 +053033548WDI_Status
33549WDI_printRegInfo
33550(
33551 WDI_ControlBlockType* pWDICtx,
33552 WDI_EventInfoType* pEventData
33553)
33554{
33555 tHalRegDebugInfo *pRegTable;
33556 tHalRegDebugInfoParams *pRegParams;
33557 uint32 cnt=0;
33558
33559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33560 "%s: ", __func__);
33561 /*-------------------------------------------------------------------------
33562 Sanity check
33563 -------------------------------------------------------------------------*/
33564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33565 ( NULL == pEventData->pEventData))
33566 {
33567 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33568 "%s: Invalid parameters", __func__);
33569 WDI_ASSERT(0);
33570 return WDI_STATUS_E_FAILURE;
33571 }
33572
33573 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
33574
33575 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33576 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
33577 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
33578
33579 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
33580
33581 if (pRegParams->regCount <= 0)
33582 {
33583 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33584 "%s incorrect parameters passed", __func__);
33585 return WDI_STATUS_E_FAILURE;
33586 }
33587
33588 while(pRegParams->regCount--)
33589 {
33590 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33591 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
33592 cnt++;
33593 }
33594
33595 return WDI_STATUS_SUCCESS;
33596}
c_hpothu92367912014-05-01 15:18:17 +053033597
33598/*
Abhishek Singh66c16762014-08-14 19:13:19 +053033599 * FUNCTION: WDI_delBaInd
33600 * send the delBA to peer.
33601 */
33602
33603WDI_Status
33604WDI_delBaInd
33605(
33606 WDI_ControlBlockType* pWDICtx,
33607 WDI_EventInfoType* pEventData
33608
33609)
33610{
33611 tHalWlanDelBaIndMsg halDelBaInd;
33612 WDI_LowLevelIndType wdiInd;
33613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33614
33615 /*-------------------------------------------------------------------------
33616 Sanity check
33617 -------------------------------------------------------------------------*/
33618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33619 ( NULL == pEventData->pEventData))
33620 {
33621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33622 "%s: Invalid parameters", __func__);
33623 WDI_ASSERT(0);
33624 return WDI_STATUS_E_FAILURE;
33625 }
33626
33627 /*-------------------------------------------------------------------------
33628 Extract indication and send it to UMAC
33629 -------------------------------------------------------------------------*/
33630
33631 /* Parameters need to be unpacked according to HAL struct*/
33632 wpalMemoryCopy( &halDelBaInd,
33633 pEventData->pEventData,
33634 sizeof(halDelBaInd));
33635
33636 /*Fill in the indication parameters*/
33637 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
33638
33639 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
33640 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
33641 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
33642
33643 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
33644 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
33645 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
33646
33647 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
33648 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
33649 if ( pWDICtx->wdiLowLevelIndCB )
33650 {
33651 /*Notify UMAC*/
33652 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
33653 }
33654
33655 return WDI_STATUS_SUCCESS;
33656
33657
33658}
33659
33660/*
c_hpothu92367912014-05-01 15:18:17 +053033661 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
33662 * send the response to PE with beacon miss count
33663 * received from WDI.
33664 */
33665WDI_Status
33666WDI_ProcessGetBcnMissRateRsp
33667(
33668 WDI_ControlBlockType* pWDICtx,
33669 WDI_EventInfoType* pEventData
33670)
33671{
33672 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
33673 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
33674
33675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33676 "In %s",__func__);
33677 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33678
33679 /*-------------------------------------------------------------------------
33680 Sanity check
33681 -------------------------------------------------------------------------*/
33682 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33683 ( NULL == pEventData->pEventData))
33684 {
33685 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33686 "%s: Invalid parameters", __func__);
33687 WDI_ASSERT(0);
33688 return WDI_STATUS_E_FAILURE;
33689 }
33690
33691 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
33692 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
33693
33694 /*Notify UMAC*/
33695 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
33696 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
33697 return WDI_STATUS_SUCCESS;
33698}
33699
33700/*
33701 * FUNCTION: WDI_ProcessGetBcnMissRateReq
33702 * Request to WDI to get missed beacon rate.
33703 */
33704WDI_Status
33705WDI_ProcessGetBcnMissRateReq
33706(
33707 WDI_ControlBlockType* pWDICtx,
33708 WDI_EventInfoType* pEventData
33709)
33710{
33711 wpt_uint8* pSendBuffer = NULL;
33712 wpt_uint16 usDataOffset = 0;
33713 wpt_uint16 usSendSize = 0;
33714 wpt_uint8 ucCurrentBSSSesIdx = 0;
33715 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053033716 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
33717 tHalBcnMissRateReqParams halBcnMissRateReq;
33718
33719/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33720
33721 /*-------------------------------------------------------------------------
33722 Sanity check
33723 -------------------------------------------------------------------------*/
33724 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33725 ( NULL == pEventData->pCBfnc ) )
33726 {
33727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33728 "%s: Invalid parameters", __func__);
33729 WDI_ASSERT(0);
33730 return WDI_STATUS_E_FAILURE;
33731 }
33732
33733 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
33734
33735 wpalMutexAcquire(&pWDICtx->wptMutex);
33736
33737 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
33738 pEventData->pEventData, &pBSSSes);
33739 if ( NULL == pBSSSes )
33740 {
33741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33742 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053033743 MAC_ADDRESS_STR, __func__,
33744 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053033745 wpalMutexRelease(&pWDICtx->wptMutex);
33746 return WDI_STATUS_E_NOT_ALLOWED;
33747 }
33748 wpalMutexRelease(&pWDICtx->wptMutex);
33749
33750 /*-----------------------------------------------------------------------
33751 Get message buffer
33752 -----------------------------------------------------------------------*/
33753 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33754 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
33755 sizeof(tHalBcnMissRateReqParams),
33756 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33757 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
33758 {
33759 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070033760 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %pK",
c_hpothu92367912014-05-01 15:18:17 +053033761 pEventData);
33762 WDI_ASSERT(0);
33763 return WDI_STATUS_E_FAILURE;
33764 }
33765
33766 pWDICtx->wdiReqStatusCB = NULL;
33767 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33768
33769 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
33770
33771 wpalMemoryCopy( pSendBuffer+usDataOffset,
33772 &halBcnMissRateReq,
33773 sizeof(tHalBcnMissRateReqParams));
33774 /*-------------------------------------------------------------------------
33775 Send Get STA Request to HAL
33776 -------------------------------------------------------------------------*/
33777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
33778 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
33779}
33780
33781/**
33782 @brief WDI_GetBcnMissRate
33783
33784 @param pUserData: user data will be passed back with the
33785 callback
33786 WDI_GetBcnMissRateCb: callback for passing back the response
33787 of the get stats operation received from the device
33788 bssid: bssid, to send bssIdx to FW
33789
33790 @return SUCCESS or FAIL
33791*/
33792WDI_Status WDI_GetBcnMissRate( void *pUserData,
33793 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
33794 tANI_U8 *bssid )
33795{
33796 WDI_EventInfoType wdiEventData;
33797
33798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33799
33800 /*------------------------------------------------------------------------
33801 Sanity Check
33802 ------------------------------------------------------------------------*/
33803 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33804 {
33805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33806 "WDI API call before module is initialized - Fail request");
33807
33808 return WDI_STATUS_E_NOT_ALLOWED;
33809 }
33810
33811 /*------------------------------------------------------------------------
33812 Fill in Event data and post to the Main FSM
33813 ------------------------------------------------------------------------*/
33814 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
33815 wdiEventData.pEventData = bssid;
33816 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
33817 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
33818 wdiEventData.pUserData = pUserData;
33819
33820 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33821}
Abhishek Singh85b74712014-10-08 11:38:19 +053033822
33823/*
33824 * FUNCTION: WDI_ProcessGetFwStatsRsp
33825 * send the response with FW stats asked.
33826 */
33827WDI_Status
33828 WDI_ProcessGetFwStatsRsp
33829(
33830 WDI_ControlBlockType* pWDICtx,
33831 WDI_EventInfoType* pEventData
33832)
33833{
33834 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
33835 tpHalfwStatsRspParams pHalFwstatsRsp;
33836 WDI_FWStatsResults fwStats;
33837
33838 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33839
33840 /*-------------------------------------------------------------------------
33841 Sanity check
33842 -------------------------------------------------------------------------*/
33843 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33844 ( NULL == pEventData->pEventData))
33845 {
33846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33847 "%s: Invalid parameters", __func__);
33848 WDI_ASSERT(0);
33849 return WDI_STATUS_E_FAILURE;
33850 }
33851 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
33852 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
33853
33854 if(pHalFwstatsRsp->length)
33855 {
33856 switch( pHalFwstatsRsp->type )
33857 {
33858 case FW_UBSP_STATS:
33859 {
33860 ubspFwStats *ubspStatsfromFw;
33861
33862 fwStats.type = pHalFwstatsRsp->type;
33863 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
33864 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
33865 ubspStatsfromFw->ubsp_enter_cnt;
33866 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
33867 ubspStatsfromFw->ubsp_jump_ddr_cnt;
33868 }
33869 break;
33870 default:
33871 {
33872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33873 "%s: No handling for stats type %d", __func__,
33874 pHalFwstatsRsp->type);
33875 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
33876 NULL, pWDICtx->pRspCBUserData);
33877 return WDI_STATUS_E_FAILURE;
33878 }
33879 }
33880 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
33881 }
33882 else
33883 {
33884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33885 "%s: Length = 0 for type %d return failure ", __func__,
33886 pHalFwstatsRsp->type);
33887 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
33888 NULL, pWDICtx->pRspCBUserData);
33889 return WDI_STATUS_E_FAILURE;
33890 }
33891 return WDI_STATUS_SUCCESS;
33892}
33893
33894/*
33895 * FUNCTION: WDI_ProcessGetFwStatsReq
33896 * Request to WDI to get FW Stats.
33897 */
33898WDI_Status
33899 WDI_ProcessGetFwStatsReq
33900(
33901 WDI_ControlBlockType* pWDICtx,
33902 WDI_EventInfoType* pEventData
33903)
33904{
33905 wpt_uint8* pSendBuffer = NULL;
33906 wpt_uint16 usDataOffset = 0;
33907 wpt_uint16 usSendSize = 0;
33908 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
33909 tHalfwStatsReqParams halFwStatsReq;
33910
33911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33912
33913 /*-------------------------------------------------------------------------
33914 Sanity check
33915 -------------------------------------------------------------------------*/
33916 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33917 ( NULL == pEventData->pCBfnc ) )
33918 {
33919 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33920 "%s: Invalid parameters", __func__);
33921 WDI_ASSERT(0);
33922 return WDI_STATUS_E_FAILURE;
33923 }
33924
33925 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
33926
33927 /*-----------------------------------------------------------------------
33928 Get message buffer
33929 -----------------------------------------------------------------------*/
33930 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33931 pWDICtx, WDI_GET_FW_STATS_REQ,
33932 sizeof(tHalfwStatsReqParams),
33933 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33934 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
33935 {
33936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070033937 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %pK",
Abhishek Singh85b74712014-10-08 11:38:19 +053033938 pEventData);
33939 WDI_ASSERT(0);
33940 return WDI_STATUS_E_FAILURE;
33941 }
33942
33943 pWDICtx->wdiReqStatusCB = NULL;
33944 pWDICtx->pReqStatusUserData = pEventData->pEventData;
33945 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
33946 wpalMemoryCopy( pSendBuffer+usDataOffset,
33947 &halFwStatsReq,
33948 sizeof(tHalfwStatsReqParams));
33949 /*-------------------------------------------------------------------------
33950 Send Get STA Request to HAL
33951 -------------------------------------------------------------------------*/
33952 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
33953 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
33954}
33955
Sunil Duttbd736ed2014-05-26 21:19:41 +053033956#ifdef WLAN_FEATURE_LINK_LAYER_STATS
33957
33958/**
33959 @brief WDI_LLStatsSetReq
33960 This API is called to set link layer stats request in FW
33961
33962 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
33963 wdiLLStatsSetRspCb : set link layer stats resp callback
33964 usrData : Client context
33965 @see
33966 @return SUCCESS or FAIL
33967*/
33968WDI_Status
33969WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
33970 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
33971 void* pUserData)
33972{
33973 WDI_EventInfoType wdiEventData;
33974
33975 /*------------------------------------------------------------------------
33976 Sanity Check
33977 ------------------------------------------------------------------------*/
33978 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33979 {
33980 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33981 "WDI API call before module is initialized - Fail request");
33982
33983 return WDI_STATUS_E_NOT_ALLOWED;
33984 }
33985
33986 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
33987 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
33988 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
33989 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
33990 wdiEventData.pUserData = pUserData;
33991
33992 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33993}
33994
33995/**
33996 @brief WDI_ProcessLLStatsSetReq -
33997 Set Link Layer Stats request to FW
33998
33999 @param pWDICtx : wdi context
34000 pEventData : indication data
34001
34002 @see
34003 @return none
34004*/
34005WDI_Status
34006WDI_ProcessLLStatsSetReq
34007(
34008 WDI_ControlBlockType* pWDICtx,
34009 WDI_EventInfoType* pEventData
34010)
34011{
34012 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
34013 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
34014 wpt_uint8* pSendBuffer = NULL;
34015 wpt_uint16 usSendSize = 0;
34016 wpt_uint16 usDataOffset = 0;
34017 tHalMacLlSetStatsReqParams halLLStatsSetParams;
34018
34019 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34020 ( NULL == pEventData->pCBfnc ))
34021 {
34022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34023 "%s: Invalid parameters", __func__);
34024 WDI_ASSERT(0);
34025 return WDI_STATUS_E_FAILURE;
34026 }
34027
34028 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
34029 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
34030
34031 /*-----------------------------------------------------------------------
34032 Get message buffer
34033 ! TO DO : proper conversion into the HAL Message Request Format
34034 -----------------------------------------------------------------------*/
34035 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34036 pWDICtx,
34037 WDI_LL_STATS_SET_REQ,
34038 sizeof(tHalMacLlSetStatsReqParams),
34039 &pSendBuffer, &usDataOffset,
34040 &usSendSize))||
34041 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
34042 {
34043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034044 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Sunil Duttbd736ed2014-05-26 21:19:41 +053034045 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
34046 WDI_ASSERT(0);
34047 return WDI_STATUS_E_FAILURE;
34048 }
34049
34050
Dino Mycled3d50022014-07-07 12:58:25 +053034051 /* Need to fill in the self STA Index */
34052 if ( WDI_STATUS_SUCCESS !=
34053 WDI_STATableFindStaidByAddr(pWDICtx,
34054 pwdiLLStatsSetReqParams->macAddr,
34055 &halLLStatsSetParams.sta_id))
34056 {
34057 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34058 MAC_ADDRESS_STR
34059 ": This station does not exist in the WDI Station Table",
34060 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
34061
34062 wpalMemoryFree(pSendBuffer);
34063 return WDI_STATUS_E_FAILURE;
34064 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053034065
34066 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053034067 halLLStatsSetParams.mpdu_size_threshold =
34068 pwdiLLStatsSetReqParams->mpduSizeThreshold;
34069 halLLStatsSetParams.aggressive_statistics_gathering =
34070 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
34071
34072 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34073 " halLLStatsSetParams.req_id = %u",
34074 halLLStatsSetParams.req_id);
34075 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34076 " halLLStatsSetParams.sta_id = %u",
34077 halLLStatsSetParams.sta_id);
34078 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34079 " halLLStatsSetParams.mpdu_size_threshold = %u",
34080 halLLStatsSetParams.mpdu_size_threshold);
34081 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34082 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
34083 halLLStatsSetParams.aggressive_statistics_gathering);
34084
34085 wpalMemoryCopy(pSendBuffer+usDataOffset,
34086 &halLLStatsSetParams,
34087 sizeof(halLLStatsSetParams));
34088
34089 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34090
34091 /*-------------------------------------------------------------------------
34092 Send Clear Link Layer Stats Request to HAL
34093 -------------------------------------------------------------------------*/
34094 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34095 wdiLLStatsSetCb, pEventData->pUserData,
34096 WDI_LL_STATS_SET_RSP);
34097}
34098
34099/**
34100 @brief WDI_LLStatsGetReq
34101 This API is called to get link layer stats request in FW
34102
34103 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
34104 wdiLLStatsGetRspCb : get link layer stats resp callback
34105 usrData : Client context
34106 @see
34107 @return SUCCESS or FAIL
34108*/
34109WDI_Status
34110WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
34111 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
34112 void* pUserData)
34113{
34114 WDI_EventInfoType wdiEventData;
34115
34116 /*------------------------------------------------------------------------
34117 Sanity Check
34118 ------------------------------------------------------------------------*/
34119 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34120 {
34121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34122 "WDI API call before module is initialized - Fail request");
34123
34124 return WDI_STATUS_E_NOT_ALLOWED;
34125 }
34126
34127 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
34128 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
34129 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
34130 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
34131 wdiEventData.pUserData = pUserData;
34132
34133 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34134}
34135
34136/**
34137 @brief WDI_ProcessLLStatsGetReq -
34138 Get Link Layer Stats request to FW
34139
34140 @param pWDICtx : wdi context
34141 pEventData : indication data
34142
34143 @see
34144 @return none
34145*/
34146WDI_Status
34147WDI_ProcessLLStatsGetReq
34148(
34149 WDI_ControlBlockType* pWDICtx,
34150 WDI_EventInfoType* pEventData
34151)
34152{
34153 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
34154 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
34155 wpt_uint8* pSendBuffer = NULL;
34156 wpt_uint16 usSendSize = 0;
34157 wpt_uint16 usDataOffset = 0;
34158 tHalMacLlGetStatsReqParams halLLStatsGetParams;
34159
34160 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34161 ( NULL == pEventData->pCBfnc ))
34162 {
34163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34164 "%s: Invalid parameters", __func__);
34165 WDI_ASSERT(0);
34166 return WDI_STATUS_E_FAILURE;
34167 }
34168
34169 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
34170 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
34171
34172 /*-----------------------------------------------------------------------
34173 Get message buffer
34174 ! TO DO : proper conversion into the HAL Message Request Format
34175 -----------------------------------------------------------------------*/
34176 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34177 pWDICtx,
34178 WDI_LL_STATS_GET_REQ,
34179 sizeof(tHalMacLlGetStatsReqParams),
34180 &pSendBuffer, &usDataOffset,
34181 &usSendSize))||
34182 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
34183 {
34184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034185 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Sunil Duttbd736ed2014-05-26 21:19:41 +053034186 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
34187 WDI_ASSERT(0);
34188 return WDI_STATUS_E_FAILURE;
34189 }
Dino Mycled3d50022014-07-07 12:58:25 +053034190 /* Need to fill in the self STA Index */
34191 if ( WDI_STATUS_SUCCESS !=
34192 WDI_STATableFindStaidByAddr(pWDICtx,
34193 pwdiLLStatsGetReqParams->macAddr,
34194 &halLLStatsGetParams.sta_id))
34195 {
34196 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34197 MAC_ADDRESS_STR
34198 ": This station does not exist in the WDI Station Table",
34199 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
34200
34201 wpalMemoryFree(pSendBuffer);
34202 return WDI_STATUS_E_FAILURE;
34203 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053034204
34205 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053034206 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
34207
34208 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34209 " halLLStatsGetParams.req_id = %u",
34210 halLLStatsGetParams.req_id);
34211 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34212 " halLLStatsGetParams.staId = %u",
34213 halLLStatsGetParams.sta_id);
34214 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34215 " halLLStatsGetParams.Mask = %u",
34216 halLLStatsGetParams.param_id_mask);
34217
34218 wpalMemoryCopy(pSendBuffer+usDataOffset,
34219 &halLLStatsGetParams,
34220 sizeof(halLLStatsGetParams));
34221
34222 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34223
34224 /*-------------------------------------------------------------------------
34225 Send Clear Link Layer Stats Request to HAL
34226 -------------------------------------------------------------------------*/
34227 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34228 wdiLLStatsGetCb, pEventData->pUserData,
34229 WDI_LL_STATS_GET_RSP);
34230}
34231
34232/**
34233 @brief WDI_LLStatsClearReq
34234 This API is called to clear link layer stats request in FW
34235
34236 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
34237 wdiLLStatsSetRspCb : clear link layer stats resp callback
34238 usrData : Client context
34239 @see
34240 @return SUCCESS or FAIL
34241*/
34242WDI_Status
34243WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
34244 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
34245 void* pUserData)
34246{
34247 WDI_EventInfoType wdiEventData;
34248
34249 /*------------------------------------------------------------------------
34250 Sanity Check
34251 ------------------------------------------------------------------------*/
34252 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34253 {
34254 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34255 "WDI API call before module is initialized - Fail request");
34256
34257 return WDI_STATUS_E_NOT_ALLOWED;
34258 }
34259
34260 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
34261 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
34262 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
34263 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
34264 wdiEventData.pUserData = pUserData;
34265
34266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34267 "%s:%d Enter", __func__, __LINE__);
34268
34269 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34270}
34271
34272/**
34273 @brief WDI_ProcessLLStatsClearReq -
34274 Clear Link Layer Stats request to FW
34275
34276 @param pWDICtx : wdi context
34277 pEventData : indication data
34278
34279 @see
34280 @return none
34281*/
34282WDI_Status
34283WDI_ProcessLLStatsClearReq
34284(
34285 WDI_ControlBlockType* pWDICtx,
34286 WDI_EventInfoType* pEventData
34287)
34288{
34289 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
34290 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
34291 wpt_uint8* pSendBuffer = NULL;
34292 wpt_uint16 usSendSize = 0;
34293 wpt_uint16 usDataOffset = 0;
34294 tHalMacLlClearStatsReqParams halLLStatsClearParams;
34295
34296 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34297 ( NULL == pEventData->pCBfnc ))
34298 {
34299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34300 "%s: Invalid parameters", __func__);
34301 WDI_ASSERT(0);
34302 return WDI_STATUS_E_FAILURE;
34303 }
34304
34305 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
34306 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
34307
34308 /*-----------------------------------------------------------------------
34309 Get message buffer
34310 ! TO DO : proper conversion into the HAL Message Request Format
34311 -----------------------------------------------------------------------*/
34312 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34313 pWDICtx,
34314 WDI_LL_STATS_CLEAR_REQ,
34315 sizeof(tHalMacLlClearStatsReqParams),
34316 &pSendBuffer, &usDataOffset,
34317 &usSendSize))||
34318 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
34319 {
34320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034321 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Sunil Duttbd736ed2014-05-26 21:19:41 +053034322 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
34323 WDI_ASSERT(0);
34324 return WDI_STATUS_E_FAILURE;
34325 }
Dino Mycled3d50022014-07-07 12:58:25 +053034326 /* Need to fill in the self STA Index */
34327 if ( WDI_STATUS_SUCCESS !=
34328 WDI_STATableFindStaidByAddr(pWDICtx,
34329 pwdiLLStatsClearReqParams->macAddr,
34330 &halLLStatsClearParams.sta_id))
34331 {
34332 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34333 MAC_ADDRESS_STR
34334 ": This station does not exist in the WDI Station Table",
34335 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
34336
34337 wpalMemoryFree(pSendBuffer);
34338 return WDI_STATUS_E_FAILURE;
34339 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053034340
34341 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053034342 halLLStatsClearParams.stats_clear_req_mask =
34343 pwdiLLStatsClearReqParams->statsClearReqMask;
34344 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
34345
34346 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34347 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
34348 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34349 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
34350 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34351 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
34352 halLLStatsClearParams.stats_clear_req_mask);
34353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34354 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
34355
34356 wpalMemoryCopy(pSendBuffer+usDataOffset,
34357 &halLLStatsClearParams,
34358 sizeof(halLLStatsClearParams));
34359
34360 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34361
34362 /*-------------------------------------------------------------------------
34363 Send Clear Link Layer Stats Request to HAL
34364 -------------------------------------------------------------------------*/
34365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34366 wdiLLStatsClearCb, pEventData->pUserData,
34367 WDI_LL_STATS_CLEAR_RSP);
34368}
34369#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053034370
Abhishek Singh85b74712014-10-08 11:38:19 +053034371WDI_Status WDI_FWStatsGetReq( void* pUserData,
34372 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
34373 wpt_uint32 stats)
34374{
34375 WDI_EventInfoType wdiEventData;
34376
34377 /*------------------------------------------------------------------------
34378 Sanity Check
34379 ------------------------------------------------------------------------*/
34380 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34381 {
34382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34383 "WDI API call before module is initialized - Fail request");
34384 return WDI_STATUS_E_NOT_ALLOWED;
34385 }
34386 /*------------------------------------------------------------------------
34387 Fill in Event data and post to the Main FSM
34388 ------------------------------------------------------------------------*/
34389 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
34390 wdiEventData.pEventData = (void *)&stats;
34391 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
34392 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
34393 wdiEventData.pUserData = pUserData;
34394
34395 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34396
34397}
34398
Katya Nigamf0511f62015-05-05 16:40:57 +053034399WDI_Status
34400WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034401 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053034402 void* pUserData)
34403{
34404 WDI_EventInfoType wdiEventData;
34405
34406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34407 "%s", __func__);
34408
34409 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34410 {
34411 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34412 "WDI API call before module is initialized - Fail request");
34413
34414 return WDI_STATUS_E_NOT_ALLOWED;
34415 }
34416
34417 wdiEventData.wdiRequest = WDI_MON_START_REQ;
34418 wdiEventData.pEventData = pwdiMonStartReqParams;
34419 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034420 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034421 wdiEventData.pUserData = pUserData;
34422
34423 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34424}
34425
34426WDI_Status
34427WDI_ProcessMonStartReq
34428(
34429 WDI_ControlBlockType* pWDICtx,
34430 WDI_EventInfoType* pEventData
34431)
34432{
34433 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034434 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034435 wpt_uint8* pSendBuffer = NULL;
34436 wpt_uint16 usSendSize = 0;
34437 wpt_uint16 usDataOffset = 0;
34438 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
34439
34440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34441 "%s", __func__);
34442
34443 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34444 ( NULL == pEventData->pCBfnc ))
34445 {
34446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34447 "%s: Invalid parameters", __func__);
34448 WDI_ASSERT(0);
34449 return WDI_STATUS_E_FAILURE;
34450 }
34451
34452 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034453 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053034454
34455 /*-----------------------------------------------------------------------
34456 Get message buffer
34457 ! TO DO : proper conversion into the HAL Message Request Format
34458 -----------------------------------------------------------------------*/
34459 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34460 pWDICtx,
34461 WDI_MON_START_REQ,
34462 sizeof(tHalEnableMonitorModeReqParams),
34463 &pSendBuffer, &usDataOffset,
34464 &usSendSize))||
34465 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
34466 {
34467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034468 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Katya Nigamf0511f62015-05-05 16:40:57 +053034469 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
34470 WDI_ASSERT(0);
34471 return WDI_STATUS_E_FAILURE;
34472 }
34473
34474 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
34475 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
34476 pwdiMonStartReqParams->ChannelBW);
34477 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
34478 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
34479 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
34480 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
34481 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
34482 pwdiMonStartReqParams->mmFilters[0].macAddr,
34483 sizeof( wpt_macAddr ));
34484 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
34485 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
34486 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
34487 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
34488
34489 wpalMemoryCopy(pSendBuffer+usDataOffset,
34490 &halEnableMonitorModeParams,
34491 sizeof(halEnableMonitorModeParams));
34492
34493 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34494
34495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34496 wdiMonStartCb, pEventData->pUserData,
34497 WDI_MON_START_RSP);
34498}
34499
Anurag Chouhan83026002016-12-13 22:46:21 +053034500#ifdef DHCP_SERVER_OFFLOAD
34501/**
34502 * wdi_dhcp_server_offload_rsp() - wdi api for the dhcp server response
34503 * @wdi_ctx: pointer to the wdi context
34504 * @event_data: pointer to the event data
34505 *
34506 * Return: WDI_Status
34507 * WDI_STATUS_SUCCESS - success or else failure status
34508 */
34509WDI_Status
34510wdi_dhcp_server_offload_rsp
34511(
34512 WDI_ControlBlockType *wdi_ctx,
34513 WDI_EventInfoType *event_data
34514)
34515{
34516 wdi_dhcp_srv_offload_rsp_cb wdi_dhcp_srv_offload_rsp_callback;
34517
Anurag Chouhan0b29de02016-12-16 13:18:40 +053034518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Anurag Chouhan83026002016-12-13 22:46:21 +053034519 "%s: Enter ", __func__);
34520 /*-------------------------------------------------------------------
34521 Sanity check
34522 -----------------------------------------------------------------*/
34523 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34524 (NULL == event_data->pEventData))
34525 {
34526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34527 "%s: Invalid parameters", __func__);
34528 WDI_ASSERT(0);
34529 return WDI_STATUS_E_FAILURE;
34530 }
34531
34532 wdi_dhcp_srv_offload_rsp_callback =
34533 (wdi_dhcp_srv_offload_rsp_cb)wdi_ctx->pfncRspCB;
34534
34535 wdi_dhcp_srv_offload_rsp_callback((void *) event_data->pEventData,
34536 wdi_ctx->pRspCBUserData);
34537
34538 return WDI_STATUS_SUCCESS;
34539}
34540#endif /* DHCP_SERVER_OFFLOAD */
34541
Anurag Chouhan0b29de02016-12-16 13:18:40 +053034542#ifdef MDNS_OFFLOAD
34543/**
34544 * wdi_mdns_enable_offload_rsp() - wdi api for the mdns enable response
34545 * @wdi_ctx: pointer to the wdi context
34546 * @event_data: pointer to the event data
34547 *
34548 * Return: WDI_Status
34549 * WDI_STATUS_SUCCESS - success or else failure status
34550 */
34551WDI_Status
34552wdi_mdns_enable_offload_rsp
34553(
34554 WDI_ControlBlockType *wdi_ctx,
34555 WDI_EventInfoType *event_data
34556)
34557{
34558 wdi_mdns_enable_rsp_cb wdi_mdns_rsp_callback;
34559
34560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34561 "%s: Enter ", __func__);
34562 /*-------------------------------------------------------------------
34563 Sanity check
34564 -----------------------------------------------------------------*/
34565 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34566 (NULL == event_data->pEventData))
34567 {
34568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34569 "%s: Invalid parameters", __func__);
34570 WDI_ASSERT(0);
34571 return WDI_STATUS_E_FAILURE;
34572 }
34573
34574 wdi_mdns_rsp_callback =
34575 (wdi_mdns_enable_rsp_cb)wdi_ctx->pfncRspCB;
34576
34577 wdi_mdns_rsp_callback((void *) event_data->pEventData,
34578 wdi_ctx->pRspCBUserData);
34579
34580 return WDI_STATUS_SUCCESS;
34581}
34582
34583/**
34584 * wdi_mdns_fqdn_offload_rsp() - wdi api for the mdns fqdn response
34585 * @wdi_ctx: pointer to the wdi context
34586 * @event_data: pointer to the event data
34587 *
34588 * Return: WDI_Status
34589 * WDI_STATUS_SUCCESS - success or else failure status
34590 */
34591WDI_Status
34592wdi_mdns_fqdn_offload_rsp
34593(
34594 WDI_ControlBlockType *wdi_ctx,
34595 WDI_EventInfoType *event_data
34596)
34597{
34598 wdi_mdns_enable_rsp_cb wdi_mdns_rsp_callback;
34599
34600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34601 "%s: Enter ", __func__);
34602 /*-------------------------------------------------------------------
34603 Sanity check
34604 -----------------------------------------------------------------*/
34605 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34606 (NULL == event_data->pEventData))
34607 {
34608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34609 "%s: Invalid parameters", __func__);
34610 WDI_ASSERT(0);
34611 return WDI_STATUS_E_FAILURE;
34612 }
34613
34614 wdi_mdns_rsp_callback =
34615 (wdi_mdns_enable_rsp_cb)wdi_ctx->pfncRspCB;
34616
34617 wdi_mdns_rsp_callback((void *) event_data->pEventData,
34618 wdi_ctx->pRspCBUserData);
34619
34620 return WDI_STATUS_SUCCESS;
34621}
34622
34623/**
34624 * wdi_mdns_resp_offload_rsp() - wdi api for the mdns resp response
34625 * @wdi_ctx: pointer to the wdi context
34626 * @event_data: pointer to the event data
34627 *
34628 * Return: WDI_Status
34629 * WDI_STATUS_SUCCESS - success or else failure status
34630 */
34631WDI_Status
34632wdi_mdns_resp_offload_rsp
34633(
34634 WDI_ControlBlockType *wdi_ctx,
34635 WDI_EventInfoType *event_data
34636)
34637{
34638 wdi_mdns_resp_rsp_cb wdi_mdns_rsp_callback;
34639
34640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34641 "%s: Enter ", __func__);
34642 /*-------------------------------------------------------------------
34643 Sanity check
34644 -----------------------------------------------------------------*/
34645 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34646 (NULL == event_data->pEventData))
34647 {
34648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34649 "%s: Invalid parameters", __func__);
34650 WDI_ASSERT(0);
34651 return WDI_STATUS_E_FAILURE;
34652 }
34653
34654 wdi_mdns_rsp_callback =
34655 (wdi_mdns_resp_rsp_cb)wdi_ctx->pfncRspCB;
34656
34657 wdi_mdns_rsp_callback((void *) event_data->pEventData,
34658 wdi_ctx->pRspCBUserData);
34659
34660 return WDI_STATUS_SUCCESS;
34661}
34662
34663/**
34664 * wdi_get_mdns_stats_offload_rsp() - wdi api for the mdns stats response
34665 * @wdi_ctx: pointer to the wdi context
34666 * @event_data: pointer to the event data
34667 *
34668 * Return: WDI_Status
34669 * WDI_STATUS_SUCCESS - success or else failure status
34670 */
34671WDI_Status
34672wdi_get_mdns_stats_offload_rsp
34673(
34674 WDI_ControlBlockType *wdi_ctx,
34675 WDI_EventInfoType *event_data
34676)
34677{
34678 wdi_get_stats_rsp_cb wdi_mdns_rsp_callback;
34679
34680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34681 "%s: Enter ", __func__);
34682 /*-------------------------------------------------------------------
34683 Sanity check
34684 -----------------------------------------------------------------*/
34685 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34686 (NULL == event_data->pEventData))
34687 {
34688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34689 "%s: Invalid parameters", __func__);
34690 WDI_ASSERT(0);
34691 return WDI_STATUS_E_FAILURE;
34692 }
34693
34694 wdi_mdns_rsp_callback =
34695 (wdi_get_stats_rsp_cb)wdi_ctx->pfncRspCB;
34696
34697 wdi_mdns_rsp_callback((void *) event_data->pEventData,
34698 wdi_ctx->pRspCBUserData);
34699
34700 return WDI_STATUS_SUCCESS;
34701}
34702#endif /* MDNS_OFFLOAD */
34703
Katya Nigamf0511f62015-05-05 16:40:57 +053034704WDI_Status
34705WDI_ProcessMonStartRsp
34706(
34707 WDI_ControlBlockType* pWDICtx,
34708 WDI_EventInfoType* pEventData
34709)
34710{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034711 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034712
34713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34714 "%s: Enter ", __func__);
34715 /*-------------------------------------------------------------------------
34716 Sanity check
34717 -------------------------------------------------------------------------*/
34718 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34719 ( NULL == pEventData->pEventData))
34720 {
34721 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34722 "%s: Invalid parameters", __func__);
34723 WDI_ASSERT(0);
34724 return WDI_STATUS_E_FAILURE;
34725 }
34726
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034727 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053034728
34729 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34730
34731 return WDI_STATUS_SUCCESS;
34732}
34733
34734WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034735WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053034736 void* pUserData)
34737{
34738 WDI_EventInfoType wdiEventData;
34739
34740 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34741 "%s", __func__);
34742
34743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34744 {
34745 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34746 "WDI API call before module is initialized - Fail request");
34747
34748 return WDI_STATUS_E_NOT_ALLOWED;
34749 }
34750
34751 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
34752 wdiEventData.pEventData = NULL;
34753 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034754 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034755 wdiEventData.pUserData = pUserData;
34756
34757 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34758}
34759
34760WDI_Status
34761WDI_ProcessMonStopReq
34762(
34763 WDI_ControlBlockType* pWDICtx,
34764 WDI_EventInfoType* pEventData
34765)
34766{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034767 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034768 wpt_uint8* pSendBuffer = NULL;
34769 wpt_uint16 usSendSize = 0;
34770 wpt_uint16 usDataOffset = 0;
34771 wpt_uint8 resetConfiguration;
34772
34773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34774 "%s", __func__);
34775
34776 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
34777 {
34778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34779 "%s: Invalid parameters", __func__);
34780 WDI_ASSERT(0);
34781 return WDI_STATUS_E_FAILURE;
34782 }
34783
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034784 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053034785
34786 /*-----------------------------------------------------------------------
34787 Get message buffer
34788 ! TO DO : proper conversion into the HAL Message Request Format
34789 -----------------------------------------------------------------------*/
34790 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34791 pWDICtx,
34792 WDI_MON_STOP_REQ,
34793 sizeof(wpt_uint8),
34794 &pSendBuffer, &usDataOffset,
34795 &usSendSize))||
34796 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
34797 {
34798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034799 "Unable to get send buffer in %s %pK %pK", __func__,
Katya Nigamf0511f62015-05-05 16:40:57 +053034800 pEventData, wdiMonStopCb);
34801 WDI_ASSERT(0);
34802 return WDI_STATUS_E_FAILURE;
34803 }
34804
34805 wpalMemoryCopy(pSendBuffer+usDataOffset,
34806 &resetConfiguration,
34807 sizeof(wpt_uint8));
34808
34809 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34810
34811 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34812 wdiMonStopCb, pEventData->pUserData,
34813 WDI_MON_STOP_RSP);
34814}
34815
34816WDI_Status
34817WDI_ProcessMonStopRsp
34818(
34819 WDI_ControlBlockType* pWDICtx,
34820 WDI_EventInfoType* pEventData
34821)
34822{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034823 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034824
34825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34826 "%s: Enter ", __func__);
34827 /*-------------------------------------------------------------------------
34828 Sanity check
34829 -------------------------------------------------------------------------*/
34830 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
34831 {
34832 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34833 "%s: Invalid parameters", __func__);
34834 WDI_ASSERT(0);
34835 return WDI_STATUS_E_FAILURE;
34836 }
34837
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034838 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053034839
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034840 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053034841
34842 return WDI_STATUS_SUCCESS;
34843}
34844
Dino Mycle41bdc942014-06-10 11:30:24 +053034845#ifdef WLAN_FEATURE_EXTSCAN
34846
34847/**
34848 @brief Process EXTSCAN BUffer full indication from FW
34849
34850 @param pWDICtx: pointer to the WLAN DAL context
34851 pEventData: pointer to the event information structure
34852
34853 @see
34854 @return Result of the function call
34855*/
34856WDI_Status
34857WDI_ProcessEXTScanProgressInd
34858(
34859 WDI_ControlBlockType* pWDICtx,
34860 WDI_EventInfoType* pEventData
34861)
34862{
34863 WDI_LowLevelIndType wdiInd;
34864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34865
34866 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34867 "%s: ", __func__);
34868
34869 /* sanity check */
34870 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34871 ( NULL == pEventData->pEventData))
34872 {
34873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34874 "%s: Invalid parameters", __func__);
34875 WDI_ASSERT(0);
34876 return WDI_STATUS_E_FAILURE;
34877 }
34878
34879 /* Fill in the indication parameters */
34880 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
34881
34882 /* extract response and send it to UMAC */
34883 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34884
34885 /* Notify UMAC */
34886 if (pWDICtx->wdiLowLevelIndCB)
34887 {
34888 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34889 }
34890 else
34891 {
Dino Mycled3d50022014-07-07 12:58:25 +053034892 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053034893 "%s: WDILowLevelIndCb is null", __func__);
34894 WDI_ASSERT(0);
34895 return WDI_STATUS_E_FAILURE;
34896 }
34897 return WDI_STATUS_SUCCESS;
34898
34899} /* End of WDI_ProcessEXTScanProgressInd */
34900
34901
34902/**
34903 @brief Process EXTScan Scan Available indication from FW
34904
34905 @param pWDICtx: pointer to the WLAN DAL context
34906 pEventData: pointer to the event information structure
34907
34908 @see
34909 @return Result of the function call
34910*/
34911WDI_Status
34912WDI_ProcessEXTScanScanAvailableInd
34913(
34914 WDI_ControlBlockType* pWDICtx,
34915 WDI_EventInfoType* pEventData
34916)
34917{
34918 WDI_LowLevelIndType wdiInd;
34919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34920
34921 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34922 "%s: ", __func__);
34923
34924 /* sanity check */
34925 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34926 ( NULL == pEventData->pEventData))
34927 {
34928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34929 "%s: Invalid parameters", __func__);
34930 WDI_ASSERT(0);
34931 return WDI_STATUS_E_FAILURE;
34932 }
34933
34934
34935
34936 /* Fill in the indication parameters */
34937 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
34938
34939 /* extract response and send it to UMAC */
34940 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34941
34942 /* Notify UMAC */
34943 if (pWDICtx->wdiLowLevelIndCB)
34944 {
34945 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34946 }
34947 else
34948 {
34949 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34950 "%s: WDILowLevelIndCb is null", __func__);
34951 WDI_ASSERT(0);
34952 return WDI_STATUS_E_FAILURE;
34953 }
34954 return WDI_STATUS_SUCCESS;
34955} /* End of WDI_ProcessEXTScanScanDoneInd */
34956
34957/**
34958 @brief Process EXTScan Result Indication indication from FW
34959
34960 @param pWDICtx: pointer to the WLAN DAL context
34961 pEventData: pointer to the event information structure
34962
34963 @see
34964 @return Result of the function call
34965*/
34966WDI_Status
34967WDI_ProcessEXTScanResultInd
34968(
34969 WDI_ControlBlockType* pWDICtx,
34970 WDI_EventInfoType* pEventData
34971)
34972{
34973 WDI_LowLevelIndType wdiInd;
34974 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34975
34976 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34977 "%s: ", __func__);
34978
34979 /* sanity check */
34980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34981 ( NULL == pEventData->pEventData))
34982 {
34983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34984 "%s: Invalid parameters", __func__);
34985 WDI_ASSERT(0);
34986 return WDI_STATUS_E_FAILURE;
34987 }
34988
34989 /* Fill in the indication parameters */
34990 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
34991
34992 /* extract response and send it to UMAC */
34993 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34994
34995 /* Notify UMAC */
34996 if (pWDICtx->wdiLowLevelIndCB)
34997 {
34998 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34999 }
35000 else
35001 {
35002 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35003 "%s: WDILowLevelIndCb is null", __func__);
35004 WDI_ASSERT(0);
35005 return WDI_STATUS_E_FAILURE;
35006 }
35007 return WDI_STATUS_SUCCESS;
35008} /* End of WDI_ProcessEXTScanResultInd */
35009
35010/**
35011 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
35012
35013 @param pWDICtx: pointer to the WLAN DAL context
35014 pEventData: pointer to the event information structure
35015
35016 @see
35017 @return Result of the function call
35018*/
35019WDI_Status
35020WDI_ProcessEXTScanBssidHotListResultInd
35021(
35022 WDI_ControlBlockType* pWDICtx,
35023 WDI_EventInfoType* pEventData
35024)
35025{
35026 WDI_LowLevelIndType wdiInd;
35027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35028
35029 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35030 "%s: ", __func__);
35031
35032 /* sanity check */
35033 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35034 ( NULL == pEventData->pEventData))
35035 {
35036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35037 "%s: Invalid parameters", __func__);
35038 WDI_ASSERT(0);
35039 return WDI_STATUS_E_FAILURE;
35040 }
35041
35042 /* Fill in the indication parameters */
35043 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
35044
35045 /* extract response and send it to UMAC */
35046 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
35047
35048 /* Notify UMAC */
35049 if (pWDICtx->wdiLowLevelIndCB)
35050 {
35051 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35052 }
35053 else
35054 {
35055 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35056 "%s: WDILowLevelIndCb is null", __func__);
35057 WDI_ASSERT(0);
35058 return WDI_STATUS_E_FAILURE;
35059 }
35060 return WDI_STATUS_SUCCESS;
35061} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
35062
35063/**
Dino Mycle41bdc942014-06-10 11:30:24 +053035064 @brief WDI_EXTScanGetCapabilitiesReq
35065
35066 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
35067 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
35068 of the Req operation received from the device
35069 pUserData: user data will be passed back with the callback
35070
35071 @return SUCCESS or FAIL
35072*/
35073WDI_Status
35074WDI_EXTScanGetCapabilitiesReq(
35075 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
35076 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
35077 void* pUserData)
35078{
35079 WDI_EventInfoType wdiEventData;
35080
35081 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35082 "%s: %d ",__func__, __LINE__);
35083 /*------------------------------------------------------------------------
35084 Sanity Check
35085 ------------------------------------------------------------------------*/
35086 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35087 {
35088 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35089 "WDI API call before module is initialized - Fail request");
35090
35091 return WDI_STATUS_E_NOT_ALLOWED;
35092 }
35093
35094 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
35095 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
35096 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
35097 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
35098 wdiEventData.pUserData = pUserData;
35099
35100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35101}
35102
35103/**
35104 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
35105 Extended Scan Get Capability request to FW
35106
35107 @param pWDICtx : wdi context
35108 pEventData : indication data
35109
35110 @see
35111 @return none
35112*/
35113WDI_Status
35114WDI_ProcessEXTScanGetCapabilitiesReq
35115(
35116 WDI_ControlBlockType* pWDICtx,
35117 WDI_EventInfoType* pEventData
35118)
35119{
35120 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
35121 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
35122 wpt_uint8* pSendBuffer = NULL;
35123 wpt_uint16 usSendSize = 0;
35124 wpt_uint16 usDataOffset = 0;
35125 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
35126
35127 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35128 "%s: %d Enter",__func__, __LINE__);
35129
35130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35131 ( NULL == pEventData->pCBfnc ))
35132 {
35133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35134 "%s: Invalid parameters", __func__);
35135 WDI_ASSERT(0);
35136 return WDI_STATUS_E_FAILURE;
35137 }
35138
35139 pwdiEXTScanGetCapabilitiesReqParams =
35140 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
35141 wdiEXTScanGetCapabilitiesRspCb =
35142 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
35143
35144 /*-----------------------------------------------------------------------
35145 Get message buffer
35146 ! TO DO : proper conversion into the HAL Message Request Format
35147 -----------------------------------------------------------------------*/
35148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35149 pWDICtx,
35150 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
35151 sizeof(halEXTScanGetCapReqParams),
35152 &pSendBuffer, &usDataOffset,
35153 &usSendSize))||
35154 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
35155 {
35156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035157 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035158 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
35159 wdiEXTScanGetCapabilitiesRspCb);
35160 WDI_ASSERT(0);
35161 return WDI_STATUS_E_FAILURE;
35162 }
35163
35164 halEXTScanGetCapReqParams.requestId =
35165 pwdiEXTScanGetCapabilitiesReqParams->requestId;
35166 halEXTScanGetCapReqParams.sessionId =
35167 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
35168
35169 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35170 " requestId %u "
35171 " sessionId %u ",
35172 halEXTScanGetCapReqParams.requestId,
35173 halEXTScanGetCapReqParams.sessionId);
35174
35175 wpalMemoryCopy(pSendBuffer+usDataOffset,
35176 &halEXTScanGetCapReqParams,
35177 sizeof(halEXTScanGetCapReqParams));
35178
35179 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35180
35181
35182 /*-------------------------------------------------------------------------
35183 Send EXTScan Stop Request to HAL
35184 -------------------------------------------------------------------------*/
35185 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35186 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
35187 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
35188}
35189
35190/**
35191 @brief WDI_EXTScanGetCachedResultsReq
35192
35193 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
35194 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
35195 of the Req operation received from the device
35196 pUserData: user data will be passed back with the callback
35197
35198 @return SUCCESS or FAIL
35199*/
35200
35201WDI_Status
35202WDI_EXTScanGetCachedResultsReq(
35203 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
35204 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
35205 void* pUserData)
35206{
35207 WDI_EventInfoType wdiEventData;
35208
35209 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35210 "%s: %d Enter",__func__, __LINE__);
35211 /*------------------------------------------------------------------------
35212 Sanity Check
35213 ------------------------------------------------------------------------*/
35214 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35215 {
35216 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35217 "WDI API call before module is initialized - Fail request");
35218
35219 return WDI_STATUS_E_NOT_ALLOWED;
35220 }
35221
35222 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
35223 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
35224 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
35225 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
35226 wdiEventData.pUserData = pUserData;
35227
35228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35229}
35230
35231/**
35232 @brief WDI_ProcessEXTScanGetCachedResultsReq -
35233 Extended Scan Get Cached Result request to FW
35234
35235 @param pWDICtx : wdi context
35236 pEventData : indication data
35237
35238 @see
35239 @return none
35240*/
35241WDI_Status
35242WDI_ProcessEXTScanGetCachedResultsReq
35243(
35244 WDI_ControlBlockType* pWDICtx,
35245 WDI_EventInfoType* pEventData
35246)
35247{
35248 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
35249 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
35250 wpt_uint8* pSendBuffer = NULL;
35251 wpt_uint16 usSendSize = 0;
35252 wpt_uint16 usDataOffset = 0;
35253 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
35254
35255 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35256 "%s: %d Enter",__func__, __LINE__);
35257
35258 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35259 ( NULL == pEventData->pCBfnc ))
35260 {
35261 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35262 "%s: Invalid parameters", __func__);
35263 WDI_ASSERT(0);
35264 return WDI_STATUS_E_FAILURE;
35265 }
35266
35267 pwdiEXTScanGetCachedResultsReqParams =
35268 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
35269 wdiEXTScanGetCachedResultsCb =
35270 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
35271
35272 /*-----------------------------------------------------------------------
35273 Get message buffer
35274 ! TO DO : proper conversion into the HAL Message Request Format
35275 -----------------------------------------------------------------------*/
35276 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35277 pWDICtx,
35278 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
35279 sizeof(tHalExtScanGetScanReq),
35280 &pSendBuffer, &usDataOffset,
35281 &usSendSize))||
35282 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
35283 {
35284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035285 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035286 pEventData, pwdiEXTScanGetCachedResultsReqParams,
35287 wdiEXTScanGetCachedResultsCb);
35288 WDI_ASSERT(0);
35289 return WDI_STATUS_E_FAILURE;
35290 }
35291
35292 halEXTScanGetScanReqParams.requestId =
35293 pwdiEXTScanGetCachedResultsReqParams->requestId;
35294 halEXTScanGetScanReqParams.sessionId =
35295 pwdiEXTScanGetCachedResultsReqParams->sessionId;
35296 halEXTScanGetScanReqParams.flush =
35297 pwdiEXTScanGetCachedResultsReqParams->flush;
35298
35299 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35300 " requestId %u "
35301 " sessionId %u "
35302 " flush %u ",
35303 halEXTScanGetScanReqParams.requestId,
35304 halEXTScanGetScanReqParams.sessionId,
35305 halEXTScanGetScanReqParams.flush);
35306
35307 wpalMemoryCopy(pSendBuffer+usDataOffset,
35308 &halEXTScanGetScanReqParams,
35309 sizeof(halEXTScanGetScanReqParams));
35310
35311 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35312
35313
35314 /*-------------------------------------------------------------------------
35315 Send EXTScan Stop Request to HAL
35316 -------------------------------------------------------------------------*/
35317 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35318 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
35319 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
35320}
35321
35322/**
35323 @brief WDI_EXTScanStopReq
35324
35325 @param WDI_EXTScanStopReqParams: Req parameter for the FW
35326 WDI_EXTScanStopRspCb: callback for passing back the response
35327 of the Req operation received from the device
35328 pUserData: user data will be passed back with the callback
35329
35330 @return SUCCESS or FAIL
35331*/
35332WDI_Status
35333WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
35334 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
35335 void* pUserData)
35336{
35337 WDI_EventInfoType wdiEventData;
35338
35339 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35340 "%s: %d ",__func__, __LINE__);
35341 /*------------------------------------------------------------------------
35342 Sanity Check
35343 ------------------------------------------------------------------------*/
35344 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35345 {
35346 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35347 "WDI API call before module is initialized - Fail request");
35348
35349 return WDI_STATUS_E_NOT_ALLOWED;
35350 }
35351
35352 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
35353 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
35354 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
35355 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
35356 wdiEventData.pUserData = pUserData;
35357
35358 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35359}
35360
35361/**
35362 @brief WDI_ProcessEXTScanStopReq -
35363 Extended Scan Stop request to FW
35364
35365 @param pWDICtx : wdi context
35366 pEventData : indication data
35367
35368 @see
35369 @return none
35370*/
35371WDI_Status
35372WDI_ProcessEXTScanStopReq
35373(
35374 WDI_ControlBlockType* pWDICtx,
35375 WDI_EventInfoType* pEventData
35376)
35377{
35378 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
35379 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
35380 wpt_uint8* pSendBuffer = NULL;
35381 wpt_uint16 usSendSize = 0;
35382 wpt_uint16 usDataOffset = 0;
35383 tHalExtScanStopReq halEXTScanStopReqParams;
35384
35385 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35386 "%s: %d ",__func__, __LINE__);
35387
35388 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35389 ( NULL == pEventData->pCBfnc ))
35390 {
35391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35392 "%s: Invalid parameters", __func__);
35393 WDI_ASSERT(0);
35394 return WDI_STATUS_E_FAILURE;
35395 }
35396
35397 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
35398 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
35399
35400 /*-----------------------------------------------------------------------
35401 Get message buffer
35402 ! TO DO : proper conversion into the HAL Message Request Format
35403 -----------------------------------------------------------------------*/
35404 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35405 pWDICtx,
35406 WDI_EXTSCAN_STOP_REQ,
35407 sizeof(tHalExtScanStopReq),
35408 &pSendBuffer, &usDataOffset,
35409 &usSendSize))||
35410 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
35411 {
35412 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035413 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035414 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
35415 WDI_ASSERT(0);
35416 return WDI_STATUS_E_FAILURE;
35417 }
35418
35419 halEXTScanStopReqParams.requestId =
35420 pwdiEXTScanStopReqParams->requestId;
35421 halEXTScanStopReqParams.sessionId =
35422 pwdiEXTScanStopReqParams->sessionId;
35423
35424 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35425 " halEXTScanStopReqParams.requestId %u "
35426 " halEXTScanStopReqParams.sessionId %u ",
35427 halEXTScanStopReqParams.requestId,
35428 halEXTScanStopReqParams.sessionId);
35429
35430 wpalMemoryCopy(pSendBuffer+usDataOffset,
35431 &halEXTScanStopReqParams,
35432 sizeof(halEXTScanStopReqParams));
35433
35434 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35435
35436
35437 /*-------------------------------------------------------------------------
35438 Send EXTScan Stop Request to HAL
35439 -------------------------------------------------------------------------*/
35440 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35441 wdiEXTScanStopCb, pEventData->pUserData,
35442 WDI_EXTSCAN_STOP_RSP);
35443}
35444
35445/**
35446 @brief WDI_EXTScanStartReq
35447
35448 @param WDI_EXTScanStartReqParams: Req parameter for the FW
35449 WDI_EXTScanStartRspCb: callback for passing back the response
35450 of the Req operation received from the device
35451 pUserData: user data will be passed back with the callback
35452
35453 @return SUCCESS or FAIL
35454*/
35455WDI_Status
35456WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
35457 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
35458 void* pUserData)
35459{
35460 WDI_EventInfoType wdiEventData;
35461
35462 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35463 "%s: %d Enter",__func__, __LINE__);
35464 /*------------------------------------------------------------------------
35465 Sanity Check
35466 ------------------------------------------------------------------------*/
35467 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35468 {
35469 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35470 "WDI API call before module is initialized - Fail request");
35471
35472 return WDI_STATUS_E_NOT_ALLOWED;
35473 }
35474
35475 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
35476 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
35477 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
35478 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
35479 wdiEventData.pUserData = pUserData;
35480
35481 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35482}
35483
35484/**
35485 @brief WDI_ProcessEXTScanStartReq -
35486 Extended Scan Start Request to FW
35487
35488 @param pWDICtx : wdi context
35489 pEventData : indication data
35490
35491 @see
35492 @return none
35493*/
35494WDI_Status
35495WDI_ProcessEXTScanStartReq
35496(
35497 WDI_ControlBlockType* pWDICtx,
35498 WDI_EventInfoType* pEventData
35499)
35500{
35501 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
35502 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
35503 wpt_uint8* pSendBuffer = NULL;
35504 wpt_uint16 usSendSize = 0;
35505 wpt_uint16 usDataOffset = 0;
35506 tpHalExtScanStartReq pHalExtScanStartReqParams;
35507 int i = 0;
35508 int j = 0;
35509
35510 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35511 "%s: %d Enter",__func__, __LINE__);
35512
35513 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35514 ( NULL == pEventData->pCBfnc ))
35515 {
35516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35517 "%s: Invalid parameters", __func__);
35518 WDI_ASSERT(0);
35519 return WDI_STATUS_E_FAILURE;
35520 }
35521
35522 pwdiEXTScanStartReqParams =
35523 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
35524 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
35525
35526 /*-----------------------------------------------------------------------
35527 Get message buffer
35528 ! TO DO : proper conversion into the HAL Message Request Format
35529 -----------------------------------------------------------------------*/
35530 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35531 pWDICtx,
35532 WDI_EXTSCAN_START_REQ,
35533 sizeof(tHalExtScanStartReq),
35534 &pSendBuffer, &usDataOffset,
35535 &usSendSize))||
35536 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
35537 {
35538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035539 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035540 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
35541 WDI_ASSERT(0);
35542 return WDI_STATUS_E_FAILURE;
35543 }
35544
35545 pHalExtScanStartReqParams =
35546 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
35547
35548 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
35549 pHalExtScanStartReqParams->maxApPerScan =
35550 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035551 pHalExtScanStartReqParams->reportThresholdPercent =
35552 pwdiEXTScanStartReqParams->reportThresholdPercent;
35553 pHalExtScanStartReqParams->reportThresholdNumScans =
35554 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053035555 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
35556 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
35557 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035558 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053035559
35560 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
35561 {
35562 pHalExtScanStartReqParams->bucketData[i].bucketId =
35563 pwdiEXTScanStartReqParams->buckets[i].bucket;
35564 pHalExtScanStartReqParams->bucketData[i].channelBand =
35565 pwdiEXTScanStartReqParams->buckets[i].band;
35566 pHalExtScanStartReqParams->bucketData[i].period =
35567 pwdiEXTScanStartReqParams->buckets[i].period;
35568 pHalExtScanStartReqParams->bucketData[i].reportEvents =
35569 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035570 pHalExtScanStartReqParams->bucketData[i].max_period =
35571 pwdiEXTScanStartReqParams->buckets[i].max_period;
35572 pHalExtScanStartReqParams->bucketData[i].exponent =
35573 pwdiEXTScanStartReqParams->buckets[i].exponent;
35574 pHalExtScanStartReqParams->bucketData[i].step_count =
35575 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053035576 pHalExtScanStartReqParams->bucketData[i].numChannels =
35577 pwdiEXTScanStartReqParams->buckets[i].numChannels;
35578
35579 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
35580 {
35581 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
35582 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
35583 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
35584 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
35585 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
35586 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
35587 }
35588
35589 }
35590
35591
35592 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035593 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
35594 "reportThresholdNumScans %u requestId %u"
35595 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053035596 pHalExtScanStartReqParams->basePeriod,
35597 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035598 pHalExtScanStartReqParams->reportThresholdPercent,
35599 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053035600 pHalExtScanStartReqParams->requestId,
35601 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035602 pHalExtScanStartReqParams->numBuckets,
35603 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053035604
35605 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
35606 {
35607 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
35608 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035609 " reportEvents %u numChannels %u "
35610 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053035611 pHalExtScanStartReqParams->bucketData[i].bucketId,
35612 pHalExtScanStartReqParams->bucketData[i].channelBand,
35613 pHalExtScanStartReqParams->bucketData[i].period,
35614 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035615 pHalExtScanStartReqParams->bucketData[i].numChannels,
35616 pHalExtScanStartReqParams->bucketData[i].max_period,
35617 pHalExtScanStartReqParams->bucketData[i].exponent,
35618 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053035619
35620 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
35621 {
35622 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35623 "%d) channel %u dwellTimeMs %u passive %u ",j,
35624 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
35625 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
35626 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
35627 }
35628
35629 }
35630
Dino Mycle41bdc942014-06-10 11:30:24 +053035631 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35632
35633 /*-------------------------------------------------------------------------
35634 Send EXTSCAN Start Request to HAL
35635 -------------------------------------------------------------------------*/
35636 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35637 wdiEXTScanStartCb, pEventData->pUserData,
35638 WDI_EXTSCAN_START_RSP);
35639}
35640
35641/**
35642 @brief WDI_EXTScanSetBSSIDHotlistReq
35643
35644 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
35645 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
35646 of the Req operation received from the device
35647 pUserData: user data will be passed back with the callback
35648
35649 @return SUCCESS or FAIL
35650*/
35651WDI_Status
35652WDI_EXTScanSetBSSIDHotlistReq(
35653 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
35654 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
35655 void* pUserData)
35656{
35657 WDI_EventInfoType wdiEventData;
35658
35659 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35660 "%s: %d Enter ",__func__, __LINE__);
35661 /*------------------------------------------------------------------------
35662 Sanity Check
35663 ------------------------------------------------------------------------*/
35664 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35665 {
35666 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35667 "WDI API call before module is initialized - Fail request");
35668
35669 return WDI_STATUS_E_NOT_ALLOWED;
35670 }
35671
35672 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
35673 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
35674 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
35675 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
35676 wdiEventData.pUserData = pUserData;
35677
35678 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35679}
35680
35681/**
35682 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
35683 Extended Scan Set BSSSID Hotlist Request to FW
35684
35685 @param pWDICtx : wdi context
35686 pEventData : indication data
35687
35688 @see
35689 @return none
35690*/
35691WDI_Status
35692WDI_ProcessEXTScanSetBSSIDHotlistReq
35693(
35694 WDI_ControlBlockType* pWDICtx,
35695 WDI_EventInfoType* pEventData
35696)
35697{
35698 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
35699 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
35700 wpt_uint8* pSendBuffer = NULL;
35701 wpt_uint16 usSendSize = 0;
35702 wpt_uint16 usDataOffset = 0;
35703 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
35704 int i;
35705
35706 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35707 "%s: %d Enter",__func__, __LINE__);
35708
35709 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35710 ( NULL == pEventData->pCBfnc ))
35711 {
35712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35713 "%s: Invalid parameters", __func__);
35714 WDI_ASSERT(0);
35715 return WDI_STATUS_E_FAILURE;
35716 }
35717
35718 pwdiEXTScanSetBSSIDHotlistReqParams =
35719 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
35720 wdiEXTScanSetBSSIDHotlistRspCb =
35721 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
35722
35723 /*-----------------------------------------------------------------------
35724 Get message buffer
35725 ! TO DO : proper conversion into the HAL Message Request Format
35726 -----------------------------------------------------------------------*/
35727 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35728 pWDICtx,
35729 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
35730 sizeof(tHalBssidHotlistSetReq),
35731 &pSendBuffer, &usDataOffset,
35732 &usSendSize))||
35733 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
35734 {
35735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035736 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035737 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
35738 wdiEXTScanSetBSSIDHotlistRspCb);
35739 WDI_ASSERT(0);
35740 return WDI_STATUS_E_FAILURE;
35741 }
35742 pHalBssidHotlistSetReqParams =
35743 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
35744
35745 pHalBssidHotlistSetReqParams->requestId =
35746 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
35747
35748 pHalBssidHotlistSetReqParams->sessionId =
35749 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
35750
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035751 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
35752 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
35753
35754 pHalBssidHotlistSetReqParams->numBssid =
35755 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053035756
35757 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
35758
35759 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
35760 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
35761 WDI_MAC_ADDR_LEN);
35762
35763 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
35764 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
35765
35766 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
35767 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
35768
Dino Mycle41bdc942014-06-10 11:30:24 +053035769 }
35770
35771 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035772 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053035773 pHalBssidHotlistSetReqParams->requestId,
35774 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035775 pHalBssidHotlistSetReqParams->numBssid,
35776 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053035777
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035778 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053035779
35780 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035781 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053035782 __func__, __LINE__, i,
35783 pHalBssidHotlistSetReqParams->ap[i].bssid,
35784 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035785 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053035786
35787 }
35788
35789 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35790
35791
35792 /*-------------------------------------------------------------------------
35793 Send EXTScan Stop Request to HAL
35794 -------------------------------------------------------------------------*/
35795 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35796 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
35797 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
35798}
35799
35800/**
35801 @brief WDI_EXTScanResetBSSIDHotlistReq
35802
35803 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
35804 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
35805 of the Req operation received from the device
35806 pUserData: user data will be passed back with the callback
35807
35808 @return SUCCESS or FAIL
35809*/
35810WDI_Status
35811WDI_EXTScanResetBSSIDHotlistReq(
35812 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
35813 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
35814 void* pUserData)
35815{
35816 WDI_EventInfoType wdiEventData;
35817
35818 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35819 "%s: %d",__func__, __LINE__);
35820 /*------------------------------------------------------------------------
35821 Sanity Check
35822 ------------------------------------------------------------------------*/
35823 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35824 {
35825 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35826 "WDI API call before module is initialized - Fail request");
35827
35828 return WDI_STATUS_E_NOT_ALLOWED;
35829 }
35830
35831 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
35832 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
35833 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
35834 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
35835 wdiEventData.pUserData = pUserData;
35836
35837 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35838}
35839
35840/**
35841 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
35842 Extended Scan reset BSSID hotlist Request to FW
35843
35844 @param pWDICtx : wdi context
35845 pEventData : indication data
35846
35847 @see
35848 @return none
35849*/
35850WDI_Status
35851WDI_ProcessEXTScanResetBSSIDHotlistReq
35852(
35853 WDI_ControlBlockType* pWDICtx,
35854 WDI_EventInfoType* pEventData
35855)
35856{
35857 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
35858 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
35859 wpt_uint8* pSendBuffer = NULL;
35860 wpt_uint16 usSendSize = 0;
35861 wpt_uint16 usDataOffset = 0;
35862 tpHalHotlistResetReq pHalHotlistResetReqParams;
35863
35864 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35865 "%s: %d",__func__, __LINE__);
35866
35867 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35868 ( NULL == pEventData->pCBfnc ))
35869 {
35870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35871 "%s: Invalid parameters", __func__);
35872 WDI_ASSERT(0);
35873 return WDI_STATUS_E_FAILURE;
35874 }
35875
35876 pwdiEXTScanResetBSSIDHotlistReqParams =
35877 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
35878 wdiEXTScanResetBSSIDHotlistRspCb =
35879 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
35880
35881 /*-----------------------------------------------------------------------
35882 Get message buffer
35883 ! TO DO : proper conversion into the HAL Message Request Format
35884 -----------------------------------------------------------------------*/
35885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35886 pWDICtx,
35887 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
35888 sizeof(tHalHotlistResetReq),
35889 &pSendBuffer, &usDataOffset,
35890 &usSendSize))||
35891 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
35892 {
35893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035894 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035895 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
35896 wdiEXTScanResetBSSIDHotlistRspCb);
35897 WDI_ASSERT(0);
35898 return WDI_STATUS_E_FAILURE;
35899 }
35900 pHalHotlistResetReqParams =
35901 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
35902
35903 pHalHotlistResetReqParams->requestId =
35904 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
35905
35906 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35907
35908 /*-------------------------------------------------------------------------
35909 Send EXTScan Stop Request to HAL
35910 -------------------------------------------------------------------------*/
35911 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35912 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
35913 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
35914}
35915
35916/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053035917 @brief WDI_HighPriorityDataInfoInd
35918
35919 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
35920
35921 @return SUCCESS or FAIL
35922*/
35923WDI_Status
35924WDI_HighPriorityDataInfoInd
35925(
35926 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
35927)
35928{
35929 WDI_EventInfoType wdiEventData;
35930
35931 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35932 "%s: %d",__func__, __LINE__);
35933 /*------------------------------------------------------------------------
35934 Sanity Check
35935 ------------------------------------------------------------------------*/
35936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35937 {
35938 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35939 "WDI API call before module is initialized - Fail request");
35940
35941 return WDI_STATUS_E_NOT_ALLOWED;
35942 }
35943
35944 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
35945 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
35946 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
35947 wdiEventData.pCBfnc = NULL;
35948 wdiEventData.pUserData = NULL;
35949
35950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35951}
35952
35953/**
35954 @brief WDI_ProcessHighPriorityDataInfoInd -
35955 Send WFD indication to FW
35956
35957 @param pWDICtx : wdi context
35958 pEventData : indication data
35959
35960 @see
35961 @return none
35962*/
35963WDI_Status
35964WDI_ProcessHighPriorityDataInfoInd
35965(
35966 WDI_ControlBlockType* pWDICtx,
35967 WDI_EventInfoType* pEventData
35968)
35969{
35970 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
35971 wpt_uint8* pSendBuffer = NULL;
35972 wpt_uint16 usSendSize = 0;
35973 wpt_uint16 usDataOffset = 0;
35974 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
35975 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35976
35977 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35978 "%s: %d",__func__, __LINE__);
35979
35980 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35981 ( NULL == pEventData->pEventData))
35982 {
35983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35984 "%s: Invalid parameters", __func__);
35985 WDI_ASSERT(0);
35986 return WDI_STATUS_E_FAILURE;
35987 }
35988
35989 pHighPriorityDataInfoIndParams =
35990 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
35991
35992 /*-----------------------------------------------------------------------
35993 Get message buffer
35994 -----------------------------------------------------------------------*/
35995 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35996 pWDICtx,
35997 WDI_HIGH_PRIORITY_DATA_INFO_IND,
35998 sizeof(tHalHighPriorityDataInfoInd),
35999 &pSendBuffer, &usDataOffset,
36000 &usSendSize))||
36001 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
36002 {
36003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070036004 "Unable to get send buffer in %s %pK %pK", __func__,
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053036005 pEventData, pHighPriorityDataInfoIndParams);
36006 WDI_ASSERT(0);
36007 return WDI_STATUS_E_FAILURE;
36008 }
36009 pHalHighPriorityDataInfoIndParams =
36010 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
36011
36012 pHalHighPriorityDataInfoIndParams->pause =
36013 pHighPriorityDataInfoIndParams->pause;
36014
36015 pWDICtx->pReqStatusUserData = NULL;
36016 pWDICtx->pfncRspCB = NULL;
36017
36018 /*-------------------------------------------------------------------------
36019 Send HIGH_PRIORITY_DATA_INFO Request to HAL
36020 -------------------------------------------------------------------------*/
36021 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36022 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36023}
36024
36025/**
Dino Mycle41bdc942014-06-10 11:30:24 +053036026 @brief Process Extended Scan Start Rsp function (called when a response
36027 is being received over the bus from HAL)
36028
36029 @param pWDICtx: pointer to the WLAN DAL context
36030 pEventData: pointer to the event information structure
36031
36032 @see
36033 @return Result of the function call
36034*/
36035WDI_Status
36036WDI_ProcessEXTScanStartRsp
36037(
36038 WDI_ControlBlockType* pWDICtx,
36039 WDI_EventInfoType* pEventData
36040)
36041{
36042 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
36043
36044 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36045 "%s: %d",__func__, __LINE__);
36046 /*-------------------------------------------------------------------------
36047 Sanity check
36048 -------------------------------------------------------------------------*/
36049 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36050 ( NULL == pEventData->pEventData))
36051 {
36052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36053 "%s: Invalid parameters", __func__);
36054 WDI_ASSERT(0);
36055 return WDI_STATUS_E_FAILURE;
36056 }
36057
36058 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
36059 if ( NULL == wdiEXTScanStartRspCb)
36060 {
36061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36062 "%s: Callback function Invalid", __func__);
36063 WDI_ASSERT(0);
36064 return WDI_STATUS_E_FAILURE;
36065 }
36066
36067 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
36068
36069 return WDI_STATUS_SUCCESS;
36070}
36071
36072
36073/**
36074 @brief Process Extended Scan Stop Rsp function (called when a response
36075 is being received over the bus from HAL)
36076
36077 @param pWDICtx: pointer to the WLAN DAL context
36078 pEventData: pointer to the event information structure
36079
36080 @see
36081 @return Result of the function call
36082*/
36083WDI_Status
36084WDI_ProcessEXTScanStopRsp
36085(
36086 WDI_ControlBlockType* pWDICtx,
36087 WDI_EventInfoType* pEventData
36088)
36089{
36090 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
36091
36092 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36093 "%s: %d",__func__, __LINE__);
36094
36095
36096 /*-------------------------------------------------------------------------
36097 Sanity check
36098 -------------------------------------------------------------------------*/
36099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36100 ( NULL == pEventData->pEventData))
36101 {
36102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36103 "%s: Invalid parameters", __func__);
36104 WDI_ASSERT(0);
36105 return WDI_STATUS_E_FAILURE;
36106 }
36107
36108 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
36109 if ( NULL == wdiEXTScanStopRspCb)
36110 {
36111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36112 "%s: Callback function Invalid", __func__);
36113 WDI_ASSERT(0);
36114 return WDI_STATUS_E_FAILURE;
36115 }
36116
36117 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36118
36119 return WDI_STATUS_SUCCESS;
36120}
36121
36122/**
36123 @brief Process Extended Scan Get Cached Rsp function (called when a response
36124 is being received over the bus from HAL)
36125
36126 @param pWDICtx: pointer to the WLAN DAL context
36127 pEventData: pointer to the event information structure
36128
36129 @see
36130 @return Result of the function call
36131*/
36132WDI_Status
36133WDI_ProcessEXTScanGetCachedResultsRsp
36134(
36135 WDI_ControlBlockType* pWDICtx,
36136 WDI_EventInfoType* pEventData
36137)
36138{
36139 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
36140
36141 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36142 "%s: %d Enter",__func__, __LINE__);
36143
36144
36145 /*-------------------------------------------------------------------------
36146 Sanity check
36147 -------------------------------------------------------------------------*/
36148 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36149 ( NULL == pEventData->pEventData))
36150 {
36151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36152 "%s: Invalid parameters", __func__);
36153 WDI_ASSERT(0);
36154 return WDI_STATUS_E_FAILURE;
36155 }
36156
36157 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
36158 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
36159 {
36160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36161 "%s: Callback function Invalid", __func__);
36162 WDI_ASSERT(0);
36163 return WDI_STATUS_E_FAILURE;
36164 }
36165
36166 wdiEXTScanGetCachedResultsRspCb(
36167 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36168
36169 return WDI_STATUS_SUCCESS;
36170}
36171
36172/**
36173 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
36174 is being received over the bus from HAL)
36175
36176 @param pWDICtx: pointer to the WLAN DAL context
36177 pEventData: pointer to the event information structure
36178
36179 @see
36180 @return Result of the function call
36181*/
36182WDI_Status
36183WDI_ProcessEXTScanGetCapabilitiesRsp
36184(
36185 WDI_ControlBlockType* pWDICtx,
36186 WDI_EventInfoType* pEventData
36187)
36188{
36189 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
36190
36191 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36192 "%s: %d ",__func__, __LINE__);
36193
36194
36195 /*-------------------------------------------------------------------------
36196 Sanity check
36197 -------------------------------------------------------------------------*/
36198 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36199 ( NULL == pEventData->pEventData))
36200 {
36201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36202 "%s: Invalid parameters", __func__);
36203 WDI_ASSERT(0);
36204 return WDI_STATUS_E_FAILURE;
36205 }
36206
36207 wdiEXTScanGetCapabilitiesRspCb =
36208 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
36209 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
36210 {
36211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36212 "%s: Callback function Invalid", __func__);
36213 WDI_ASSERT(0);
36214 return WDI_STATUS_E_FAILURE;
36215 }
36216
36217 wdiEXTScanGetCapabilitiesRspCb(
36218 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36219
36220 return WDI_STATUS_SUCCESS;
36221}
36222
36223/**
36224 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
36225 response is being received over the bus from HAL)
36226
36227 @param pWDICtx: pointer to the WLAN DAL context
36228 pEventData: pointer to the event information structure
36229
36230 @see
36231 @return Result of the function call
36232*/
36233WDI_Status
36234WDI_ProcessEXTScanSetHotlistBSSIDRsp
36235(
36236 WDI_ControlBlockType* pWDICtx,
36237 WDI_EventInfoType* pEventData
36238)
36239{
36240 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
36241
36242 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36243 "%s: %d ",__func__, __LINE__);
36244
36245
36246 /*-------------------------------------------------------------------------
36247 Sanity check
36248 -------------------------------------------------------------------------*/
36249 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36250 ( NULL == pEventData->pEventData))
36251 {
36252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36253 "%s: Invalid parameters", __func__);
36254 WDI_ASSERT(0);
36255 return WDI_STATUS_E_FAILURE;
36256 }
36257
36258 wdiEXTScanSetBSSIDHotlistRspCb =
36259 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
36260 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
36261 {
36262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36263 "%s: Callback function Invalid", __func__);
36264 WDI_ASSERT(0);
36265 return WDI_STATUS_E_FAILURE;
36266 }
36267
36268 wdiEXTScanSetBSSIDHotlistRspCb(
36269 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36270
36271 return WDI_STATUS_SUCCESS;
36272}
36273
36274/**
36275 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
36276 when a response is being received over the bus from HAL)
36277
36278 @param pWDICtx: pointer to the WLAN DAL context
36279 pEventData: pointer to the event information structure
36280
36281 @see
36282 @return Result of the function call
36283*/
36284WDI_Status
36285WDI_ProcessEXTScanResetHotlistBSSIDRsp
36286(
36287 WDI_ControlBlockType* pWDICtx,
36288 WDI_EventInfoType* pEventData
36289)
36290{
36291 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
36292
36293 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36294 "%s: %d ",__func__, __LINE__);
36295
36296
36297 /*-------------------------------------------------------------------------
36298 Sanity check
36299 -------------------------------------------------------------------------*/
36300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36301 ( NULL == pEventData->pEventData))
36302 {
36303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36304 "%s: Invalid parameters", __func__);
36305 WDI_ASSERT(0);
36306 return WDI_STATUS_E_FAILURE;
36307 }
36308
36309 wdiEXTScanResetBSSIDHotlistRspCb =
36310 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
36311 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
36312 {
36313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36314 "%s: Callback function Invalid", __func__);
36315 WDI_ASSERT(0);
36316 return WDI_STATUS_E_FAILURE;
36317 }
36318
36319 wdiEXTScanResetBSSIDHotlistRspCb(
36320 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36321
36322 return WDI_STATUS_SUCCESS;
36323}
Dino Mycle41bdc942014-06-10 11:30:24 +053036324#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053036325
36326/**
36327 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
36328
36329 @param None
36330
36331 @see
36332
36333 @return Status of the request
36334*/
36335WDI_Status
36336WDI_SetSpoofMacAddrReq
36337(
36338 WDI_SpoofMacAddrInfoType* pWdiReq,
36339 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
36340 void* pUserData)
36341{
36342 WDI_EventInfoType wdiEventData;
36343
36344 /*-------------------------------------------------------------------------
36345 Sanity Check
36346 ------------------------------------------------------------------------*/
36347 if (eWLAN_PAL_FALSE == gWDIInitialized)
36348 {
36349 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36350 "WDI API call before module is initialized - Fail request!");
36351
36352 return WDI_STATUS_E_NOT_ALLOWED;
36353 }
36354
36355 /*-------------------------------------------------------------------------
36356 Fill in Event data and post to the Main FSM
36357 ------------------------------------------------------------------------*/
36358 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
36359 wdiEventData.pEventData = pWdiReq;
36360 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
36361 wdiEventData.pCBfnc = spoofMacAddrRspCb;
36362 wdiEventData.pUserData = pUserData;
36363
36364 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36365}
36366
36367/**
36368 @brief Process SpoofMacAddr Request
36369
36370 @param pWDICtx: pointer to the WLAN DAL context
36371 pEventData: pointer to the event information structure
36372
36373 @see
36374 @return Result of the function call
36375*/
36376WDI_Status
36377WDI_ProcessSpoofMacAddrReq
36378(
36379 WDI_ControlBlockType* pWDICtx,
36380 WDI_EventInfoType* pEventData
36381)
36382{
36383 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
36384 wpt_uint8* pSendBuffer = NULL;
36385 wpt_uint16 usDataOffset = 0;
36386 wpt_uint16 usSendSize = 0;
36387 WDI_Status wdiStatus;
36388 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
36389 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
36390
36391
36392 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36393 "%s: %d Enter",__func__, __LINE__);
36394
36395 /*-------------------------------------------------------------------------
36396 Sanity check
36397 -------------------------------------------------------------------------*/
36398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36399 ( NULL == pEventData->pEventData))
36400 {
36401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36402 "%s: Invalid parameters", __func__);
36403 WDI_ASSERT(0);
36404 return WDI_STATUS_E_FAILURE;
36405 }
36406 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
36407
36408 /*-----------------------------------------------------------------------
36409 Get message buffer
36410 -----------------------------------------------------------------------*/
36411 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36412 WDI_SPOOF_MAC_ADDR_REQ,
36413 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
36414 &pSendBuffer, &usDataOffset, &usSendSize))||
36415 (usSendSize < (usDataOffset +
36416 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
36417 {
36418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36419 "Unable to get send buffer in Process Spoof Mac Addr Req");
36420 WDI_ASSERT(0);
36421 return WDI_STATUS_E_FAILURE;
36422 }
36423
36424 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
36425 wdiSpoofMacAddr->macAddr,
36426 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
36427
36428 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
36429
36430 wpalMemoryCopy( pSendBuffer+usDataOffset,
36431 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
36432 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
36433
36434 /*-------------------------------------------------------------------------
36435 Send Suspend Request to HAL
36436 -------------------------------------------------------------------------*/
36437 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36438 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
36439
36440 return wdiStatus;
36441}
36442
36443/**
36444 @brief Process Spoof Mac Address Rsp function
36445 (called when a response is being received over the bus from HAL)
36446
36447 @param pWDICtx: pointer to the WLAN DAL context
36448 pEventData: pointer to the event information structure
36449
36450 @see
36451 @return Result of the function call
36452*/
36453WDI_Status
36454WDI_ProcessSpoofMacAddrRsp
36455(
36456 WDI_ControlBlockType* pWDICtx,
36457 WDI_EventInfoType* pEventData
36458)
36459{
36460 tMacSpoofedScanResp halRsp;
36461 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
36462 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
36463
36464 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36465 "%s: %d Enter",__func__, __LINE__);
36466
36467 /*-------------------------------------------------------------------------
36468 Sanity check
36469 -------------------------------------------------------------------------*/
36470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36471 ( NULL == pEventData->pEventData))
36472 {
36473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36474 "%s: Invalid parameters", __func__);
36475 WDI_ASSERT(0);
36476 return WDI_STATUS_E_FAILURE;
36477 }
36478 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
36479
36480 /*-------------------------------------------------------------------------
36481 Extract response and send it to UMAC
36482 -------------------------------------------------------------------------*/
36483 wpalMemoryCopy( &halRsp,
36484 pEventData->pEventData, sizeof(halRsp));
36485
36486 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36487
36488 /*Notify UMAC*/
36489 wdiSpoofMacAddrRspCb(
36490 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
36491
36492 return WDI_STATUS_SUCCESS;
36493}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053036494
36495/**
Siddharth Bhal64246172015-02-27 01:04:37 +053036496 @brief Process Get Frame Log Rsp function
36497 (called when a response is being received over the bus from HAL)
36498
36499 @param pWDICtx: pointer to the WLAN DAL context
36500 pEventData: pointer to the event information structure
36501
36502 @see
36503 @return Result of the function call
36504*/
36505WDI_Status
36506WDI_ProcessGetFrameLogRsp
36507(
36508 WDI_ControlBlockType* pWDICtx,
36509 WDI_EventInfoType* pEventData
36510)
36511{
36512 tGetFrameLogResp halRsp;
36513 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
36514 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
36515
36516 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36517 "%s: %d Enter",__func__, __LINE__);
36518
36519 /*-------------------------------------------------------------------------
36520 Sanity check
36521 -------------------------------------------------------------------------*/
36522 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36523 ( NULL == pEventData->pEventData))
36524 {
36525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36526 "%s: Invalid parameters", __func__);
36527 WDI_ASSERT(0);
36528 return WDI_STATUS_E_FAILURE;
36529 }
36530
36531 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
36532
36533 /*-------------------------------------------------------------------------
36534 Extract response and send it to UMAC
36535 -------------------------------------------------------------------------*/
36536 wpalMemoryCopy( &halRsp,
36537 pEventData->pEventData, sizeof(halRsp));
36538
36539 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36540
36541 /*Notify UMAC*/
36542 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
36543
36544 return WDI_STATUS_SUCCESS;
36545}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036546
36547/**
36548 @brief Process RssiMonitorStartReq Request
36549
36550 @param pWDICtx: pointer to the WLAN DAL context
36551 pEventData: pointer to the event information structure
36552
36553 @see
36554 @return Result of the function call
36555*/
36556WDI_Status
36557WDI_ProcessRssiMonitorStartReq
36558(
36559 WDI_ControlBlockType* pWDICtx,
36560 WDI_EventInfoType* pEventData
36561)
36562{
36563 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
36564 wpt_uint8* pSendBuffer = NULL;
36565 wpt_uint16 usDataOffset = 0;
36566 wpt_uint16 usSendSize = 0;
36567 WDI_Status wdiStatus;
36568 tHalStartRssimonitoringReq halStartRssiMonitorReq;
36569 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
36570
36571
36572 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36573 "%s: %d Enter",__func__, __LINE__);
36574
36575 /*-------------------------------------------------------------------------
36576 Sanity check
36577 ------------------------------------------------------------------------*/
36578 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36579 ( NULL == pEventData->pEventData))
36580 {
36581 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36582 "%s: Invalid parameters", __func__);
36583 WDI_ASSERT(0);
36584 return WDI_STATUS_E_FAILURE;
36585 }
36586
36587 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
36588
36589 /*-----------------------------------------------------------------------
36590 Get message buffer
36591 -----------------------------------------------------------------------*/
36592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36593 WDI_START_RSSI_MONITOR_REQ,
36594 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
36595 &pSendBuffer, &usDataOffset, &usSendSize))||
36596 (usSendSize < (usDataOffset +
36597 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
36598 {
36599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36600 "Unable to get send buffer in GetFrameLog Req");
36601 WDI_ASSERT(0);
36602 return WDI_STATUS_E_FAILURE;
36603 }
36604
36605 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
36606 wdiRssiMonitorStartReq->requestId;
36607
36608 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
36609 wdiRssiMonitorStartReq->minRssi;
36610
36611 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
36612 wdiRssiMonitorStartReq->maxRssi;
36613 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
36614 &(wdiRssiMonitorStartReq->currentBssId),
36615 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
36616
36617 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
36618
36619 wpalMemoryCopy(pSendBuffer+usDataOffset,
36620 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
36621 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
36622
36623 /*-------------------------------------------------------------------------
36624 Send Suspend Request to HAL
36625 ------------------------------------------------------------------------*/
36626 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36627 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
36628
36629 return wdiStatus;
36630}
36631
36632
36633/**
36634 @brief Process FWLoggingInit Request
36635
36636 @param pWDICtx: pointer to the WLAN DAL context
36637 pEventData: pointer to the event information structure
36638
36639 @see
36640 @return Result of the function call
36641*/
36642WDI_Status
36643WDI_ProcessRssiMonitorStopReq
36644(
36645 WDI_ControlBlockType* pWDICtx,
36646 WDI_EventInfoType* pEventData
36647)
36648{
36649 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
36650 wpt_uint8* pSendBuffer = NULL;
36651 wpt_uint16 usDataOffset = 0;
36652 wpt_uint16 usSendSize = 0;
36653 WDI_Status wdiStatus;
36654 tHalStopRssimonitoringReq halStopRssiMonitorReq;
36655 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
36656
36657
36658 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36659 "%s: %d Enter",__func__, __LINE__);
36660
36661 /*-------------------------------------------------------------------------
36662 Sanity check
36663 ------------------------------------------------------------------------*/
36664 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36665 ( NULL == pEventData->pEventData))
36666 {
36667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36668 "%s: Invalid parameters", __func__);
36669 WDI_ASSERT(0);
36670 return WDI_STATUS_E_FAILURE;
36671 }
36672 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
36673
36674 /*-----------------------------------------------------------------------
36675 Get message buffer
36676 -----------------------------------------------------------------------*/
36677 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36678 WDI_STOP_RSSI_MONITOR_REQ,
36679 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
36680 &pSendBuffer, &usDataOffset, &usSendSize))||
36681 (usSendSize < (usDataOffset +
36682 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
36683 {
36684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36685 "Unable to get send buffer in GetFrameLog Req");
36686 WDI_ASSERT(0);
36687 return WDI_STATUS_E_FAILURE;
36688 }
36689
36690 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
36691 wdiRssiMonitorStopReq->requestId;
36692
36693 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
36694 &(wdiRssiMonitorStopReq->currentBssId),
36695 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
36696
36697 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
36698
36699 wpalMemoryCopy(pSendBuffer+usDataOffset,
36700 &halStopRssiMonitorReq.stopRssiMonitoringParams,
36701 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
36702
36703 /*-------------------------------------------------------------------------
36704 Send Suspend Request to HAL
36705 ------------------------------------------------------------------------*/
36706 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36707 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
36708
36709 return wdiStatus;
36710}
36711
36712/**
36713 @brief Process MgmtFrame Logging Init Rsp function
36714 (called when a response is being received over the bus from HAL)
36715
36716 @param pWDICtx: pointer to the WLAN DAL context
36717 pEventData: pointer to the event information structure
36718
36719 @see
36720 @return Result of the function call
36721*/
36722WDI_Status
36723WDI_ProcessRssiMonitorStopRsp
36724(
36725 WDI_ControlBlockType* pWDICtx,
36726 WDI_EventInfoType* pEventData
36727)
36728{
36729 tHalStopRssimonitoringRspParams halRsp;
36730 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
36731 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
36732
36733 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36734 "%s: %d Enter",__func__, __LINE__);
36735
36736 /*-------------------------------------------------------------------------
36737 Sanity check
36738 -------------------------------------------------------------------------*/
36739 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36740 ( NULL == pEventData->pEventData))
36741 {
36742 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36743 "%s: Invalid parameters", __func__);
36744 WDI_ASSERT(0);
36745 return WDI_STATUS_E_FAILURE;
36746 }
36747 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
36748
36749 /*-------------------------------------------------------------------------
36750 Extract response and send it to UMAC
36751 -------------------------------------------------------------------------*/
36752 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36753
36754 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36755
36756 /*Notify UMAC*/
36757 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
36758
36759 return WDI_STATUS_SUCCESS;
36760}
36761
36762
36763/**
36764 @brief Process MgmtFrame Logging Init Rsp function
36765 (called when a response is being received over the bus from HAL)
36766
36767 @param pWDICtx: pointer to the WLAN DAL context
36768 pEventData: pointer to the event information structure
36769
36770 @see
36771 @return Result of the function call
36772*/
36773WDI_Status
36774WDI_ProcessRssiMonitorStartRsp
36775(
36776 WDI_ControlBlockType* pWDICtx,
36777 WDI_EventInfoType* pEventData
36778)
36779{
36780 tHalStartRssimonitoringRspParams halRsp;
36781 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
36782 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
36783
36784 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36785 "%s: %d Enter",__func__, __LINE__);
36786
36787 /*-------------------------------------------------------------------------
36788 Sanity check
36789 -------------------------------------------------------------------------*/
36790 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36791 ( NULL == pEventData->pEventData))
36792 {
36793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36794 "%s: Invalid parameters", __func__);
36795 WDI_ASSERT(0);
36796 return WDI_STATUS_E_FAILURE;
36797 }
36798 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
36799
36800 /*-------------------------------------------------------------------------
36801 Extract response and send it to UMAC
36802 -------------------------------------------------------------------------*/
36803 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36804
36805 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36806
36807 /*Notify UMAC*/
36808 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
36809
36810 return WDI_STATUS_SUCCESS;
36811}
36812
Siddharth Bhal64246172015-02-27 01:04:37 +053036813/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036814 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053036815
36816 @param pWDICtx: pointer to the WLAN DAL context
36817 pEventData: pointer to the event information structure
36818
36819 @see
36820 @return Result of the function call
36821*/
36822WDI_Status
36823WDI_ProcessGetFrameLogReq
36824(
36825 WDI_ControlBlockType* pWDICtx,
36826 WDI_EventInfoType* pEventData
36827)
36828{
36829 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
36830 wpt_uint8* pSendBuffer = NULL;
36831 wpt_uint16 usDataOffset = 0;
36832 wpt_uint16 usSendSize = 0;
36833 WDI_Status wdiStatus;
36834 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036835 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053036836
36837
36838 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36839 "%s: %d Enter",__func__, __LINE__);
36840
36841 /*-------------------------------------------------------------------------
36842 Sanity check
36843 ------------------------------------------------------------------------*/
36844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36845 ( NULL == pEventData->pEventData))
36846 {
36847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36848 "%s: Invalid parameters", __func__);
36849 WDI_ASSERT(0);
36850 return WDI_STATUS_E_FAILURE;
36851 }
36852
36853 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
36854
36855 /*-----------------------------------------------------------------------
36856 Get message buffer
36857 -----------------------------------------------------------------------*/
36858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36859 WDI_GET_FRAME_LOG_REQ,
36860 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
36861 &pSendBuffer, &usDataOffset, &usSendSize))||
36862 (usSendSize < (usDataOffset +
36863 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
36864 {
36865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36866 "Unable to get send buffer in GetFrameLog Req");
36867 WDI_ASSERT(0);
36868 return WDI_STATUS_E_FAILURE;
36869 }
36870
36871 halGetFrameLogReq.tGetFrameLogReqParams.flags =
36872 wdiGetFrameLogReq->flags;
36873
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036874 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053036875
36876 wpalMemoryCopy( pSendBuffer+usDataOffset,
36877 &halGetFrameLogReq.tGetFrameLogReqParams,
36878 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
36879
36880 /*-------------------------------------------------------------------------
36881 Send Suspend Request to HAL
36882 ------------------------------------------------------------------------*/
36883 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36884 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
36885
36886 return wdiStatus;
36887}
36888/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036889 @brief Process MgmtFrame Logging Init Rsp function
36890 (called when a response is being received over the bus from HAL)
36891
36892 @param pWDICtx: pointer to the WLAN DAL context
36893 pEventData: pointer to the event information structure
36894
36895 @see
36896 @return Result of the function call
36897*/
36898WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036899WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036900(
36901 WDI_ControlBlockType* pWDICtx,
36902 WDI_EventInfoType* pEventData
36903)
36904{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036905 tFWLoggingInitResp halRsp;
36906 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
36907 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036908
36909 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36910 "%s: %d Enter",__func__, __LINE__);
36911
36912 /*-------------------------------------------------------------------------
36913 Sanity check
36914 -------------------------------------------------------------------------*/
36915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36916 ( NULL == pEventData->pEventData))
36917 {
36918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36919 "%s: Invalid parameters", __func__);
36920 WDI_ASSERT(0);
36921 return WDI_STATUS_E_FAILURE;
36922 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036923 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036924
36925 /*-------------------------------------------------------------------------
36926 Extract response and send it to UMAC
36927 -------------------------------------------------------------------------*/
36928 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36929
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036930 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053036931 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036932
36933 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036934 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036935
36936 return WDI_STATUS_SUCCESS;
36937}
36938
c_manjeecfd1efb2015-09-25 19:32:34 +053036939/**
36940 @brief Process Fwr Mem Dump Rsp function
36941 (called when a response is being received over the bus from HAL)
36942
36943 @param pWDICtx: pointer to the WLAN DAL context
36944 pEventData: pointer to the event information structure
36945
36946 @see
36947 @return Result of the function call
36948*/
36949WDI_Status
36950 WDI_ProcessFwrMemDumpRsp
36951
36952(
36953 WDI_ControlBlockType* pWDICtx,
36954 WDI_EventInfoType* pEventData
36955)
36956{
36957 tHalFwMemoryDumpRespMsg halRsp;
36958 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
36959 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
36960
36961 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36962 "%s: %d Enter",__func__, __LINE__);
36963
36964 /*-------------------------------------------------------------------------
36965 Sanity check
36966 -------------------------------------------------------------------------*/
36967 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36968 ( NULL == pEventData->pEventData))
36969 {
36970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36971 "%s: Invalid parameters", __func__);
36972 WDI_ASSERT(0);
36973 return WDI_STATUS_E_FAILURE;
36974 }
36975 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
36976
36977 /*-------------------------------------------------------------------------
36978 Extract response and send it to UMAC
36979 -------------------------------------------------------------------------*/
c_manjee107ae7a2015-11-13 22:28:50 +053036980 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp.tFwMemoryDumpResp));
c_manjeecfd1efb2015-09-25 19:32:34 +053036981
36982 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
36983
36984 /*Notify UMAC*/
36985 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
36986
36987 return WDI_STATUS_SUCCESS;
36988}
36989
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036990WDI_Status
36991WDI_ProcessFWLoggingDXEdoneInd
36992(
36993 WDI_ControlBlockType* pWDICtx,
36994 WDI_EventInfoType* pEventData
36995)
36996{
36997 wpt_uint8* pSendBuffer = NULL;
36998 wpt_uint16 usDataOffset = 0;
36999 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037000 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053037001 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037002 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053037003 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037004
37005
37006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37007
37008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37009 "%s", __func__);
37010
37011 /*-------------------------------------------------------------------------
37012 Sanity check
37013 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053037014 if (NULL == pEventData ||
37015 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037016 {
37017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37018 "%s: Invalid parameters", __func__);
37019 WDI_ASSERT(0);
37020 return WDI_STATUS_E_FAILURE;
37021 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053037022 pLogType = (wpt_uint32 *)pEventData->pEventData;
37023
Mihir Shete5affadc2015-05-29 20:54:57 +053037024 pLoggingSession = (WDI_DS_LoggingSessionType *)
37025 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
37026 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037027 /*-----------------------------------------------------------------------
37028 Get message buffer
37029 -----------------------------------------------------------------------*/
37030
37031 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37032 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053037033 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037034 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053037035 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037036 {
37037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070037038 "Unable to get send buffer in RTS CTS ind %pK ",
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037039 pEventData);
37040 WDI_ASSERT(0);
37041 return WDI_STATUS_E_FAILURE;
37042 }
37043 FWLoggingDxeDoneIndParams =
37044 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
37045
37046 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053037047 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037048 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053037049
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053037050 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053037051 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053037052
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037053 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053037054 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037055 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
37056
37057 pWDICtx->pReqStatusUserData = NULL;
37058 pWDICtx->pfncRspCB = NULL;
37059 /*-------------------------------------------------------------------------
37060 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
37061 -------------------------------------------------------------------------*/
37062 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
37063 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
37064}
37065
Sachin Ahuja715aafc2015-07-21 23:35:10 +053037066
37067/**
37068 @brief Process Fatal Event Logs Rsp function
37069 (called when a response is being received over the bus from HAL)
37070
37071 @param pWDICtx: pointer to the WLAN DAL context
37072 pEventData: pointer to the event information structure
37073
37074 @see
37075 @return Result of the function call
37076*/
37077WDI_Status
37078WDI_ProcessFatalEventLogsRsp
37079(
37080 WDI_ControlBlockType* pWDICtx,
37081 WDI_EventInfoType* pEventData
37082)
37083{
37084 tHalFatalEventLoggingRspParams halRsp;
37085 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
37086 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
37087
37088 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37089 "%s: %d Enter",__func__, __LINE__);
37090
37091 /*-------------------------------------------------------------------------
37092 Sanity check
37093 -------------------------------------------------------------------------*/
37094 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37095 ( NULL == pEventData->pEventData))
37096 {
37097 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37098 "%s: Invalid parameters", __func__);
37099 WDI_ASSERT(0);
37100 return WDI_STATUS_E_FAILURE;
37101 }
37102 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
37103
37104 /*-------------------------------------------------------------------------
37105 Extract response and send it to UMAC
37106 -------------------------------------------------------------------------*/
37107 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
37108
37109 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
37110
37111 /*Notify UMAC*/
37112 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
37113 pWDICtx->pRspCBUserData);
37114
37115 return WDI_STATUS_SUCCESS;
37116}
37117
37118/**
37119 @brief Process FatalEventLogs Request
37120
37121 @param pWDICtx: pointer to the WLAN DAL context
37122 pEventData: pointer to the event information structure
37123
37124 @see
37125 @return Result of the function call
37126*/
37127
37128WDI_Status
37129WDI_ProcessFatalEventLogsReq
37130
37131(
37132 WDI_ControlBlockType* pWDICtx,
37133 WDI_EventInfoType* pEventData
37134)
37135{
37136 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
37137 wpt_uint8* pSendBuffer = NULL;
37138 wpt_uint16 usDataOffset = 0;
37139 wpt_uint16 usSendSize = 0;
37140 WDI_Status wdiStatus;
37141 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
37142 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
37143
37144
37145 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37146 "%s: %d Enter",__func__, __LINE__);
37147
37148 /*-------------------------------------------------------------------------
37149 Sanity check
37150 ------------------------------------------------------------------------*/
37151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37152 ( NULL == pEventData->pEventData))
37153 {
37154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37155 "%s: Invalid parameters", __func__);
37156 WDI_ASSERT(0);
37157 return WDI_STATUS_E_FAILURE;
37158 }
37159 wdiFatalEventLogsReq =
37160 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
37161
37162 /*-----------------------------------------------------------------------
37163 Get message buffer
37164 -----------------------------------------------------------------------*/
37165 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37166 WDI_FATAL_EVENT_LOGGING_REQ,
37167 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
37168 &pSendBuffer, &usDataOffset, &usSendSize))||
37169 (usSendSize < (usDataOffset +
37170 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
37171 {
37172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37173 "Unable to get send buffer in Fatal Event Req");
37174 WDI_ASSERT(0);
37175 return WDI_STATUS_E_FAILURE;
37176 }
37177 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
37178 wdiFatalEventLogsReq->reason_code;
37179
37180 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
37181
37182 wpalMemoryCopy( pSendBuffer+usDataOffset,
37183 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
37184 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
37185
37186 /*-------------------------------------------------------------------------
37187 Send Mgmt Logging Init Request to HAL
37188 ------------------------------------------------------------------------*/
37189 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
37190 wdiFatalEventLogsRspCb, pEventData->pUserData,
37191 WDI_FATAL_EVENT_LOGGING_RSP);
37192
37193 return wdiStatus;
37194
37195
37196}
37197
Anurag Chouhan83026002016-12-13 22:46:21 +053037198#ifdef DHCP_SERVER_OFFLOAD
37199/**
37200 * wdi_dhcp_server_offload_req() - wdi api for dhcp server offload
37201 * @wdi_ctx: pointer to wdi context
37202 * @event_data: pointer to event data
37203 *
37204 * Return: WDI_Status
37205 * WDI_STATUS_SUCCESS - success or else failure status
37206 */
37207WDI_Status
37208wdi_dhcp_server_offload_req
37209(
37210 WDI_ControlBlockType *wdi_ctx,
37211 WDI_EventInfoType *event_data
37212)
37213{
37214 wdi_set_dhcp_server_offload_t *wdi_dhcp_server_info;
37215 wpt_uint8 *buff = NULL;
37216 wpt_uint16 data_offset = 0;
37217 wpt_uint16 size = 0;
37218 WDI_Status wdi_status;
37219 hal_dhcp_srv_offload_req_msg_t dhcp_srv_offload_req;
37220 wdi_dhcp_srv_offload_rsp_cb wdi_dhcp_srv_offload_rsp_callback;
37221
37222 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37223 "%s: %d Enter",__func__, __LINE__);
37224
37225 /*------------------------------------------------------------------
37226 Sanity check
37227 ------------------------------------------------------------------*/
37228 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37229 (NULL == event_data->pEventData))
37230 {
37231 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37232 "%s: Invalid parameters", __func__);
37233 WDI_ASSERT(0);
37234 return WDI_STATUS_E_FAILURE;
37235 }
37236
37237 wdi_dhcp_server_info = (wdi_set_dhcp_server_offload_t *)
37238 event_data->pEventData;
37239
37240 /*-------------------------------------------------------------------
37241 Get message buffer
37242 -----------------------------------------------------------------*/
37243 if (( WDI_STATUS_SUCCESS !=
37244 WDI_GetMessageBuffer(wdi_ctx,
37245 WDI_DHCP_SERVER_OFFLOAD_REQ,
37246 sizeof(dhcp_srv_offload_req.
37247 dhcp_srv_offload_req_params),
37248 &buff, &data_offset, &size))||
37249 (size < (data_offset +
37250 sizeof(dhcp_srv_offload_req.dhcp_srv_offload_req_params))))
37251 {
37252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37253 "Unable to get send buffer in GetFrameLog Req");
37254 WDI_ASSERT(0);
37255 return WDI_STATUS_E_FAILURE;
37256 }
37257
37258 dhcp_srv_offload_req.dhcp_srv_offload_req_params.bss_idx =
37259 wdi_dhcp_server_info->bssidx;
37260 dhcp_srv_offload_req.dhcp_srv_offload_req_params.enable =
37261 wdi_dhcp_server_info->enable;
37262 dhcp_srv_offload_req.dhcp_srv_offload_req_params.srv_ipv4 =
37263 wdi_dhcp_server_info->srv_ipv4;
37264 dhcp_srv_offload_req.dhcp_srv_offload_req_params.start_lsb =
37265 wdi_dhcp_server_info->start_lsb;
37266 dhcp_srv_offload_req.dhcp_srv_offload_req_params.num_client =
37267 wdi_dhcp_server_info->num_client;
37268
37269 wdi_dhcp_srv_offload_rsp_callback = (wdi_dhcp_srv_offload_rsp_cb)
37270 event_data->pCBfnc;
37271
37272 wpalMemoryCopy(buff+data_offset,
37273 &dhcp_srv_offload_req.dhcp_srv_offload_req_params,
37274 sizeof(dhcp_srv_offload_req.
37275 dhcp_srv_offload_req_params));
37276
37277 /*-------------------------------------------------------------------
37278 Send Suspend Request to HAL
37279 -----------------------------------------------------------------*/
37280 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37281 wdi_dhcp_srv_offload_rsp_callback,
37282 event_data->pUserData,
37283 WDI_DHCP_SERVER_OFFLOAD_RSP);
37284 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37285 "%s: %d Exit",__func__, __LINE__);
37286 return wdi_status;
37287}
37288#endif /* DHCP_SERVER_OFFLOAD */
37289
Anurag Chouhan0b29de02016-12-16 13:18:40 +053037290#ifdef MDNS_OFFLOAD
37291/**
37292 * wdi_mdns_enable_offload_req() - wdi api for dhcp server offload
37293 * @wdi_ctx: pointer to wdi context
37294 * @event_data: pointer to event data
37295 *
37296 * Return: WDI_Status
37297 * WDI_STATUS_SUCCESS - success or else failure status
37298 */
37299WDI_Status
37300wdi_mdns_enable_offload_req
37301(
37302 WDI_ControlBlockType *wdi_ctx,
37303 WDI_EventInfoType *event_data
37304 )
37305{
37306 wdi_mdns_enable_offload_cmd_req *wdi_mdns_enable_info;
37307 wpt_uint8 *buff = NULL;
37308 wpt_uint16 data_offset = 0;
37309 wpt_uint16 size = 0;
37310 WDI_Status wdi_status;
37311 hal_mdns_enable_offload_req_msg_t mdns_enable_req;
37312 wdi_mdns_enable_rsp_cb wdi_mdns_enable_rsp_callback;;
37313
37314 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37315 "%s: %d Enter",__func__, __LINE__);
37316
37317 /*------------------------------------------------------------------
37318 Sanity check
37319 ------------------------------------------------------------------*/
37320 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37321 (NULL == event_data->pEventData))
37322 {
37323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37324 "%s: Invalid parameters", __func__);
37325 WDI_ASSERT(0);
37326 return WDI_STATUS_E_FAILURE;
37327 }
37328
37329 wdi_mdns_enable_info = (wdi_mdns_enable_offload_cmd_req *)
37330 event_data->pEventData;
37331
37332 /*-------------------------------------------------------------------
37333 Get message buffer
37334 -----------------------------------------------------------------*/
37335 if (( WDI_STATUS_SUCCESS !=
37336 WDI_GetMessageBuffer(wdi_ctx,
37337 WDI_MDNS_ENABLE_OFFLOAD_REQ,
37338 sizeof(mdns_enable_req.
37339 mdns_enable_req_params),
37340 &buff, &data_offset, &size))||
37341 (size < (data_offset +
37342 sizeof(mdns_enable_req.mdns_enable_req_params))))
37343 {
37344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37345 "Unable to get send buffer in GetFrameLog Req");
37346 WDI_ASSERT(0);
37347 return WDI_STATUS_E_FAILURE;
37348 }
37349
37350 mdns_enable_req.mdns_enable_req_params.bss_idx =
37351 wdi_mdns_enable_info->bss_idx;
37352 mdns_enable_req.mdns_enable_req_params.enable =
37353 wdi_mdns_enable_info->enable;
37354
37355 wdi_mdns_enable_rsp_callback = (wdi_mdns_enable_rsp_cb)
37356 event_data->pCBfnc;
37357
37358 wpalMemoryCopy(buff+data_offset,
37359 &mdns_enable_req.mdns_enable_req_params,
37360 sizeof(mdns_enable_req.
37361 mdns_enable_req_params));
37362
37363 /*-------------------------------------------------------------------
37364 Send Suspend Request to HAL
37365 -----------------------------------------------------------------*/
37366 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37367 wdi_mdns_enable_rsp_callback,
37368 event_data->pUserData,
37369 WDI_MDNS_ENABLE_OFFLOAD_RSP);
37370 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37371 "%s: %d Exit",__func__, __LINE__);
37372 return wdi_status;
37373}
37374
37375/**
37376 * wdi_mdns_fqdn_offload_req() - wdi api for mdns fqdn offload
37377 * @wdi_ctx: pointer to wdi context
37378 * @event_data: pointer to event data
37379 *
37380 * Return: WDI_Status
37381 * WDI_STATUS_SUCCESS - success or else failure status
37382 */
37383WDI_Status
37384wdi_mdns_fqdn_offload_req
37385(
37386 WDI_ControlBlockType *wdi_ctx,
37387 WDI_EventInfoType *event_data
37388 )
37389{
37390 wdi_mdns_set_fqdn_cmd_req *wdi_mdns_fqdn_info;
37391 wpt_uint8 *buff = NULL;
37392 wpt_uint16 buf_size, data_offset = 0;
37393 wpt_uint16 temp_size, size = 0;
37394 WDI_Status wdi_status;
37395 hal_mdns_fqdn_offload_req_param_t mdns_fqdn;
37396 wdi_mdns_fqdn_rsp_cb wdi_mdns_fqdn_rsp_callback;;
37397
37398 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37399 "%s: %d Enter",__func__, __LINE__);
37400
37401 /*------------------------------------------------------------------
37402 Sanity check
37403 ------------------------------------------------------------------*/
37404 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37405 (NULL == event_data->pEventData))
37406 {
37407 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37408 "%s: Invalid parameters", __func__);
37409 WDI_ASSERT(0);
37410 return WDI_STATUS_E_FAILURE;
37411 }
37412
37413 wdi_mdns_fqdn_info = (wdi_mdns_set_fqdn_cmd_req *)
37414 event_data->pEventData;
37415
37416 mdns_fqdn.bss_idx = wdi_mdns_fqdn_info->bss_idx;
37417 mdns_fqdn.type = wdi_mdns_fqdn_info->type;
37418 mdns_fqdn.fqdn_len = wdi_mdns_fqdn_info->fqdn_len;
37419
37420 buf_size = sizeof(mdns_fqdn) + mdns_fqdn.fqdn_len -
37421 sizeof(mdns_fqdn.fqdn_data[1]);
37422
37423 /*-------------------------------------------------------------------
37424 Get message buffer
37425 -----------------------------------------------------------------*/
37426 if (( WDI_STATUS_SUCCESS !=
37427 WDI_GetMessageBuffer(wdi_ctx,
37428 WDI_MDNS_FQDN_OFFLOAD_REQ,
37429 buf_size,
37430 &buff, &data_offset, &size))||
37431 (size < (data_offset + buf_size)))
37432 {
37433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37434 "Unable to get send buffer in GetFrameLog Req");
37435 WDI_ASSERT(0);
37436 return WDI_STATUS_E_FAILURE;
37437 }
37438
37439 wdi_mdns_fqdn_rsp_callback = (wdi_mdns_fqdn_rsp_cb)
37440 event_data->pCBfnc;
37441
37442 temp_size = 0;
37443 wpalMemoryCopy(buff+data_offset+temp_size,
37444 &mdns_fqdn.bss_idx,
37445 sizeof(mdns_fqdn.bss_idx));
37446 temp_size += sizeof(mdns_fqdn.bss_idx);
37447 wpalMemoryCopy(buff+data_offset+temp_size,
37448 &mdns_fqdn.type,
37449 sizeof(mdns_fqdn.type));
37450 temp_size += sizeof(mdns_fqdn.type);
37451 wpalMemoryCopy(buff+data_offset+temp_size,
37452 &mdns_fqdn.fqdn_len,
37453 sizeof(mdns_fqdn.fqdn_len));
37454 temp_size += sizeof(mdns_fqdn.fqdn_len);
37455 wpalMemoryCopy(buff+data_offset+temp_size,
37456 wdi_mdns_fqdn_info->fqdn_data,
37457 wdi_mdns_fqdn_info->fqdn_len);
37458
37459 /*-------------------------------------------------------------------
37460 Send Suspend Request to HAL
37461 -----------------------------------------------------------------*/
37462 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37463 wdi_mdns_fqdn_rsp_callback,
37464 event_data->pUserData,
37465 WDI_MDNS_FQDN_OFFLOAD_RSP);
37466 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37467 "%s: %d Exit",__func__, __LINE__);
37468 return wdi_status;
37469}
37470
37471/**
37472 * wdi_mdns_resp_offload_req() - wdi api for mdns response offload
37473 * @wdi_ctx: pointer to wdi context
37474 * @event_data: pointer to event data
37475 *
37476 * Return: WDI_Status
37477 * WDI_STATUS_SUCCESS - success or else failure status
37478 */
37479WDI_Status
37480wdi_mdns_resp_offload_req
37481(
37482 WDI_ControlBlockType *wdi_ctx,
37483 WDI_EventInfoType *event_data
37484 )
37485{
37486 wdi_mdns_set_resp_req *wdi_mdns_resp_info;
37487 wpt_uint8 *buff = NULL;
37488 wpt_uint16 buf_size, data_offset = 0;
37489 wpt_uint16 temp_size, size = 0;
37490 WDI_Status wdi_status;
37491 hal_mdns_resp_offload_req_param_t mdns_resp;
37492 wdi_mdns_resp_rsp_cb wdi_mdns_resp_rsp_callback;;
37493
37494 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37495 "%s: %d Enter",__func__, __LINE__);
37496
37497 /*------------------------------------------------------------------
37498 Sanity check
37499 ------------------------------------------------------------------*/
37500 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37501 (NULL == event_data->pEventData))
37502 {
37503 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37504 "%s: Invalid parameters", __func__);
37505 WDI_ASSERT(0);
37506 return WDI_STATUS_E_FAILURE;
37507 }
37508
37509 wdi_mdns_resp_info = (wdi_mdns_set_resp_req *)
37510 event_data->pEventData;
37511
37512 mdns_resp.bss_idx = wdi_mdns_resp_info->bss_idx;
37513 mdns_resp.ar_count = wdi_mdns_resp_info->ar_count;
37514 mdns_resp.resp_len = wdi_mdns_resp_info->resp_len;
37515
37516 buf_size = sizeof(mdns_resp) + mdns_resp.resp_len -
37517 sizeof(mdns_resp.resp_data[1]);
37518
37519 /*-------------------------------------------------------------------
37520 Get message buffer
37521 -----------------------------------------------------------------*/
37522 if (( WDI_STATUS_SUCCESS !=
37523 WDI_GetMessageBuffer(wdi_ctx,
37524 WDI_MDNS_RESP_OFFLOAD_REQ,
37525 buf_size,
37526 &buff, &data_offset, &size))||
37527 (size < (data_offset + buf_size)))
37528 {
37529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37530 "Unable to get send buffer in GetFrameLog Req");
37531 WDI_ASSERT(0);
37532 return WDI_STATUS_E_FAILURE;
37533 }
37534
37535 wdi_mdns_resp_rsp_callback = (wdi_mdns_resp_rsp_cb)
37536 event_data->pCBfnc;
37537
37538 temp_size = 0;
37539 wpalMemoryCopy(buff+data_offset+temp_size,
37540 &mdns_resp.bss_idx,
37541 sizeof(mdns_resp.bss_idx));
37542 temp_size += sizeof(mdns_resp.bss_idx);
37543 wpalMemoryCopy(buff+data_offset+temp_size,
37544 &mdns_resp.ar_count,
37545 sizeof(mdns_resp.ar_count));
37546 temp_size += sizeof(mdns_resp.ar_count);
37547 wpalMemoryCopy(buff+data_offset+temp_size,
37548 &mdns_resp.resp_len,
37549 sizeof(mdns_resp.resp_len));
37550 temp_size += sizeof(mdns_resp.resp_len);
37551 wpalMemoryCopy(buff+data_offset+temp_size,
37552 &wdi_mdns_resp_info->resp_data,
37553 wdi_mdns_resp_info->resp_len);
37554
37555 /*-------------------------------------------------------------------
37556 Send Suspend Request to HAL
37557 -----------------------------------------------------------------*/
37558 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37559 wdi_mdns_resp_rsp_callback,
37560 event_data->pUserData,
37561 WDI_MDNS_RESP_OFFLOAD_RSP);
37562 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37563 "%s: %d Exit",__func__, __LINE__);
37564 return wdi_status;
37565}
37566
37567/**
37568 * wdi_get_mdns_stats_offload_req() - wdi api for mdns stats offload
37569 * @wdi_ctx: pointer to wdi context
37570 * @event_data: pointer to event data
37571 *
37572 * Return: WDI_Status
37573 * WDI_STATUS_SUCCESS - success or else failure status
37574 */
37575WDI_Status
37576wdi_get_mdns_stats_offload_req
37577(
37578 WDI_ControlBlockType *wdi_ctx,
37579 WDI_EventInfoType *event_data
37580 )
37581{
37582 wdi_mdns_get_stats_req *wdi_mdns_stats_info;
37583 wpt_uint8 *buff = NULL;
37584 wpt_uint16 data_offset = 0;
37585 wpt_uint16 size = 0;
37586 WDI_Status wdi_status;
37587 hal_mdns_stats_offload_req_msg_t mdns_stats_req;
37588 wdi_get_stats_rsp_cb wdi_mdns_stats_rsp_callback;;
37589
37590 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37591 "%s: %d Enter",__func__, __LINE__);
37592
37593 /*------------------------------------------------------------------
37594 Sanity check
37595 ------------------------------------------------------------------*/
37596 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37597 (NULL == event_data->pEventData))
37598 {
37599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37600 "%s: Invalid parameters", __func__);
37601 WDI_ASSERT(0);
37602 return WDI_STATUS_E_FAILURE;
37603 }
37604
37605 wdi_mdns_stats_info = (wdi_mdns_get_stats_req *)
37606 event_data->pEventData;
37607
37608 /*-------------------------------------------------------------------
37609 Get message buffer
37610 -----------------------------------------------------------------*/
37611 if (( WDI_STATUS_SUCCESS !=
37612 WDI_GetMessageBuffer(wdi_ctx,
37613 WDI_MDNS_STATS_OFFLOAD_REQ,
37614 sizeof(mdns_stats_req.
37615 mdns_stats_req_params),
37616 &buff, &data_offset, &size))||
37617 (size < (data_offset +
37618 sizeof(mdns_stats_req.mdns_stats_req_params))))
37619 {
37620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37621 "Unable to get send buffer in GetFrameLog Req");
37622 WDI_ASSERT(0);
37623 return WDI_STATUS_E_FAILURE;
37624 }
37625
37626 mdns_stats_req.mdns_stats_req_params.bss_idx =
37627 wdi_mdns_stats_info->bss_idx;
37628
37629 wdi_mdns_stats_rsp_callback = (wdi_get_stats_rsp_cb)
37630 event_data->pCBfnc;
37631
37632 wpalMemoryCopy(buff+data_offset,
37633 &mdns_stats_req.mdns_stats_req_params,
37634 sizeof(mdns_stats_req.
37635 mdns_stats_req_params));
37636
37637 /*-------------------------------------------------------------------
37638 Send Suspend Request to HAL
37639 -----------------------------------------------------------------*/
37640 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37641 wdi_mdns_stats_rsp_callback,
37642 event_data->pUserData,
37643 WDI_MDNS_STATS_OFFLOAD_RSP);
37644 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37645 "%s: %d Exit",__func__, __LINE__);
37646 return wdi_status;
37647}
37648#endif /* MDNS_OFFLOAD */
Sachin Ahuja715aafc2015-07-21 23:35:10 +053037649
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037650/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037651 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037652
37653 @param pWDICtx: pointer to the WLAN DAL context
37654 pEventData: pointer to the event information structure
37655
37656 @see
37657 @return Result of the function call
37658*/
37659WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037660WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037661(
37662 WDI_ControlBlockType* pWDICtx,
37663 WDI_EventInfoType* pEventData
37664)
37665{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037666 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037667 wpt_uint8* pSendBuffer = NULL;
37668 wpt_uint16 usDataOffset = 0;
37669 wpt_uint16 usSendSize = 0;
37670 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037671 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
37672 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037673
37674
37675 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37676 "%s: %d Enter",__func__, __LINE__);
37677
37678 /*-------------------------------------------------------------------------
37679 Sanity check
37680 ------------------------------------------------------------------------*/
37681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37682 ( NULL == pEventData->pEventData))
37683 {
37684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37685 "%s: Invalid parameters", __func__);
37686 WDI_ASSERT(0);
37687 return WDI_STATUS_E_FAILURE;
37688 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037689 wdiFWLoggingInitReq =
37690 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037691
37692 /*-----------------------------------------------------------------------
37693 Get message buffer
37694 -----------------------------------------------------------------------*/
37695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037696 WDI_FW_LOGGING_INIT_REQ,
37697 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037698 &pSendBuffer, &usDataOffset, &usSendSize))||
37699 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037700 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037701 {
37702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37703 "Unable to get send buffer in Process Mgmt Logging Init Req");
37704 WDI_ASSERT(0);
37705 return WDI_STATUS_E_FAILURE;
37706 }
37707
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037708 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
37709 wdiFWLoggingInitReq->enableFlag;
37710 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
37711 wdiFWLoggingInitReq->frameSize;
37712 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
37713 wdiFWLoggingInitReq->frameType;
37714 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
37715 wdiFWLoggingInitReq->bufferMode;
37716 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
37717 wdiFWLoggingInitReq->continuousFrameLogging;
37718 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
37719 wdiFWLoggingInitReq->minLogBufferSize;
37720 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
37721 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053037722 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
37723 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
37724 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
37725 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037726
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037727 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037728
37729 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037730 &halFWLoggingInitReq.tFWLoggingInitReqParams,
37731 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037732
37733 /*-------------------------------------------------------------------------
37734 Send Mgmt Logging Init Request to HAL
37735 ------------------------------------------------------------------------*/
37736 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037737 wdiFWLoggingInitRspCb, pEventData->pUserData,
37738 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037739
37740 return wdiStatus;
37741}
37742
37743/**
c_manjeecfd1efb2015-09-25 19:32:34 +053037744 @brief Process FwrMemDumpReq Request
37745
37746 @param pWDICtx: pointer to the WLAN DAL context
37747 pEventData: pointer to the event information structure
37748
37749 @see
37750 @return Result of the function call
37751*/
37752WDI_Status
37753 WDI_ProcessFwrMemDumpReq
37754
37755(
37756 WDI_ControlBlockType* pWDICtx,
37757 WDI_EventInfoType* pEventData
37758)
37759{
37760 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
37761 wpt_uint8* pSendBuffer = NULL;
37762 wpt_uint16 usDataOffset = 0;
37763 wpt_uint16 usSendSize = 0;
37764 WDI_Status wdiStatus;
37765 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
37766 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
37767
37768 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37769 "%s: %d Enter",__func__, __LINE__);
37770
37771 /*-------------------------------------------------------------------------
37772 Sanity check
37773 ------------------------------------------------------------------------*/
37774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37775 ( NULL == pEventData->pEventData))
37776 {
37777 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37778 "%s: Invalid parameters", __func__);
37779 WDI_ASSERT(0);
37780 return WDI_STATUS_E_FAILURE;
37781 }
37782
37783 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
37784
37785 /*-----------------------------------------------------------------------
37786 Get message buffer
37787 -----------------------------------------------------------------------*/
37788 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37789 WDI_FWR_MEM_DUMP_REQ,
37790 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
37791 &pSendBuffer, &usDataOffset, &usSendSize))||
37792 (usSendSize < (usDataOffset +
37793 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
37794 {
37795 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37796 "Unable to get send buffer in Process Fwr Mem Dump Req");
37797 WDI_ASSERT(0);
37798 return WDI_STATUS_E_FAILURE;
37799 }
37800
37801 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
37802 wpalMemoryCopy( pSendBuffer+usDataOffset,
37803 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
37804 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
37805
37806 /*-------------------------------------------------------------------------
37807 Send Fwr Mem Dump Request to HAL
37808 ------------------------------------------------------------------------*/
37809 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
37810 wdiFwrMemDumpRspCb, pEventData->pUserData,
37811 WDI_FWR_MEM_DUMP_RSP);
37812 return wdiStatus;
37813}
37814
37815/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053037816 @brief WDI_EncryptMsgReq
37817
37818 @param pwdiEncryptMsgParams: Req parameter for the FW
37819 wdiEncryptMsgCbRsp: callback for passing back the response
37820 of the Req operation received from the device
37821 pUserData: user data will be passed back with the callback
37822
37823 @return SUCCESS or FAIL
37824*/
37825WDI_Status
37826WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
37827 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
37828 void* pUserData)
37829{
37830 WDI_EventInfoType wdiEventData;
37831
37832 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37833 "%s: %d Enter" ,__func__, __LINE__);
37834 /*------------------------------------------------------------------------
37835 Sanity Check
37836 ------------------------------------------------------------------------*/
37837 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37838 {
37839 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
37840 "WDI API call before module is initialized - Fail request");
37841
37842 return WDI_STATUS_E_NOT_ALLOWED;
37843 }
37844
37845 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
37846 wdiEventData.pEventData = pwdiEncryptMsgParams;
37847 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
37848 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
37849 wdiEventData.pUserData = pUserData;
37850
37851 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37852}
37853
37854/*
37855 * FUNCTION: WDI_ProcessEncryptMsgReq
37856 * Request to WDI to encrypt the given message.
37857 *
37858 * @param pWDICtx: pointer to the WLAN DAL context
37859 * pEventData: pointer to the event information structure
37860 *
37861 * @return Result of the function call
37862 */
37863
37864WDI_Status
37865WDI_ProcessEncryptMsgReq
37866(
37867 WDI_ControlBlockType* pWDICtx,
37868 WDI_EventInfoType* pEventData
37869)
37870{
37871 wpt_uint8* pSendBuffer = NULL;
37872 wpt_uint16 usDataOffset = 0;
37873 wpt_uint16 usSendSize = 0;
37874 WDI_EncryptMsgRspCb* wdiEncMsgCb;
37875 tSetEncryptedDataParams *pHalEncryptDataReq;
37876 wpt_pkt80211 *pkt = NULL;
37877
37878 /*-------------------------------------------------------------------------
37879 Sanity check
37880 -------------------------------------------------------------------------*/
37881 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
37882 ( NULL == pEventData->pCBfnc ) )
37883 {
37884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37885 "%s: Invalid parameters", __func__);
37886 WDI_ASSERT(0);
37887 return WDI_STATUS_E_FAILURE;
37888 }
37889
37890 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
37891
37892 /*-----------------------------------------------------------------------
37893 Get message buffer
37894 -----------------------------------------------------------------------*/
37895 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
37896 pWDICtx, WDI_ENCRYPT_MSG_REQ,
37897 sizeof(tSetEncryptedDataReqMsg),
37898 &pSendBuffer, &usDataOffset, &usSendSize)) ||
37899 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
37900 {
37901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070037902 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %pK",
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053037903 pEventData);
37904 WDI_ASSERT(0);
37905 return WDI_STATUS_E_FAILURE;
37906 }
37907
37908 pWDICtx->wdiReqStatusCB = NULL;
37909 pWDICtx->pReqStatusUserData = pEventData->pUserData;
37910 pkt = (wpt_pkt80211 *)pEventData->pEventData;
37911
37912 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
37913 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
37914
37915 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
37916
37917 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
37918 pkt->encParams.keyParams.key[0].keyId;
37919
37920 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
37921 &pkt->encParams.keyParams.key[0].key[0], 16);
37922
37923 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
37924
37925 pHalEncryptDataReq->data.length = pkt->data.length;
37926 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
37927
37928 /*-------------------------------------------------------------------------
37929 Send Get STA Request to HAL
37930 -------------------------------------------------------------------------*/
37931 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
37932 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
37933}
37934
37935/*
37936 * FUNCTION: WDI_ProcessEncryptMsgRsp
37937 * Receives the encrypted message from the firmware
37938 * @param pWDICtx: pointer to the WLAN DAL context
37939 * pEventData: pointer to the event information structure
37940 *
37941 * @return Result of the function call
37942 */
37943WDI_Status
37944WDI_ProcessEncryptMsgRsp
37945(
37946 WDI_ControlBlockType* pWDICtx,
37947 WDI_EventInfoType* pEventData
37948)
37949{
37950 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
37951 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
37952
37953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37954 "In %s",__func__);
37955
37956 /*-------------------------------------------------------------------------
37957 Sanity check
37958 -------------------------------------------------------------------------*/
37959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37960 ( NULL == pEventData->pEventData))
37961 {
37962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37963 "%s: Invalid parameters", __func__);
37964 WDI_ASSERT(0);
37965 return WDI_STATUS_E_FAILURE;
37966 }
37967
37968 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
37969
37970 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
37971
37972 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
37973 pEventData->pEventData,
37974 pWDICtx->pRspCBUserData);
37975 return WDI_STATUS_SUCCESS;
37976}
Srinivas Dasari32a79262015-02-19 13:04:49 +053037977
37978WDI_Status
37979WDI_NanRequest
37980(
37981 WDI_NanRequestType *pwdiNanRequest,
37982 void *usrData
37983)
37984{
37985 WDI_EventInfoType wdiEventData;
37986
37987 /*------------------------------------------------------------------------
37988 Sanity Check
37989 ------------------------------------------------------------------------*/
37990 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37991 {
37992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37993 "WDI API call before module is initialized - Fail request");
37994
37995 return WDI_STATUS_E_NOT_ALLOWED;
37996 }
37997
37998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37999 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
38000 pwdiNanRequest->request_data_len);
38001
38002 /*------------------------------------------------------------------------
38003 Fill in Event data and post to the Main FSM
38004 ------------------------------------------------------------------------*/
38005 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
38006 wdiEventData.pEventData = pwdiNanRequest;
38007 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
38008 + pwdiNanRequest->request_data_len;
38009 wdiEventData.pUserData = usrData;
38010 wdiEventData.pCBfnc = NULL;
38011
38012
38013 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38014}
38015
38016WDI_Status
38017WDI_ProcessNanRequest
38018(
38019 WDI_ControlBlockType* pWDICtx,
38020 WDI_EventInfoType* pEventData
38021)
38022{
38023 WDI_NanRequestType *pwdiNanRequest = NULL;
38024 wpt_uint8* pSendBuffer = NULL;
38025 wpt_uint16 usDataOffset = 0;
38026 wpt_uint16 usSendSize = 0;
38027
38028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38029 "WDI_ProcessNanRequest");
38030
38031 /*-------------------------------------------------------------------------
38032 Sanity check
38033 -------------------------------------------------------------------------*/
38034 if (( NULL == pEventData ) ||
38035 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
38036 {
38037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38038 "%s: Invalid parameters", __FUNCTION__);
38039 WDI_ASSERT(0);
38040 return WDI_STATUS_E_FAILURE;
38041 }
38042
38043 /*-----------------------------------------------------------------------
38044 Get message buffer
38045 -----------------------------------------------------------------------*/
38046 if (( WDI_STATUS_SUCCESS
38047 != WDI_GetMessageBuffer( pWDICtx,
38048 WDI_NAN_REQUEST,
38049 pwdiNanRequest->request_data_len,
38050 &pSendBuffer,
38051 &usDataOffset,
38052 &usSendSize))||
38053 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
38054 {
38055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038056 "Unable to get send buffer in NAN request %pK %pK",
Srinivas Dasari32a79262015-02-19 13:04:49 +053038057 pEventData, pwdiNanRequest);
38058 WDI_ASSERT(0);
38059 return WDI_STATUS_E_FAILURE;
38060 }
38061
38062 wpalMemoryCopy( pSendBuffer+usDataOffset,
38063 pwdiNanRequest->request_data,
38064 pwdiNanRequest->request_data_len);
38065
38066 pWDICtx->pReqStatusUserData = NULL;
38067 pWDICtx->pfncRspCB = NULL;
38068 vos_mem_free( pEventData->pUserData);
38069
38070 /*-------------------------------------------------------------------------
38071 Send NAN Request to HAL
38072 -------------------------------------------------------------------------*/
38073 return WDI_SendMsg( pWDICtx,
38074 pSendBuffer,
38075 usSendSize,
38076 NULL,
38077 NULL,
38078 WDI_NAN_RESPONSE);
38079}
38080
38081/**
38082 @brief Process NAN Response function (called when a
38083 response is being received over the bus from HAL)
38084
38085 @param pWDICtx: pointer to the WLAN DAL context
38086 pEventData: pointer to the event information structure
38087
38088 @see
38089 @return Result of the function call
38090*/
38091WDI_Status
38092WDI_ProcessNanResponse
38093(
38094 WDI_ControlBlockType* pWDICtx,
38095 WDI_EventInfoType* pEventData
38096)
38097{
38098 WDI_Status wdiStatus;
38099 eHalStatus halStatus;
38100
38101 /*-------------------------------------------------------------------------
38102 Sanity check
38103 -------------------------------------------------------------------------*/
38104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38105 ( NULL == pEventData->pEventData))
38106 {
38107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38108 "%s: Invalid parameters", __func__);
38109 WDI_ASSERT(0);
38110 return WDI_STATUS_E_FAILURE;
38111 }
38112
38113 halStatus = *((eHalStatus*)pEventData->pEventData);
38114 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
38115
38116 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38117 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
38118
38119 return WDI_STATUS_SUCCESS;
38120}/*WDI_ProcessNanResponse*/
38121
38122
38123/**
38124 @brief Process NAN Event function (called when
38125 an indication is being received over the
38126 bus from HAL)
38127
38128 @param pWDICtx: pointer to the WLAN DAL context
38129 pEventData: pointer to the event information structure
38130
38131 @see
38132 @return Result of the function call
38133*/
38134WDI_Status
38135WDI_ProcessNanEvent
38136(
38137 WDI_ControlBlockType* pWDICtx,
38138 WDI_EventInfoType* pEventData
38139)
38140{
38141 WDI_LowLevelIndType wdiInd;
38142
38143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38144
38145 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38146 ( NULL == pEventData->pEventData ))
38147 {
38148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38149 "%s: Invalid parameters", __func__);
38150 WDI_ASSERT( 0 );
38151 return WDI_STATUS_E_FAILURE;
38152 }
38153
38154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38155 "%s: Received NAN event", __func__);
38156 /*-------------------------------------------------------------------------
38157 Extract indication and send it to UMAC
38158 -------------------------------------------------------------------------*/
38159 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
38160 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
38161 pEventData->uEventDataSize;
38162 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
38163 pEventData->pEventData;
38164
38165 /*Notify UMAC*/
38166 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
38167
38168 return WDI_STATUS_SUCCESS;
38169}/*WDI_ProcessNanEvent*/
38170
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053038171
Gupta, Kapil7c34b322015-09-30 13:12:35 +053038172WDI_Status
38173WDI_Process_RssiBreachedInd
38174(
38175 WDI_ControlBlockType* pWDICtx,
38176 WDI_EventInfoType* pEventData
38177)
38178{
38179 WDI_LowLevelIndType wdiInd;
Abhishek Singhe3636482016-02-10 17:43:32 +053038180 tHalRssiMonitorIndParams *halRssiBreachedInd;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053038181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38182
38183 /*-------------------------------------------------------------------------
38184 Sanity check
38185 -------------------------------------------------------------------------*/
38186 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38187 ( NULL == pEventData->pEventData))
38188 {
38189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38190 "%s: Invalid parameters", __func__);
38191 WDI_ASSERT(0);
38192 return WDI_STATUS_E_FAILURE;
38193 }
38194
38195 /*-------------------------------------------------------------------------
38196 Extract indication and send it to UMAC
38197 -------------------------------------------------------------------------*/
Abhishek Singhe3636482016-02-10 17:43:32 +053038198 halRssiBreachedInd = pEventData->pEventData;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053038199
38200 /*Fill in the indication parameters*/
38201 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
Abhishek Singhe3636482016-02-10 17:43:32 +053038202 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id =
38203 halRssiBreachedInd->request_id;
38204 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId,
38205 halRssiBreachedInd->bssId,
38206 WDI_MAC_ADDR_LEN);
38207 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi =
38208 halRssiBreachedInd->rssi;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053038209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38210 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
38211 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
38212 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
38213 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
38214 /*Notify UMAC*/
38215 if (pWDICtx->wdiLowLevelIndCB)
38216 {
38217 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
38218 }
38219
38220 return WDI_STATUS_SUCCESS;
38221
38222}
38223
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053038224
38225WDI_Status
38226WDI_Process_LostLinkParamInd
38227(
38228 WDI_ControlBlockType* pWDICtx,
38229 WDI_EventInfoType* pEventData
38230)
38231{
38232 WDI_LowLevelIndType wdiInd;
38233 tHalLostLinkParametersIndParams halLostLinkParamInd;
38234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38235
38236 /*-------------------------------------------------------------------------
38237 Sanity check
38238 -------------------------------------------------------------------------*/
38239 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38240 ( NULL == pEventData->pEventData))
38241 {
38242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38243 "%s: Invalid parameters", __func__);
38244 WDI_ASSERT(0);
38245 return WDI_STATUS_E_FAILURE;
38246 }
38247
38248 /*-------------------------------------------------------------------------
38249 Extract indication and send it to UMAC
38250 -------------------------------------------------------------------------*/
38251 wpalMemoryCopy( (void *)&halLostLinkParamInd,
38252 pEventData->pEventData,
38253 sizeof(tHalLostLinkParametersIndParams));
38254
38255
38256 /*Fill in the indication parameters*/
38257 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
38258 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
38259 (void *)&halLostLinkParamInd,
38260 sizeof(WDI_LostLinkParamsIndType));
38261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38262 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
38263 "linkFlTx : %d,lastDataRate : %d", __func__,
38264 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
38265 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
38266 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
38267 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
38268 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
38269 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
38270 /*Notify UMAC*/
38271 if (pWDICtx->wdiLowLevelIndCB)
38272 {
38273 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
38274 }
38275
38276 return WDI_STATUS_SUCCESS;
38277
38278}
38279
Abhishek Singh41988ba2015-05-25 19:42:29 +053038280WDI_Status
38281WDI_ProcessSetRtsCtsHtvhtInd
38282(
38283 WDI_ControlBlockType* pWDICtx,
38284 WDI_EventInfoType* pEventData
38285)
38286{
38287 wpt_uint8* pSendBuffer = NULL;
38288 wpt_uint16 usDataOffset = 0;
38289 wpt_uint16 usSendSize = 0;
38290 wpt_uint32 *rtsCtsVal;
38291 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
38292 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38293
38294
38295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38296
38297 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38298 "%s", __func__);
38299
38300 /*-------------------------------------------------------------------------
38301 Sanity check
38302 -------------------------------------------------------------------------*/
38303 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38304 {
38305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38306 "%s: Invalid parameters", __func__);
38307 WDI_ASSERT(0);
38308 return WDI_STATUS_E_FAILURE;
38309 }
38310 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
38311 /*-----------------------------------------------------------------------
38312 Get message buffer
38313 -----------------------------------------------------------------------*/
38314
38315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38316 WDI_SET_RTS_CTS_HTVHT_IND,
38317 sizeof(tHalRtsCtsHtvhtIndParams),
38318 &pSendBuffer, &usDataOffset, &usSendSize))||
38319 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
38320 {
38321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038322 "Unable to get send buffer in RTS CTS ind %pK ",
Abhishek Singh41988ba2015-05-25 19:42:29 +053038323 pEventData);
38324 WDI_ASSERT(0);
38325 return WDI_STATUS_E_FAILURE;
38326 }
38327 rtsCtsHtvhtIndParams =
38328 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
38329 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
38330
38331 pWDICtx->pReqStatusUserData = NULL;
38332 pWDICtx->pfncRspCB = NULL;
38333 /*-------------------------------------------------------------------------
38334 Send SET_RTS_CTS_HTVHT Indication to HAL
38335 -------------------------------------------------------------------------*/
38336 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38337 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38338}
38339
38340WDI_Status
38341WDI_SetRtsCtsHTVhtInd
38342(
38343 wpt_uint32 rtsCtsVal
38344)
38345{
38346 WDI_EventInfoType wdiEventData;
38347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38348
38349 /*------------------------------------------------------------------------
38350 Sanity Check
38351 ------------------------------------------------------------------------*/
38352 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38353 {
38354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38355 "WDI API call before module is initialized - Fail request");
38356 return WDI_STATUS_E_NOT_ALLOWED;
38357 }
38358
38359 /*------------------------------------------------------------------------
38360 Fill in Event data and post to the Main FSM
38361 ------------------------------------------------------------------------*/
38362 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
38363 wdiEventData.pEventData = (void *) &rtsCtsVal;
38364 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
38365 wdiEventData.pCBfnc = NULL;
38366 wdiEventData.pUserData = NULL;
38367
38368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38369
38370}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053038371
38372WDI_Status
38373WDI_ProcessEnableDisableCAEventInd
38374(
38375 WDI_ControlBlockType* pWDICtx,
38376 WDI_EventInfoType* pEventData
38377)
38378{
38379 wpt_uint8* pSendBuffer = NULL;
38380 wpt_uint16 usDataOffset = 0;
38381 wpt_uint16 usSendSize = 0;
38382 wpt_uint32 *val;
38383 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
38384 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38385
38386
38387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38388
38389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38390 "%s", __func__);
38391
38392 /*-------------------------------------------------------------------------
38393 Sanity check
38394 -------------------------------------------------------------------------*/
38395 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38396 {
38397 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38398 "%s: Invalid parameters", __func__);
38399 WDI_ASSERT(0);
38400 return WDI_STATUS_E_FAILURE;
38401 }
38402 val = (wpt_uint32*)pEventData->pEventData;
38403 /*-----------------------------------------------------------------------
38404 Get message buffer
38405 -----------------------------------------------------------------------*/
38406
38407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38408 WDI_SEND_FREQ_RANGE_CONTROL_IND,
38409 sizeof(tHalAvoidFreqRangeCtrlParam),
38410 &pSendBuffer, &usDataOffset, &usSendSize))||
38411 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
38412 {
38413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038414 "Unable to get send buffer in Channel Avoidance Ind %pK ",
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053038415 pEventData);
38416 WDI_ASSERT(0);
38417 return WDI_STATUS_E_FAILURE;
38418 }
38419 avoidFreqRangeCtrlParam =
38420 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
38421 avoidFreqRangeCtrlParam->status = *val;
38422
38423 pWDICtx->pReqStatusUserData = NULL;
38424 pWDICtx->pfncRspCB = NULL;
38425 /*-------------------------------------------------------------------------
38426 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
38427 -------------------------------------------------------------------------*/
38428 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38429 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38430}
38431
38432WDI_Status
38433WDI_EnableDisableCAEventInd
38434(
38435 wpt_uint32 val
38436)
38437{
38438 WDI_EventInfoType wdiEventData;
38439 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38440
38441 /*------------------------------------------------------------------------
38442 Sanity Check
38443 ------------------------------------------------------------------------*/
38444 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38445 {
38446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38447 "WDI API call before module is initialized - Fail request");
38448 return WDI_STATUS_E_NOT_ALLOWED;
38449 }
38450
38451 /*------------------------------------------------------------------------
38452 Fill in Event data and post to the Main FSM
38453 ------------------------------------------------------------------------*/
38454 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
38455 wdiEventData.pEventData = (void *) &val;
38456 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
38457 wdiEventData.pCBfnc = NULL;
38458 wdiEventData.pUserData = NULL;
38459
38460 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38461
38462} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053038463
38464/**
38465 @brief WDI_WifiConfigSetReq
38466 This API is called to set WifiConfig params request in FW
38467
38468 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
38469 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
38470 usrData : Client context
38471 @see
38472 @return SUCCESS or FAIL
38473*/
38474WDI_Status
38475WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
38476 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
38477 void* pUserData)
38478{
38479 WDI_EventInfoType wdiEventData;
38480
38481 /*------------------------------------------------------------------------
38482 Sanity Check
38483 ------------------------------------------------------------------------*/
38484 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38485 {
38486 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
38487 "WDI API call before module is initialized - Fail request");
38488
38489 return WDI_STATUS_E_NOT_ALLOWED;
38490 }
38491
38492 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
38493 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
38494 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
38495 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
38496 wdiEventData.pUserData = pUserData;
38497
38498 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38499}
38500
38501/**
38502 @brief WDI_ProcessWifiConfigReq -
38503 Set WifiConfig request to FW
38504
38505 @param pWDICtx : wdi context
38506 pEventData : indication data
38507
38508 @see
38509 @return none
38510*/
38511 WDI_Status
38512 WDI_ProcessWifiConfigReq
38513 (
38514 WDI_ControlBlockType* pWDICtx,
38515 WDI_EventInfoType* pEventData
38516 )
38517 {
38518 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
38519 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
38520 wpt_uint8* pSendBuffer = NULL;
38521 wpt_uint16 usSendSize = 0;
38522 wpt_uint16 usDataOffset = 0;
38523 tSetWifiConfigParamsReq halWifiConfigSetParams;
38524
38525 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
38526 ( NULL == pEventData->pCBfnc ))
38527 {
38528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38529 "%s: Invalid parameters", __func__);
38530 WDI_ASSERT(0);
38531 return WDI_STATUS_E_FAILURE;
38532 }
38533 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
38534 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
38535
38536 /*-----------------------------------------------------------------------
38537 Get message buffer
38538 ! TO DO : proper conversion into the HAL Message Request Format
38539 -----------------------------------------------------------------------*/
38540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
38541 pWDICtx,
38542 WDI_WIFI_CONFIG_SET_REQ,
38543 sizeof(halWifiConfigSetParams.wifiConfigParams),
38544 &pSendBuffer, &usDataOffset,
38545 &usSendSize))||
38546 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
38547 {
38548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038549 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053038550 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
38551 WDI_ASSERT(0);
38552 return WDI_STATUS_E_FAILURE;
38553 }
38554
38555 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
38556 halWifiConfigSetParams.wifiConfigParams.paramValue =
38557 pwdiWifiConfigSetReqParams->paramValue;
38558 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
38559 sizeof(tSirMacAddr));
38560
38561 wpalMemoryCopy(pSendBuffer+usDataOffset,
38562 &halWifiConfigSetParams.wifiConfigParams,
38563 sizeof(halWifiConfigSetParams.wifiConfigParams));
38564
38565 pWDICtx->pReqStatusUserData = pEventData->pUserData;
38566
38567 /*-------------------------------------------------------------------------
38568 Send Clear Link Layer Stats Request to HAL
38569 -------------------------------------------------------------------------*/
38570 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
38571 wdiWifiConfigSetRspCb, pEventData->pUserData,
38572 WDI_WIFI_CONFIG_SET_RSP);
38573 }
38574
38575WDI_Status
38576WDI_ProcessWificonfigSetRsp
38577( WDI_ControlBlockType* pWDICtx,
38578 WDI_EventInfoType* pEventData )
38579
38580{
38581 tHalSetWifiConfigRspParams halRsp;
38582 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
38583 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
38584
38585 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38586 "%s: %d Enter",__func__, __LINE__);
38587
38588 /*-------------------------------------------------------------------------
38589 Sanity check
38590 -------------------------------------------------------------------------*/
38591 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38592 ( NULL == pEventData->pEventData))
38593 {
38594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38595 "%s: Invalid parameters", __func__);
38596 WDI_ASSERT(0);
38597 return WDI_STATUS_E_FAILURE;
38598 }
38599 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
38600
38601 /*-------------------------------------------------------------------------
38602 Extract response and send it to UMAC
38603 -------------------------------------------------------------------------*/
38604 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
38605
38606 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
38607
38608 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38609 "WifiConfig RSP status = %d",
38610 wdiWifconfigSetRsp.wificonfigset_status);
38611 /*Notify UMAC*/
38612 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
38613
38614 return WDI_STATUS_SUCCESS;
38615}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038616
38617#ifdef FEATURE_OEM_DATA_SUPPORT
38618
38619/**
38620 @brief WDI_StartOemDataReqIndNew
38621
38622 @param pOemDataReqNewConfig: Req parameter for the FW
38623
38624 @return SUCCESS or FAIL
38625*/
38626WDI_Status
38627WDI_StartOemDataReqIndNew
38628(
38629 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
38630)
38631{
38632 WDI_EventInfoType wdiEventData;
38633
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038634 /*------------------------------------------------------------------------
38635 Sanity Check
38636 ------------------------------------------------------------------------*/
38637 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38638 {
38639 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
38640 "WDI API call before module is initialized - Fail request");
38641
38642 return WDI_STATUS_E_NOT_ALLOWED;
38643 }
38644
38645 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
38646 wdiEventData.pEventData = pOemDataReqNewConfig;
38647 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
38648 wdiEventData.pCBfnc = NULL;
38649 wdiEventData.pUserData = NULL;
38650
38651 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38652}
38653
38654/**
38655 @brief WDI_ProcessStartOemDataReqIndNew -
38656 Send OEM Data request new indication to FW
38657
38658 @param pWDICtx : wdi context
38659 pEventData : indication data
38660
38661 @see
38662 @return none
38663*/
38664WDI_Status
38665WDI_ProcessStartOemDataReqIndNew
38666(
38667 WDI_ControlBlockType* pWDICtx,
38668 WDI_EventInfoType* pEventData
38669)
38670{
38671 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
38672 wpt_uint8* pSendBuffer = NULL;
38673 wpt_uint16 usSendSize = 0;
38674 wpt_uint16 usDataOffset = 0;
38675 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
38676 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38677
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038678 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38679 ( NULL == pEventData->pEventData))
38680 {
38681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38682 "%s: Invalid parameters", __func__);
38683 WDI_ASSERT(0);
38684 return WDI_STATUS_E_FAILURE;
38685 }
38686
38687 wdiOemDataReqNewConfig =
38688 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
38689
38690 /*-----------------------------------------------------------------------
38691 Get message buffer
38692 -----------------------------------------------------------------------*/
38693 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
38694 pWDICtx,
38695 WDI_START_OEM_DATA_REQ_IND_NEW,
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038696 sizeof(*pHalStartOemDataReqParamsNew),
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038697 &pSendBuffer, &usDataOffset,
38698 &usSendSize))||
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038699 ( usSendSize < (usDataOffset + sizeof(*pHalStartOemDataReqParamsNew) )))
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038700 {
38701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038702 "Unable to get send buffer in %s %pK %pK", __func__,
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038703 pEventData, wdiOemDataReqNewConfig);
38704 WDI_ASSERT(0);
38705 return WDI_STATUS_E_FAILURE;
38706 }
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038707
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038708 pHalStartOemDataReqParamsNew =
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038709 (tpStartOemDataReqParamsNew) (pSendBuffer + usDataOffset);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038710
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038711 wpalMemoryCopy(pHalStartOemDataReqParamsNew,
38712 wdiOemDataReqNewConfig,
38713 sizeof(*pHalStartOemDataReqParamsNew));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038714
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038715 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38716 "%s: selfMacAddr: " MAC_ADDRESS_STR" ", __func__,
38717 MAC_ADDR_ARRAY(pHalStartOemDataReqParamsNew->selfMacAddr));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038718
38719 pWDICtx->pReqStatusUserData = NULL;
38720 pWDICtx->pfncRspCB = NULL;
38721
38722 /*-------------------------------------------------------------------------
38723 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
38724 -------------------------------------------------------------------------*/
38725 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38726 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38727}
38728
38729/**
38730 @brief Process OemDataRsp New Indication indication from FW
38731
38732 @param pWDICtx: pointer to the WLAN DAL context
38733 pEventData: pointer to the event information structure
38734
38735 @see
38736 @return Result of the function call
38737*/
38738WDI_Status
38739WDI_ProcessStartOemDataRspIndNew
38740(
38741 WDI_ControlBlockType* pWDICtx,
38742 WDI_EventInfoType* pEventData
38743)
38744{
38745 WDI_LowLevelIndType wdiInd;
38746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38747
38748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38749 "%s: ", __func__);
38750
38751 /* sanity check */
38752 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38753 ( NULL == pEventData->pEventData))
38754 {
38755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38756 "%s: Invalid parameters", __func__);
38757 WDI_ASSERT(0);
38758 return WDI_STATUS_E_FAILURE;
38759 }
38760
38761 /* Fill in the indication parameters */
38762 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
38763
Padma, Santhosh Kumarf75c37b2016-01-25 10:36:08 +053038764 wdiInd.wdiIndicationData.wdiOemDataRspNew.pOemRspNewIndData =
38765 (void *)pEventData->pEventData;
38766 wdiInd.wdiIndicationData.wdiOemDataRspNew.OemRspNewLen =
38767 pEventData->uEventDataSize;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038768 /* Notify UMAC */
38769 if (pWDICtx->wdiLowLevelIndCB)
38770 {
38771 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
38772 }
38773 else
38774 {
38775 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38776 "%s: WDILowLevelIndCb is null", __func__);
38777 WDI_ASSERT(0);
38778 return WDI_STATUS_E_FAILURE;
38779 }
38780 return WDI_STATUS_SUCCESS;
38781} /* End of WDI_ProcessEXTScanResultInd */
38782
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053038783/**
38784 @brief Process Current Antenna Index information from FW
38785
38786 @param pWDICtx: pointer to the WLAN DAL context
38787 pEventData: pointer to the event information structure
38788
38789 @see
38790 @return Result of the function call
38791*/
38792WDI_Status
38793WDI_ProcessGetCurrentAntennaIndexRsp
38794(
38795 WDI_ControlBlockType* pWDICtx,
38796 WDI_EventInfoType* pEventData
38797)
38798{
38799 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
38800 tHalAntennaDiversitySelectionRspParams *pHalAntDivSelRsp;
38801
38802 /*-------------------------------------------------------------------------
38803 Sanity check
38804 -------------------------------------------------------------------------*/
38805 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38806 ( NULL == pEventData->pEventData))
38807 {
38808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38809 "%s: Invalid parameters", __func__);
38810 WDI_ASSERT(0);
38811 return WDI_STATUS_E_FAILURE;
38812 }
38813 pHalAntDivSelRsp =
38814 (tHalAntennaDiversitySelectionRspParams*)pEventData->pEventData;
38815 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pWDICtx->pfncRspCB;
38816
38817 if (pHalAntDivSelRsp->status != 0)
38818 {
38819 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_E_FAILURE,
38820 (void *)pHalAntDivSelRsp, pWDICtx->pRspCBUserData);
38821 }
38822 else
38823 {
38824 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_SUCCESS,
38825 (void *)pHalAntDivSelRsp,
38826 pWDICtx->pRspCBUserData);
38827 }
38828
38829 return WDI_STATUS_SUCCESS;
38830}
38831
38832/**
38833 @brief Process Get Current Antenna Index request command
38834
38835 @param pWDICtx: pointer to the WLAN DAL context
38836 pEventData: pointer to the event information structure
38837
38838 @see
38839 @return Result of the function call
38840*/
38841WDI_Status
38842WDI_ProcessGetCurrentAntennaIndex
38843(
38844 WDI_ControlBlockType* pWDICtx,
38845 WDI_EventInfoType* pEventData
38846)
38847{
38848 wpt_uint8* pSendBuffer = NULL;
38849 wpt_uint16 usDataOffset = 0;
38850 wpt_uint16 usSendSize = 0;
38851 tHalAntennaDiversitySelectionReqParams halAntDivSelReq;
38852 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
38853
38854 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38855 "%s", __func__);
38856
38857 /*-------------------------------------------------------------------------
38858 Sanity check
38859 -------------------------------------------------------------------------*/
38860 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
38861 ( NULL == pEventData->pCBfnc ))
38862 {
38863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38864 "%s: Invalid parameters", __func__);
38865 WDI_ASSERT(0);
38866 return WDI_STATUS_E_FAILURE;
38867 }
38868 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pEventData->pCBfnc;
38869
38870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38871 WDI_ANTENNA_DIVERSITY_SELECTION_REQ,
38872 sizeof(tHalAntennaDiversitySelectionReqParams),
38873 &pSendBuffer, &usDataOffset, &usSendSize))||
38874 ( usSendSize < (usDataOffset +
38875 sizeof(tHalAntennaDiversitySelectionReqParams) )))
38876 {
38877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038878 "Unable to get send buffer in GetCurrentAntennaIndex %pK",
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053038879 pEventData);
38880 WDI_ASSERT(0);
38881 return WDI_STATUS_E_FAILURE;
38882 }
38883 pWDICtx->wdiReqStatusCB = NULL;
38884 pWDICtx->pReqStatusUserData = pEventData->pEventData;
38885 halAntDivSelReq.reserved = *((wpt_uint32 *)(pEventData->pEventData));
38886 wpalMemoryCopy( pSendBuffer+usDataOffset,
38887 &halAntDivSelReq,
38888 sizeof(tHalAntennaDiversitySelectionReqParams));
38889
38890 /*-------------------------------------------------------------------------
38891 Send Get STA Request to HAL
38892 -------------------------------------------------------------------------*/
38893 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
38894 wdiGetCurrentAntennaIndexRspCb,
38895 pEventData->pUserData,
38896 WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
38897}
38898
38899/**
38900 @brief WDI_GetCurrentAntennaIndex
38901
38902 @param pOemDataReqNewConfig: Req parameter for the FW
38903
38904 @return SUCCESS or FAIL
38905*/
38906WDI_Status
38907WDI_GetCurrentAntennaIndex
38908(
38909 void *pUserData,
38910 WDI_AntennaDivSelRspCb wdiAntennaDivSelRspCb,
38911 wpt_uint32 reserved
38912)
38913{
38914 WDI_EventInfoType wdiEventData;
38915
38916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38917
38918 /*------------------------------------------------------------------------
38919 Sanity Check
38920 ------------------------------------------------------------------------*/
38921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38922 {
38923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38924 "WDI API call before module is initialized - Fail request");
38925 return WDI_STATUS_E_NOT_ALLOWED;
38926 }
38927 /*------------------------------------------------------------------------
38928 Fill in Event data and post to the Main FSM
38929 ------------------------------------------------------------------------*/
38930 wdiEventData.wdiRequest = WDI_ANTENNA_DIVERSITY_SELECTION_REQ;
38931 wdiEventData.pEventData = (void *)&reserved;
38932 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
38933 wdiEventData.pCBfnc = wdiAntennaDivSelRspCb;
38934 wdiEventData.pUserData = pUserData;
38935
38936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38937}
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053038938
38939/**
38940 @brief Process Set beacon miss penalty count command
38941
38942 @param pWDICtx: pointer to the WLAN DAL context
38943 pEventData: pointer to the event information structure
38944
38945 @see
38946 @return Result of the function call
38947*/
38948WDI_Status
38949WDI_ProcessBcnMissPenaltyCount
38950(
38951 WDI_ControlBlockType* pWDICtx,
38952 WDI_EventInfoType* pEventData
38953)
38954{
38955 wpt_uint8* pSendBuffer = NULL;
38956 wpt_uint16 usDataOffset = 0;
38957 wpt_uint16 usSendSize = 0;
38958 tHalModifyRoamParamsIndParams halModifyRoamParams;
38959 WDI_ModifyRoamParamsReqType *modifyRoamParams;
38960 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38961
38962 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38963
38964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38965 "%s", __func__);
38966 /*-------------------------------------------------------------------------
38967 Sanity check
38968 -------------------------------------------------------------------------*/
38969 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38970 {
38971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38972 "%s: Invalid parameters", __func__);
38973 WDI_ASSERT(0);
38974 return WDI_STATUS_E_FAILURE;
38975 }
38976
38977 /*-----------------------------------------------------------------------
38978 Get message buffer
38979 -----------------------------------------------------------------------*/
38980
38981 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38982 WDI_MODIFY_ROAM_PARAMS_IND,
38983 sizeof(tHalModifyRoamParamsIndParams),
38984 &pSendBuffer, &usDataOffset, &usSendSize))||
38985 ( usSendSize < (usDataOffset + sizeof(tHalModifyRoamParamsIndParams) )))
38986 {
38987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038988 "Unable to get send buffer for Modify roam req params %pK ",
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053038989 pEventData);
38990 WDI_ASSERT(0);
38991 return WDI_STATUS_E_FAILURE;
38992 }
38993
38994 modifyRoamParams = (WDI_ModifyRoamParamsReqType *)pEventData->pEventData;
38995 halModifyRoamParams.param = modifyRoamParams->param;
38996 halModifyRoamParams.value = modifyRoamParams->value;
38997 wpalMemoryCopy( pSendBuffer+usDataOffset, &halModifyRoamParams,
38998 sizeof(halModifyRoamParams));
38999 pWDICtx->pReqStatusUserData = NULL;
39000 pWDICtx->pfncRspCB = NULL;
39001
39002 /*-------------------------------------------------------------------------
39003 Send WDI_MODIFY_ROAM_PARAMS_IND to HAL
39004 -------------------------------------------------------------------------*/
39005 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
39006 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
39007
39008}
39009
39010/**
39011 @brief WDI_SetBcnMissPenaltyCount
39012
39013 @param params: Req parameter for the FW
39014
39015 @return SUCCESS or FAIL
39016*/
39017
39018WDI_Status
39019WDI_SetBcnMissPenaltyCount
39020(
39021 WDI_ModifyRoamParamsReqType *params
39022)
39023{
39024 WDI_EventInfoType wdiEventData;
39025
39026 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39027
39028 /*------------------------------------------------------------------------
39029 Sanity Check
39030 ------------------------------------------------------------------------*/
39031 if ( eWLAN_PAL_FALSE == gWDIInitialized )
39032 {
39033 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39034 "WDI API call before module is initialized - Fail request");
39035 return WDI_STATUS_E_NOT_ALLOWED;
39036 }
39037
39038 /*------------------------------------------------------------------------
39039 Fill in Event data and post to the Main FSM
39040 ------------------------------------------------------------------------*/
39041 wdiEventData.wdiRequest = WDI_MODIFY_ROAM_PARAMS_IND;
39042 wdiEventData.pEventData = (void *)params;
39043 wdiEventData.uEventDataSize = sizeof(*params);
39044 wdiEventData.pCBfnc = NULL;
39045 wdiEventData.pUserData = NULL;
39046
39047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39048
39049} /* WDI_SetBcnMissPenaltyCount */
39050
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053039051#endif
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053039052
Kapil Gupta3d923fb2016-12-20 18:59:27 +053039053#ifdef WLAN_FEATURE_APFIND
39054WDI_Status WDI_ProcessApFindInd(WDI_ControlBlockType *pWDICtx,
39055 WDI_EventInfoType *pEventData)
39056{
39057 wpt_uint8* pSendBuffer = NULL;
39058 wpt_uint16 usDataOffset = 0;
39059 wpt_uint16 usSendSize = 0;
39060 struct WDI_APFind_cmd *pwdiapFindRequestInd;
39061 tQRFPrefNetwListParams *phalAPFindRequestParam;
39062 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
39063 wpt_uint16 buffer_len = 0;
39064
39065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39066
39067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39068 "%s", __func__);
39069
39070 /*-------------------------------------------------------------------------
39071 Sanity check
39072 ------------------------------------------------------------------------*/
39073 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
39074 {
39075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39076 "%s: Invalid parameters", __func__);
39077 WDI_ASSERT(0);
39078 return WDI_STATUS_E_FAILURE;
39079 }
39080 pwdiapFindRequestInd = (struct WDI_APFind_cmd *)pEventData->pEventData;
39081 if (pwdiapFindRequestInd->data_len)
39082 buffer_len = sizeof(tQRFPrefNetwListParams);
39083 /*-----------------------------------------------------------------------
39084 Get message buffer
39085 -----------------------------------------------------------------------*/
39086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
39087 WDI_SET_AP_FIND_IND,
39088 buffer_len,
39089 &pSendBuffer, &usDataOffset, &usSendSize))||
39090 ( usSendSize < (usDataOffset + sizeof(tQRFPrefNetwListParams) )))
39091 {
39092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039093 "Unable to get send buffer in QRF command %pK ",
Kapil Gupta3d923fb2016-12-20 18:59:27 +053039094 pEventData);
39095 WDI_ASSERT(0);
39096 return WDI_STATUS_E_FAILURE;
39097 }
39098 phalAPFindRequestParam =
39099 (tQRFPrefNetwListParams *)(pSendBuffer + usDataOffset);
39100
39101 wpalMemoryCopy(phalAPFindRequestParam,
39102 &pwdiapFindRequestInd->data[0],
39103 pwdiapFindRequestInd->data_len);
39104
39105 pWDICtx->pReqStatusUserData = NULL;
39106 pWDICtx->pfncRspCB = NULL;
39107 /*-------------------------------------------------------------------------
39108 Send WDI_SET_AP_FIND_IND Indication to HAL
39109 -------------------------------------------------------------------------*/
39110
39111 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
39112
39113 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
39114
39115}
39116
39117WDI_Status WDI_process_ap_find_cmd(struct WDI_APFind_cmd *params)
39118{
39119 WDI_EventInfoType wdiEventData;
39120
39121 if (eWLAN_PAL_FALSE == gWDIInitialized)
39122 {
39123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39124 "WDI API call before module is initialized - Fail req");
39125 return WDI_STATUS_E_NOT_ALLOWED;
39126 }
39127
39128 wdiEventData.wdiRequest = WDI_SET_AP_FIND_IND;
39129 wdiEventData.pEventData = params;
39130 wdiEventData.uEventDataSize = sizeof(*params);
39131 wdiEventData.pCBfnc = NULL;
39132 wdiEventData.pUserData = NULL;
39133
39134 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39135
39136}
39137#endif
39138
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053039139/**
39140 * WDI_ProcessSetAllowedActionFramesInd() - Process Allowed action frames
39141 * Indication message and post it to HAL
39142 *
39143 * @pWDICtx: pointer to the WLAN DAL context
39144 * @pEventData: pointer to the event information structure
39145 *
39146 * Return: WDI_Status enumeration
39147 */
39148WDI_Status WDI_ProcessSetAllowedActionFramesInd(WDI_ControlBlockType *pWDICtx,
39149 WDI_EventInfoType *pEventData)
39150{
39151 wpt_uint8 *pSendBuffer;
39152 wpt_uint16 usDataOffset;
39153 wpt_uint16 usSendSize;
39154 wpt_uint16 usLen;
39155 struct WDI_AllowedActionFramesInd* pwdiAllowedActionFramesInd;
39156 tHalAllowedActionFrames* pAllowedActionFrames;
39157 WDI_Status wdiStatus;
39158
39159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
39160 "%s", __func__);
39161
39162 if ((!pEventData) || (!pEventData->pEventData))
39163 {
39164 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39165 "%s: Invalid parameters", __func__);
39166 WDI_ASSERT(0);
39167 return WDI_STATUS_E_FAILURE;
39168 }
Abhinav Kumar7c9c3502018-02-26 15:41:14 +053039169 /*-----------------------------------------------------------------------
39170 Get message buffer
39171 -----------------------------------------------------------------------*/
39172 usLen = sizeof(tHalAllowedActionFrames);
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053039173
39174 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
39175 WDI_SET_ALLOWED_ACTION_FRAMES_IND,
39176 sizeof(tHalAllowedActionFrames),
39177 &pSendBuffer, &usDataOffset,
39178 &usSendSize))||
39179 (usSendSize < (usDataOffset + usLen)))
39180 {
39181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039182 "Unable to get send buffer in Allowed Action Frames req %pK",
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053039183 pEventData);
39184 return WDI_STATUS_E_FAILURE;
39185 }
39186
39187 pwdiAllowedActionFramesInd =
39188 (struct WDI_AllowedActionFramesInd*)pEventData->pEventData;
39189 pAllowedActionFrames =
39190 (tHalAllowedActionFrames*)(pSendBuffer+usDataOffset);
39191 pAllowedActionFrames->actionFramesBitMask =
39192 pwdiAllowedActionFramesInd->bitmask;
39193 pAllowedActionFrames->reserved = pwdiAllowedActionFramesInd->reserved;
39194
39195 pWDICtx->pReqStatusUserData = NULL;
39196 pWDICtx->pfncRspCB = NULL;
39197
39198 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
39199 return (wdiStatus != WDI_STATUS_SUCCESS) ?
39200 wdiStatus:WDI_STATUS_SUCCESS_SYNC;
39201}/*WDI_ProcessSetAllowedActionFramesInd*/
39202
39203/**
39204 * WDI_SetAllowedActionFramesInd() - Post Allowed Action Frames Indication to
39205 * WDI Main Event Handler
39206 * @params: pointer to the WDI_AllowedActionFramesInd structure
39207 *
39208 * Return: WDI_Status enumeration
39209 */
39210WDI_Status WDI_SetAllowedActionFramesInd(
39211 struct WDI_AllowedActionFramesInd *params)
39212{
39213 WDI_EventInfoType wdiEventData;
39214
39215 if (eWLAN_PAL_FALSE == gWDIInitialized)
39216 {
39217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39218 "WDI API call before module is initialized - Fail req");
39219 return WDI_STATUS_E_NOT_ALLOWED;
39220 }
39221
39222 wdiEventData.wdiRequest = WDI_SET_ALLOWED_ACTION_FRAMES_IND;
39223 wdiEventData.pEventData = params;
39224 wdiEventData.uEventDataSize = sizeof(*params);
39225 wdiEventData.pCBfnc = NULL;
39226 wdiEventData.pUserData = NULL;
39227
39228 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39229}
Anurag Chouhan6ee81542017-02-09 18:09:27 +053039230
39231/**
39232 * WDI_ProcessSetArpStatsReq() - WDI api to process arp stats request
39233 * @pWDICtx: wdi context
39234 * @pEventData: event data
39235 *
39236 * Return: WDI_Status
39237 */
39238WDI_Status
39239WDI_ProcessSetArpStatsReq
39240(
39241 WDI_ControlBlockType* pWDICtx,
39242 WDI_EventInfoType* pEventData
39243)
39244{
39245 WDI_SetARPStatsParamsInfoType *pSetARPStatsReqParams;
39246 WDI_SetARPStatsRspCb wdiSetARPStatsRspCb;
39247 wpt_uint8* pSendBuffer;
39248 wpt_uint16 usDataOffset;
39249 wpt_uint16 usSendSize;
39250 WDI_Status wdi_status;
39251 tHalStatsArpReqMsg statsReqParams;
39252
39253 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39254 "%s: %d Enter",__func__, __LINE__);
39255
39256 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
39257 ( NULL == pWDICtx ) )
39258 {
39259 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39260 "%s: Invalid parameters", __func__);
39261 WDI_ASSERT(0);
39262 return WDI_STATUS_E_FAILURE;
39263 }
39264
39265 pSetARPStatsReqParams =
39266 (WDI_SetARPStatsParamsInfoType *)pEventData->pEventData;
39267 wdiSetARPStatsRspCb = (WDI_SetARPStatsRspCb)pEventData->pCBfnc;
39268
39269 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx, WDI_FW_ARP_STATS_REQ,
39270 sizeof(statsReqParams.statsArpReqParams),
39271 &pSendBuffer, &usDataOffset, &usSendSize))||
39272 ( usSendSize < (usDataOffset + sizeof(statsReqParams.statsArpReqParams))))
39273 {
39274 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039275 "Unable to get send buffer in set bss key req %pK %pK %pK",
Anurag Chouhan6ee81542017-02-09 18:09:27 +053039276 pEventData, pSetARPStatsReqParams, wdiSetARPStatsRspCb);
39277 WDI_ASSERT(0);
39278 return WDI_STATUS_E_FAILURE;
39279 }
39280
39281 statsReqParams.statsArpReqParams.set_clr = pSetARPStatsReqParams->flag;
39282 statsReqParams.statsArpReqParams.pkt_type =
39283 pSetARPStatsReqParams->pkt_type;
39284 statsReqParams.statsArpReqParams.ip_addr = pSetARPStatsReqParams->ip_addr;
39285
39286 wpalMemoryCopy( pSendBuffer+usDataOffset,
39287 &statsReqParams.statsArpReqParams,
39288 sizeof(statsReqParams.statsArpReqParams));
39289
39290 wdi_status = WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
39291 wdiSetARPStatsRspCb, pEventData->pUserData,
39292 WDI_FW_ARP_STATS_RSP);
39293
39294 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39295 "%s: %d Exit",__func__, __LINE__);
39296 return wdi_status;
39297}
39298
39299/**
39300 * WDI_SetARPStatsReq() - WDI api to process set arp stats request
39301 * @pwdiSetStatsReqParams: pointer to set stats params
39302 * @wdiSetStatsRspCb: pointer to set response callback
39303 * @pUserData: user data
39304 *
39305 * Return: WDI_Status
39306 */
39307WDI_Status
39308WDI_SetARPStatsReq
39309(
39310 WDI_SetARPStatsParamsInfoType* pwdiSetStatsReqParams,
39311 WDI_SetARPStatsRspCb wdiSetStatsRspCb,
39312 void* pUserData
39313)
39314{
39315 WDI_EventInfoType wdiEventData;
39316
39317 if (eWLAN_PAL_FALSE == gWDIInitialized )
39318 {
39319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39320 "WDI API call before module is initialized - Fail request");
39321
39322 return WDI_STATUS_E_NOT_ALLOWED;
39323 }
39324
39325 wdiEventData.wdiRequest = WDI_FW_ARP_STATS_REQ;
39326 wdiEventData.pEventData = pwdiSetStatsReqParams;
39327 wdiEventData.uEventDataSize = sizeof(*pwdiSetStatsReqParams);
39328 wdiEventData.pCBfnc = wdiSetStatsRspCb;
39329 wdiEventData.pUserData = pUserData;
39330
39331 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39332
39333}/*WDI_GetARPStatsReq*/
39334
39335/**
39336 * WDI_ProcessGetArpStatsReq() - WDI api to process get arp stats request
39337 * @pWDICtx: wdi context
39338 * @pEventData: event data
39339 *
39340 * Return: WDI_Status
39341 */
39342WDI_Status
39343WDI_ProcessGetArpStatsReq
39344(
39345 WDI_ControlBlockType* pWDICtx,
39346 WDI_EventInfoType* pEventData
39347)
39348{
39349 WDI_GetARPStatsParamsInfoType *pGetARPStatsReqParams;
39350 WDI_GetARPStatsRspCb wdiGetARPStatsRspCb;
39351 wpt_uint8* pSendBuffer;
39352 wpt_uint16 usDataOffset;
39353 wpt_uint16 usSendSize;
39354 WDI_Status wdi_status;
39355 tHalStatsGetArpReqMsg statsReqParams;
39356
39357 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39358 "%s: %d Enter",__func__, __LINE__);
39359
39360 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
39361 ( NULL == pWDICtx ) )
39362 {
39363 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39364 "%s: Invalid parameters", __func__);
39365 WDI_ASSERT(0);
39366 return WDI_STATUS_E_FAILURE;
39367 }
39368
39369 pGetARPStatsReqParams =
39370 (WDI_GetARPStatsParamsInfoType *)pEventData->pEventData;
39371 wdiGetARPStatsRspCb = (WDI_GetARPStatsRspCb)pEventData->pCBfnc;
39372
39373 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
39374 WDI_FW_GET_ARP_STATS_REQ,
39375 sizeof(statsReqParams.statsGetArpReqParams),
39376 &pSendBuffer, &usDataOffset, &usSendSize))||
39377 ( usSendSize < (usDataOffset +
39378 sizeof(statsReqParams.statsGetArpReqParams))))
39379 {
39380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039381 "Unable to get send buffer in set bss key req %pK %pK %pK",
Anurag Chouhan6ee81542017-02-09 18:09:27 +053039382 pEventData, pGetARPStatsReqParams, wdiGetARPStatsRspCb);
39383 WDI_ASSERT(0);
39384 return WDI_STATUS_E_FAILURE;
39385 }
39386
39387 statsReqParams.statsGetArpReqParams.pkt_type =
39388 pGetARPStatsReqParams->pkt_type;
39389
39390 wpalMemoryCopy( pSendBuffer+usDataOffset,
39391 &statsReqParams.statsGetArpReqParams,
39392 sizeof(statsReqParams.statsGetArpReqParams));
39393
39394 wdi_status = WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
39395 wdiGetARPStatsRspCb, pEventData->pUserData,
39396 WDI_FW_GET_ARP_STATS_RSP);
39397
39398 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39399 "%s: %d Exit",__func__, __LINE__);
39400 return wdi_status;
39401}
39402
39403/**
39404 * WDI_GetARPStatsReq() - WDI api to process get arp stats request
39405 * @pwdiGetStatsReqParams: pointer to get stats params
39406 * @wdiGetStatsRspCb: pointer to get response callback
39407 * @pUserData: user data
39408 *
39409 * Return: WDI_Status
39410 */
39411WDI_Status
39412WDI_GetARPStatsReq
39413(
39414 WDI_GetARPStatsParamsInfoType* pwdiGetStatsReqParams,
39415 WDI_GetARPStatsRspCb wdiGetStatsRspCb,
39416 void* pUserData
39417)
39418{
39419 WDI_EventInfoType wdiEventData;
39420
39421 if (eWLAN_PAL_FALSE == gWDIInitialized )
39422 {
39423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39424 "WDI API call before module is initialized - Fail request");
39425
39426 return WDI_STATUS_E_NOT_ALLOWED;
39427 }
39428
39429 wdiEventData.wdiRequest = WDI_FW_GET_ARP_STATS_REQ;
39430 wdiEventData.pEventData = pwdiGetStatsReqParams;
39431 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
39432 wdiEventData.pCBfnc = wdiGetStatsRspCb;
39433 wdiEventData.pUserData = pUserData;
39434
39435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39436
39437}/*WDI_GetARPStatsReq*/
39438
39439
Agrawal Ashish17ef5082016-10-17 18:33:21 +053039440#ifdef SAP_AUTH_OFFLOAD
39441/**
39442 * WDI_ProcessSapAuthOffloadInd() - Process SAP AUTH ofload
39443 * Indication message and post it to HAL
39444 *
39445 * @pWDICtx: pointer to the WLAN DAL context
39446 * @pEventData: pointer to the event information structure
39447 *
39448 * Return: WDI_Status enumeration
39449 */
39450WDI_Status
39451WDI_ProcessSapAuthOffloadInd
39452(
39453 WDI_ControlBlockType* pWDICtx,
39454 WDI_EventInfoType* pEventData
39455 )
39456{
39457 wpt_uint8* pSendBuffer = NULL;
39458 wpt_uint16 usDataOffset = 0;
39459 wpt_uint16 usSendSize = 0;
39460 tSapOffloadEnableMsg *sapOffloadEnableIndParam;
39461 struct WDI_sap_ofl_enable_params *pwdiSapOflEnableParams;
39462 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
39463 int buffer_len = 0;
39464
39465 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39466
39467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
39468 "%s", __func__);
39469
39470 /*-------------------------------------------------------------------------
39471 Sanity check
39472 -------------------------------------------------------------------------*/
39473 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
39474 {
39475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39476 "%s: Invalid parameters", __func__);
39477 WDI_ASSERT(0);
39478 return WDI_STATUS_E_FAILURE;
39479 }
39480 /*-----------------------------------------------------------------------
39481 Get message buffer
39482 -----------------------------------------------------------------------*/
39483 pwdiSapOflEnableParams =
39484 (struct WDI_sap_ofl_enable_params*)pEventData->pEventData;
39485
39486 if (pwdiSapOflEnableParams->psk_len)
39487 buffer_len = pwdiSapOflEnableParams->psk_len +
39488 sizeof(tSapOffloadEnableMsg) - sizeof(tANI_U8);
39489 else
39490 buffer_len = sizeof(tSapOffloadEnableMsg);
39491
39492 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
39493 WDI_PROCESS_SAP_AUTH_OFFLOAD_IND,
39494 buffer_len,
39495 &pSendBuffer, &usDataOffset, &usSendSize))||
39496 ( usSendSize < (usDataOffset + sizeof(tSapOffloadEnableMsg) )))
39497 {
39498 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039499 "Unable to get send buffer in SAP Auth offload Ind %pK ",
Agrawal Ashish17ef5082016-10-17 18:33:21 +053039500 pEventData);
39501 WDI_ASSERT(0);
39502 return WDI_STATUS_E_FAILURE;
39503 }
39504 pwdiSapOflEnableParams =
39505 (struct WDI_sap_ofl_enable_params*)pEventData->pEventData;
39506 sapOffloadEnableIndParam =
39507 (tSapOffloadEnableMsg*)(pSendBuffer + usDataOffset);
39508 wpalMemoryCopy(&sapOffloadEnableIndParam->selfMacAddr,
39509 &pwdiSapOflEnableParams->macAddr, sizeof(wpt_macAddr));
39510
39511 sapOffloadEnableIndParam->enable = pwdiSapOflEnableParams->enable;
39512 sapOffloadEnableIndParam->rsn_authmode =
39513 pwdiSapOflEnableParams->rsn_authmode;
39514 sapOffloadEnableIndParam->rsn_ucastcipherset =
39515 pwdiSapOflEnableParams->rsn_ucastcipherset;
39516 sapOffloadEnableIndParam->rsn_mcastcipherset =
39517 pwdiSapOflEnableParams->rsn_mcastcipherset;
39518 sapOffloadEnableIndParam->psk_len = pwdiSapOflEnableParams->psk_len;
39519 wpalMemoryCopy(&sapOffloadEnableIndParam->psk, &pwdiSapOflEnableParams->key,
39520 pwdiSapOflEnableParams->psk_len);
39521 pWDICtx->pReqStatusUserData = NULL;
39522 pWDICtx->pfncRspCB = NULL;
39523 /*-------------------------------------------------------------------------
39524 Send SAP_AUTH_OFFLOAD_IND Indication to HAL
39525 -------------------------------------------------------------------------*/
39526 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
39527 return (wdiStatus != WDI_STATUS_SUCCESS) ?
39528 wdiStatus:WDI_STATUS_SUCCESS_SYNC;
39529
39530}
39531
39532/**
39533 * WDI_process_sap_auth_offload() - Process SAP AUTH offload
39534 * Indication message and post it to HAL
39535 *
39536 * @pWDICtx: pointer to the WLAN DAL context
39537 * @pEventData: pointer to the event information structure
39538 *
39539 * Return: WDI_Status enumeration
39540 */
39541WDI_Status WDI_process_sap_auth_offload(
39542 struct WDI_sap_ofl_enable_params *params)
39543{
39544 WDI_EventInfoType wdiEventData;
39545
39546 if (eWLAN_PAL_FALSE == gWDIInitialized)
39547 {
39548 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39549 "WDI API call before module is initialized - Fail req");
39550 return WDI_STATUS_E_NOT_ALLOWED;
39551 }
39552
39553 wdiEventData.wdiRequest = WDI_PROCESS_SAP_AUTH_OFFLOAD_IND;
39554 wdiEventData.pEventData = params;
39555 wdiEventData.uEventDataSize = sizeof(*params);
39556 wdiEventData.pCBfnc = NULL;
39557 wdiEventData.pUserData = NULL;
39558
39559 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39560}
Manjeet Singh3ed79242017-01-11 19:04:32 +053039561
39562/**
39563 * wdi_process_cap_tsf_req() - Send Capture tsf request to FW.
39564 *
39565 * @pWDICtx: pointer to the WLAN DAL context
39566 * @pEventData: pointer to the event information structure
39567 *
39568 * Return: WDI_Status enumeration
39569 */
39570WDI_Status wdi_process_cap_tsf_req(wdi_cap_tsf_params_t *wdi_cap_tsf_req,
39571 wdi_tsf_rsp_cb wdi_cap_tsf_rsp_callback,
39572 void *user_data)
39573{
39574 WDI_EventInfoType wdiEventData;
39575
39576 if (eWLAN_PAL_FALSE == gWDIInitialized)
39577 {
39578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39579 "WDI API call before module is initialized - Fail req");
39580 return WDI_STATUS_E_NOT_ALLOWED;
39581 }
39582
39583 wdiEventData.wdiRequest = WDI_CAP_TSF_REQ;
39584 wdiEventData.pEventData = wdi_cap_tsf_req;
39585 wdiEventData.uEventDataSize = sizeof(*wdi_cap_tsf_req);
39586 wdiEventData.pCBfnc = wdi_cap_tsf_rsp_callback;
39587 wdiEventData.pUserData = user_data;
39588
39589 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39590}
39591/**
39592 * wdi_process_get_tsf_req() - Send Get tsf request to FW.
39593 *
39594 * @pWDICtx: pointer to the WLAN DAL context
39595 * @pEventData: pointer to the event information structure
39596 *
39597 * Return: WDI_Status enumeration
39598 */
39599WDI_Status wdi_process_get_tsf_req(wdi_cap_tsf_params_t *wdi_get_tsf_req,
39600 wdi_tsf_rsp_cb wdi_tsf_rsp_callback,
39601 void *user_data)
39602{
39603 WDI_EventInfoType wdiEventData;
39604
39605 if (eWLAN_PAL_FALSE == gWDIInitialized)
39606 {
39607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39608 "WDI API call before module is initialized - Fail req");
39609 return WDI_STATUS_E_NOT_ALLOWED;
39610 }
39611
39612 wdiEventData.wdiRequest = WDI_GET_TSF_REQ;
39613 wdiEventData.pEventData = wdi_get_tsf_req;
39614 wdiEventData.uEventDataSize = sizeof(*wdi_get_tsf_req);
39615 wdiEventData.pCBfnc = wdi_tsf_rsp_callback;
39616 wdiEventData.pUserData = user_data;
39617
39618 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39619}
39620
39621/**
39622 * wdi_cap_tsf_req() - wdi api for capture tsf request
39623 * @wdi_ctx: pointer to wdi context
39624 * @event_data: pointer to event data
39625 *
39626 * Return: WDI_Status
39627 * WDI_STATUS_SUCCESS - success or else failure status
39628 */
39629WDI_Status wdi_cap_tsf_req (WDI_ControlBlockType *wdi_ctx,
39630 WDI_EventInfoType *event_data)
39631{
39632
39633 wdi_cap_tsf_params_t *wdi_cap_tsf_req_info;
39634 wpt_uint8 *buff = NULL;
39635 wpt_uint16 data_offset = 0;
39636 wpt_uint16 size = 0;
39637 WDI_Status wdi_status;
39638 tHalCapTSFgetReqInd hal_cap_tsf_req;
39639 wdi_tsf_rsp_cb wdi_tsf_rsp_callback;
39640
39641 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39642 "%s: Enter",__func__ );
39643 /* Sanity check */
39644 if ((NULL == wdi_ctx) || (NULL == event_data) ||
39645 (NULL == event_data->pEventData)) {
39646
39647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39648 "%s: Invalid parameters", __func__);
39649 WDI_ASSERT(0);
39650 return WDI_STATUS_E_FAILURE;
39651 }
39652
39653 wdi_cap_tsf_req_info = (wdi_cap_tsf_params_t *)
39654 event_data->pEventData;
39655
39656 /* Get message buffer */
39657 if (( WDI_STATUS_SUCCESS !=
39658 WDI_GetMessageBuffer(wdi_ctx,
39659 WDI_CAP_TSF_REQ,
39660 sizeof(hal_cap_tsf_req.
39661 capTSFget),
39662 &buff, &data_offset, &size))||
39663 (size < (data_offset +
39664 sizeof(hal_cap_tsf_req.capTSFget))))
39665 {
39666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39667 "Unable to get send buffer in GetTsfFrame Req");
39668 WDI_ASSERT(0);
39669 return WDI_STATUS_E_FAILURE;
39670 }
39671 hal_cap_tsf_req.capTSFget.uBssIdx = wdi_cap_tsf_req_info->bss_idx;
39672 hal_cap_tsf_req.capTSFget.capTSFget = wdi_cap_tsf_req_info->capTSFget;
39673
39674 wdi_tsf_rsp_callback = (wdi_tsf_rsp_cb)event_data->pCBfnc;
39675
39676 wpalMemoryCopy(buff+data_offset,
39677 &hal_cap_tsf_req.capTSFget,
39678 sizeof(hal_cap_tsf_req.capTSFget));
39679
39680 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
39681 wdi_tsf_rsp_callback,
39682 event_data->pUserData,
39683 WDI_CAPTURE_GET_TSF_TSTAMP_RSP);
39684
39685 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39686 "%s: Exit",__func__);
39687
39688 return wdi_status;
39689}
39690
39691/**
39692 * wdi_get_tsf_req() - wdi api for get tsf request
39693 * @wdi_ctx: pointer to wdi context
39694 * @event_data: pointer to event data
39695 *
39696 * Return: WDI_Status
39697 * WDI_STATUS_SUCCESS - success or else failure status
39698 */
39699WDI_Status wdi_get_tsf_req (WDI_ControlBlockType *wdi_ctx,
39700 WDI_EventInfoType *event_data)
39701{
39702
39703 wdi_cap_tsf_params_t *wdi_cap_tsf_req_info;
39704 wpt_uint8 *buff = NULL;
39705 wpt_uint16 data_offset = 0;
39706 wpt_uint16 size = 0;
39707 WDI_Status wdi_status;
39708 tHalCapTSFgetReqInd hal_cap_tsf_req;
39709 wdi_tsf_rsp_cb wdi_tsf_rsp_callback;
39710
39711 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39712 "%s: Enter",__func__ );
39713 /* Sanity check */
39714 if ((NULL == wdi_ctx) || (NULL == event_data) ||
39715 (NULL == event_data->pEventData)) {
39716
39717 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39718 "%s: Invalid parameters", __func__);
39719 WDI_ASSERT(0);
39720 return WDI_STATUS_E_FAILURE;
39721 }
39722
39723 wdi_cap_tsf_req_info = (wdi_cap_tsf_params_t *)
39724 event_data->pEventData;
39725
39726 /* Get message buffer */
39727 if (( WDI_STATUS_SUCCESS !=
39728 WDI_GetMessageBuffer(wdi_ctx,
39729 WDI_CAP_TSF_REQ,
39730 sizeof(hal_cap_tsf_req.
39731 capTSFget),
39732 &buff, &data_offset, &size))||
39733 (size < (data_offset +
39734 sizeof(hal_cap_tsf_req.capTSFget))))
39735 {
39736 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39737 "Unable to get send buffer in GetTsfFrame Req");
39738 WDI_ASSERT(0);
39739 return WDI_STATUS_E_FAILURE;
39740 }
39741 hal_cap_tsf_req.capTSFget.uBssIdx = wdi_cap_tsf_req_info->bss_idx;
39742 hal_cap_tsf_req.capTSFget.capTSFget = wdi_cap_tsf_req_info->capTSFget;
39743
39744 wdi_tsf_rsp_callback = (wdi_tsf_rsp_cb)event_data->pCBfnc;
39745
39746 wpalMemoryCopy(buff+data_offset,
39747 &hal_cap_tsf_req.capTSFget,
39748 sizeof(hal_cap_tsf_req.capTSFget));
39749
39750 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
39751 wdi_tsf_rsp_callback,
39752 event_data->pUserData,
39753 WDI_CAPTURE_GET_TSF_TSTAMP_RSP);
39754
39755 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39756 "%s: Exit",__func__);
39757
39758 return wdi_status;
39759}
39760
39761/**
39762 * wdi_get_tsf_rsp() - wdi api for the get tsf response
39763 * @wdi_ctx: pointer to the wdi context
39764 * @event_data: pointer to the event data
39765 *
39766 * Return: WDI_Status
39767 * WDI_STATUS_SUCCESS - success or else failure status
39768 */
39769WDI_Status
39770wdi_get_tsf_rsp
39771(
39772 WDI_ControlBlockType *wdi_ctx,
39773 WDI_EventInfoType *event_data
39774)
39775{
39776 wdi_tsf_rsp_cb wdi_tsf_rsp_callback;
39777
39778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
39779 "%s: Enter ", __func__);
39780 /*-------------------------------------------------------------------
39781 Sanity check
39782 -----------------------------------------------------------------*/
39783 if ((NULL == wdi_ctx) || (NULL == event_data) ||
39784 (NULL == event_data->pEventData))
39785 {
39786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39787 "%s: Invalid parameters", __func__);
39788 WDI_ASSERT(0);
39789 return WDI_STATUS_E_FAILURE;
39790 }
39791
39792 wdi_tsf_rsp_callback =
39793 (wdi_tsf_rsp_cb)wdi_ctx->pfncRspCB;
39794
39795 if (wdi_tsf_rsp_callback)
39796 wdi_tsf_rsp_callback((void *) event_data->pEventData,
39797 wdi_ctx->pRspCBUserData);
39798 else {
39799 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
39800 "wdi_tsf_rsp_callback is NULL!");
39801 return WDI_STATUS_E_FAILURE;
39802 }
39803
39804 return WDI_STATUS_SUCCESS;
39805}
Agrawal Ashish17ef5082016-10-17 18:33:21 +053039806#endif