blob: fac44a7ea28246834587159a80f59bbf77f4b230 [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;
Ashish Kumar Dhanotiya9c86eef2019-11-18 20:45:45 +053012810 wpt_macAddr dst_addr;
Yue Mab9c86f42013-08-14 15:59:08 -070012811
12812 /*-------------------------------------------------------------------------
12813 Sanity check
12814 -------------------------------------------------------------------------*/
12815 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12816 {
12817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12818 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12819 WDI_ASSERT(0);
12820 return WDI_STATUS_E_FAILURE;
12821 }
12822
12823 pAddPeriodicTxPtrnParams =
12824 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12825
12826 /*------------------------------------------------------------------------
12827 Get message buffer
12828 ------------------------------------------------------------------------*/
12829 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12830 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12831 &pSendBuffer, &usDataOffset, &usSendSize))||
12832 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12833 {
12834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12835 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12836 __func__);
12837 WDI_ASSERT(0);
12838 return WDI_STATUS_E_FAILURE;
12839 }
12840
12841 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12842
12843 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12844 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12845 &selfStaIdx))
12846 {
12847 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12848 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012849 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012850
12851 return WDI_STATUS_E_FAILURE;
12852 }
12853
Ashish Kumar Dhanotiya9c86eef2019-11-18 20:45:45 +053012854 vos_mem_copy(dst_addr,
12855 &pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern[0],
12856 VOS_MAC_ADDR_SIZE);
12857
Ashish Kumar Dhanotiya0d204382019-04-30 14:05:19 +053012858 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Ashish Kumar Dhanotiya9c86eef2019-11-18 20:45:45 +053012859 dst_addr,
Ashish Kumar Dhanotiya0d204382019-04-30 14:05:19 +053012860 &pBSSSes);
12861 if ( NULL == pBSSSes )
12862 {
12863 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12864 "%s: Association sequence for this BSS does not exist. macBSSID "
12865 MAC_ADDRESS_STR,
12866 __func__,
Ashish Kumar Dhanotiya9c86eef2019-11-18 20:45:45 +053012867 MAC_ADDR_ARRAY(dst_addr));
Ashish Kumar Dhanotiya0d204382019-04-30 14:05:19 +053012868 wpalMemoryFree(pSendBuffer);
12869 return WDI_STATUS_E_NOT_ALLOWED;
12870 }
12871
Yue Mab9c86f42013-08-14 15:59:08 -070012872 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12873 halAddPeriodicTxPtrn->ucPtrnId =
12874 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12875 halAddPeriodicTxPtrn->usPtrnSize =
12876 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12877 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12878 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12879
12880 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12881 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12882 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12883
12884 /*-------------------------------------------------------------------------
12885 Send Indication to HAL
12886 -------------------------------------------------------------------------*/
12887 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12888 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12889
12890 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12891
12892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12893 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12894
12895 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12896} /* WDI_ProcessAddPeriodicTxPtrnInd */
12897
12898/**
12899 @brief Process Delete Periodic Tx Pattern Indication function (called when
12900 Main FSM allows it)
12901
12902 @param pWDICtx: pointer to the WLAN DAL context
12903 pEventData: pointer to the event information structure
12904
12905 @see
12906 @return Result of the function call
12907*/
12908WDI_Status
12909WDI_ProcessDelPeriodicTxPtrnInd
12910(
12911 WDI_ControlBlockType* pWDICtx,
12912 WDI_EventInfoType* pEventData
12913)
12914{
12915 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12916 wpt_uint8* pSendBuffer = NULL;
12917 wpt_uint16 usDataOffset = 0;
12918 wpt_uint16 usSendSize = 0;
12919 WDI_Status wdiStatus;
12920 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12921 wpt_uint8 selfStaIdx = 0;
12922
12923 /*-------------------------------------------------------------------------
12924 Sanity check
12925 -------------------------------------------------------------------------*/
12926 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12927 {
12928 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12929 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12930 WDI_ASSERT(0);
12931 return WDI_STATUS_E_FAILURE;
12932 }
12933
12934 pDelPeriodicTxPtrnParams =
12935 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12936
12937 /*------------------------------------------------------------------------
12938 Get message buffer
12939 ------------------------------------------------------------------------*/
12940 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12941 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12942 &pSendBuffer, &usDataOffset, &usSendSize))||
12943 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12944 {
12945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12946 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12947 __func__);
12948 WDI_ASSERT(0);
12949 return WDI_STATUS_E_FAILURE;
12950 }
12951
12952 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12953
12954 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12955 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12956 &selfStaIdx))
12957 {
12958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12959 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012960 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012961
12962 return WDI_STATUS_E_FAILURE;
12963 }
12964
12965 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12966 halDelPeriodicTxPtrn->uPatternIdBitmap =
12967 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12968
12969 /*-------------------------------------------------------------------------
12970 Send Indication to HAL
12971 -------------------------------------------------------------------------*/
12972 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12973 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12974
12975 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12976
12977 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12978 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12979
12980 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12981} /* WDI_ProcessDelPeriodicTxPtrnInd */
12982
Jeff Johnson295189b2012-06-20 16:38:30 -070012983/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012984 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012985==========================================================================*/
12986/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012989
12990 @param pWDICtx: pointer to the WLAN DAL context
12991 pEventData: pointer to the event information structure
12992
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 @see
12994 @return Result of the function call
12995*/
12996WDI_Status
12997WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012998(
Jeff Johnson295189b2012-06-20 16:38:30 -070012999 WDI_ControlBlockType* pWDICtx,
13000 WDI_EventInfoType* pEventData
13001)
13002{
13003 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
13004 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013005 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013006 wpt_uint16 usDataOffset = 0;
13007 wpt_uint16 usSendSize = 0;
13008 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
13009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13010
13011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013013 -------------------------------------------------------------------------*/
13014 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13015 ( NULL == pEventData->pCBfnc ))
13016 {
13017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013018 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013021 }
13022
13023 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
13024 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
13025 /*-----------------------------------------------------------------------
13026 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013027 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013028 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013029 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013030 sizeof(halSwitchChannelReq.switchChannelParams),
13031 &pSendBuffer, &usDataOffset, &usSendSize))||
13032 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
13033 {
13034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013035 "Unable to get send buffer in channel switch req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013036 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
13037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013039 }
13040
Jeff Johnsone7245742012-09-05 17:12:55 -070013041 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070013042 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070013043#ifndef WLAN_FEATURE_VOWIFI
13044 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
13046#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070013047 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013048 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
13049
13050#ifdef WLAN_FEATURE_VOWIFI
13051 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070013052 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070013053 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
13054 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
13055 WDI_MAC_ADDR_LEN);
13056 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
13057 pwdiSwitchChParams->wdiChInfo.macBSSId,
13058 WDI_MAC_ADDR_LEN);
13059#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070013060 wpalMemoryCopy( pSendBuffer+usDataOffset,
13061 &halSwitchChannelReq.switchChannelParams,
13062 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013063
13064 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013065 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013066
13067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013068 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013069 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013070 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13071 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013072}/*WDI_ProcessChannelSwitchReq*/
13073
13074/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080013075 @brief Process Channel Switch Request function (called when
13076 Main FSM allows it)
13077
13078 @param pWDICtx: pointer to the WLAN DAL context
13079 pEventData: pointer to the event information structure
13080
13081 @see
13082 @return Result of the function call
13083*/
13084WDI_Status WDI_ProcessChannelSwitchReq_V1
13085(
13086 WDI_ControlBlockType* pWDICtx,
13087 WDI_EventInfoType* pEventData
13088)
13089{
13090 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
13091 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
13092 wpt_uint8* pSendBuffer = NULL;
13093 wpt_uint16 usDataOffset = 0;
13094 wpt_uint16 usSendSize = 0;
13095 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
13096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13097
13098 /*-------------------------------------------------------------------------
13099 Sanity check
13100 -------------------------------------------------------------------------*/
13101 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13102 ( NULL == pEventData->pCBfnc ))
13103 {
13104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13105 "%s: Invalid parameters", __func__);
13106 WDI_ASSERT(0);
13107 return WDI_STATUS_E_FAILURE;
13108 }
13109
13110 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
13111 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
13112 /*-----------------------------------------------------------------------
13113 Get message buffer
13114 ! TO DO : proper conversion into the HAL Message Request Format
13115 -----------------------------------------------------------------------*/
13116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13117 WDI_CH_SWITCH_REQ_V1,
13118 sizeof(halSwitchChannelReq.switchChannelParams_V1),
13119 &pSendBuffer, &usDataOffset, &usSendSize))||
13120 ( usSendSize < (usDataOffset +
13121 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
13122 {
13123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013124 "Unable to get send buffer in channel switch req %pK %pK %pK",
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080013125 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
13126 WDI_ASSERT(0);
13127 return WDI_STATUS_E_FAILURE;
13128 }
13129
13130 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
13131 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
13132
13133 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
13134 pwdiSwitchChParams->wdiChInfo.ucChannel;
13135#ifndef WLAN_FEATURE_VOWIFI
13136 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
13137 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
13138#endif
13139 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
13140 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
13141
13142#ifdef WLAN_FEATURE_VOWIFI
13143 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
13144 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
13145 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
13146 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
13147 WDI_MAC_ADDR_LEN);
13148 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
13149 pwdiSwitchChParams->wdiChInfo.macBSSId,
13150 WDI_MAC_ADDR_LEN);
13151#endif
13152 wpalMemoryCopy( pSendBuffer+usDataOffset,
13153 &halSwitchChannelReq.switchChannelParams_V1,
13154 sizeof(halSwitchChannelReq.switchChannelParams_V1));
13155
13156 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
13157 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
13158
13159 /*-------------------------------------------------------------------------
13160 Send Switch Channel Request to HAL
13161 -------------------------------------------------------------------------*/
13162 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13163 wdiSwitchChRspCb, pEventData->pUserData,
13164 WDI_CH_SWITCH_RESP_V1);
13165}/*WDI_ProcessChannelSwitchReq_V1*/
13166
13167/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013170
13171 @param pWDICtx: pointer to the WLAN DAL context
13172 pEventData: pointer to the event information structure
13173
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 @see
13175 @return Result of the function call
13176*/
13177WDI_Status
13178WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013179(
Jeff Johnson295189b2012-06-20 16:38:30 -070013180 WDI_ControlBlockType* pWDICtx,
13181 WDI_EventInfoType* pEventData
13182)
13183{
13184 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
13185 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013188 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013189 wpt_uint16 usDataOffset = 0;
13190 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013192
Jeff Johnsone7245742012-09-05 17:12:55 -070013193 tConfigStaReqMsg halConfigStaReqMsg;
13194 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13196
13197 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013198 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013199 -------------------------------------------------------------------------*/
13200 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13201 ( NULL == pEventData->pCBfnc ))
13202 {
13203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013204 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013205 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013206 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013207 }
13208
Abhishek Singh6927fa02014-06-27 17:19:55 +053013209 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
13211 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
13212 /*-------------------------------------------------------------------------
13213 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013214 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013215 -------------------------------------------------------------------------*/
13216 wpalMutexAcquire(&pWDICtx->wptMutex);
13217
13218 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013221 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13222 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
13223 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070013224
Jeff Johnsone7245742012-09-05 17:12:55 -070013225 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013226 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13228 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13229 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013230
13231 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 }
13234
13235 /*------------------------------------------------------------------------
13236 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013237 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013238 ------------------------------------------------------------------------*/
13239 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13240 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013241 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13242 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13243 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013244
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013246 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013247 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 }
13249
13250 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013251
13252 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
13253#ifdef WLAN_FEATURE_11AC
13254 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070013255 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 else
13257#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070013258 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070013259
Jeff Johnson295189b2012-06-20 16:38:30 -070013260 /*-----------------------------------------------------------------------
13261 Get message buffer
13262 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013263 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
13264 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070013265 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013266 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070013267 {
13268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013269 "Unable to get send buffer in config sta req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
13271 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 }
13274
13275 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 &pwdiConfigSTAParams->wdiReqInfo);
13278
13279 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
13280 {
13281 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070013282 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070013283 WDI_STATableFindStaidByAddr(pWDICtx,
13284 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070013285 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070013286 {
13287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013288 MAC_ADDRESS_STR
13289 ": This station does not exist in the WDI Station Table",
13290 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070013291 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080013292 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070013293 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013294 }
13295 }
13296 else
13297 {
13298 /* Need to fill in the STA Index to invalid, since at this point we have not
13299 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070013300 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 }
13302
13303 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070013304 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070013305
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 wpalMemoryCopy( pSendBuffer+usDataOffset,
13307 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070013308 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070013309
13310 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013311 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013312
Jeff Johnsone7245742012-09-05 17:12:55 -070013313 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
13314 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013315 sizeof(pWDICtx->wdiCachedConfigStaReq));
13316
13317 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013318 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013319 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13321 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013322}/*WDI_ProcessConfigStaReq*/
13323
13324
13325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013326 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070013327 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013328
13329 @param pWDICtx: pointer to the WLAN DAL context
13330 pEventData: pointer to the event information structure
13331
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 @see
13333 @return Result of the function call
13334*/
13335WDI_Status
13336WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013337(
Jeff Johnson295189b2012-06-20 16:38:30 -070013338 WDI_ControlBlockType* pWDICtx,
13339 WDI_EventInfoType* pEventData
13340)
13341{
13342 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
13343 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013346 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013347 wpt_uint16 usDataOffset = 0;
13348 wpt_uint16 usSendSize = 0;
13349 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070013350 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070013351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13352
13353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013355 -------------------------------------------------------------------------*/
13356 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13357 ( NULL == pEventData->pCBfnc ))
13358 {
13359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 }
13364
13365 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
13366 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
13367 /*-------------------------------------------------------------------------
13368 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 -------------------------------------------------------------------------*/
13371 wpalMutexAcquire(&pWDICtx->wptMutex);
13372
13373 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
13377 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
13378 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070013379
Jeff Johnsone7245742012-09-05 17:12:55 -070013380 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013381 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070013382 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
13384 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013385 }
13386 else
13387 {
13388 /*------------------------------------------------------------------------
13389 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013390 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013391 ------------------------------------------------------------------------*/
13392 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13393 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13395 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13396 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
13397
13398 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013399 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013400 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013401 }
13402 }
13403 /* If the link is set to enter IDLE - the Session allocated for this BSS
13404 will be deleted on the Set Link State response coming from HAL
13405 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070013406 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013407 sizeof(pWDICtx->wdiCacheSetLinkStReq));
13408
13409 wpalMutexRelease(&pWDICtx->wptMutex);
13410 /*-----------------------------------------------------------------------
13411 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013413 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013414
13415 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013416 sizeof(halLinkStateReqMsg),
13417 &pSendBuffer, &usDataOffset, &usSendSize))||
13418 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
13419 {
13420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013421 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013422 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
13423 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013425 }
13426
13427 wpalMemoryCopy(halLinkStateReqMsg.bssid,
13428 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
13429
13430 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
13431 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
13432
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
13435
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 wpalMemoryCopy( pSendBuffer+usDataOffset,
13437 &halLinkStateReqMsg,
13438 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070013439
13440 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013441 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013442
13443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013444 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13447 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013448}/*WDI_ProcessSetLinkStateReq*/
13449
13450
13451/**
13452 @brief Process Get Stats Request function (called when Main FSM
13453 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013454
13455 @param pWDICtx: pointer to the WLAN DAL context
13456 pEventData: pointer to the event information structure
13457
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 @see
13459 @return Result of the function call
13460*/
13461WDI_Status
13462WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013463(
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 WDI_ControlBlockType* pWDICtx,
13465 WDI_EventInfoType* pEventData
13466)
13467{
13468 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
13469 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 wpt_uint16 usDataOffset = 0;
13472 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 WDI_BSSSessionType* pBSSSes = NULL;
13475 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 tHalStatsReqMsg halStatsReqMsg;
13478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13479
13480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013482 -------------------------------------------------------------------------*/
13483 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
13484 ( NULL == pEventData->pCBfnc ) )
13485 {
13486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013490 }
13491
13492 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
13493 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
13494
13495 /*-------------------------------------------------------------------------
13496 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013497 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013498 -------------------------------------------------------------------------*/
13499 wpalMutexAcquire(&pWDICtx->wptMutex);
13500
13501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13505 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013506 &macBSSID))
13507 {
13508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013509 "This station does not exist in the WDI Station Table %d",
13510 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013511 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013512 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013513 }
13514
Jeff Johnsone7245742012-09-05 17:12:55 -070013515 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13516 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013518 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13519 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13520 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013521
13522 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 }
13525
13526 /*------------------------------------------------------------------------
13527 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013528 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013529 ------------------------------------------------------------------------*/
13530 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13531 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13533 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13534 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013535
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 }
13540
13541
13542 wpalMutexRelease(&pWDICtx->wptMutex);
13543
13544 /*-----------------------------------------------------------------------
13545 Get message buffer
13546 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013547 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013548 sizeof(halStatsReqMsg.statsReqParams),
13549 &pSendBuffer, &usDataOffset, &usSendSize))||
13550 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
13551 {
13552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013553 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013554 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
13555 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013556 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013557 }
13558
Jeff Johnsone7245742012-09-05 17:12:55 -070013559 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070013561 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 wpalMemoryCopy( pSendBuffer+usDataOffset,
13564 &halStatsReqMsg.statsReqParams,
13565 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013566
13567 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013569
13570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13574 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013575}/*WDI_ProcessGetStatsReq*/
13576
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013577#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013578/**
13579 @brief Process Get Roam Rssi Request function (called when Main FSM
13580 allows it)
13581
13582 @param pWDICtx: pointer to the WLAN DAL context
13583 pEventData: pointer to the event information structure
13584
13585 @see
13586 @return Result of the function call
13587*/
13588WDI_Status
13589WDI_ProcessGetRoamRssiReq
13590(
13591 WDI_ControlBlockType* pWDICtx,
13592 WDI_EventInfoType* pEventData
13593)
13594{
13595 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
13596 WDI_GetStatsRspCb wdiGetStatsRspCb;
13597 wpt_uint8* pSendBuffer = NULL;
13598 wpt_uint16 usDataOffset = 0;
13599 wpt_uint16 usSendSize = 0;
13600 wpt_uint8 ucCurrentBSSSesIdx = 0;
13601 WDI_BSSSessionType* pBSSSes = NULL;
13602 wpt_macAddr macBSSID;
13603 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
13604 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
13605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13606 /*-------------------------------------------------------------------------
13607 Sanity check
13608 -------------------------------------------------------------------------*/
13609 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
13610 ( NULL == pEventData->pCBfnc ) )
13611 {
13612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13613 "%s: Invalid parameters", __func__);
13614 WDI_ASSERT(0);
13615 return WDI_STATUS_E_FAILURE;
13616 }
13617
13618 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
13619 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
13620
13621 /*-------------------------------------------------------------------------
13622 Check to see if we are in the middle of an association, if so queue, if
13623 not it means it is free to process request
13624 -------------------------------------------------------------------------*/
13625 wpalMutexAcquire(&pWDICtx->wptMutex);
13626
13627 /*------------------------------------------------------------------------
13628 Find the BSS for which the request is made
13629 ------------------------------------------------------------------------*/
13630 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13631 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
13632 &macBSSID))
13633 {
13634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013635 "This station does not exist in the WDI Station Table %d",
13636 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013637 wpalMutexRelease(&pWDICtx->wptMutex);
13638 return WDI_STATUS_E_FAILURE;
13639 }
13640
13641 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13642 if ( NULL == pBSSSes )
13643 {
13644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13645 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13646 __func__, MAC_ADDR_ARRAY(macBSSID));
13647
13648 wpalMutexRelease(&pWDICtx->wptMutex);
13649 return WDI_STATUS_E_NOT_ALLOWED;
13650 }
13651
13652 /*------------------------------------------------------------------------
13653 Check if this BSS is being currently processed or queued,
13654 if queued - queue the new request as well
13655 ------------------------------------------------------------------------*/
13656 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13657 {
13658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13659 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13660 __func__, MAC_ADDR_ARRAY(macBSSID));
13661
13662 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
13663 wpalMutexRelease(&pWDICtx->wptMutex);
13664 return wdiStatus;
13665 }
13666
13667 wpalMutexRelease(&pWDICtx->wptMutex);
13668
13669 /*-----------------------------------------------------------------------
13670 Get message buffer
13671 -----------------------------------------------------------------------*/
13672 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13673 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13674 &pSendBuffer, &usDataOffset, &usSendSize))||
13675 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13676 {
13677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013678 "Unable to get send buffer in set bss key req %pK %pK %pK",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013679 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13680 WDI_ASSERT(0);
13681 return WDI_STATUS_E_FAILURE;
13682 }
13683
13684 halRssiRoamReqMsg.roamRssiReqParams.staId =
13685 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13686 wpalMemoryCopy( pSendBuffer+usDataOffset,
13687 &halRssiRoamReqMsg.roamRssiReqParams,
13688 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13689
13690 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13691 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13692
13693 /*-------------------------------------------------------------------------
13694 Send Get STA Request to HAL
13695 -------------------------------------------------------------------------*/
13696 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13697 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13698}/*WDI_ProcessGetRoamRssiReq*/
13699#endif
13700
Jeff Johnson295189b2012-06-20 16:38:30 -070013701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013702 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013703 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013704
13705 @param pWDICtx: pointer to the WLAN DAL context
13706 pEventData: pointer to the event information structure
13707
Jeff Johnson295189b2012-06-20 16:38:30 -070013708 @see
13709 @return Result of the function call
13710*/
13711WDI_Status
13712WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013713(
Jeff Johnson295189b2012-06-20 16:38:30 -070013714 WDI_ControlBlockType* pWDICtx,
13715 WDI_EventInfoType* pEventData
13716)
13717{
13718 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13719 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13720
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 wpt_uint16 usDataOffset = 0;
13723 wpt_uint16 usSendSize = 0;
13724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13725
13726 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 -------------------------------------------------------------------------*/
13729 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13730 ( NULL == pEventData->pCBfnc))
13731 {
13732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013733 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013735 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013736 }
13737
13738 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13739 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13740
13741 /*-----------------------------------------------------------------------
13742 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013743 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013744 -----------------------------------------------------------------------*/
13745
Jeff Johnsone7245742012-09-05 17:12:55 -070013746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013747 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13748 &pSendBuffer, &usDataOffset, &usSendSize))||
13749 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13750 {
13751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013752 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013753 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 }
13757
Jeff Johnsone7245742012-09-05 17:12:55 -070013758 wpalMemoryCopy( pSendBuffer+usDataOffset,
13759 &pwdiUpdateCfgParams->uConfigBufferLen,
13760 sizeof(wpt_uint32));
13761 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13762 pwdiUpdateCfgParams->pConfigBuffer,
13763 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013764
13765 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013767
13768 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013769 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013770 -------------------------------------------------------------------------*/
13771
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13773 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013774
13775}/*WDI_ProcessUpdateCfgReq*/
13776
13777
13778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013779 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013781
13782 @param pWDICtx: pointer to the WLAN DAL context
13783 pEventData: pointer to the event information structure
13784
Jeff Johnson295189b2012-06-20 16:38:30 -070013785 @see
13786 @return Result of the function call
13787*/
13788WDI_Status
13789WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013790(
Jeff Johnson295189b2012-06-20 16:38:30 -070013791 WDI_ControlBlockType* pWDICtx,
13792 WDI_EventInfoType* pEventData
13793)
13794{
13795 WDI_AddBAReqParamsType* pwdiAddBAParams;
13796 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013797 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013798 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013799 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013800 wpt_uint16 usDataOffset = 0;
13801 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013802 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013803 wpt_macAddr macBSSID;
13804
13805 tAddBAReqMsg halAddBAReq;
13806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13807
13808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013810 -------------------------------------------------------------------------*/
13811 if (( NULL == pEventData ) ||
13812 ( NULL == pEventData->pEventData) ||
13813 ( NULL == pEventData->pCBfnc ))
13814 {
13815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 }
13820
13821 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13822 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13823
13824 /*-------------------------------------------------------------------------
13825 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 -------------------------------------------------------------------------*/
13828 wpalMutexAcquire(&pWDICtx->wptMutex);
13829
13830 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013831 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013832 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013833 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13834 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013835 &macBSSID))
13836 {
13837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013838 "This station does not exist in the WDI Station Table %d",
13839 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013840 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013842 }
13843
Jeff Johnsone7245742012-09-05 17:12:55 -070013844 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13845 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013846 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13848 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13849 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013850
13851 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013852 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013853 }
13854
13855 /*------------------------------------------------------------------------
13856 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013857 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013858 ------------------------------------------------------------------------*/
13859 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13860 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13862 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13863 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013864
Jeff Johnsone7245742012-09-05 17:12:55 -070013865 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013866 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013867 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013868 }
13869
13870
13871 wpalMutexRelease(&pWDICtx->wptMutex);
13872 /*-----------------------------------------------------------------------
13873 Get message buffer
13874 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013876 sizeof(halAddBAReq.addBAParams),
13877 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013878 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013879 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13880 {
13881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070013882 "Unable to get send buffer in Add BA req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070013883 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013885 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013886 }
13887
Jeff Johnsone7245742012-09-05 17:12:55 -070013888 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013889 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13890 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13891#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013892 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013893 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13894#endif
13895
Jeff Johnsone7245742012-09-05 17:12:55 -070013896 wpalMemoryCopy( pSendBuffer+usDataOffset,
13897 &halAddBAReq.addBAParams,
13898 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013899
13900 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013901 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013902
13903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013904 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013905 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013906 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13907 wdiAddBARspCb, pEventData->pUserData,
13908 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013909}/*WDI_ProcessAddBAReq*/
13910
13911
13912
13913/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013914 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013915 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013916
13917 @param pWDICtx: pointer to the WLAN DAL context
13918 pEventData: pointer to the event information structure
13919
Jeff Johnson295189b2012-06-20 16:38:30 -070013920 @see
13921 @return Result of the function call
13922*/
13923WDI_Status
13924WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013925(
Jeff Johnson295189b2012-06-20 16:38:30 -070013926 WDI_ControlBlockType* pWDICtx,
13927 WDI_EventInfoType* pEventData
13928)
13929{
13930 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13931 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013932 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013933 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013934 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013935 wpt_uint16 usDataOffset = 0;
13936 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013937 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013938 wpt_uint16 index;
13939 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013940
Jeff Johnson295189b2012-06-20 16:38:30 -070013941 tTriggerBAReqMsg halTriggerBAReq;
13942 tTriggerBaReqCandidate* halTriggerBACandidate;
13943 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13945
13946 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013947 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013948 -------------------------------------------------------------------------*/
13949 if (( NULL == pEventData ) ||
13950 ( NULL == pEventData->pEventData ) ||
13951 ( NULL == pEventData->pCBfnc ))
13952 {
13953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013954 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013957 }
13958
13959 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13960 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13961 /*-------------------------------------------------------------------------
13962 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013963 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013964 -------------------------------------------------------------------------*/
13965 wpalMutexAcquire(&pWDICtx->wptMutex);
13966
13967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013968 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013969 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013970 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13971 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013972 &macBSSID))
13973 {
13974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013975 "This station does not exist in the WDI Station Table %d",
13976 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013977 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013978 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013979 }
13980
Jeff Johnsone7245742012-09-05 17:12:55 -070013981 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13982 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013983 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013984 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13985 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13986 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013987
13988 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013989 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013990 }
13991
13992 /*------------------------------------------------------------------------
13993 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013994 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013995 ------------------------------------------------------------------------*/
13996 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13997 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13999 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
14000 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070014001
Jeff Johnsone7245742012-09-05 17:12:55 -070014002 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070014003 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 }
14006
14007
14008 wpalMutexRelease(&pWDICtx->wptMutex);
14009 /*-----------------------------------------------------------------------
14010 Get message buffer
14011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14013 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070014015 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070014016 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
14017 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070014018 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070014020 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
14022 {
14023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014024 "Unable to get send buffer in Trigger BA req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014025 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
14026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 }
14029
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070014031 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070014033 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
14034
Jeff Johnsone7245742012-09-05 17:12:55 -070014035 wpalMemoryCopy( pSendBuffer+usDataOffset,
14036 &halTriggerBAReq.triggerBAParams,
14037 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014038
Jeff Johnsone7245742012-09-05 17:12:55 -070014039 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
14041 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
14042 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070014043
14044 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070014045 index++)
14046 {
14047 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
14048 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
14049 halTriggerBACandidate++;
14050 wdiTriggerBACandidate++;
14051 }
14052
14053 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014055
14056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014057 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014058 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14060 wdiTriggerBARspCb, pEventData->pUserData,
14061 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014062}/*WDI_ProcessTriggerBAReq*/
14063
14064
14065
14066/**
14067 @brief Process Update Beacon Params Request function (called when Main FSM
14068 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014069
14070 @param pWDICtx: pointer to the WLAN DAL context
14071 pEventData: pointer to the event information structure
14072
Jeff Johnson295189b2012-06-20 16:38:30 -070014073 @see
14074 @return Result of the function call
14075*/
14076WDI_Status
14077WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014078(
Jeff Johnson295189b2012-06-20 16:38:30 -070014079 WDI_ControlBlockType* pWDICtx,
14080 WDI_EventInfoType* pEventData
14081)
14082{
14083 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
14084 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014085 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014086 wpt_uint16 usDataOffset = 0;
14087 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014088 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14090
14091 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014092 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014093 -------------------------------------------------------------------------*/
14094 if (( NULL == pEventData ) ||
14095 ( NULL == pEventData->pEventData) ||
14096 ( NULL == pEventData->pCBfnc))
14097 {
14098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014099 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014100 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014101 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014102 }
14103
14104 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
14105 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
14106 /*-----------------------------------------------------------------------
14107 Get message buffer
14108 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 sizeof(halUpdateBeaconParams),
14111 &pSendBuffer, &usDataOffset, &usSendSize))||
14112 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
14113 {
14114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014115 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014116 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
14117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014119 }
14120
14121 /*BSS Index of the BSS*/
14122 halUpdateBeaconParams.bssIdx =
14123 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
14124 /*shortPreamble mode. HAL should update all the STA rates when it
14125 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014126 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
14128 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014129 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
14131 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
14134
14135 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070014136 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014137 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014138 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014139 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014140 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014141 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014142 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014143 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014144 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070014145 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070014146 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070014147 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
14148 halUpdateBeaconParams.fRIFSMode =
14149 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070014150 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070014151 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
14152
Jeff Johnsone7245742012-09-05 17:12:55 -070014153 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
14154 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014155
14156 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014157 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014158
14159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014160 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014161 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014162 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14163 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014164}/*WDI_ProcessUpdateBeaconParamsReq*/
14165
14166
14167
14168/**
14169 @brief Process Send Beacon template Request function (called when Main FSM
14170 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014171
14172 @param pWDICtx: pointer to the WLAN DAL context
14173 pEventData: pointer to the event information structure
14174
Jeff Johnson295189b2012-06-20 16:38:30 -070014175 @see
14176 @return Result of the function call
14177*/
14178WDI_Status
14179WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014180(
Jeff Johnson295189b2012-06-20 16:38:30 -070014181 WDI_ControlBlockType* pWDICtx,
14182 WDI_EventInfoType* pEventData
14183)
14184{
14185 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
14186 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014187 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014188 wpt_uint16 usDataOffset = 0;
14189 wpt_uint16 usSendSize = 0;
14190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14191
14192 tSendBeaconReqMsg halSendBeaconReq;
14193 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014194 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014195 -------------------------------------------------------------------------*/
14196 if (( NULL == pEventData ) ||
14197 ( NULL == pEventData->pEventData ) ||
14198 ( NULL == pEventData->pCBfnc ))
14199 {
14200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014202 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014204 }
14205
14206 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
14207 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
14208 /*-----------------------------------------------------------------------
14209 Get message buffer
14210 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014212 sizeof(halSendBeaconReq.sendBeaconParam),
14213 &pSendBuffer, &usDataOffset, &usSendSize))||
14214 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
14215 {
14216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014217 "Unable to get send buffer in send beacon req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014218 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
14219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014221 }
14222
14223 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
14224 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
14225 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014226 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070014227 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
14228 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
14229 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
14230 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070014231 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014232 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053014233 /* usP2PIeOffset should be atleast greater than timIeOffset */
14234 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
14235 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
14236 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
14237 {
14238 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14239 "Invalid usP2PIeOffset %hu",
14240 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
14241 WDI_ASSERT(0);
14242 return WDI_STATUS_E_FAILURE;
14243 }
14244
Jeff Johnsone7245742012-09-05 17:12:55 -070014245 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070014246 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070014247
Jeff Johnsone7245742012-09-05 17:12:55 -070014248 wpalMemoryCopy( pSendBuffer+usDataOffset,
14249 &halSendBeaconReq.sendBeaconParam,
14250 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070014251
14252 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014253 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014254
14255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014256 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014257 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014258 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14259 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014260}/*WDI_ProcessSendBeaconParamsReq*/
14261
14262/**
14263 @brief Process Update Beacon Params Request function (called when Main FSM
14264 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014265
14266 @param pWDICtx: pointer to the WLAN DAL context
14267 pEventData: pointer to the event information structure
14268
Jeff Johnson295189b2012-06-20 16:38:30 -070014269 @see
14270 @return Result of the function call
14271*/
14272WDI_Status
14273WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014274(
Jeff Johnson295189b2012-06-20 16:38:30 -070014275 WDI_ControlBlockType* pWDICtx,
14276 WDI_EventInfoType* pEventData
14277)
14278{
14279 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
14280 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014281 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014282 wpt_uint16 usDataOffset = 0;
14283 wpt_uint16 usSendSize = 0;
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014284 wpt_uint16 uMsgSize = 0;
14285 tSendProbeRespReqParams *halProbeRespTmplParams = NULL;
14286 tSendProbeRespReqParams_V1 *halProbeRespTmplParams_V1 = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014287 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14288
14289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014290 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014291 -------------------------------------------------------------------------*/
14292 if (( NULL == pEventData ) ||
14293 ( NULL == pEventData->pEventData) ||
14294 ( NULL == pEventData->pCBfnc))
14295 {
14296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014297 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014299 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014300 }
14301
Jeff Johnsone7245742012-09-05 17:12:55 -070014302 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014303 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014304 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014305 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014306
14307 if (WDI_getFwWlanFeatCaps(PROBE_RSP_TEMPLATE_VER1))
14308 uMsgSize = sizeof(tSendProbeRespReqParams_V1) +
14309 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14310 uProbeRespTemplateLen -
14311 sizeof(halProbeRespTmplParams_V1->pProbeRespTemplate);
14312 else
14313 uMsgSize = sizeof(tSendProbeRespReqParams);
14314
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 /*-----------------------------------------------------------------------
14316 Get message buffer
14317 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014318 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014319 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070014320 &pSendBuffer, &usDataOffset, &usSendSize))||
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014321 ( usSendSize < (usDataOffset + uMsgSize)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 {
14323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014324 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014325 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
14326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014328 }
14329
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014330 if (WDI_getFwWlanFeatCaps(PROBE_RSP_TEMPLATE_VER1))
14331 {
14332 halProbeRespTmplParams_V1 =
14333 (tSendProbeRespReqParams_V1 *)(pSendBuffer + usDataOffset);
Jeff Johnson295189b2012-06-20 16:38:30 -070014334
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014335 wpalMemoryCopy(halProbeRespTmplParams_V1->bssId,
14336 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
14337 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014338
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014339 halProbeRespTmplParams_V1->probeRespTemplateLen =
14340 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14341 uProbeRespTemplateLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070014342
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014343 wpalMemoryCopy(halProbeRespTmplParams_V1->ucProxyProbeReqValidIEBmap,
14344 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14345 uaProxyProbeReqValidIEBmap,
14346 WDI_PROBE_REQ_BITMAP_IE_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070014347
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014348 wpalMemoryCopy(halProbeRespTmplParams_V1->pProbeRespTemplate,
14349 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14350 pProbeRespTemplate,
14351 halProbeRespTmplParams_V1->probeRespTemplateLen);
14352 }
14353 else
14354 {
14355 halProbeRespTmplParams =
14356 (tSendProbeRespReqParams *)(pSendBuffer + usDataOffset);
Jeff Johnson295189b2012-06-20 16:38:30 -070014357
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014358 wpalMemoryCopy(halProbeRespTmplParams->bssId,
14359 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
14360 WDI_MAC_ADDR_LEN);
14361
14362 if (BEACON_TEMPLATE_SIZE <
14363 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14364 uProbeRespTemplateLen)
14365 halProbeRespTmplParams->probeRespTemplateLen = BEACON_TEMPLATE_SIZE;
14366 else
14367 halProbeRespTmplParams->probeRespTemplateLen =
14368 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14369 uProbeRespTemplateLen;
14370
14371 wpalMemoryCopy(halProbeRespTmplParams->ucProxyProbeReqValidIEBmap,
14372 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14373 uaProxyProbeReqValidIEBmap,
14374 WDI_PROBE_REQ_BITMAP_IE_LEN);
14375 wpalMemoryCopy(halProbeRespTmplParams->pProbeRespTemplate,
14376 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14377 pProbeRespTemplate,
14378 BEACON_TEMPLATE_SIZE);
14379 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014380
14381 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014383
Sreelakshmi Konamki7d7f6ca2017-05-15 15:32:02 +053014384 vos_mem_free(pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.
14385 pProbeRespTemplate);
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014387 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014388 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014389 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14390 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
14391 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014392}/*WDI_ProcessUpdateProbeRspTemplateReq*/
14393
14394/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014395 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014397
14398 @param pWDICtx: pointer to the WLAN DAL context
14399 pEventData: pointer to the event information structure
14400
Jeff Johnson295189b2012-06-20 16:38:30 -070014401 @see
14402 @return Result of the function call
14403*/
14404WDI_Status
14405WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014406(
Jeff Johnson295189b2012-06-20 16:38:30 -070014407 WDI_ControlBlockType* pWDICtx,
14408 WDI_EventInfoType* pEventData
14409)
14410{
14411
14412 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
14413 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
14414
14415 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014416 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014417 -------------------------------------------------------------------------*/
14418 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014419 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
14423 {
14424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014428 }
14429
14430 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070014431 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
14433
14434 /*cache the wdi nv request message here if the the first fragment
14435 * To issue the request to HAL for the next fragment */
14436 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
14437 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
14439 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070014440 sizeof(pWDICtx->wdiCachedNvDownloadReq));
14441
14442 pWDICtx->pfncRspCB = pEventData->pCBfnc;
14443 pWDICtx->pRspCBUserData = pEventData->pUserData;
14444 }
14445
14446 return WDI_SendNvBlobReq(pWDICtx,pEventData);
14447}
14448
14449/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014452
14453 @param pWDICtx: pointer to the WLAN DAL context
14454 pEventData: pointer to the event information structure
14455
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 @see
14457 @return Result of the function call
14458*/
14459WDI_Status WDI_ProcessSetMaxTxPowerReq
14460(
14461 WDI_ControlBlockType* pWDICtx,
14462 WDI_EventInfoType* pEventData
14463)
14464{
14465 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
14466 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014467 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 wpt_uint16 usDataOffset = 0;
14469 wpt_uint16 usSendSize = 0;
14470 tSetMaxTxPwrReq halSetMaxTxPower;
14471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14472
14473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014475 -------------------------------------------------------------------------*/
14476 if (( NULL == pEventData ) ||
14477 ( NULL == pEventData->pEventData ) ||
14478 ( NULL == pEventData->pCBfnc ))
14479 {
14480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014483 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 }
Jeff Johnsone7245742012-09-05 17:12:55 -070014485 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014487 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014488 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
14489
14490 /*-----------------------------------------------------------------------
14491 Get message buffer
14492 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014493if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
14495 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070014496 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070014497)))
14498 {
14499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014500 "Unable to get Set Max Tx Power req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
14502 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014503 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 }
14505
14506 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
14507 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
14508 WDI_MAC_ADDR_LEN);
14509
14510 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
14511 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
14512 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070014513 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070014514 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070014515
14516 wpalMemoryCopy( pSendBuffer+usDataOffset,
14517 &halSetMaxTxPower.setMaxTxPwrParams,
14518 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014519
14520 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014521 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014522
14523 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014524 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014525 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014526 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14527 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
14528 WDI_SET_MAX_TX_POWER_RESP);
14529
Jeff Johnson295189b2012-06-20 16:38:30 -070014530}
14531
Arif Hussaina5ebce02013-08-09 15:09:58 -070014532/*
14533 @brief Process Set Max Tx Power Per Band Request function (called when Main
14534 FSM allows it)
14535
14536 @param pWDICtx: pointer to the WLAN DAL context
14537 pEventData: pointer to the event information structure
14538
14539 @see
14540 @return Result of the function call
14541*/
14542WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
14543(
14544 WDI_ControlBlockType* pWDICtx,
14545 WDI_EventInfoType* pEventData
14546)
14547{
14548 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
14549 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
14550 wpt_uint8* pSendBuffer = NULL;
14551 wpt_uint16 usDataOffset = 0;
14552 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070014553 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070014554 WDI_Status rValue = WDI_STATUS_SUCCESS;
14555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14556
14557 /*-------------------------------------------------------------------------
14558 Sanity check
14559 -------------------------------------------------------------------------*/
14560 if (( NULL == pEventData ) ||
14561 ( NULL == pEventData->pEventData ) ||
14562 ( NULL == pEventData->pCBfnc ))
14563 {
14564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14565 "%s: Invalid parameters", __func__);
14566 WDI_ASSERT(0);
14567 return WDI_STATUS_E_FAILURE;
14568 }
14569 pwdiSetMaxTxPowerPerBandParams = \
14570 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
14571
14572 wdiSetMaxTxPowerPerBandRspCb = \
14573 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
14574
14575 /*-----------------------------------------------------------------------
14576 Get message buffer
14577 -----------------------------------------------------------------------*/
14578
14579 rValue = WDI_GetMessageBuffer(pWDICtx,
14580 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
14581 sizeof(tSetMaxTxPwrPerBandParams),
14582 &pSendBuffer, &usDataOffset, &usSendSize);
14583
14584 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
14585 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
14586 {
14587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014588 "Unable to get Set Max Tx Power Per Band req %pK %pK %pK",
Arif Hussaina5ebce02013-08-09 15:09:58 -070014589 pEventData, pwdiSetMaxTxPowerPerBandParams,
14590 wdiSetMaxTxPowerPerBandRspCb);
14591 WDI_ASSERT(0);
14592 return WDI_STATUS_E_FAILURE;
14593 }
14594
14595
Arif Hussainf8f080c2014-04-03 09:48:36 -070014596 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
14597 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070014598 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
14599
Arif Hussainf8f080c2014-04-03 09:48:36 -070014600 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070014601 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
14602
14603 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
14604 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
14605
14606 /*-------------------------------------------------------------------------
14607 Send Set Max Tx Power Per Band Request to HAL
14608 -------------------------------------------------------------------------*/
14609 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
14610 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
14611 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
14612}
14613
schang86c22c42013-03-13 18:41:24 -070014614/**
14615 @brief Process Set Tx Power Request function (called when Main
14616 FSM allows it)
14617
14618 @param pWDICtx: pointer to the WLAN DAL context
14619 pEventData: pointer to the event information structure
14620
14621 @see
14622 @return Result of the function call
14623*/
14624WDI_Status WDI_ProcessSetTxPowerReq
14625(
14626 WDI_ControlBlockType* pWDICtx,
14627 WDI_EventInfoType* pEventData
14628)
14629{
14630 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
14631 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
14632 wpt_uint8* pSendBuffer = NULL;
14633 wpt_uint16 usDataOffset = 0;
14634 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070014635 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070014636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14637
14638 /*-------------------------------------------------------------------------
14639 Sanity check
14640 -------------------------------------------------------------------------*/
14641 if (( NULL == pEventData ) ||
14642 ( NULL == pEventData->pEventData ) ||
14643 ( NULL == pEventData->pCBfnc ))
14644 {
14645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14646 "%s: Invalid parameters", __func__);
14647 WDI_ASSERT(0);
14648 return WDI_STATUS_E_FAILURE;
14649 }
14650
14651 pwdiSetTxPowerParams =
14652 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
14653 wdiSetTxPowerRspCb =
14654 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
14655
14656 /*-----------------------------------------------------------------------
14657 Get message buffer
14658 -----------------------------------------------------------------------*/
14659 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
14660 sizeof(tSetTxPwrReqParams),
14661 &pSendBuffer, &usDataOffset, &usSendSize))||
14662 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
14663 )))
14664 {
14665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014666 "Unable to get Set Max Tx Power req %pK %pK %pK",
schang86c22c42013-03-13 18:41:24 -070014667 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
14668 WDI_ASSERT(0);
14669 return WDI_STATUS_E_FAILURE;
14670 }
14671
Leo Chang9a43db92013-03-25 17:39:58 -070014672 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
14673 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
14674 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070014675
14676 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
14677 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
14678
14679 /*-------------------------------------------------------------------------
14680 Send Set Tx Power Request to HAL
14681 -------------------------------------------------------------------------*/
14682 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14683 wdiSetTxPowerRspCb, pEventData->pUserData,
14684 WDI_SET_TX_POWER_RESP);
14685}
Jeff Johnson295189b2012-06-20 16:38:30 -070014686
14687/**
14688 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14689 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014690
14691 @param pWDICtx: pointer to the WLAN DAL context
14692 pEventData: pointer to the event information structure
14693
Jeff Johnson295189b2012-06-20 16:38:30 -070014694 @see
14695 @return Result of the function call
14696*/
14697WDI_Status
14698WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014699(
Jeff Johnson295189b2012-06-20 16:38:30 -070014700 WDI_ControlBlockType* pWDICtx,
14701 WDI_EventInfoType* pEventData
14702)
14703{
14704 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
14705 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014706 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 wpt_uint16 usDataOffset = 0;
14708 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014709 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014710 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14711
14712 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 -------------------------------------------------------------------------*/
14715 if (( NULL == pEventData ) ||
14716 ( NULL == pEventData->pEventData) ||
14717 ( NULL == pEventData->pCBfnc))
14718 {
14719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014720 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 }
14724
Jeff Johnsone7245742012-09-05 17:12:55 -070014725 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014726 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014727 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14729 /*-----------------------------------------------------------------------
14730 Get message buffer
14731 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014732 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14733 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014734 sizeof(halSetP2PGONOAParams),
14735 &pSendBuffer, &usDataOffset, &usSendSize))||
14736 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14737 {
14738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014739 "Unable to get send buffer in set P2P GO NOA REQ %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070014740 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 }
14744
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14749 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014750 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014751 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014757 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14758
Jeff Johnsone7245742012-09-05 17:12:55 -070014759 wpalMemoryCopy( pSendBuffer+usDataOffset,
14760 &halSetP2PGONOAParams,
14761 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014762
14763 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014764 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014765
14766 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014768 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014769 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14770 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14771 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014772}/*WDI_ProcessP2PGONOAReq*/
14773
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014774#ifdef FEATURE_WLAN_TDLS
14775
14776/**
14777 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14778 allows it)
14779
14780 @param pWDICtx: pointer to the WLAN DAL context
14781 pEventData: pointer to the event information structure
14782
14783 @see
14784 @return Result of the function call
14785*/
14786WDI_Status
14787WDI_ProcessTdlsLinkEstablishReq
14788(
14789 WDI_ControlBlockType* pWDICtx,
14790 WDI_EventInfoType* pEventData
14791)
14792{
14793 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14794 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14795 wpt_uint8* pSendBuffer = NULL;
14796 wpt_uint16 usDataOffset = 0;
14797 wpt_uint16 usSendSize = 0;
14798
14799 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14801
14802 /*-------------------------------------------------------------------------
14803 Sanity check
14804 -------------------------------------------------------------------------*/
14805 if (( NULL == pEventData ) ||
14806 ( NULL == pEventData->pEventData) ||
14807 ( NULL == pEventData->pCBfnc))
14808 {
14809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14810 "%s: Invalid parameters", __func__);
14811 WDI_ASSERT(0);
14812 return WDI_STATUS_E_FAILURE;
14813 }
14814 pwdiTDLSLinkEstablishReqParams =
14815 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14816 wdiTDLSLinkEstablishReqRspCb =
14817 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14818
14819
14820 /*-----------------------------------------------------------------------
14821 Get message buffer
14822 -----------------------------------------------------------------------*/
14823 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14824 WDI_TDLS_LINK_ESTABLISH_REQ,
14825 sizeof(halSetTDLSLinkEstablishParams),
14826 &pSendBuffer, &usDataOffset, &usSendSize))||
14827 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14828 {
14829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014830 "Unable to get send buffer in set P2P GO NOA REQ %pK %pK %pK",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014831 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14832 WDI_ASSERT(0);
14833 return WDI_STATUS_E_FAILURE;
14834 }
14835
14836 halSetTDLSLinkEstablishParams.staIdx =
14837 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14838 halSetTDLSLinkEstablishParams.bIsResponder =
14839 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14840 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14841 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14842 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14843 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14844 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14845 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14846 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14847 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14848 halSetTDLSLinkEstablishParams.aAck = 0;
14849 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14850 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14851 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014852 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14853 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14854
14855 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14856 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14857 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14858 halSetTDLSLinkEstablishParams.validChannelsLen =
14859 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14860
14861 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14862 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14863 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14864 halSetTDLSLinkEstablishParams.validOperClassesLen =
14865 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014866
14867 wpalMemoryCopy( pSendBuffer+usDataOffset,
14868 &halSetTDLSLinkEstablishParams,
14869 sizeof(halSetTDLSLinkEstablishParams));
14870
14871 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14872 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14873
14874 /*-------------------------------------------------------------------------
14875 Send Update Probe Resp Template Request to HAL
14876 -------------------------------------------------------------------------*/
14877 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14878 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14879 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14880 return 0;
14881}/*WDI_ProcessTdlsLinkEstablishReq*/
14882
14883
Atul Mittalc0f739f2014-07-31 13:47:47 +053014884/**
14885 @brief sends the channel switch command to f/w (called when Main FSM
14886 allows it)
14887
14888 @param pWDICtx: pointer to the WLAN DAL context
14889 pEventData: pointer to the event information structure
14890
14891 @see
14892 @return Result of the function call
14893*/
14894WDI_Status
14895WDI_ProcessTdlsChanSwitchReq
14896(
14897 WDI_ControlBlockType* pWDICtx,
14898 WDI_EventInfoType* pEventData
14899)
14900{
14901 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14902 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14903 wpt_uint8* pSendBuffer = NULL;
14904 wpt_uint16 usDataOffset = 0;
14905 wpt_uint16 usSendSize = 0;
14906 //WDI_Status wdiStatus;
14907 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14908 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14909
14910 /*-------------------------------------------------------------------------
14911 Sanity check
14912 -------------------------------------------------------------------------*/
14913 if (( NULL == pEventData ) ||
14914 ( NULL == pEventData->pEventData))
14915 {
14916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14917 "%s: Invalid parameters", __func__);
14918 WDI_ASSERT(0);
14919 return WDI_STATUS_E_FAILURE;
14920 }
14921 pwdiTDLSChanSwitchReqParams =
14922 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14923 wdiTDLSChanSwitchReqRspCb =
14924 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14925
14926 /*-----------------------------------------------------------------------
14927 Get message buffer
14928 -----------------------------------------------------------------------*/
14929 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14930 WDI_TDLS_CHAN_SWITCH_REQ,
14931 sizeof(halSetTDLSChanSwitchParams),
14932 &pSendBuffer, &usDataOffset, &usSendSize))||
14933 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14934 {
14935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070014936 "Unable to get send buffer in Channel Switch REQ %pK %pK %pK",
Atul Mittalc0f739f2014-07-31 13:47:47 +053014937 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14938 WDI_ASSERT(0);
14939 return WDI_STATUS_E_FAILURE;
14940 }
14941
14942 halSetTDLSChanSwitchParams.staIdx =
14943 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14944 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14945 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14946 halSetTDLSChanSwitchParams.targetOperClass =
14947 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14948 halSetTDLSChanSwitchParams.targetChannel =
14949 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14950 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14951 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14952 wpalMemoryCopy( pSendBuffer+usDataOffset,
14953 &halSetTDLSChanSwitchParams,
14954 sizeof(halSetTDLSChanSwitchParams));
14955
14956 pWDICtx->wdiReqStatusCB = NULL;
14957 pWDICtx->pReqStatusUserData = NULL;
14958
14959 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14960 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14961 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14962}/*WDI_ProcessTdlsChanSwitchReq*/
14963
14964#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014965
Jeff Johnson295189b2012-06-20 16:38:30 -070014966
14967
14968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014969 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014970 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 @param None
14972
14973 @see
14974 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014975*/
14976void
14977WDI_SetPowerStateCb
14978(
14979 wpt_status status,
14980 unsigned int dxePhyAddr,
14981 void *pContext
14982)
14983{
14984 wpt_status wptStatus;
14985 WDI_ControlBlockType *pCB = NULL;
14986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014987 /*
14988 * Trigger the event to bring the Enter BMPS req function to come
14989 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014990*/
14991 if( NULL != pContext )
14992 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014993 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014994 }
14995 else
14996 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014997 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 pCB = &gWDICb;
14999 }
Mihir Shetea4306052014-03-25 00:02:54 +053015000
15001 if(eWLAN_PAL_STATUS_SUCCESS == status )
15002 {
15003 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
15004 }
15005 else
15006 {
15007 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
15008 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015009 pCB->dxePhyAddr = dxePhyAddr;
15010 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
15011 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15012 {
15013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15014 "Failed to set an event");
15015
Jeff Johnsone7245742012-09-05 17:12:55 -070015016 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070015017 }
15018 return;
15019}
15020
15021
15022/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015023 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070015024 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015025
15026 @param pWDICtx: pointer to the WLAN DAL context
15027 pEventData: pointer to the event information structure
15028
Jeff Johnson295189b2012-06-20 16:38:30 -070015029 @see
15030 @return Result of the function call
15031*/
15032WDI_Status
15033WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015034(
Jeff Johnson295189b2012-06-20 16:38:30 -070015035 WDI_ControlBlockType* pWDICtx,
15036 WDI_EventInfoType* pEventData
15037)
15038{
Jeff Johnson43971f52012-07-17 12:26:56 -070015039 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 wpt_uint16 usDataOffset = 0;
15043 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053015044 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15046
15047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053015050 if ((NULL == pEventData ) ||
15051 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
15052 (NULL == (pwdiEnterImpsReqParams =
15053 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070015054 {
15055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015056 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015057 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015058 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015059 }
15060
15061 /*-----------------------------------------------------------------------
15062 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015063 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015064 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015065 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015066 0,
15067 &pSendBuffer, &usDataOffset, &usSendSize))||
15068 ( usSendSize < (usDataOffset )))
15069 {
15070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015071 "Unable to get send buffer in Enter IMPS req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015072 pEventData, wdiEnterImpsRspCb);
15073 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015074 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015075 }
15076
15077 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070015078 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
15079 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 {
15081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15082 "WDI Init failed to reset an event");
15083
Jeff Johnsone7245742012-09-05 17:12:55 -070015084 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015085 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 }
15087
15088 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080015089 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
15090 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
15091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015092 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080015093 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015094 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080015095 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015096
15097 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070015098 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070015099 */
Jeff Johnson43971f52012-07-17 12:26:56 -070015100 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
15101 WDI_SET_POWER_STATE_TIMEOUT);
15102 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015103 {
15104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15105 "WDI Init failed to wait on an event");
15106
Karthick S1fa70262015-08-20 13:28:14 +053015107 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070015108 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015109 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070015110 }
15111
Mihir Shetea4306052014-03-25 00:02:54 +053015112 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
15113 {
15114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
15115 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
15116
15117 goto fail;
15118 }
15119
15120 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
15121 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015123 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015124 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015125 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15126 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015127
15128fail:
15129 // Release the message buffer so we don't leak
15130 wpalMemoryFree(pSendBuffer);
15131
15132failRequest:
15133 //WDA should have failure check to avoid the memory leak
15134 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015135}/*WDI_ProcessEnterImpsReq*/
15136
15137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070015139 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015140
15141 @param pWDICtx: pointer to the WLAN DAL context
15142 pEventData: pointer to the event information structure
15143
Jeff Johnson295189b2012-06-20 16:38:30 -070015144 @see
15145 @return Result of the function call
15146*/
15147WDI_Status
15148WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015149(
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 WDI_ControlBlockType* pWDICtx,
15151 WDI_EventInfoType* pEventData
15152)
15153{
15154 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 wpt_uint16 usDataOffset = 0;
15157 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053015158 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015159 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15160
15161 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 -------------------------------------------------------------------------*/
15164 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053015165 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
15166 (NULL == (pwdiExitImpsReqParams =
15167 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 {
15169 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015170 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015171 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 }
15174
15175 /*-----------------------------------------------------------------------
15176 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015177 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015179 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 0,
15181 &pSendBuffer, &usDataOffset, &usSendSize))||
15182 ( usSendSize < (usDataOffset )))
15183 {
15184 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015185 "Unable to get send buffer in Exit IMPS req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015186 pEventData, wdiExitImpsRspCb);
15187 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053015190 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
15191 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015194 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015195 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15196 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015197}/*WDI_ProcessExitImpsReq*/
15198
15199/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070015201 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015202
15203 @param pWDICtx: pointer to the WLAN DAL context
15204 pEventData: pointer to the event information structure
15205
Jeff Johnson295189b2012-06-20 16:38:30 -070015206 @see
15207 @return Result of the function call
15208*/
15209WDI_Status
15210WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015211(
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 WDI_ControlBlockType* pWDICtx,
15213 WDI_EventInfoType* pEventData
15214)
15215{
15216 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
15217 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 wpt_uint16 usDataOffset = 0;
15220 wpt_uint16 usSendSize = 0;
15221 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070015222 wpt_status wptStatus;
15223
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15225
15226 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015227 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015228 -------------------------------------------------------------------------*/
15229 if (( NULL == pEventData ) ||
15230 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
15231 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
15232 {
15233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015235 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015236 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 }
15238
15239 /*-----------------------------------------------------------------------
15240 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015241 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015242 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015244 sizeof(enterBmpsReq),
15245 &pSendBuffer, &usDataOffset, &usSendSize))||
15246 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
15247 {
15248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015249 "Unable to get send buffer in Enter BMPS req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
15251 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015252 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 }
15254
15255 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070015256 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
15257 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015258 {
15259 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15260 "WDI Init failed to reset an event");
15261
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015263 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070015264 }
15265
15266 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080015267 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
15268 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
15269 {
15270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080015271 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080015272 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015273 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080015274 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015275
15276/*
Jeff Johnsone7245742012-09-05 17:12:55 -070015277 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070015278 */
Jeff Johnson43971f52012-07-17 12:26:56 -070015279 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
15280 WDI_SET_POWER_STATE_TIMEOUT);
15281 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070015282 {
15283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
15284 "WDI Init failed to wait on an event");
15285
Karthick S1fa70262015-08-20 13:28:14 +053015286 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070015287 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015288 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070015289 }
15290
15291 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
15292
15293 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
15294 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
15295 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
15296 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
15297
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080015298 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070015299 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
15300 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
15301 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
15302
15303 wpalMemoryCopy( pSendBuffer+usDataOffset,
15304 &enterBmpsReq,
15305 sizeof(enterBmpsReq));
15306
15307 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015308 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015309
15310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015313 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15314 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015315
15316fail:
15317 // Release the message buffer so we don't leak
15318 wpalMemoryFree(pSendBuffer);
15319
15320failRequest:
15321 //WDA should have failure check to avoid the memory leak
15322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015323}/*WDI_ProcessEnterBmpsReq*/
15324
15325/**
15326 @brief Process Exit BMPS Request function (called when Main FSM
15327 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015328
15329 @param pWDICtx: pointer to the WLAN DAL context
15330 pEventData: pointer to the event information structure
15331
Jeff Johnson295189b2012-06-20 16:38:30 -070015332 @see
15333 @return Result of the function call
15334*/
15335WDI_Status
15336WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015337(
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 WDI_ControlBlockType* pWDICtx,
15339 WDI_EventInfoType* pEventData
15340)
15341{
15342 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
15343 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 wpt_uint16 usDataOffset = 0;
15346 wpt_uint16 usSendSize = 0;
15347 tHalExitBmpsReqParams exitBmpsReq;
15348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15349
15350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 -------------------------------------------------------------------------*/
15353 if (( NULL == pEventData ) ||
15354 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
15355 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
15356 {
15357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015361 }
15362
15363 /*-----------------------------------------------------------------------
15364 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015366 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015367 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 sizeof(exitBmpsReq),
15369 &pSendBuffer, &usDataOffset, &usSendSize))||
15370 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
15371 {
15372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015373 "Unable to get send buffer in Exit BMPS req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015374 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
15375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015377 }
15378 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
15379
Jeff Johnsone7245742012-09-05 17:12:55 -070015380 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
15381
Jeff Johnson295189b2012-06-20 16:38:30 -070015382 wpalMemoryCopy( pSendBuffer+usDataOffset,
15383 &exitBmpsReq,
15384 sizeof(exitBmpsReq));
15385
15386 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015387 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015388
15389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015390 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015391 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015392 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15393 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015394}/*WDI_ProcessExitBmpsReq*/
15395
15396/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015397 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015399
15400 @param pWDICtx: pointer to the WLAN DAL context
15401 pEventData: pointer to the event information structure
15402
Jeff Johnson295189b2012-06-20 16:38:30 -070015403 @see
15404 @return Result of the function call
15405*/
15406WDI_Status
15407WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015408(
Jeff Johnson295189b2012-06-20 16:38:30 -070015409 WDI_ControlBlockType* pWDICtx,
15410 WDI_EventInfoType* pEventData
15411)
15412{
15413 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
15414 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 wpt_uint16 usDataOffset = 0;
15417 wpt_uint16 usSendSize = 0;
15418 tUapsdReqParams enterUapsdReq;
15419 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15420
15421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015422 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015423 -------------------------------------------------------------------------*/
15424 if (( NULL == pEventData ) ||
15425 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
15426 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
15427 {
15428 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015429 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015431 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015432 }
15433
15434 /*-----------------------------------------------------------------------
15435 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015436 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015437 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015438 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015439 sizeof(enterUapsdReq),
15440 &pSendBuffer, &usDataOffset, &usSendSize))||
15441 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
15442 {
15443 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015444 "Unable to get send buffer in Enter UAPSD req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015445 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
15446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 }
15449
15450 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
15451 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
15452 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
15453 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
15454 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
15455 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
15456 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
15457 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070015458 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070015459
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 wpalMemoryCopy( pSendBuffer+usDataOffset,
15461 &enterUapsdReq,
15462 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015463
15464 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015465 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015466
15467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015468 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015469 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015470 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15471 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015472}/*WDI_ProcessEnterUapsdReq*/
15473
15474/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015475 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070015476 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015477
15478 @param pWDICtx: pointer to the WLAN DAL context
15479 pEventData: pointer to the event information structure
15480
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 @see
15482 @return Result of the function call
15483*/
15484WDI_Status
15485WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015486(
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 WDI_ControlBlockType* pWDICtx,
15488 WDI_EventInfoType* pEventData
15489)
15490{
15491 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015492 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015493 wpt_uint16 usDataOffset = 0;
15494 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015495 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
15496 wpt_uint8 bssIdx = 0;
15497
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15499
15500 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015501 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015502 -------------------------------------------------------------------------*/
15503 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015504 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
15506 {
15507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 }
15512
15513 /*-----------------------------------------------------------------------
15514 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015515 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015518 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070015519 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015520 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015521 {
15522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015523 "Unable to get send buffer in Exit UAPSD req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015524 pEventData, wdiExitUapsdRspCb);
15525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015527 }
15528
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015529 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
15530
15531 wpalMemoryCopy( pSendBuffer+usDataOffset,
15532 &bssIdx,
15533 sizeof(wpt_uint8));
15534
15535 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
15536 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
15537
Jeff Johnson295189b2012-06-20 16:38:30 -070015538 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015539 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015540 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015541 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15542 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015543}/*WDI_ProcessExitUapsdReq*/
15544
15545/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015546 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070015547 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015548
15549 @param pWDICtx: pointer to the WLAN DAL context
15550 pEventData: pointer to the event information structure
15551
Jeff Johnson295189b2012-06-20 16:38:30 -070015552 @see
15553 @return Result of the function call
15554*/
15555WDI_Status
15556WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015557(
Jeff Johnson295189b2012-06-20 16:38:30 -070015558 WDI_ControlBlockType* pWDICtx,
15559 WDI_EventInfoType* pEventData
15560)
15561{
15562 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
15563 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 wpt_uint16 usDataOffset = 0;
15566 wpt_uint16 usSendSize = 0;
15567 tUapsdInfo uapsdAcParamsReq;
15568 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15569
15570 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015571 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015572 -------------------------------------------------------------------------*/
15573 if (( NULL == pEventData ) ||
15574 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
15575 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
15576 {
15577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015578 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 }
15582
15583 /*-----------------------------------------------------------------------
15584 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015585 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015587 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015588 sizeof(uapsdAcParamsReq),
15589 &pSendBuffer, &usDataOffset, &usSendSize))||
15590 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
15591 {
15592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015593 "Unable to get send buffer in Set UAPSD params req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
15595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 }
15598
15599 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
15600 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
15601 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
15602 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
15603 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
15604 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
15605
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 wpalMemoryCopy( pSendBuffer+usDataOffset,
15607 &uapsdAcParamsReq,
15608 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015609
15610 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015611 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015612
15613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015614 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15617 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015618}/*WDI_ProcessSetUapsdAcParamsReq*/
15619
15620/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015621 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015622 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015623
15624 @param pWDICtx: pointer to the WLAN DAL context
15625 pEventData: pointer to the event information structure
15626
Jeff Johnson295189b2012-06-20 16:38:30 -070015627 @see
15628 @return Result of the function call
15629*/
15630WDI_Status
15631WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015632(
Jeff Johnson295189b2012-06-20 16:38:30 -070015633 WDI_ControlBlockType* pWDICtx,
15634 WDI_EventInfoType* pEventData
15635)
15636{
15637 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
15638 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015640 wpt_uint16 usDataOffset = 0;
15641 wpt_uint16 usSendSize = 0;
15642 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15643
15644 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015646 -------------------------------------------------------------------------*/
15647 if (( NULL == pEventData ) ||
15648 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
15649 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
15650 {
15651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015655 }
15656
15657 /*-----------------------------------------------------------------------
15658 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015659 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015662 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
15663 &pSendBuffer, &usDataOffset, &usSendSize))||
15664 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
15665 {
15666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015667 "Unable to get send buffer in Update UAPSD params req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
15669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015671 }
15672
Jeff Johnsone7245742012-09-05 17:12:55 -070015673 wpalMemoryCopy( pSendBuffer+usDataOffset,
15674 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
15675 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015676
15677 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015678 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015679
15680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015681 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015683 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15684 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015685}/*WDI_ProcessUpdateUapsdParamsReq*/
15686
15687/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015689 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015690
15691 @param pWDICtx: pointer to the WLAN DAL context
15692 pEventData: pointer to the event information structure
15693
Jeff Johnson295189b2012-06-20 16:38:30 -070015694 @see
15695 @return Result of the function call
15696*/
15697WDI_Status
15698WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015699(
Jeff Johnson295189b2012-06-20 16:38:30 -070015700 WDI_ControlBlockType* pWDICtx,
15701 WDI_EventInfoType* pEventData
15702)
15703{
15704 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
15705 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015706 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015707 wpt_uint16 usDataOffset = 0;
15708 wpt_uint16 usSendSize = 0;
15709 tHalConfigureRxpFilterReqParams halRxpFilterParams;
15710
15711 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15712
15713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015715 -------------------------------------------------------------------------*/
15716 if (( NULL == pEventData ) ||
15717 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15718 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15719 {
15720 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015721 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 }
15725
15726 /*-----------------------------------------------------------------------
15727 Get message buffer
15728 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015729 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015730 sizeof(halRxpFilterParams),
15731 &pSendBuffer, &usDataOffset, &usSendSize))||
15732 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15733 {
15734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015735 "Unable to get send buffer in Set UAPSD params req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015736 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015739 }
15740
Jeff Johnsone7245742012-09-05 17:12:55 -070015741 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015743 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015744 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15745
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 wpalMemoryCopy( pSendBuffer+usDataOffset,
15747 &halRxpFilterParams,
15748 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015749
15750 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015751 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015752
15753 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015754 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015756 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15757 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015758}/*WDI_ProcessConfigureRxpFilterReq*/
15759
15760/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015761 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015762 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015763
15764 @param pWDICtx: pointer to the WLAN DAL context
15765 pEventData: pointer to the event information structure
15766
Jeff Johnson295189b2012-06-20 16:38:30 -070015767 @see
15768 @return Result of the function call
15769*/
15770WDI_Status
15771WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015772(
Jeff Johnson295189b2012-06-20 16:38:30 -070015773 WDI_ControlBlockType* pWDICtx,
15774 WDI_EventInfoType* pEventData
15775)
15776{
15777 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15778 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015779 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015780 wpt_uint16 usDataOffset = 0;
15781 wpt_uint16 usSendSize = 0;
15782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15783
15784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015786 -------------------------------------------------------------------------*/
15787 if (( NULL == pEventData ) ||
15788 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15789 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15790 {
15791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015792 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015795 }
15796
15797 /*-----------------------------------------------------------------------
15798 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015799 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015800 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15803 &pSendBuffer, &usDataOffset, &usSendSize))||
15804 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15805 {
15806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015807 "Unable to get send buffer in Set beacon filter req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 }
15812
Jeff Johnsone7245742012-09-05 17:12:55 -070015813 wpalMemoryCopy( pSendBuffer+usDataOffset,
15814 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15815 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15816 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15817 &pwdiBeaconFilterParams->aFilters[0],
15818 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015819
15820 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015822
15823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015824 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15827 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015828}/*WDI_ProcessSetBeaconFilterReq*/
15829
15830/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015831 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015832 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015833
15834 @param pWDICtx: pointer to the WLAN DAL context
15835 pEventData: pointer to the event information structure
15836
Jeff Johnson295189b2012-06-20 16:38:30 -070015837 @see
15838 @return Result of the function call
15839*/
15840WDI_Status
15841WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015842(
Jeff Johnson295189b2012-06-20 16:38:30 -070015843 WDI_ControlBlockType* pWDICtx,
15844 WDI_EventInfoType* pEventData
15845)
15846{
15847 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15848 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015849 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015850 wpt_uint16 usDataOffset = 0;
15851 wpt_uint16 usSendSize = 0;
15852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15853
15854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015855 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 -------------------------------------------------------------------------*/
15857 if (( NULL == pEventData ) ||
15858 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15859 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15860 {
15861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015862 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015863 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015864 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015865 }
15866
15867 /*-----------------------------------------------------------------------
15868 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015869 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015870 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015872 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15873 &pSendBuffer, &usDataOffset, &usSendSize))||
15874 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15875 {
15876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015877 "Unable to get send buffer in remove beacon filter req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015878 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015881 }
15882
Jeff Johnsone7245742012-09-05 17:12:55 -070015883 wpalMemoryCopy( pSendBuffer+usDataOffset,
15884 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15885 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015886
15887 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015888 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015889
15890 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015892 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15894 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015895}
15896
15897/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015899 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015900
15901 @param pWDICtx: pointer to the WLAN DAL context
15902 pEventData: pointer to the event information structure
15903
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 @see
15905 @return Result of the function call
15906*/
15907WDI_Status
15908WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015909(
Jeff Johnson295189b2012-06-20 16:38:30 -070015910 WDI_ControlBlockType* pWDICtx,
15911 WDI_EventInfoType* pEventData
15912)
15913{
15914 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15915 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015916 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015917 wpt_uint16 usDataOffset = 0;
15918 wpt_uint16 usSendSize = 0;
15919 tHalRSSIThresholds rssiThresholdsReq;
15920 WDI_Status ret_status = 0;
15921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15922
15923 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 -------------------------------------------------------------------------*/
15926 if (( NULL == pEventData ) ||
15927 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15928 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15929 {
15930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015931 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 }
15935
15936 /*-----------------------------------------------------------------------
15937 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015938 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 sizeof(rssiThresholdsReq),
15942 &pSendBuffer, &usDataOffset, &usSendSize))||
15943 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15944 {
15945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070015946 "Unable to get send buffer in remove beacon filter req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15948 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015950 }
15951
Jeff Johnsone7245742012-09-05 17:12:55 -070015952 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015954 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015955 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015956 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015960 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015961 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015962 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015963 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015964 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015965 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015966 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015967 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015968 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015969 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015970 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015971 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15972
Jeff Johnsone7245742012-09-05 17:12:55 -070015973 wpalMemoryCopy( pSendBuffer+usDataOffset,
15974 &rssiThresholdsReq,
15975 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015976
15977 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015978 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015979
15980 /*-------------------------------------------------------------------------
15981 Send Set threshold req to HAL
15982 -------------------------------------------------------------------------*/
15983 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15984 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15985 {
15986 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15987 // req. Then as a result of processing the threshold cross ind, we trigger
15988 // a Set threshold req, then we need to indicate to WDI that it needs to
15989 // go to busy state as a result of the indication as we sent a req in the
15990 // same WDI context.
15991 // Hence expected state transition is to busy.
15992 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15993 }
15994
15995 return ret_status;
15996}
15997
15998/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015999 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016001
16002 @param pWDICtx: pointer to the WLAN DAL context
16003 pEventData: pointer to the event information structure
16004
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 @see
16006 @return Result of the function call
16007*/
16008WDI_Status
16009WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016010(
Jeff Johnson295189b2012-06-20 16:38:30 -070016011 WDI_ControlBlockType* pWDICtx,
16012 WDI_EventInfoType* pEventData
16013)
16014{
16015 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
16016 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016017 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016018 wpt_uint16 usDataOffset = 0;
16019 wpt_uint16 usSendSize = 0;
16020 tHalHostOffloadReq hostOffloadParams;
16021 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016022 wpt_uint8 ucCurrentBSSSesIdx = 0;
16023 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016024
16025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16026
16027 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016028 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016029 -------------------------------------------------------------------------*/
16030 if (( NULL == pEventData ) ||
16031 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
16032 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
16033 {
16034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016035 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016037 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016038 }
16039
16040 /*-----------------------------------------------------------------------
16041 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016042 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016045 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
16046 &pSendBuffer, &usDataOffset, &usSendSize))||
16047 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
16048 {
16049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016050 "Unable to get send buffer in host offload req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016051 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
16052 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016053 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016054 }
16055
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016056 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16057 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
16058 &pBSSSes);
16059 if ( NULL == pBSSSes )
16060 {
c_hpothu86feba52014-10-28 15:51:18 +053016061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053016062 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
16063 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016064 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016065 }
16066
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
16068 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016069
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
16071 {
16072 // ARP Offload
16073 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
16074 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
16075 4);
16076 }
16077 else
16078 {
16079 // NS Offload
16080 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
16081 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
16082 16);
16083
16084#ifdef WLAN_NS_OFFLOAD
16085 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
16086 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
16087 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
16088 16);
16089 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
16090 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
16091 16);
16092 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
16093 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
16094 16);
16095 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
16096 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
16097 16);
16098 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
16099 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
16100 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053016101 nsOffloadParams.srcIPv6AddrValid =
16102 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
16103
16104 nsOffloadParams.targetIPv6Addr1Valid =
16105 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
16106
16107 nsOffloadParams.targetIPv6Addr2Valid =
16108 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
16109
16110 nsOffloadParams.slotIndex =
16111 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016112
Jeff Johnson295189b2012-06-20 16:38:30 -070016113#endif // WLAN_NS_OFFLOAD
16114 }
16115
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016116 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
16117
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 // copy hostOffloadParams into pSendBuffer
16119 wpalMemoryCopy( pSendBuffer+usDataOffset,
16120 &hostOffloadParams,
16121 sizeof(hostOffloadParams));
16122
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016123 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070016124 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016125 // copy nsOffloadParams into pSendBuffer
16126 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070016127 &nsOffloadParams,
16128 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016129 }
16130 else
16131 {
16132#ifdef WLAN_NS_OFFLOAD
16133 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
16134 {
16135 // copy nsOffloadParams into pSendBuffer
16136 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
16137 &nsOffloadParams,
16138 sizeof(nsOffloadParams));
16139 }
16140#endif
16141 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016142
16143 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016144 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016145
16146 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16150 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016151
16152fail:
16153 // Release the message buffer so we don't leak
16154 wpalMemoryFree(pSendBuffer);
16155
16156failRequest:
16157 //WDA should have failure check to avoid the memory leak
16158 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016159}/*WDI_ProcessHostOffloadReq*/
16160
16161/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016162 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016163 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016164
16165 @param pWDICtx: pointer to the WLAN DAL context
16166 pEventData: pointer to the event information structure
16167
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 @see
16169 @return Result of the function call
16170*/
16171WDI_Status
16172WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016173(
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 WDI_ControlBlockType* pWDICtx,
16175 WDI_EventInfoType* pEventData
16176)
16177{
16178 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
16179 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016180 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016181 wpt_uint16 usDataOffset = 0;
16182 wpt_uint16 usSendSize = 0;
16183 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016184 wpt_uint8 ucCurrentBSSSesIdx = 0;
16185 WDI_BSSSessionType* pBSSSes = NULL;
16186
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16188
16189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016191 -------------------------------------------------------------------------*/
16192 if (( NULL == pEventData ) ||
16193 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
16194 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
16195 {
16196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16197 "Invalid parameters in Keep Alive req");
16198 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016199 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 }
16201
16202 /*-----------------------------------------------------------------------
16203 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 sizeof(keepAliveReq),
16208 &pSendBuffer, &usDataOffset, &usSendSize))||
16209 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
16210 {
16211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016212 "Unable to get send buffer in keep alive req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016213 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
16214 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016215 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 }
16217
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016218 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16219 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
16220 &pBSSSes);
16221 if ( NULL == pBSSSes )
16222 {
16223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016224 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016225 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016226 }
16227
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
16229 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
16230
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016231 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016232
Jeff Johnson295189b2012-06-20 16:38:30 -070016233 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
16234 {
16235 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
16236 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
16237 HAL_IPV4_ADDR_LEN);
16238 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
16239 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070016240 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070016241 wpalMemoryCopy(keepAliveReq.destMacAddr,
16242 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
16243 HAL_MAC_ADDR_LEN);
16244 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016245
16246 wpalMemoryCopy( pSendBuffer+usDataOffset,
16247 &keepAliveReq,
16248 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 %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016252
16253 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080016254 "Process keep alive req time period %d",
16255 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070016256
16257 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016258 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016259
16260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
16261 "Sending keep alive req to HAL");
16262
16263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016266 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16267 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016268
16269fail:
16270 // Release the message buffer so we don't leak
16271 wpalMemoryFree(pSendBuffer);
16272
16273failRequest:
16274 //WDA should have failure check to avoid the memory leak
16275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016276}/*WDI_ProcessKeepAliveReq*/
16277
16278
16279/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016280 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016281 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016282
16283 @param pWDICtx: pointer to the WLAN DAL context
16284 pEventData: pointer to the event information structure
16285
Jeff Johnson295189b2012-06-20 16:38:30 -070016286 @see
16287 @return Result of the function call
16288*/
16289WDI_Status
16290WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016291(
Jeff Johnson295189b2012-06-20 16:38:30 -070016292 WDI_ControlBlockType* pWDICtx,
16293 WDI_EventInfoType* pEventData
16294)
16295{
16296 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
16297 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016299 wpt_uint16 usDataOffset = 0;
16300 wpt_uint16 usSendSize = 0;
16301 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016302 wpt_uint8 ucCurrentBSSSesIdx = 0;
16303 WDI_BSSSessionType* pBSSSes = NULL;
16304
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16306
16307 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016308 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 -------------------------------------------------------------------------*/
16310 if (( NULL == pEventData ) ||
16311 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
16312 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
16313 {
16314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016315 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016316 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016317 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016318 }
16319
16320 /*-----------------------------------------------------------------------
16321 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016322 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016324 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016325 sizeof(wowlAddBcPtrnReq),
16326 &pSendBuffer, &usDataOffset, &usSendSize))||
16327 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
16328 {
16329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016330 "Unable to get send buffer in Wowl add bc ptrn req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
16332 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016333 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016334 }
16335
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016336 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16337 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
16338 &pBSSSes);
16339 if ( NULL == pBSSSes )
16340 {
16341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016342 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016343 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016344 }
16345
Jeff Johnsone7245742012-09-05 17:12:55 -070016346 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070016347 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070016348 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070016349 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070016350 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070016351 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070016352 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070016353 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
16354
16355 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
16356 {
16357 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
16358 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
16359 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
16360 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
16361 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
16362 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
16363 }
16364 else
16365 {
16366 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
16367 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
16368 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
16369 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
16370 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
16371 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
16372
16373 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
16374 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
16375 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
16376 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
16377 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
16378 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
16379 }
16380
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016381 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
16382
Jeff Johnson295189b2012-06-20 16:38:30 -070016383 wpalMemoryCopy( pSendBuffer+usDataOffset,
16384 &wowlAddBcPtrnReq,
16385 sizeof(wowlAddBcPtrnReq));
16386
16387 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016388 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016389
16390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016391 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016392 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016393 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16394 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016395fail:
16396 // Release the message buffer so we don't leak
16397 wpalMemoryFree(pSendBuffer);
16398
16399failRequest:
16400 //WDA should have failure check to avoid the memory leak
16401 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016402}/*WDI_ProcessWowlAddBcPtrnReq*/
16403
16404/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016405 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016406 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016407
16408 @param pWDICtx: pointer to the WLAN DAL context
16409 pEventData: pointer to the event information structure
16410
Jeff Johnson295189b2012-06-20 16:38:30 -070016411 @see
16412 @return Result of the function call
16413*/
16414WDI_Status
16415WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016416(
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 WDI_ControlBlockType* pWDICtx,
16418 WDI_EventInfoType* pEventData
16419)
16420{
16421 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
16422 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016423 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 wpt_uint16 usDataOffset = 0;
16425 wpt_uint16 usSendSize = 0;
16426 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016427 wpt_uint8 ucCurrentBSSSesIdx = 0;
16428 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16430
16431 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016432 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016433 -------------------------------------------------------------------------*/
16434 if (( NULL == pEventData ) ||
16435 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
16436 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
16437 {
16438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016439 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016440 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016441 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016442 }
16443
16444 /*-----------------------------------------------------------------------
16445 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016446 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016447 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016448 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016449 sizeof(wowlDelBcPtrnReq),
16450 &pSendBuffer, &usDataOffset, &usSendSize))||
16451 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
16452 {
16453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016454 "Unable to get send buffer in Wowl del bc ptrn req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016455 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
16456 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016457 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070016458 }
16459
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016460 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
16461 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
16462 &pBSSSes);
16463 if ( NULL == pBSSSes )
16464 {
16465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016466 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016467 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016468 }
16469
Jeff Johnsone7245742012-09-05 17:12:55 -070016470 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070016471 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016472
16473 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
16474
Jeff Johnsone7245742012-09-05 17:12:55 -070016475 wpalMemoryCopy( pSendBuffer+usDataOffset,
16476 &wowlDelBcPtrnReq,
16477 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016478
16479 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016480 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016481
16482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016483 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016484 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016485 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16486 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080016487
16488fail:
16489 // Release the message buffer so we don't leak
16490 wpalMemoryFree(pSendBuffer);
16491
16492failRequest:
16493 //WDA should have failure check to avoid the memory leak
16494 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016495}/*WDI_ProcessWowlDelBcPtrnReq*/
16496
16497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016498 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070016499 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016500
16501 @param pWDICtx: pointer to the WLAN DAL context
16502 pEventData: pointer to the event information structure
16503
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 @see
16505 @return Result of the function call
16506*/
16507WDI_Status
16508WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016509(
Jeff Johnson295189b2012-06-20 16:38:30 -070016510 WDI_ControlBlockType* pWDICtx,
16511 WDI_EventInfoType* pEventData
16512)
16513{
16514 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
16515 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016517 wpt_uint16 usDataOffset = 0;
16518 wpt_uint16 usSendSize = 0;
16519 tHalWowlEnterParams wowlEnterReq;
16520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16521
16522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 -------------------------------------------------------------------------*/
16525 if (( NULL == pEventData ) ||
16526 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
16527 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
16528 {
16529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 }
16534
16535 /*-----------------------------------------------------------------------
16536 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016537 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016538 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016540 sizeof(wowlEnterReq),
16541 &pSendBuffer, &usDataOffset, &usSendSize))||
16542 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
16543 {
16544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016545 "Unable to get send buffer in Wowl enter req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016546 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
16547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016549 }
16550
Kumar Anandaca924e2013-07-22 14:35:34 -070016551 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
16552
Jeff Johnsone7245742012-09-05 17:12:55 -070016553 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016554 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016555 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016556 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070016558 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070016559 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070016560 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070016561 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070016562 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070016563 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070016564 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070016565 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070016566 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070016567 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
16569
16570#ifdef WLAN_WAKEUP_EVENTS
16571 wowlEnterReq.ucWoWEAPIDRequestEnable =
16572 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
16573
16574 wowlEnterReq.ucWoWEAPOL4WayEnable =
16575 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
16576
16577 wowlEnterReq.ucWowNetScanOffloadMatch =
16578 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
16579
16580 wowlEnterReq.ucWowGTKRekeyError =
16581 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
16582
16583 wowlEnterReq.ucWoWBSSConnLoss =
16584 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
16585#endif // WLAN_WAKEUP_EVENTS
16586
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016587 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
16588
Jeff Johnson295189b2012-06-20 16:38:30 -070016589 wpalMemoryCopy(wowlEnterReq.magicPtrn,
16590 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
16591 sizeof(tSirMacAddr));
16592
Jeff Johnsone7245742012-09-05 17:12:55 -070016593 wpalMemoryCopy( pSendBuffer+usDataOffset,
16594 &wowlEnterReq,
16595 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016596
16597 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016598 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016599
16600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016601 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016603 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16604 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016605}/*WDI_ProcessWowlEnterReq*/
16606
16607/**
16608 @brief Process Wowl exit Request function (called when Main FSM
16609 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016610
16611 @param pWDICtx: pointer to the WLAN DAL context
16612 pEventData: pointer to the event information structure
16613
Jeff Johnson295189b2012-06-20 16:38:30 -070016614 @see
16615 @return Result of the function call
16616*/
16617WDI_Status
16618WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016619(
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 WDI_ControlBlockType* pWDICtx,
16621 WDI_EventInfoType* pEventData
16622)
16623{
16624 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016625 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016626 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 wpt_uint16 usDataOffset = 0;
16628 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016629 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070016630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16631
16632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 -------------------------------------------------------------------------*/
16635 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016636 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016637 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
16638 {
16639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016640 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 }
16644
16645 /*-----------------------------------------------------------------------
16646 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016647 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016648 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016649 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016650 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070016651 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016652 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070016653 {
16654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016655 "Unable to get send buffer in Wowl Exit req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016656 pEventData, wdiWowlExitCb);
16657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016659 }
16660
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016661 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
16662
16663 wpalMemoryCopy( pSendBuffer+usDataOffset,
16664 &wowlExitparams,
16665 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016667 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016669 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16670 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016671}/*WDI_ProcessWowlExitReq*/
16672
16673/**
16674 @brief Process Configure Apps Cpu Wakeup State Request function
16675 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016676
16677 @param pWDICtx: pointer to the WLAN DAL context
16678 pEventData: pointer to the event information structure
16679
Jeff Johnson295189b2012-06-20 16:38:30 -070016680 @see
16681 @return Result of the function call
16682*/
16683WDI_Status
16684WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016685(
Jeff Johnson295189b2012-06-20 16:38:30 -070016686 WDI_ControlBlockType* pWDICtx,
16687 WDI_EventInfoType* pEventData
16688)
16689{
16690 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
16691 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016692 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016693 wpt_uint16 usDataOffset = 0;
16694 wpt_uint16 usSendSize = 0;
16695 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
16696 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16697
16698 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016699 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016700 -------------------------------------------------------------------------*/
16701 if (( NULL == pEventData ) ||
16702 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
16703 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
16704 {
16705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016706 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016708 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016709 }
16710
16711 /*-----------------------------------------------------------------------
16712 Get message buffer
16713 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016714 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016715 sizeof(halCfgAppsCpuWakeupStateReqParams),
16716 &pSendBuffer, &usDataOffset, &usSendSize))||
16717 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16718 {
16719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016720 "Unable to get send buffer in Apps CPU Wakeup State req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016723 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016724 }
16725
Jeff Johnsone7245742012-09-05 17:12:55 -070016726 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016727 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16728
Jeff Johnsone7245742012-09-05 17:12:55 -070016729 wpalMemoryCopy( pSendBuffer+usDataOffset,
16730 &halCfgAppsCpuWakeupStateReqParams,
16731 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016732
16733 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016734 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016735
16736 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016737 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16740 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16741 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016742}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16743
16744#ifdef WLAN_FEATURE_VOWIFI_11R
16745/**
16746 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16747 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016748
16749 @param pWDICtx: pointer to the WLAN DAL context
16750 pEventData: pointer to the event information structure
16751
Jeff Johnson295189b2012-06-20 16:38:30 -070016752 @see
16753 @return Result of the function call
16754*/
16755WDI_Status
16756WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016757(
Jeff Johnson295189b2012-06-20 16:38:30 -070016758 WDI_ControlBlockType* pWDICtx,
16759 WDI_EventInfoType* pEventData
16760)
16761{
16762 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16763 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016764 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016765 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016766 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016767 wpt_uint16 usDataOffset = 0;
16768 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016769 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016770 wpt_macAddr macBSSID;
16771 tAggrAddTsReq halAggrAddTsReq;
16772 int i;
16773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16774
16775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016776 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016777 -------------------------------------------------------------------------*/
16778 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16779 ( NULL == pEventData->pCBfnc ))
16780 {
16781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016782 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016783 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016784 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 }
16786 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16787 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16788 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16789 /*-------------------------------------------------------------------------
16790 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016791 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016792 -------------------------------------------------------------------------*/
16793 wpalMutexAcquire(&pWDICtx->wptMutex);
16794
16795 /*------------------------------------------------------------------------
16796 Find the BSS for which the request is made and identify WDI session
16797 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016798 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16799 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 &macBSSID))
16801 {
16802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016803 "This station does not exist in the WDI Station Table %d",
16804 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016805 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016807 }
16808
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16810 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016811 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16813 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16814 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016815
16816 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016819
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 /*------------------------------------------------------------------------
16821 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016822 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016823 ------------------------------------------------------------------------*/
16824 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16825 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16827 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16828 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016829
Jeff Johnsone7245742012-09-05 17:12:55 -070016830 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016831 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016832 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016833 }
16834
16835 wpalMutexRelease(&pWDICtx->wptMutex);
16836 /*-----------------------------------------------------------------------
16837 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 sizeof(tAggrAddTsParams),
16842 &pSendBuffer, &usDataOffset, &usSendSize))||
16843 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16844 {
16845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070016846 "Unable to get send buffer in set bss key req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070016847 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 }
16851
Jeff Johnsone7245742012-09-05 17:12:55 -070016852 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016853 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016854 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016855 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16856
16857 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16858 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016859 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016860 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016861 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16865 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16868 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16871 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016872 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016873 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16874 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016875 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016876 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16877 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016878 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16880 direction;
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.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16886 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016887 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016888 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016889 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016890 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016891
16892
16893 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016894 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016895 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016896 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016897 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016898 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016899 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016900 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016901 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016902 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016903 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016904 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016905 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016907 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016908 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016909 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016911 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016913 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016914 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016915 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016917 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016919 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016920 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016921 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016922 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16923 }
16924
Jeff Johnsone7245742012-09-05 17:12:55 -070016925 wpalMemoryCopy( pSendBuffer+usDataOffset,
16926 &halAggrAddTsReq,
16927 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016928
16929 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016930 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016931
16932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016933 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016934 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016935 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016936 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016937 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016938}/*WDI_ProcessAggrAddTSpecReq*/
16939#endif /* WLAN_FEATURE_VOWIFI_11R */
16940
16941/**
16942 @brief Process Shutdown Request function (called when Main FSM
16943 allows it)
16944
16945 @param pWDICtx: pointer to the WLAN DAL context
16946 pEventData: pointer to the event information structure
16947
16948 @see
16949 @return Result of the function call
16950*/
16951WDI_Status
16952WDI_ProcessShutdownReq
16953(
16954 WDI_ControlBlockType* pWDICtx,
16955 WDI_EventInfoType* pEventData
16956 )
16957{
16958 wpt_status wptStatus;
16959
16960
16961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16962
16963 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016964 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016965 -------------------------------------------------------------------------*/
16966 if ( NULL == pEventData )
16967 {
16968 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016969 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016970 WDI_ASSERT(0);
16971 return WDI_STATUS_E_FAILURE;
16972 }
16973
16974 wpalMutexAcquire(&pWDICtx->wptMutex);
16975
16976
16977 gWDIInitialized = eWLAN_PAL_FALSE;
16978 /*! TO DO: stop the data services */
16979 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16980 {
16981 /*Stop the STA Table !UT- check this logic again
16982 It is safer to do it here than on the response - because a stop is imminent*/
16983 WDI_STATableStop(pWDICtx);
16984
16985 /* Stop Transport Driver, DXE */
16986 WDTS_Stop(pWDICtx);
16987 }
16988
16989 /*Clear all pending request*/
16990 WDI_ClearPendingRequests(pWDICtx);
16991 /* Close Data transport*/
16992 /* FTM mode does not open Data Path */
16993 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16994 {
16995 WDTS_Close(pWDICtx);
16996 }
16997 /*Close the STA Table !UT- check this logic again*/
16998 WDI_STATableClose(pWDICtx);
16999 /*close the PAL */
17000 wptStatus = wpalClose(pWDICtx->pPALContext);
17001 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
17002 {
17003 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17004 "Failed to wpal Close %d", wptStatus);
17005 WDI_ASSERT(0);
17006 }
17007
17008 /*Transition back to init state*/
17009 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
17010
17011 wpalMutexRelease(&pWDICtx->wptMutex);
17012
17013 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017014 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017015
17016
Jeff Johnsone7245742012-09-05 17:12:55 -070017017 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017018}/*WDI_ProcessShutdownReq*/
17019
17020/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017021 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070017022========================================================================*/
17023
17024/**
17025 @brief Process Start Response function (called when a response
17026 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017027
17028 @param pWDICtx: pointer to the WLAN DAL context
17029 pEventData: pointer to the event information structure
17030
Jeff Johnson295189b2012-06-20 16:38:30 -070017031 @see
17032 @return Result of the function call
17033*/
17034WDI_Status
17035WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017036(
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 WDI_ControlBlockType* pWDICtx,
17038 WDI_EventInfoType* pEventData
17039)
17040{
17041 WDI_StartRspParamsType wdiRspParams;
17042 WDI_StartRspCb wdiStartRspCb = NULL;
17043
17044 tHalMacStartRspParams* startRspParams;
17045
17046#ifndef HAL_SELF_STA_PER_BSS
17047 WDI_AddStaParams wdiAddSTAParam = {0};
17048#endif
17049 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17050
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017054 -------------------------------------------------------------------------*/
17055 if (( NULL == pEventData ) ||
17056 ( NULL == pEventData->pEventData) ||
17057 ( NULL == wdiStartRspCb ))
17058 {
17059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017060 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017063 }
17064
17065 /*-------------------------------------------------------------------------
17066 Extract response and send it to UMAC
17067 -------------------------------------------------------------------------*/
17068 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
17069 {
17070 // not enough data was received
17071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080017072 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
17074 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017075 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017076 }
17077
17078 /*-------------------------------------------------------------------------
17079 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070017080 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070017081 -------------------------------------------------------------------------*/
17082 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
17083
17084 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
17085 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
17086 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
17087 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
17088 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
17089 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
17090 wdiRspParams.wlanReportedVersion.major =
17091 startRspParams->wcnssWlanVersion.major;
17092 wdiRspParams.wlanReportedVersion.minor =
17093 startRspParams->wcnssWlanVersion.minor;
17094 wdiRspParams.wlanReportedVersion.version =
17095 startRspParams->wcnssWlanVersion.version;
17096 wdiRspParams.wlanReportedVersion.revision =
17097 startRspParams->wcnssWlanVersion.revision;
17098 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
17099 startRspParams->wcnssCrmVersionString,
17100 sizeof(wdiRspParams.wcnssSoftwareVersion));
17101 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
17102 startRspParams->wcnssWlanVersionString,
17103 sizeof(wdiRspParams.wcnssHardwareVersion));
17104 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
17105
Pratik Bhalgatd4404592012-11-22 17:49:14 +053017106 /*Save the HAL Version*/
17107 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
17108
Jeff Johnson295189b2012-06-20 16:38:30 -070017109 wpalMutexAcquire(&pWDICtx->wptMutex);
17110 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
17111 {
17112 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
17113
17114 /*Cache the start response for further use*/
17115 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 sizeof(pWDICtx->wdiCachedStartRspParams));
17118
17119 }
17120 else
17121 {
17122 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17123 "Failed to start device with status %s(%d)",
17124 WDI_getHALStatusMsgString(startRspParams->status),
17125 startRspParams->status);
17126
17127 /*Set the expected state transition to stopped - because the start has
17128 failed*/
17129 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
17130
17131 wpalMutexRelease(&pWDICtx->wptMutex);
17132
17133 /*Notify UMAC*/
17134 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017135
Jeff Johnson295189b2012-06-20 16:38:30 -070017136 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Anurag Chouhanf0d0ba12018-02-09 15:13:43 +053017137 wpalWlanReload(VOS_WDI_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070017138
17139 /*Although the response is an error - it was processed by our function
17140 so as far as the caller is concerned this is a succesful reponse processing*/
17141 return WDI_STATUS_SUCCESS;
17142 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017143
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 wpalMutexRelease(&pWDICtx->wptMutex);
17145
17146 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
17147 {
17148 /* FTM mode does not need to execute below */
17149 /* Notify UMAC */
17150 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
17151 return WDI_STATUS_SUCCESS;
17152 }
17153
17154 /* START the Data transport */
17155 WDTS_startTransport(pWDICtx);
17156
17157 /*Start the STA Table !- check this logic again*/
17158 WDI_STATableStart(pWDICtx);
17159
17160#ifndef HAL_SELF_STA_PER_BSS
17161 /* Store the Self STA Index */
17162 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
17163
17164 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
17165 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
17166 WDI_MAC_ADDR_LEN);
17167
17168 /* At this point add the self-STA */
17169
17170 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
17171 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
17172 /*! TO DO: wdiAddSTAParam.dpuSig */
17173 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17174 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17175 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17176
17177 //all DPU indices are the same for self STA
17178 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
17179 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070017180 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070017181 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
17182 WDI_MAC_ADDR_LEN);
17183 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
17184 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
17185
17186 /* Note: Since we don't get an explicit config STA request for self STA, we
17187 add the self STA upon receiving the Start response message. But the
17188 self STA entry in the table is deleted when WDI gets an explicit delete STA
17189 request */
17190 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17191#endif
17192
17193 /*Notify UMAC*/
17194 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
17195
Jeff Johnsone7245742012-09-05 17:12:55 -070017196 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017197}/*WDI_ProcessStartRsp*/
17198
17199
17200/**
17201 @brief Process Stop Response function (called when a response
17202 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017203
17204 @param pWDICtx: pointer to the WLAN DAL context
17205 pEventData: pointer to the event information structure
17206
Jeff Johnson295189b2012-06-20 16:38:30 -070017207 @see
17208 @return Result of the function call
17209*/
17210WDI_Status
17211WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017212(
Jeff Johnson295189b2012-06-20 16:38:30 -070017213 WDI_ControlBlockType* pWDICtx,
17214 WDI_EventInfoType* pEventData
17215)
17216{
17217 WDI_Status wdiStatus;
17218 WDI_StopRspCb wdiStopRspCb = NULL;
17219
Jeff Johnsone7245742012-09-05 17:12:55 -070017220 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17222
Jeff Johnsone7245742012-09-05 17:12:55 -070017223 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Hanumanth Reddy Pothula4c5be6d2018-01-23 18:44:22 +053017224
Jeff Johnson295189b2012-06-20 16:38:30 -070017225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017227 -------------------------------------------------------------------------*/
17228 if (( NULL == pEventData ) ||
17229 ( NULL == pEventData->pEventData) ||
17230 ( NULL == wdiStopRspCb ))
17231 {
17232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017233 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017234 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017235 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017236 }
17237
17238 /*-------------------------------------------------------------------------
17239 Extract response and send it to UMAC
17240 -------------------------------------------------------------------------*/
17241 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
17242 {
17243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080017244 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070017245 pEventData->uEventDataSize);
17246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017248 }
17249
17250 /*-------------------------------------------------------------------------
17251 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070017252 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017254 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
17255 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 sizeof(halMacStopRspMsg.stopRspParams));
17257
Jeff Johnsone7245742012-09-05 17:12:55 -070017258 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017259
17260 wpalMutexAcquire(&pWDICtx->wptMutex);
17261
17262 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017263 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 --------------------------------------------------------------------------*/
17265 if ( WDI_STATUS_SUCCESS != wdiStatus )
17266 {
17267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17268 "Failed to stop the device with status %s (%d)",
17269 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
17270 halMacStopRspMsg.stopRspParams.status);
17271
Jeff Johnsone7245742012-09-05 17:12:55 -070017272 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Anurag Chouhanf0d0ba12018-02-09 15:13:43 +053017273 wpalWlanReload(VOS_WDI_FAILURE);
Jeff Johnsone7245742012-09-05 17:12:55 -070017274
Jeff Johnson295189b2012-06-20 16:38:30 -070017275 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017276 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017277 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017278
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
17280
17281 /*Transition now as WDI may get preempted imediately after it sends
17282 up the Stop Response and it will not get to process the state transition
17283 from Main Rsp function*/
17284 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
17285 wpalMutexRelease(&pWDICtx->wptMutex);
17286
17287 /*! TO DO: - STOP the Data transport */
17288
17289 /*Notify UMAC*/
17290 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17291
Jeff Johnsone7245742012-09-05 17:12:55 -070017292 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017293}/*WDI_ProcessStopRsp*/
17294
17295/**
17296 @brief Process Close Rsp function (called when a response
17297 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017298
17299 @param pWDICtx: pointer to the WLAN DAL context
17300 pEventData: pointer to the event information structure
17301
Jeff Johnson295189b2012-06-20 16:38:30 -070017302 @see
17303 @return Result of the function call
17304*/
17305WDI_Status
17306WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017307(
Jeff Johnson295189b2012-06-20 16:38:30 -070017308 WDI_ControlBlockType* pWDICtx,
17309 WDI_EventInfoType* pEventData
17310)
17311{
17312 /*There is no close response comming from HAL - function just kept for
17313 simmetry */
17314 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017315 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017316}/*WDI_ProcessCloseRsp*/
17317
17318
17319/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017320 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070017321============================================================================*/
17322
17323/**
17324 @brief Process Init Scan Rsp function (called when a response
17325 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017326
17327 @param pWDICtx: pointer to the WLAN DAL context
17328 pEventData: pointer to the event information structure
17329
Jeff Johnson295189b2012-06-20 16:38:30 -070017330 @see
17331 @return Result of the function call
17332*/
17333WDI_Status
17334WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017335(
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 WDI_ControlBlockType* pWDICtx,
17337 WDI_EventInfoType* pEventData
17338)
17339{
17340 WDI_Status wdiStatus;
17341 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017342 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080017343 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070017344 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17345
17346 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 -------------------------------------------------------------------------*/
17349 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17350 ( NULL == pEventData->pEventData))
17351 {
17352 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017353 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017356 }
17357
17358 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
17359 if( NULL == wdiInitScanRspCb)
17360 {
17361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017362 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017365 }
17366
17367 /*-------------------------------------------------------------------------
17368 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070017369 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070017370 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017371 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
17372 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017373 sizeof(halInitScanRspMsg.initScanRspParams));
17374
Jeff Johnsone7245742012-09-05 17:12:55 -070017375 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017376
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053017377 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070017378 {
17379 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080017380 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
17381 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
17382 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080017383 "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 -080017384 WDI_ASSERT(0);
17385 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 }
Abhishek Singha7d80b12016-02-03 15:27:20 +053017387 else if (WDI_STATUS_SUCCESS != wdiStatus)
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053017388 {
17389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17390 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
17391 wdiStatus, pWDICtx->bInBmps);
17392 }
Jeff Johnson295189b2012-06-20 16:38:30 -070017393
17394 /*Notify UMAC*/
17395 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17396
Jeff Johnsone7245742012-09-05 17:12:55 -070017397 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017398}/*WDI_ProcessInitScanRsp*/
17399
17400
17401/**
17402 @brief Process Start Scan Rsp function (called when a response
17403 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017404
17405 @param pWDICtx: pointer to the WLAN DAL context
17406 pEventData: pointer to the event information structure
17407
Jeff Johnson295189b2012-06-20 16:38:30 -070017408 @see
17409 @return Result of the function call
17410*/
17411WDI_Status
17412WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017413(
Jeff Johnson295189b2012-06-20 16:38:30 -070017414 WDI_ControlBlockType* pWDICtx,
17415 WDI_EventInfoType* pEventData
17416)
17417{
17418 WDI_StartScanRspParamsType wdiStartScanParams;
17419 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017420
17421 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17423
17424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017426 -------------------------------------------------------------------------*/
17427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17428 ( NULL == pEventData->pEventData))
17429 {
17430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017434 }
17435
17436 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
17437 if( NULL == wdiStartScanRspCb)
17438 {
17439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017440 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017442 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 }
17444
17445 /*-------------------------------------------------------------------------
17446 Extract response and send it to UMAC
17447 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017448 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
17449 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017450 sizeof(halStartScanRspMsg.startScanRspParams));
17451
17452 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17453 halStartScanRspMsg.startScanRspParams.status);
17454#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017456 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070017458 halStartScanRspMsg.startScanRspParams.startTSF,
17459 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070017460#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070017461
17462 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
17463 {
17464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17465 "Start scan failed with status %s (%d)",
17466 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
17467 halStartScanRspMsg.startScanRspParams.status);
17468 /* send the status to UMAC, don't return from here*/
17469 }
17470
17471 /*Notify UMAC*/
17472 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
17473
Jeff Johnsone7245742012-09-05 17:12:55 -070017474 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017475
17476}/*WDI_ProcessStartScanRsp*/
17477
17478
17479/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017480 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017482
17483 @param pWDICtx: pointer to the WLAN DAL context
17484 pEventData: pointer to the event information structure
17485
Jeff Johnson295189b2012-06-20 16:38:30 -070017486 @see
17487 @return Result of the function call
17488*/
17489WDI_Status
17490WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017491(
Jeff Johnson295189b2012-06-20 16:38:30 -070017492 WDI_ControlBlockType* pWDICtx,
17493 WDI_EventInfoType* pEventData
17494)
17495{
17496 WDI_Status wdiStatus;
17497 tHalEndScanRspMsg halEndScanRspMsg;
17498 WDI_EndScanRspCb wdiEndScanRspCb;
17499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17500
17501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 -------------------------------------------------------------------------*/
17504 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17505 ( NULL == pEventData->pEventData))
17506 {
17507 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017508 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 }
17512
17513 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
17514
17515 /*-------------------------------------------------------------------------
17516 Extract response and send it to UMAC
17517 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017518 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
17519 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 sizeof(halEndScanRspMsg.endScanRspParams));
17521
Jeff Johnsone7245742012-09-05 17:12:55 -070017522 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017523
17524 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
17525 {
17526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17527 "End Scan failed with status %s (%d )",
17528 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
17529 halEndScanRspMsg.endScanRspParams.status);
17530 /* send the status to UMAC, don't return from here*/
17531 }
17532
17533 /*Notify UMAC*/
17534 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17535
Jeff Johnsone7245742012-09-05 17:12:55 -070017536 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017537}/*WDI_ProcessEndScanRsp*/
17538
17539
17540/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017542 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017543
17544 @param pWDICtx: pointer to the WLAN DAL context
17545 pEventData: pointer to the event information structure
17546
Jeff Johnson295189b2012-06-20 16:38:30 -070017547 @see
17548 @return Result of the function call
17549*/
17550WDI_Status
17551WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017552(
Jeff Johnson295189b2012-06-20 16:38:30 -070017553 WDI_ControlBlockType* pWDICtx,
17554 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070017555)
Jeff Johnson295189b2012-06-20 16:38:30 -070017556{
17557 WDI_Status wdiStatus;
17558 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017559
17560 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17562
17563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017564 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017565 -------------------------------------------------------------------------*/
17566 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17567 ( NULL == pEventData->pEventData))
17568 {
17569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017570 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017572 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017573 }
17574
17575 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
17576
17577 /*-------------------------------------------------------------------------
17578 Extract response and send it to UMAC
17579 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017580 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
17581 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017582 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
17583
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017585
17586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070017587 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070017588 halFinishScanRspMsg.finishScanRspParams.status);
17589
17590 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
17591 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
17592 {
17593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17594 "Finish Scan failed with status %s (%d)",
17595 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
17596 halFinishScanRspMsg.finishScanRspParams.status);
17597 /* send the status to UMAC, don't return from here*/
17598 }
17599
17600 /*Notify UMAC*/
17601 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17602
Jeff Johnsone7245742012-09-05 17:12:55 -070017603 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017604}/*WDI_ProcessFinishScanRsp*/
17605
17606/**
17607 @brief Process Join Response function (called when a response
17608 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017609
17610 @param pWDICtx: pointer to the WLAN DAL context
17611 pEventData: pointer to the event information structure
17612
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 @see
17614 @return Result of the function call
17615*/
17616WDI_Status
17617WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017618(
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 WDI_ControlBlockType* pWDICtx,
17620 WDI_EventInfoType* pEventData
17621)
17622{
17623 WDI_Status wdiStatus;
17624 WDI_JoinRspCb wdiJoinRspCb;
17625 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017626
17627 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017628 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17629
17630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017631 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017632 -------------------------------------------------------------------------*/
17633 if (( NULL == pWDICtx ) ||
17634 ( NULL == pWDICtx->pfncRspCB ) ||
17635 ( NULL == pEventData ) ||
17636 ( NULL == pEventData->pEventData))
17637 {
17638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017642 }
17643
17644 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
17645
17646 /*-------------------------------------------------------------------------
17647 Extract response and send it to UMAC
17648 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017649 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
17650 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017651 sizeof(halJoinRspMsg.joinRspParams));
17652
Jeff Johnsone7245742012-09-05 17:12:55 -070017653 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017654
17655 wpalMutexAcquire(&pWDICtx->wptMutex);
17656
17657 /*-----------------------------------------------------------------------
17658 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017659 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017661 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17663 {
17664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070017665 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
17666 "association no longer in progress %d - mysterious HAL response",
17667 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070017668
Jeff Johnsone7245742012-09-05 17:12:55 -070017669 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070017670 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017671 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017672 }
17673
17674 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
17675
17676 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017677 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070017678 -----------------------------------------------------------------------*/
17679 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17680 {
17681 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17682 "Join only allowed in Joining state - failure state is %d "
17683 "strange HAL response", pBSSSes->wdiAssocState);
17684
Jeff Johnsone7245742012-09-05 17:12:55 -070017685 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17686
Jeff Johnson295189b2012-06-20 16:38:30 -070017687 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017688 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017689 }
17690
17691
17692 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017693 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017694 -----------------------------------------------------------------------*/
17695 if ( WDI_STATUS_SUCCESS != wdiStatus )
17696 {
17697 /*Association was failed by HAL - remove session*/
17698 WDI_DeleteSession(pWDICtx, pBSSSes);
17699
17700 /*Association no longer in progress */
17701 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17702
17703 /*Association no longer in progress - prepare pending assoc for processing*/
17704 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070017705
Jeff Johnson295189b2012-06-20 16:38:30 -070017706 }
17707 else
17708 {
17709 /*Transition to state Joining - this may be redundant as we are supposed
17710 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017711 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017712 }
17713
17714 wpalMutexRelease(&pWDICtx->wptMutex);
17715
17716 /*Notify UMAC*/
17717 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17718
Jeff Johnsone7245742012-09-05 17:12:55 -070017719 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017720}/*WDI_ProcessJoinRsp*/
17721
17722
17723/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017724 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017725 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017726
17727 @param pWDICtx: pointer to the WLAN DAL context
17728 pEventData: pointer to the event information structure
17729
Jeff Johnson295189b2012-06-20 16:38:30 -070017730 @see
17731 @return Result of the function call
17732*/
17733WDI_Status
17734WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017735(
Jeff Johnson295189b2012-06-20 16:38:30 -070017736 WDI_ControlBlockType* pWDICtx,
17737 WDI_EventInfoType* pEventData
17738)
17739{
17740 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17741 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017742 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 WDI_BSSSessionType* pBSSSes = NULL;
17744
Jeff Johnsone7245742012-09-05 17:12:55 -070017745 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017746 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17747 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017748
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17750
17751 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017752 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017753 -------------------------------------------------------------------------*/
17754 if (( NULL == pEventData ) ||
17755 ( NULL == pEventData->pEventData))
17756 {
17757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017758 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017761 }
17762
17763 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17764
17765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017766 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017768 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17769 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017770 sizeof(halConfigBssRspMsg.configBssRspParams));
17771
17772 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17773 halConfigBssRspMsg.configBssRspParams.status);
17774 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17775 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017776 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17778 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017779
Jeff Johnson295189b2012-06-20 16:38:30 -070017780 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017781
17782 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017783 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017784
17785 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017786 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017787
Jeff Johnson295189b2012-06-20 16:38:30 -070017788 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017789
Jeff Johnson295189b2012-06-20 16:38:30 -070017790 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017791 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017792 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17793 #endif
17794 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17795 halConfigBssRspMsg.configBssRspParams.staMac,
17796 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017797
Jeff Johnson295189b2012-06-20 16:38:30 -070017798 wpalMutexAcquire(&pWDICtx->wptMutex);
17799 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017800 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017801 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017802 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17803 wdiConfigBSSParams.macBSSID,
17804 &pBSSSes);
17805
Jeff Johnson295189b2012-06-20 16:38:30 -070017806 /*-----------------------------------------------------------------------
17807 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017808 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017809 -----------------------------------------------------------------------*/
17810 if ( NULL == pBSSSes )
17811 {
17812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17813 "Association sequence for this BSS does not yet exist "
17814 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017815
17816 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17817
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017820 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017821
Jeff Johnson295189b2012-06-20 16:38:30 -070017822 /*Save data for this BSS*/
17823 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17824 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017825 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017827 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017828 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017829 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017830 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017831 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017832 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017833 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17835 pBSSSes->bcastStaIdx =
17836 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017837
Jeff Johnson295189b2012-06-20 16:38:30 -070017838 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017839
Jeff Johnson295189b2012-06-20 16:38:30 -070017840 /*-------------------------------------------------------------------------
17841 Add Peer STA
17842 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017843 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017844 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17845 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017846
Jeff Johnson295189b2012-06-20 16:38:30 -070017847 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017850 wdiAddSTAParam.ucHTCapable =
17851 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17852 wdiAddSTAParam.ucStaType =
17853 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17854
Jeff Johnson295189b2012-06-20 16:38:30 -070017855 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017856 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17857 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017858 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017859
17860 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17861 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17862 WDI_MAC_ADDR_LEN);
17863
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017865 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017866 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017867 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017868 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017869 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017870 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017871 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017872 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017873 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017874 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017875 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017876 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017877
Jeff Johnson295189b2012-06-20 16:38:30 -070017878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17879 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017880
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17882 /*-------------------------------------------------------------------------
17883 Add Broadcast STA only in AP mode
17884 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017885 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017886 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017887 {
17888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17889 "Add BCAST STA to table for index: %d",
17890 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017891
17892 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017893 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017894
Jeff Johnson295189b2012-06-20 16:38:30 -070017895 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17896 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17897 }
17898 wpalMutexRelease(&pWDICtx->wptMutex);
17899 }
17900 else
17901 {
17902 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17903 "Config BSS RSP failed with status : %s(%d)",
17904 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017905 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017906 halConfigBssRspMsg.configBssRspParams.status);
17907
Jeff Johnsone7245742012-09-05 17:12:55 -070017908
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 /*Association was failed by HAL - remove session*/
17910 WDI_DeleteSession(pWDICtx, pBSSSes);
17911
17912 /*Association no longer in progress */
17913 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17914
17915 /*Association no longer in progress - prepare pending assoc for processing*/
17916 WDI_DequeueAssocRequest(pWDICtx);
17917
17918 }
17919
17920 /*Notify UMAC*/
17921 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17922
Jeff Johnsone7245742012-09-05 17:12:55 -070017923 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017924}/*WDI_ProcessConfigBSSRsp*/
17925
17926
17927/**
17928 @brief Process Del BSS Response function (called when a response
17929 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017930
17931 @param pWDICtx: pointer to the WLAN DAL context
17932 pEventData: pointer to the event information structure
17933
Jeff Johnson295189b2012-06-20 16:38:30 -070017934 @see
17935 @return Result of the function call
17936*/
17937WDI_Status
17938WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017939(
Jeff Johnson295189b2012-06-20 16:38:30 -070017940 WDI_ControlBlockType* pWDICtx,
17941 WDI_EventInfoType* pEventData
17942)
17943{
17944 WDI_DelBSSRspParamsType wdiDelBSSParams;
17945 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017946 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017947 WDI_BSSSessionType* pBSSSes = NULL;
17948
Jeff Johnsone7245742012-09-05 17:12:55 -070017949 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17951
17952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017954 -------------------------------------------------------------------------*/
17955 if (( NULL == pEventData ) ||
17956 ( NULL == pEventData->pEventData))
17957 {
17958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017962 }
17963
17964 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17965
17966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017967 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017968 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017969 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17970 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017971 sizeof(halDelBssRspMsg.deleteBssRspParams));
17972
17973
17974 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017976
17977 wpalMutexAcquire(&pWDICtx->wptMutex);
17978
17979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017980 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017982 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17983 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17984 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017985
17986 /*-----------------------------------------------------------------------
17987 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017988 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017989 -----------------------------------------------------------------------*/
17990 if ( NULL == pBSSSes )
17991 {
17992 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17993 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017994 "association no longer in progress - mysterious HAL response");
17995
17996 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17997
17998 wpalMutexRelease(&pWDICtx->wptMutex);
17999 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018000 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080018001
18002 /*Extract BSSID for the response to UMAC*/
18003 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
18004 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
18005
18006 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
18007
18008 /*-----------------------------------------------------------------------
18009 The current session will be deleted
18010 -----------------------------------------------------------------------*/
18011 WDI_DeleteSession(pWDICtx, pBSSSes);
18012
18013
18014 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070018015 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
18016 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070018017 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080018018 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070018019 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080018020
18021 /* Delete the STA's in this BSS */
18022 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
18023
Jeff Johnson295189b2012-06-20 16:38:30 -070018024 wpalMutexRelease(&pWDICtx->wptMutex);
18025
18026 /*Notify UMAC*/
18027 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
18028
Jeff Johnsone7245742012-09-05 17:12:55 -070018029 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018030}/*WDI_ProcessDelBSSRsp*/
18031
18032/**
18033 @brief Process Post Assoc Rsp function (called when a response
18034 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018035
18036 @param pWDICtx: pointer to the WLAN DAL context
18037 pEventData: pointer to the event information structure
18038
Jeff Johnson295189b2012-06-20 16:38:30 -070018039 @see
18040 @return Result of the function call
18041*/
18042WDI_Status
18043WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018044(
Jeff Johnson295189b2012-06-20 16:38:30 -070018045 WDI_ControlBlockType* pWDICtx,
18046 WDI_EventInfoType* pEventData
18047)
18048{
18049 WDI_PostAssocRspParamsType wdiPostAssocParams;
18050 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070018051 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018052 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018053 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070018054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18055
18056 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018057 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018058 -------------------------------------------------------------------------*/
18059 if (( NULL == pEventData ) ||
18060 ( NULL == pEventData->pEventData))
18061 {
18062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018063 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018064 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018065 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018066 }
18067
18068 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
18069
18070 /*-------------------------------------------------------------------------
18071 Extract response and send it to UMAC
18072 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
18074 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018075 sizeof(halPostAssocRspMsg.postAssocRspParams));
18076
18077 /*Extract the Post Assoc STA Params */
18078
Jeff Johnsone7245742012-09-05 17:12:55 -070018079 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018080 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018081 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018082 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018083 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018084 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
18085
Jeff Johnsone7245742012-09-05 17:12:55 -070018086 wdiPostAssocParams.wdiStatus =
18087 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018088
18089 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
18090 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070018091 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
18092 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018093 WDI_MAC_ADDR_LEN);
18094
18095 /* Extract Post Assoc BSS Params */
18096
Jeff Johnsone7245742012-09-05 17:12:55 -070018097 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
18098 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
18099 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070018100
18101 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
18102 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070018103 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018104 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
18105 .macSTA, WDI_MAC_ADDR_LEN);
18106
Jeff Johnsone7245742012-09-05 17:12:55 -070018107 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018108 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
18109
Jeff Johnsone7245742012-09-05 17:12:55 -070018110 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
18112
18113 wdiPostAssocParams.bssParams.ucBSSIdx =
18114 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
18115
Jeff Johnsone7245742012-09-05 17:12:55 -070018116 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018117 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
18118
18119 wpalMutexAcquire(&pWDICtx->wptMutex);
18120
18121 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018122 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070018123 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018124 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018125 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070018126 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018127
18128 /*-----------------------------------------------------------------------
18129 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070018130 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070018131 -----------------------------------------------------------------------*/
18132 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070018133 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070018134 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
18135 {
18136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18137 "Association sequence for this BSS does not yet exist or "
18138 "association no longer in progress - mysterious HAL response");
18139
Jeff Johnsone7245742012-09-05 17:12:55 -070018140 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18141
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070018143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018144 }
18145
18146 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018147 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 -----------------------------------------------------------------------*/
18149 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
18150 {
18151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18152 "Post Assoc not allowed before JOIN - failing request "
18153 "strange HAL response");
18154
Jeff Johnsone7245742012-09-05 17:12:55 -070018155 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
18156
Jeff Johnson295189b2012-06-20 16:38:30 -070018157 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 }
18160
18161 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018162 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070018163 -----------------------------------------------------------------------*/
18164 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
18165 {
18166 /*Association was failed by HAL - remove session*/
18167 WDI_DeleteSession(pWDICtx, pBSSSes);
18168 }
18169 else
18170 {
18171 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018172 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070018173
18174 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018175 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018176 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018178 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070018179 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018180 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018181 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018182 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
18183
Jeff Johnsone7245742012-09-05 17:12:55 -070018184 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018185 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
18186 }
18187
18188 /*Association no longer in progress */
18189 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
18190
18191 /*Association no longer in progress - prepare pending assoc for processing*/
18192 WDI_DequeueAssocRequest(pWDICtx);
18193
18194 wpalMutexRelease(&pWDICtx->wptMutex);
18195
18196 /*Notify UMAC*/
18197 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
18198
Jeff Johnsone7245742012-09-05 17:12:55 -070018199 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018200}/*WDI_ProcessPostAssocRsp*/
18201
18202/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018203 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070018204 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018205
18206 @param pWDICtx: pointer to the WLAN DAL context
18207 pEventData: pointer to the event information structure
18208
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 @see
18210 @return Result of the function call
18211*/
18212WDI_Status
18213WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018214(
Jeff Johnson295189b2012-06-20 16:38:30 -070018215 WDI_ControlBlockType* pWDICtx,
18216 WDI_EventInfoType* pEventData
18217)
18218{
18219 WDI_DelSTARspParamsType wdiDelSTARsp;
18220 WDI_DelSTARspCb wdiDelSTARspCb;
18221 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070018222 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070018223 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18224
18225 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018227 -------------------------------------------------------------------------*/
18228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18229 ( NULL == pEventData->pEventData))
18230 {
18231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018232 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018234 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 }
18236
18237 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
18238
18239 /*-------------------------------------------------------------------------
18240 Extract response and send it to UMAC
18241 -------------------------------------------------------------------------*/
18242 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070018243 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018244 sizeof(halDelStaRspMsg.delStaRspParams));
18245
18246 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070018247 wdiDelSTARsp.wdiStatus =
18248 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018249
18250 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
18251
18252 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
18253 if(staType == WDI_STA_ENTRY_SELF)
18254 {
18255 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18256
18257 /* At this point add the self-STA */
18258
18259 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18260 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18261 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18262
18263#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
18264#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
18265
18266 //all DPU indices are the same for self STA
18267 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
18268 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
18269 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
18270 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
18271 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
18272 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070018273
18274 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070018275 }
18276 else
18277 {
18278 //Delete the station in the table
18279 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
18280 }
18281
18282 /*Notify UMAC*/
18283 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
18284
Jeff Johnsone7245742012-09-05 17:12:55 -070018285 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018286}/*WDI_ProcessDelSTARsp*/
18287
18288
18289/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018290 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070018291==========================================================================*/
18292
18293/**
18294 @brief Process Set BSS Key Rsp function (called when a response
18295 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018296
18297 @param pWDICtx: pointer to the WLAN DAL context
18298 pEventData: pointer to the event information structure
18299
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 @see
18301 @return Result of the function call
18302*/
18303WDI_Status
18304WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018305(
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 WDI_ControlBlockType* pWDICtx,
18307 WDI_EventInfoType* pEventData
18308)
18309{
18310 WDI_Status wdiStatus;
18311 eHalStatus halStatus;
18312 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
18313 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18314
18315 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018316 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018317 -------------------------------------------------------------------------*/
18318 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18319 ( NULL == pEventData->pEventData))
18320 {
18321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018325 }
18326
18327 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
18328
18329 /*-------------------------------------------------------------------------
18330 Extract response and send it to UMAC
18331 -------------------------------------------------------------------------*/
18332 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018333 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018334
18335 if ( eHAL_STATUS_SUCCESS != halStatus )
18336 {
18337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18338 "Set BSS Key failed with status %s (%d)",
18339 WDI_getHALStatusMsgString(halStatus),
18340 halStatus);
18341 /* send the status to UMAC, don't return from here*/
18342 }
18343
18344 /*Notify UMAC*/
18345 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18346
Jeff Johnsone7245742012-09-05 17:12:55 -070018347 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018348}/*WDI_ProcessSetBssKeyRsp*/
18349
18350/**
18351 @brief Process Remove BSS Key Rsp function (called when a response
18352 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018353
18354 @param pWDICtx: pointer to the WLAN DAL context
18355 pEventData: pointer to the event information structure
18356
Jeff Johnson295189b2012-06-20 16:38:30 -070018357 @see
18358 @return Result of the function call
18359*/
18360WDI_Status
18361WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018362(
Jeff Johnson295189b2012-06-20 16:38:30 -070018363 WDI_ControlBlockType* pWDICtx,
18364 WDI_EventInfoType* pEventData
18365)
18366{
18367 WDI_Status wdiStatus;
18368 eHalStatus halStatus;
18369 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
18370 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18371
18372 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018373 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018374 -------------------------------------------------------------------------*/
18375 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18376 ( NULL == pEventData->pEventData))
18377 {
18378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018379 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018382 }
18383
18384 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
18385
18386 /*-------------------------------------------------------------------------
18387 Extract response and send it to UMAC
18388 -------------------------------------------------------------------------*/
18389 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018390 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018391
18392 if ( eHAL_STATUS_SUCCESS != halStatus )
18393 {
18394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18395 "Remove BSS Key failed with status %s (%d )",
18396 WDI_getHALStatusMsgString(halStatus),
18397 halStatus);
18398 /* send the status to UMAC, don't return from here*/
18399 }
18400
18401 /*Notify UMAC*/
18402 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18403
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018405}/*WDI_ProcessSetBssKeyRsp*/
18406
18407
18408/**
18409 @brief Process Set STA Key Rsp function (called when a response
18410 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018411
18412 @param pWDICtx: pointer to the WLAN DAL context
18413 pEventData: pointer to the event information structure
18414
Jeff Johnson295189b2012-06-20 16:38:30 -070018415 @see
18416 @return Result of the function call
18417*/
18418WDI_Status
18419WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018420(
Jeff Johnson295189b2012-06-20 16:38:30 -070018421 WDI_ControlBlockType* pWDICtx,
18422 WDI_EventInfoType* pEventData
18423)
18424{
18425 WDI_Status wdiStatus;
18426 eHalStatus halStatus;
18427 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
18428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18429
18430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018432 -------------------------------------------------------------------------*/
18433 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18434 ( NULL == pEventData->pEventData))
18435 {
18436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018440 }
18441
18442 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
18443
18444 /*-------------------------------------------------------------------------
18445 Extract response and send it to UMAC
18446 -------------------------------------------------------------------------*/
18447 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018448 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018449
18450 if ( eHAL_STATUS_SUCCESS != halStatus )
18451 {
18452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18453 "Set STA Key failed with status %s (%d)",
18454 WDI_getHALStatusMsgString(halStatus),
18455 halStatus);
18456 /* send the status to UMAC, don't return from here*/
18457 }
18458
18459 /*Notify UMAC*/
18460 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18461
Jeff Johnsone7245742012-09-05 17:12:55 -070018462 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018463}/*WDI_ProcessSetSTAKeyRsp*/
18464
18465/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018466 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018468
18469 @param pWDICtx: pointer to the WLAN DAL context
18470 pEventData: pointer to the event information structure
18471
Jeff Johnson295189b2012-06-20 16:38:30 -070018472 @see
18473 @return Result of the function call
18474*/
18475WDI_Status
18476WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018477(
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 WDI_ControlBlockType* pWDICtx,
18479 WDI_EventInfoType* pEventData
18480)
18481{
18482 WDI_Status wdiStatus;
18483 eHalStatus halStatus;
18484 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
18485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18486
18487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018489 -------------------------------------------------------------------------*/
18490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18491 ( NULL == pEventData->pEventData))
18492 {
18493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018494 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018495 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018496 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018497 }
18498
18499 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
18500
18501 /*-------------------------------------------------------------------------
18502 Extract response and send it to UMAC
18503 -------------------------------------------------------------------------*/
18504 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018505 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018506
18507 if ( eHAL_STATUS_SUCCESS != halStatus )
18508 {
18509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18510 "Remove STA Key failed with status %s (%d)",
18511 WDI_getHALStatusMsgString(halStatus),
18512 halStatus);
18513 /* send the status to UMAC, don't return from here*/
18514 }
18515
18516 /*Notify UMAC*/
18517 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18518
Jeff Johnsone7245742012-09-05 17:12:55 -070018519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018520}/*WDI_ProcessRemoveStaKeyRsp*/
18521
18522/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018523 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018525
18526 @param pWDICtx: pointer to the WLAN DAL context
18527 pEventData: pointer to the event information structure
18528
Jeff Johnson295189b2012-06-20 16:38:30 -070018529 @see
18530 @return Result of the function call
18531*/
18532WDI_Status
18533WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018534(
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 WDI_ControlBlockType* pWDICtx,
18536 WDI_EventInfoType* pEventData
18537)
18538{
18539 WDI_Status wdiStatus;
18540 eHalStatus halStatus;
18541 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
18542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18543
18544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018546 -------------------------------------------------------------------------*/
18547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18548 ( NULL == pEventData->pEventData))
18549 {
18550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018554 }
18555
18556 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
18557
18558 /*-------------------------------------------------------------------------
18559 Extract response and send it to UMAC
18560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018561 wpalMemoryCopy( &halStatus,
18562 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018563 sizeof(halStatus));
18564
Jeff Johnsone7245742012-09-05 17:12:55 -070018565 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018566
18567 if ( eHAL_STATUS_SUCCESS != halStatus )
18568 {
18569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18570 "Set STA Key failed with status %s (%d)",
18571 WDI_getHALStatusMsgString(halStatus),
18572 halStatus);
18573 /* send the status to UMAC, don't return from here*/
18574 }
18575
18576 /*Notify UMAC*/
18577 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18578
Jeff Johnsone7245742012-09-05 17:12:55 -070018579 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018580}/*WDI_ProcessSetSTABcastKeyRsp*/
18581
18582/**
18583 @brief Process Remove STA Bcast Key Rsp function (called when a
18584 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018585
18586 @param pWDICtx: pointer to the WLAN DAL context
18587 pEventData: pointer to the event information structure
18588
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 @see
18590 @return Result of the function call
18591*/
18592WDI_Status
18593WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018594(
Jeff Johnson295189b2012-06-20 16:38:30 -070018595 WDI_ControlBlockType* pWDICtx,
18596 WDI_EventInfoType* pEventData
18597)
18598{
18599 WDI_Status wdiStatus;
18600 eHalStatus halStatus;
18601 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
18602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18603
18604 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018605 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 -------------------------------------------------------------------------*/
18607 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18608 ( NULL == pEventData->pEventData))
18609 {
18610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018611 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018612 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018614 }
18615
18616 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
18617
18618 /*-------------------------------------------------------------------------
18619 Extract response and send it to UMAC
18620 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018621 wpalMemoryCopy( &halStatus,
18622 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018623 sizeof(halStatus));
18624
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018626
18627 if ( eHAL_STATUS_SUCCESS != halStatus )
18628 {
18629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18630 "Remove STA Key failed with status %s (%d)",
18631 WDI_getHALStatusMsgString(halStatus),
18632 halStatus);
18633 /* send the status to UMAC, don't return from here*/
18634 }
18635
18636 /*Notify UMAC*/
18637 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18638
Jeff Johnsone7245742012-09-05 17:12:55 -070018639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018640}/*WDI_ProcessRemoveStaBcastKeyRsp*/
18641
18642
18643/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018644 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070018645==========================================================================*/
18646
18647/**
18648 @brief Process Add TSpec Rsp function (called when a response
18649 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018650
18651 @param pWDICtx: pointer to the WLAN DAL context
18652 pEventData: pointer to the event information structure
18653
Jeff Johnson295189b2012-06-20 16:38:30 -070018654 @see
18655 @return Result of the function call
18656*/
18657WDI_Status
18658WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018659(
Jeff Johnson295189b2012-06-20 16:38:30 -070018660 WDI_ControlBlockType* pWDICtx,
18661 WDI_EventInfoType* pEventData
18662)
18663{
18664 WDI_Status wdiStatus;
18665 eHalStatus halStatus;
18666 WDI_AddTsRspCb wdiAddTsRspCb;
18667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18668
18669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018671 -------------------------------------------------------------------------*/
18672 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18673 ( NULL == pEventData->pEventData))
18674 {
18675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018679 }
18680
18681 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18682
18683 /*-------------------------------------------------------------------------
18684 Extract response and send it to UMAC
18685 -------------------------------------------------------------------------*/
18686 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018687 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018688
18689 /*Notify UMAC*/
18690 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18691
Jeff Johnsone7245742012-09-05 17:12:55 -070018692 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018693}/*WDI_ProcessAddTSpecRsp*/
18694
18695
Sunil Duttbd736ed2014-05-26 21:19:41 +053018696
18697#ifdef WLAN_FEATURE_LINK_LAYER_STATS
18698
18699WDI_Status
18700WDI_ProcessLLStatsSetRsp
18701(
18702 WDI_ControlBlockType* pWDICtx,
18703 WDI_EventInfoType* pEventData
18704)
18705{
18706 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
18707
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018709 "%s: Enter ", __func__);
18710 /*-------------------------------------------------------------------------
18711 Sanity check
18712 -------------------------------------------------------------------------*/
18713 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18714 ( NULL == pEventData->pEventData))
18715 {
18716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18717 "%s: Invalid parameters", __func__);
18718 WDI_ASSERT(0);
18719 return WDI_STATUS_E_FAILURE;
18720 }
18721
18722 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18723
18724 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18725
18726 return WDI_STATUS_SUCCESS;
18727}
18728
18729WDI_Status
18730WDI_ProcessLLStatsGetRsp
18731(
18732 WDI_ControlBlockType* pWDICtx,
18733 WDI_EventInfoType* pEventData
18734)
18735{
18736 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18737
18738 /*-------------------------------------------------------------------------
18739 Sanity check
18740 -------------------------------------------------------------------------*/
18741 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18742 ( NULL == pEventData->pEventData))
18743 {
18744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18745 "%s: Invalid parameters", __func__);
18746 WDI_ASSERT(0);
18747 return WDI_STATUS_E_FAILURE;
18748 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018750 "%s: Enter ", __func__);
18751
18752 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18753
18754 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18755
18756 return WDI_STATUS_SUCCESS;
18757}
18758
18759WDI_Status
18760WDI_ProcessLLStatsClearRsp
18761(
18762 WDI_ControlBlockType* pWDICtx,
18763 WDI_EventInfoType* pEventData
18764)
18765{
18766 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18767
18768 /*-------------------------------------------------------------------------
18769 Sanity check
18770 -------------------------------------------------------------------------*/
18771 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18772 ( NULL == pEventData->pEventData))
18773 {
18774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18775 "%s: Invalid parameters", __func__);
18776 WDI_ASSERT(0);
18777 return WDI_STATUS_E_FAILURE;
18778 }
18779
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018781 "%s: CLEAR RESPONSE CALL BACK", __func__);
18782 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18783
18784 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18785
18786 return WDI_STATUS_SUCCESS;
18787}
18788#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18789
Jeff Johnson295189b2012-06-20 16:38:30 -070018790/**
18791 @brief Process Del TSpec Rsp function (called when a response
18792 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018793
18794 @param pWDICtx: pointer to the WLAN DAL context
18795 pEventData: pointer to the event information structure
18796
Jeff Johnson295189b2012-06-20 16:38:30 -070018797 @see
18798 @return Result of the function call
18799*/
18800WDI_Status
18801WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018802(
Jeff Johnson295189b2012-06-20 16:38:30 -070018803 WDI_ControlBlockType* pWDICtx,
18804 WDI_EventInfoType* pEventData
18805)
18806{
18807 WDI_Status wdiStatus;
18808 eHalStatus halStatus;
18809 WDI_DelTsRspCb wdiDelTsRspCb;
18810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18811
18812 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018813 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018814 -------------------------------------------------------------------------*/
18815 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18816 ( NULL == pEventData->pEventData))
18817 {
18818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018819 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018820 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018821 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018822 }
18823
18824 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18825
18826 /*-------------------------------------------------------------------------
18827 Extract response and send it to UMAC
18828 -------------------------------------------------------------------------*/
18829 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018830 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018831
18832 /*Notify UMAC*/
18833 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18834
Jeff Johnsone7245742012-09-05 17:12:55 -070018835 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018836}/*WDI_ProcessDelTSpecRsp*/
18837
18838/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018839 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018840 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018841
18842 @param pWDICtx: pointer to the WLAN DAL context
18843 pEventData: pointer to the event information structure
18844
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 @see
18846 @return Result of the function call
18847*/
18848WDI_Status
18849WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018850(
Jeff Johnson295189b2012-06-20 16:38:30 -070018851 WDI_ControlBlockType* pWDICtx,
18852 WDI_EventInfoType* pEventData
18853)
18854{
18855 WDI_Status wdiStatus;
18856 eHalStatus halStatus;
18857 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18859
18860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018862 -------------------------------------------------------------------------*/
18863 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18864 ( NULL == pEventData->pEventData))
18865 {
18866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018870 }
18871
18872 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18873
18874 /*-------------------------------------------------------------------------
18875 Extract response and send it to UMAC
18876 -------------------------------------------------------------------------*/
18877 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018878 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018879
18880 /*Notify UMAC*/
18881 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18882
Jeff Johnsone7245742012-09-05 17:12:55 -070018883 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018884}/*WDI_ProcessUpdateEDCAParamsRsp*/
18885
18886
18887/**
18888 @brief Process Add BA Rsp function (called when a response
18889 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018890
18891 @param pWDICtx: pointer to the WLAN DAL context
18892 pEventData: pointer to the event information structure
18893
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 @see
18895 @return Result of the function call
18896*/
18897WDI_Status
18898WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018899(
Jeff Johnson295189b2012-06-20 16:38:30 -070018900 WDI_ControlBlockType* pWDICtx,
18901 WDI_EventInfoType* pEventData
18902)
18903{
18904 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18905
18906 tAddBASessionRspParams halBASessionRsp;
18907 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18908
Jeff Johnsone7245742012-09-05 17:12:55 -070018909
Jeff Johnson295189b2012-06-20 16:38:30 -070018910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18911
18912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018913 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018914 -------------------------------------------------------------------------*/
18915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18916 ( NULL == pEventData->pEventData))
18917 {
18918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018919 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018922 }
18923
18924 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18925
18926 /*-------------------------------------------------------------------------
18927 Extract response and send it to UMAC
18928 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018929 wpalMemoryCopy( &halBASessionRsp,
18930 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018931 sizeof(halBASessionRsp));
18932
18933 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18934
Jeff Johnson43971f52012-07-17 12:26:56 -070018935 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 {
18937 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18938 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18939 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18940 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18941 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18942 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18943 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18944 }
18945
18946 /*Notify UMAC*/
18947 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18948
Jeff Johnsone7245742012-09-05 17:12:55 -070018949 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018950}/*WDI_ProcessAddSessionBARsp*/
18951
18952
18953/**
18954 @brief Process Del BA Rsp function (called when a response
18955 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018956
18957 @param pWDICtx: pointer to the WLAN DAL context
18958 pEventData: pointer to the event information structure
18959
Jeff Johnson295189b2012-06-20 16:38:30 -070018960 @see
18961 @return Result of the function call
18962*/
18963WDI_Status
18964WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018965(
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 WDI_ControlBlockType* pWDICtx,
18967 WDI_EventInfoType* pEventData
18968)
18969{
18970 WDI_Status wdiStatus;
18971 eHalStatus halStatus;
18972 WDI_DelBARspCb wdiDelBARspCb;
18973 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18974
18975 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 -------------------------------------------------------------------------*/
18978 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18979 ( NULL == pEventData->pEventData))
18980 {
18981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018982 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018984 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018985 }
18986
18987 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18988
18989 /*-------------------------------------------------------------------------
18990 Extract response and send it to UMAC
18991 -------------------------------------------------------------------------*/
18992 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018993 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018994
18995 if ( eHAL_STATUS_SUCCESS == halStatus )
18996 {
18997 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18998 }
18999
19000 /*Notify UMAC*/
19001 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
19002
Jeff Johnsone7245742012-09-05 17:12:55 -070019003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019004}/*WDI_ProcessDelBARsp*/
19005
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019006#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070019007/**
19008 @brief Process TSM Stats Rsp function (called when a response
19009 is being received over the bus from HAL)
19010
19011 @param pWDICtx: pointer to the WLAN DAL context
19012 pEventData: pointer to the event information structure
19013
19014 @see
19015 @return Result of the function call
19016*/
19017WDI_Status
19018WDI_ProcessTsmStatsRsp
19019(
19020 WDI_ControlBlockType* pWDICtx,
19021 WDI_EventInfoType* pEventData
19022)
19023{
19024 WDI_TsmRspCb wdiTsmStatsRspCb;
19025 tTsmStatsRspMsg halTsmStatsRspMsg;
19026 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
19027 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19028
19029 /*-------------------------------------------------------------------------
19030 Sanity check
19031 -------------------------------------------------------------------------*/
19032 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19033 ( NULL == pEventData->pEventData))
19034 {
19035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019036 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019037 WDI_ASSERT(0);
19038 return WDI_STATUS_E_FAILURE;
19039 }
19040
19041 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
19042
19043 /*-------------------------------------------------------------------------
19044 Unpack HAL Response Message - the header was already extracted by the
19045 main Response Handling procedure
19046 -------------------------------------------------------------------------*/
19047 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
19048 pEventData->pEventData,
19049 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
19050
19051 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
19052 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
19053 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
19054 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
19055 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
19056 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
19057 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
19058 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
19059 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
19060 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
19061 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
19062 halTsmStatsRspMsg.tsmStatsRspParams.status);
19063
19064 /*Notify UMAC*/
19065 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
19066
19067 return WDI_STATUS_SUCCESS;
19068}/*WDI_ProcessTsmStatsRsp*/
19069
19070#endif
19071
19072
19073
19074/**
19075 @brief Process Flush AC Rsp function (called when a response
19076 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019077
19078 @param pWDICtx: pointer to the WLAN DAL context
19079 pEventData: pointer to the event information structure
19080
Jeff Johnson295189b2012-06-20 16:38:30 -070019081 @see
19082 @return Result of the function call
19083*/
19084WDI_Status
19085WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019086(
Jeff Johnson295189b2012-06-20 16:38:30 -070019087 WDI_ControlBlockType* pWDICtx,
19088 WDI_EventInfoType* pEventData
19089)
19090{
19091 WDI_Status wdiStatus;
19092 eHalStatus halStatus;
19093 WDI_FlushAcRspCb wdiFlushAcRspCb;
19094 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19095
19096 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019097 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019098 -------------------------------------------------------------------------*/
19099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19100 ( NULL == pEventData->pEventData))
19101 {
19102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019103 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019105 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019106 }
19107
19108 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
19109
19110 /*-------------------------------------------------------------------------
19111 Extract response and send it to UMAC
19112 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019113 wpalMemoryCopy( &halStatus,
19114 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019115 sizeof(halStatus));
19116
Jeff Johnsone7245742012-09-05 17:12:55 -070019117 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019118
19119 /*Notify UMAC*/
19120 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19121
Jeff Johnsone7245742012-09-05 17:12:55 -070019122 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019123}/*WDI_ProcessFlushAcRsp*/
19124
19125/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019126 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019128
19129 @param pWDICtx: pointer to the WLAN DAL context
19130 pEventData: pointer to the event information structure
19131
Jeff Johnson295189b2012-06-20 16:38:30 -070019132 @see
19133 @return Result of the function call
19134*/
19135WDI_Status
19136WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019137(
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 WDI_ControlBlockType* pWDICtx,
19139 WDI_EventInfoType* pEventData
19140)
19141{
19142 WDI_Status wdiStatus;
19143 eHalStatus halStatus;
19144 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
19145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19146
19147 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019148 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019149 -------------------------------------------------------------------------*/
19150 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19151 ( NULL == pEventData->pEventData))
19152 {
19153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019154 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019157 }
19158
19159 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
19160
19161 /*-------------------------------------------------------------------------
19162 Extract response and send it to UMAC
19163 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019164 wpalMemoryCopy( &halStatus,
19165 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 sizeof(halStatus));
19167
Jeff Johnsone7245742012-09-05 17:12:55 -070019168 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019169
19170 /*Notify UMAC*/
19171 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19172
Jeff Johnsone7245742012-09-05 17:12:55 -070019173 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019174}/*WDI_ProcessBtAmpEventRsp*/
19175
19176
19177/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019178 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019179 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019180
19181 @param pWDICtx: pointer to the WLAN DAL context
19182 pEventData: pointer to the event information structure
19183
Jeff Johnson295189b2012-06-20 16:38:30 -070019184 @see
19185 @return Result of the function call
19186*/
19187WDI_Status
19188WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019189(
Jeff Johnson295189b2012-06-20 16:38:30 -070019190 WDI_ControlBlockType* pWDICtx,
19191 WDI_EventInfoType* pEventData
19192)
19193{
19194 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
19195 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
19196 tAddStaSelfRspMsg halAddStaSelfRsp;
19197 WDI_AddStaParams wdiAddSTAParam = {0};
19198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19199
19200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019202 -------------------------------------------------------------------------*/
19203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19204 ( NULL == pEventData->pEventData))
19205 {
19206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019210 }
19211
Jeff Johnsone7245742012-09-05 17:12:55 -070019212 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070019213 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
19214
19215 /*-------------------------------------------------------------------------
19216 Extract response and send it to UMAC
19217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019218 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
19219 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019220 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
19221
19222
Jeff Johnsone7245742012-09-05 17:12:55 -070019223 wdiAddSTASelfParams.wdiStatus =
19224 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019225
Jeff Johnsone7245742012-09-05 17:12:55 -070019226 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019227 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019228 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019229 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019230 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019231 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
19232
19233 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
19234 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
19235 WDI_MAC_ADDR_LEN);
19236
19237
19238#ifdef HAL_SELF_STA_PER_BSS
19239
19240 /* At this point add the self-STA */
19241
19242 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
19243 /*! TO DO: wdiAddSTAParam.ucHTCapable */
19244 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
19245
19246 //all DPU indices are the same for self STA
19247
19248 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019249 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019250 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
19251 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
19252 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
19253 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
19254 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
19255
19256 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
19257 WDI_MAC_ADDR_LEN);
19258
19259 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
19260 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
19261
Jeff Johnsone7245742012-09-05 17:12:55 -070019262 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070019263 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
19264 {
19265 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
19266 }
19267#endif
19268
19269 /*Notify UMAC*/
19270 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
19271
Jeff Johnsone7245742012-09-05 17:12:55 -070019272 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019273}/*WDI_ProcessAddSTASelfRsp*/
19274
19275
19276
19277/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019279 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019280
19281 @param pWDICtx: pointer to the WLAN DAL context
19282 pEventData: pointer to the event information structure
19283
Jeff Johnson295189b2012-06-20 16:38:30 -070019284 @see
19285 @return Result of the function call
19286*/
19287WDI_Status
19288WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019289(
Jeff Johnson295189b2012-06-20 16:38:30 -070019290 WDI_ControlBlockType* pWDICtx,
19291 WDI_EventInfoType* pEventData
19292)
19293{
19294 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
19295 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
19296 tDelStaSelfRspParams delStaSelfRspParams;
19297 wpt_uint8 ucStaIdx;
19298
19299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19300
19301 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019302 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019303 -------------------------------------------------------------------------*/
19304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19305 ( NULL == pEventData->pEventData))
19306 {
19307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019309 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019310 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019311 }
19312
19313 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
19314
19315 /*-------------------------------------------------------------------------
19316 Extract response and send it to UMAC
19317 -------------------------------------------------------------------------*/
19318
Jeff Johnsone7245742012-09-05 17:12:55 -070019319 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070019320 (wpt_uint8*)pEventData->pEventData,
19321 sizeof(tDelStaSelfRspParams));
19322
Jeff Johnsone7245742012-09-05 17:12:55 -070019323 wdiDelStaSelfRspParams.wdiStatus =
19324 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019325
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
19328 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
19329 {
19330 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070019331 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070019332 delStaSelfRspParams.selfMacAddr,
19333 &ucStaIdx);
19334 if(WDI_STATUS_E_FAILURE == wdiStatus)
19335 {
19336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019337 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019338 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019339 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019340 }
19341 WDI_STATableDelSta(pWDICtx, ucStaIdx);
19342 }
19343
19344 /*Notify UMAC*/
19345 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
19346
19347 return WDI_STATUS_SUCCESS;
19348}
19349
Jeff Johnsone7245742012-09-05 17:12:55 -070019350#ifdef FEATURE_OEM_DATA_SUPPORT
19351/**
19352 @brief Start Oem Data Rsp function (called when a
19353 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070019354
Jeff Johnsone7245742012-09-05 17:12:55 -070019355 @param pWDICtx: pointer to the WLAN DAL context
19356 pEventData: pointer to the event information structure
19357
19358 @see
19359 @return Result of the function call
19360*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019361
19362WDI_Status
19363WDI_ProcessStartOemDataRsp
19364(
19365 WDI_ControlBlockType* pWDICtx,
19366 WDI_EventInfoType* pEventData
19367)
19368{
19369 WDI_oemDataRspCb wdiOemDataRspCb;
19370 WDI_oemDataRspParamsType* wdiOemDataRspParams;
19371 tStartOemDataRspParams* halStartOemDataRspParams;
19372
19373 /*-------------------------------------------------------------------------
19374 Sanity check
19375 -------------------------------------------------------------------------*/
19376 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19377 ( NULL == pEventData->pEventData))
19378 {
19379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019380 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070019381 WDI_ASSERT(0);
19382 return WDI_STATUS_E_FAILURE;
19383 }
19384
19385 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
19386
19387 /*-------------------------------------------------------------------------
19388 Extract response and send it to UMAC
19389 -------------------------------------------------------------------------*/
19390 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
19391
19392
19393 //It is the responsibility of the application code to check for failure
19394 //conditions!
19395
19396 //Allocate memory for WDI OEM DATA RSP structure
19397 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
19398
19399 if(NULL == wdiOemDataRspParams)
19400 {
19401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070019402 "Failed to allocate memory in OEM DATA Response %pK %pK %pK ",
Jeff Johnsone7245742012-09-05 17:12:55 -070019403 pWDICtx, pEventData, pEventData->pEventData);
19404 WDI_ASSERT(0);
19405 return WDI_STATUS_E_FAILURE;
19406 }
19407
Padma, Santhosh Kumarabe6c432016-10-24 18:13:11 +053019408 wpalMemoryZero(wdiOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
19409
Jeff Johnsone7245742012-09-05 17:12:55 -070019410 /* Populate WDI structure members */
Padma, Santhosh Kumarabe6c432016-10-24 18:13:11 +053019411 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp,
19412 halStartOemDataRspParams->oemDataRsp,
19413 pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070019414
19415 /*Notify UMAC*/
19416 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
19417
19418 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
19419 wpalMemoryFree(wdiOemDataRspParams);
19420
19421 return WDI_STATUS_SUCCESS;
19422}/*WDI_PrcoessStartOemDataRsp*/
19423#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070019424
19425/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070019426 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070019427===========================================================================*/
19428
19429/**
19430 @brief Process Channel Switch Rsp function (called when a response
19431 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019432
19433 @param pWDICtx: pointer to the WLAN DAL context
19434 pEventData: pointer to the event information structure
19435
Jeff Johnson295189b2012-06-20 16:38:30 -070019436 @see
19437 @return Result of the function call
19438*/
19439WDI_Status
19440WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019441(
Jeff Johnson295189b2012-06-20 16:38:30 -070019442 WDI_ControlBlockType* pWDICtx,
19443 WDI_EventInfoType* pEventData
19444)
19445{
19446 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
19447 WDI_SwitchChRspCb wdiChSwitchRspCb;
19448 tSwitchChannelRspParams halSwitchChannelRsp;
19449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19450
19451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019453 -------------------------------------------------------------------------*/
19454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19455 ( NULL == pEventData->pEventData))
19456 {
19457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019461 }
19462
19463 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
19464
19465 /*-------------------------------------------------------------------------
19466 Extract response and send it to UMAC
19467 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019468 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070019469 (wpt_uint8*)pEventData->pEventData,
19470 sizeof(halSwitchChannelRsp));
19471
Jeff Johnsone7245742012-09-05 17:12:55 -070019472 wdiSwitchChRsp.wdiStatus =
19473 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019474 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
19475
19476#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070019477 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070019478#endif
19479
19480 /*Notify UMAC*/
19481 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
19482
Jeff Johnsone7245742012-09-05 17:12:55 -070019483 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019484}/*WDI_ProcessChannelSwitchRsp*/
19485
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080019486/**
19487 @brief Process Channel Switch Rsp function (called when a response
19488 is being received over the bus from HAL against
19489 WDI_ProcessChannelSwitchReq_V1)
19490
19491 @param pWDICtx: pointer to the WLAN DAL context
19492 pEventData: pointer to the event information structure
19493
19494 @see
19495 @return Result of the function call
19496*/
19497
19498WDI_Status
19499WDI_ProcessChannelSwitchRsp_V1
19500(
19501 WDI_ControlBlockType* pWDICtx,
19502 WDI_EventInfoType* pEventData
19503)
19504{
19505 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
19506 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
19507 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
19508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19509
19510 /*-------------------------------------------------------------------------
19511 Sanity check
19512 -------------------------------------------------------------------------*/
19513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19514 ( NULL == pEventData->pEventData))
19515 {
19516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19517 "%s: Invalid parameters", __func__);
19518 WDI_ASSERT(0);
19519 return WDI_STATUS_E_FAILURE;
19520 }
19521
19522 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
19523
19524 /*-------------------------------------------------------------------------
19525 Extract response and send it to UMAC
19526 -------------------------------------------------------------------------*/
19527 wpalMemoryCopy( &halSwitchChannelRsp,
19528 (wpt_uint8*)pEventData->pEventData,
19529 sizeof(halSwitchChannelRsp));
19530
19531 wdiSwitchChRsp.wdiStatus =
19532 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
19533 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
19534
19535#ifdef WLAN_FEATURE_VOWIFI
19536 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
19537#endif
19538
19539 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
19540 if (( NULL == wdiChSwitchRspCb ) )
19541 {
19542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19543 "%s: ### Call back function is null", __func__);
19544 WDI_ASSERT(0);
19545 return WDI_STATUS_E_FAILURE;
19546 }
19547 /*Notify UMAC*/
19548 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
19549
19550 return WDI_STATUS_SUCCESS;
19551}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019552
19553/**
19554 @brief Process Config STA Rsp function (called when a response
19555 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019556
19557 @param pWDICtx: pointer to the WLAN DAL context
19558 pEventData: pointer to the event information structure
19559
Jeff Johnson295189b2012-06-20 16:38:30 -070019560 @see
19561 @return Result of the function call
19562*/
19563WDI_Status
19564WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019565(
Jeff Johnson295189b2012-06-20 16:38:30 -070019566 WDI_ControlBlockType* pWDICtx,
19567 WDI_EventInfoType* pEventData
19568)
19569{
19570 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
19571 WDI_ConfigSTARspCb wdiConfigSTARspCb;
19572 WDI_AddStaParams wdiAddSTAParam;
19573
19574 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019576
Jeff Johnsone7245742012-09-05 17:12:55 -070019577 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19579
19580 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019581 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019582 -------------------------------------------------------------------------*/
19583 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19584 ( NULL == pEventData->pEventData))
19585 {
19586 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019587 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019590 }
19591
19592 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
19593
19594 /*-------------------------------------------------------------------------
19595 Extract response and send it to UMAC
19596 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
19598 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019599 sizeof(halConfigStaRsp.configStaRspParams));
19600
19601
19602 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
19603 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
19604 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
19605 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
19606 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
19607
19608 /* MAC Address of STA - take from cache as it does not come back in the
19609 response*/
19610 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070019611 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019612 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019613
19614 wdiCfgSTAParams.wdiStatus =
19615 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019616
19617 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
19618 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
19619 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
19620
19621 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
19622 {
19623 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
19624 {
19625 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070019626 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019627 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
19628 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019629
Jeff Johnson295189b2012-06-20 16:38:30 -070019630 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019631 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070019633 wdiAddSTAParam.ucHTCapable =
19634 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
19635 wdiAddSTAParam.ucStaType =
19636 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070019637 wdiAddSTAParam.ucRmfEnabled =
19638 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070019639
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070019641 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
19642 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019643 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019644
19645 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
19646 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
19647 WDI_MAC_ADDR_LEN);
19648
19649 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19650 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
19651 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070019652
19653 if ( NULL == pBSSSes )
19654 {
19655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19656 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070019657
Jeff Johnson295189b2012-06-20 16:38:30 -070019658 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019659 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070019660 }
19661
19662 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019663 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019664 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019665 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019666 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019667 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019668 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019669 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019670 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070019671 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019672
Jeff Johnson295189b2012-06-20 16:38:30 -070019673 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
19674 }
19675 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
19676 {
19677 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
19678
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019682 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019683 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019684 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019685 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019686 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019687 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019688 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019689 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019690 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019691 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070019692 halConfigStaRsp.configStaRspParams.ucUcastSig;
19693 }
19694 }
19695
19696 /*Notify UMAC*/
19697 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
19698
Jeff Johnsone7245742012-09-05 17:12:55 -070019699 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019700}/*WDI_ProcessConfigStaRsp*/
19701
19702
19703/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019704 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019705 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019706
19707 @param pWDICtx: pointer to the WLAN DAL context
19708 pEventData: pointer to the event information structure
19709
Jeff Johnson295189b2012-06-20 16:38:30 -070019710 @see
19711 @return Result of the function call
19712*/
19713WDI_Status
19714WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019715(
Jeff Johnson295189b2012-06-20 16:38:30 -070019716 WDI_ControlBlockType* pWDICtx,
19717 WDI_EventInfoType* pEventData
19718)
19719{
19720 WDI_Status wdiStatus;
19721 eHalStatus halStatus;
19722 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19723
19724 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019725 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19727
19728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019730 -------------------------------------------------------------------------*/
19731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19732 ( NULL == pEventData->pEventData))
19733 {
19734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019738 }
19739
19740 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19741
19742 wpalMutexAcquire(&pWDICtx->wptMutex);
19743
19744 /*If the link is being transitioned to idle - the BSS is to be deleted
19745 - this type of ending a session is possible when UMAC has failed an
19746 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019747 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019748 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19749 {
19750 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019751 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019752 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019753 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19754 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19755 &pBSSSes);
19756
Jeff Johnson295189b2012-06-20 16:38:30 -070019757 /*-----------------------------------------------------------------------
19758 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019759 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019760 -----------------------------------------------------------------------*/
19761 if ( NULL == pBSSSes )
19762 {
19763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19764 "Set link response received outside association session");
19765 }
19766 else
19767 {
19768 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19769 will be del BSS coming after this to stop the beaconing & cleaning up the
19770 sessions*/
19771 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19772 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19773 {
19774 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019775 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019776 -----------------------------------------------------------------------*/
19777 WDI_DeleteSession(pWDICtx, pBSSSes);
19778
19779 /*-----------------------------------------------------------------------
19780 Check to see if this association is in progress - if so disable the
19781 flag as this has ended
19782 -----------------------------------------------------------------------*/
19783 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019784 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019785 /*Association no longer in progress */
19786 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19787 /*Association no longer in progress - prepare pending assoc for processing*/
19788 WDI_DequeueAssocRequest(pWDICtx);
19789 }
19790 }
19791 }
19792 }
19793 /* If the link state has been set to POST ASSOC, reset the "association in
19794 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019795 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019796 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19797 {
19798 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19799 WDI_DequeueAssocRequest(pWDICtx);
19800 }
19801
19802 wpalMutexRelease(&pWDICtx->wptMutex);
19803
19804 /*-------------------------------------------------------------------------
19805 Extract response and send it to UMAC
19806 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019807 wpalMemoryCopy( &halStatus,
19808 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019809 sizeof(halStatus));
19810
Jeff Johnsone7245742012-09-05 17:12:55 -070019811 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019812
19813 /*Notify UMAC*/
19814 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19815
Jeff Johnsone7245742012-09-05 17:12:55 -070019816 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019817}/*WDI_ProcessSetLinkStateRsp*/
19818
19819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019820 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019821 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019822
19823 @param pWDICtx: pointer to the WLAN DAL context
19824 pEventData: pointer to the event information structure
19825
Jeff Johnson295189b2012-06-20 16:38:30 -070019826 @see
19827 @return Result of the function call
19828*/
19829WDI_Status
19830WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019831(
Jeff Johnson295189b2012-06-20 16:38:30 -070019832 WDI_ControlBlockType* pWDICtx,
19833 WDI_EventInfoType* pEventData
19834)
19835{
19836 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19837 WDI_GetStatsRspCb wdiGetStatsRspCb;
19838 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019839
Jeff Johnson295189b2012-06-20 16:38:30 -070019840 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19841
19842 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019843 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019844 -------------------------------------------------------------------------*/
19845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19846 ( NULL == pEventData->pEventData))
19847 {
19848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019849 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019850 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019851 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019852 }
19853
19854 /*-------------------------------------------------------------------------
19855 Extract response and send it to UMAC
19856 -------------------------------------------------------------------------*/
19857 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19858
19859 /*allocate the stats response buffer */
19860 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19861 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19862 + sizeof(WDI_GetStatsRspParamsType));
19863
19864 if(NULL == wdiGetStatsRsp)
19865 {
19866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070019867 "Failed to allocate memory in Get Stats Response %pK %pK %pK ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019868 pWDICtx, pEventData, pEventData->pEventData);
19869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019871 }
19872
19873 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19874
19875 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19876 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19877 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19878 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19879 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19880 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19881
19882 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19883 wpalMemoryCopy(wdiGetStatsRsp + 1,
19884 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19885 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19886
19887 /*Notify UMAC*/
19888 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19889
19890 wpalMemoryFree(wdiGetStatsRsp);
19891
Jeff Johnsone7245742012-09-05 17:12:55 -070019892 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019893}/*WDI_ProcessGetStatsRsp*/
19894
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019895#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019896/**
19897 @brief Process Get Roam Rssi Rsp function (called when a response is
19898 being received over the bus from HAL)
19899
19900 @param pWDICtx: pointer to the WLAN DAL context
19901 pEventData: pointer to the event information structure
19902
19903 @see
19904 @return Result of the function call
19905*/
19906WDI_Status
19907WDI_ProcessGetRoamRssiRsp
19908(
19909 WDI_ControlBlockType* pWDICtx,
19910 WDI_EventInfoType* pEventData
19911)
19912{
19913 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19914 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19915 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19917
19918 /*-------------------------------------------------------------------------
19919 Sanity check
19920 -------------------------------------------------------------------------*/
19921 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19922 ( NULL == pEventData->pEventData))
19923 {
19924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19925 "%s: Invalid parameters", __func__);
19926 WDI_ASSERT(0);
19927 return WDI_STATUS_E_FAILURE;
19928 }
19929
19930 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19931 if(NULL == wdiGetRoamRssiRspCb)
19932 {
19933 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19934 "%s: call back function is NULL", __func__);
19935 WDI_ASSERT(0);
19936 return WDI_STATUS_E_FAILURE;
19937 }
19938
19939 /*-------------------------------------------------------------------------
19940 Extract response and send it to UMAC
19941 -------------------------------------------------------------------------*/
19942 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19943 pEventData->pEventData,
19944 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19945
19946 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19947 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19948 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19949
19950 /*Notify UMAC*/
19951 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19952
19953 return WDI_STATUS_SUCCESS;
19954}/*WDI_ProcessGetRoamRssiRsp*/
19955#endif
19956
Jeff Johnson295189b2012-06-20 16:38:30 -070019957
19958/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019959 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019960 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019961
19962 @param pWDICtx: pointer to the WLAN DAL context
19963 pEventData: pointer to the event information structure
19964
Jeff Johnson295189b2012-06-20 16:38:30 -070019965 @see
19966 @return Result of the function call
19967*/
19968WDI_Status
19969WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019970(
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 WDI_ControlBlockType* pWDICtx,
19972 WDI_EventInfoType* pEventData
19973)
19974{
19975 WDI_Status wdiStatus;
19976 eHalStatus halStatus;
19977 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19979
19980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019981 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019982 -------------------------------------------------------------------------*/
19983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19984 ( NULL == pEventData->pEventData))
19985 {
19986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019989 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019990 }
19991
19992 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19993
19994 /*-------------------------------------------------------------------------
19995 Extract response and send it to UMAC
19996 -------------------------------------------------------------------------*/
19997 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019998 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019999
20000 /*Notify UMAC*/
20001 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20002
Jeff Johnsone7245742012-09-05 17:12:55 -070020003 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020004}/*WDI_ProcessUpdateCfgRsp*/
20005
20006
20007
20008/**
20009 @brief Process Add BA Rsp function (called when a response
20010 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020011
20012 @param pWDICtx: pointer to the WLAN DAL context
20013 pEventData: pointer to the event information structure
20014
Jeff Johnson295189b2012-06-20 16:38:30 -070020015 @see
20016 @return Result of the function call
20017*/
20018WDI_Status
20019WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020020(
Jeff Johnson295189b2012-06-20 16:38:30 -070020021 WDI_ControlBlockType* pWDICtx,
20022 WDI_EventInfoType* pEventData
20023)
20024{
20025 WDI_AddBARspCb wdiAddBARspCb;
20026
20027 tAddBARspParams halAddBARsp;
20028 WDI_AddBARspinfoType wdiAddBARsp;
20029
20030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20031
20032 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020033 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020034 -------------------------------------------------------------------------*/
20035 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20036 ( NULL == pEventData->pEventData))
20037 {
20038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020042 }
20043
20044 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
20045
20046 /*-------------------------------------------------------------------------
20047 Extract response and send it to UMAC
20048 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020049 wpalMemoryCopy( &halAddBARsp,
20050 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020051 sizeof(halAddBARsp));
20052
20053 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
20054
Jeff Johnson43971f52012-07-17 12:26:56 -070020055 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070020056 {
20057 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
20058 }
20059
20060 /*Notify UMAC*/
20061 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
20062
Jeff Johnsone7245742012-09-05 17:12:55 -070020063 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020064}/*WDI_ProcessAddSessionBARsp*/
20065
20066/**
20067 @brief Process Add BA Rsp function (called when a response
20068 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020069
20070 @param pWDICtx: pointer to the WLAN DAL context
20071 pEventData: pointer to the event information structure
20072
Jeff Johnson295189b2012-06-20 16:38:30 -070020073 @see
20074 @return Result of the function call
20075*/
20076WDI_Status
20077WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020078(
Jeff Johnson295189b2012-06-20 16:38:30 -070020079 WDI_ControlBlockType* pWDICtx,
20080 WDI_EventInfoType* pEventData
20081)
20082{
20083 WDI_TriggerBARspCb wdiTriggerBARspCb;
20084
20085 tTriggerBARspParams* halTriggerBARsp;
20086 tTriggerBaRspCandidate* halBaCandidate;
20087 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
20088 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
20089 wpt_uint16 index;
20090 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020091 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020092 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20093
20094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020095 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020096 -------------------------------------------------------------------------*/
20097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20098 ( NULL == pEventData->pEventData))
20099 {
20100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020101 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020102 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020103 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020104 }
20105
20106 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
20107
20108 /*-------------------------------------------------------------------------
20109 Extract response and send it to UMAC
20110 -------------------------------------------------------------------------*/
20111 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
20112
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020113 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
20114
20115 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
20116 {
20117 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070020118 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070020120
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020121 if(NULL == wdiTriggerBARsp)
20122 {
20123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070020124 "Failed to allocate memory in Trigger BA Response %pK %pK %pK ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020125 pWDICtx, pEventData, pEventData->pEventData);
20126 WDI_ASSERT(0);
20127 return WDI_STATUS_E_FAILURE;
20128 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020129
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020130 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
20131
Jeff Johnson295189b2012-06-20 16:38:30 -070020132 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070020133 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070020134 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
20135
20136 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
20137 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
20138
20139 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
20140 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020141 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070020142 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
20143 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
20144 {
Jeff Johnsone7245742012-09-05 17:12:55 -070020145 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070020146 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070020147 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070020148 halBaCandidate->baInfo[TidIndex].startingSeqNum;
20149 }
20150 wdiTriggerBARspCandidate++;
20151 halBaCandidate++;
20152 }
20153 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020154 else
20155 {
20156 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
20157
20158 if(NULL == wdiTriggerBARsp)
20159 {
20160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070020161 "Failed to allocate memory in Trigger BA Response %pK %pK %pK ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070020162 pWDICtx, pEventData, pEventData->pEventData);
20163 WDI_ASSERT(0);
20164 return WDI_STATUS_E_FAILURE;
20165 }
20166
20167 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
20168
20169 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020170
20171 /*Notify UMAC*/
20172 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
20173
20174 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070020175 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176}/*WDI_ProcessAddSessionBARsp*/
20177
20178/**
20179 @brief Process Update Beacon Params Rsp function (called when a response
20180 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020181
20182 @param pWDICtx: pointer to the WLAN DAL context
20183 pEventData: pointer to the event information structure
20184
Jeff Johnson295189b2012-06-20 16:38:30 -070020185 @see
20186 @return Result of the function call
20187*/
20188WDI_Status
20189WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020190(
Jeff Johnson295189b2012-06-20 16:38:30 -070020191 WDI_ControlBlockType* pWDICtx,
20192 WDI_EventInfoType* pEventData
20193)
20194{
20195 WDI_Status wdiStatus;
20196 eHalStatus halStatus;
20197 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
20198 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20199
20200 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020201 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020202 -------------------------------------------------------------------------*/
20203 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20204 ( NULL == pEventData->pEventData))
20205 {
20206 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020207 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020208 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020209 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 }
20211
20212 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
20213
20214 /*-------------------------------------------------------------------------
20215 Extract response and send it to UMAC
20216 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020217 wpalMemoryCopy( &halStatus,
20218 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020219 sizeof(halStatus));
20220
Jeff Johnsone7245742012-09-05 17:12:55 -070020221 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020222
20223 /*Notify UMAC*/
20224 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20225
Jeff Johnsone7245742012-09-05 17:12:55 -070020226 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227}/*WDI_ProcessUpdateBeaconParamsRsp*/
20228
20229/**
20230 @brief Process Send Beacon template Rsp function (called when a response
20231 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020232
20233 @param pWDICtx: pointer to the WLAN DAL context
20234 pEventData: pointer to the event information structure
20235
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 @see
20237 @return Result of the function call
20238*/
20239WDI_Status
20240WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020241(
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 WDI_ControlBlockType* pWDICtx,
20243 WDI_EventInfoType* pEventData
20244)
20245{
20246 WDI_Status wdiStatus;
20247 eHalStatus halStatus;
20248 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
20249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20250
20251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020253 -------------------------------------------------------------------------*/
20254 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20255 ( NULL == pEventData->pEventData))
20256 {
20257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020261 }
20262
20263 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
20264
20265 /*-------------------------------------------------------------------------
20266 Extract response and send it to UMAC
20267 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020268 wpalMemoryCopy( &halStatus,
20269 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 sizeof(halStatus));
20271
Jeff Johnsone7245742012-09-05 17:12:55 -070020272 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020273
20274 /*Notify UMAC*/
20275 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20276
Jeff Johnsone7245742012-09-05 17:12:55 -070020277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020278}/*WDI_ProcessSendBeaconParamsRsp*/
20279
Jeff Johnsone7245742012-09-05 17:12:55 -070020280
Jeff Johnson295189b2012-06-20 16:38:30 -070020281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020282 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070020283 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020284
20285 @param pWDICtx: pointer to the WLAN DAL context
20286 pEventData: pointer to the event information structure
20287
Jeff Johnson295189b2012-06-20 16:38:30 -070020288 @see
20289 @return Result of the function call
20290*/
20291WDI_Status
20292WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020293(
Jeff Johnson295189b2012-06-20 16:38:30 -070020294 WDI_ControlBlockType* pWDICtx,
20295 WDI_EventInfoType* pEventData
20296)
20297{
20298 WDI_Status wdiStatus;
20299 eHalStatus halStatus;
20300 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
20301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20302
20303 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020304 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020305 -------------------------------------------------------------------------*/
20306 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20307 ( NULL == pEventData->pEventData))
20308 {
20309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020313 }
20314
20315 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
20316
20317 /*-------------------------------------------------------------------------
20318 Extract response and send it to UMAC
20319 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020320 wpalMemoryCopy( &halStatus,
20321 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020322 sizeof(halStatus));
20323
Jeff Johnsone7245742012-09-05 17:12:55 -070020324 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020325
20326 /*Notify UMAC*/
20327 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20328
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020330}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
20331
20332 /**
20333 @brief Process Set Max Tx Power Rsp function (called when a response
20334 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020335
20336 @param pWDICtx: pointer to the WLAN DAL context
20337 pEventData: pointer to the event information structure
20338
Jeff Johnson295189b2012-06-20 16:38:30 -070020339 @see
20340 @return Result of the function call
20341*/
20342WDI_Status
20343WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020344(
Jeff Johnson295189b2012-06-20 16:38:30 -070020345 WDI_ControlBlockType* pWDICtx,
20346 WDI_EventInfoType* pEventData
20347)
20348{
20349 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070020350
Jeff Johnson295189b2012-06-20 16:38:30 -070020351 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070020352
Jeff Johnson295189b2012-06-20 16:38:30 -070020353 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
20354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20355
20356 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020357 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020358 -------------------------------------------------------------------------*/
20359 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20360 ( NULL == pEventData->pEventData))
20361 {
20362 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020363 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020364 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020365 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020366 }
20367
20368 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
20369
20370 /*-------------------------------------------------------------------------
20371 Extract response and send it to UMAC
20372 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020373 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
20374 pEventData->pEventData,
20375 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020376
20377 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
20378 {
20379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20380 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070020381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 }
20383
Jeff Johnsone7245742012-09-05 17:12:55 -070020384 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070020385 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070020386 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070020387
20388 /*Notify UMAC*/
20389 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
20390
Jeff Johnsone7245742012-09-05 17:12:55 -070020391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020392}
20393
schang86c22c42013-03-13 18:41:24 -070020394 /**
20395 @brief Process Set Tx Power Rsp function (called when a response
20396 is being received over the bus from HAL)
20397
20398 @param pWDICtx: pointer to the WLAN DAL context
20399 pEventData: pointer to the event information structure
20400
20401 @see
20402 @return Result of the function call
20403*/
20404WDI_Status
20405WDI_ProcessSetTxPowerRsp
20406(
20407 WDI_ControlBlockType* pWDICtx,
20408 WDI_EventInfoType* pEventData
20409)
20410{
20411 tSetTxPwrRspMsg halTxpowerrsp;
20412 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
20413 WDA_SetTxPowerRspCb wdiReqStatusCb;
20414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20415
20416 /*-------------------------------------------------------------------------
20417 Sanity check
20418 -------------------------------------------------------------------------*/
20419 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20420 ( NULL == pEventData->pEventData))
20421 {
20422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20423 "%s: Invalid parameters", __func__);
20424 WDI_ASSERT(0);
20425 return WDI_STATUS_E_FAILURE;
20426 }
20427
20428 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
20429
20430 /*-------------------------------------------------------------------------
20431 Extract response and send it to UMAC
20432 -------------------------------------------------------------------------*/
20433 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
20434 pEventData->pEventData,
20435 sizeof(halTxpowerrsp.setTxPwrRspParams));
20436
20437 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
20438 {
20439 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20440 "Error status returned in Set Tx Power Response ");
20441 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
20442 return WDI_STATUS_E_FAILURE;
20443 }
20444
20445 wdiSetTxPowerRspMsg.wdiStatus =
20446 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
20447
20448 /*Notify UMAC*/
20449 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
20450
20451 return WDI_STATUS_SUCCESS;
20452}
Arif Hussain935a8fb2014-01-31 12:12:28 -080020453
20454/**
20455 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
20456 is being received over the bus from HAL)
20457
20458 @param pWDICtx: pointer to the WLAN DAL context
20459 pEventData: pointer to the event information structure
20460
20461 @see
20462 @return Result of the function call
20463*/
20464WDI_Status
20465WDI_ProcessSetMaxTxPowerPerBandRsp
20466(
20467 WDI_ControlBlockType* pWDICtx,
20468 WDI_EventInfoType* pEventData
20469)
20470{
20471 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
20472 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
20473 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
20474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20475
20476 /*-------------------------------------------------------------------------
20477 Sanity check
20478 -------------------------------------------------------------------------*/
20479 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20480 ( NULL == pEventData->pEventData))
20481 {
20482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20483 "%s: Invalid parameters", __func__);
20484 WDI_ASSERT(0);
20485 return WDI_STATUS_E_FAILURE;
20486 }
20487
20488 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
20489
20490 /*-------------------------------------------------------------------------
20491 Extract response and send it to UMAC
20492 -------------------------------------------------------------------------*/
20493 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
20494 pEventData->pEventData,
20495 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
20496
20497 if (eHAL_STATUS_SUCCESS !=
20498 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
20499 {
20500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20501 "Error status returned in Set Max Tx Power Per Band Response");
20502 return WDI_STATUS_E_FAILURE;
20503 }
20504
20505 wdiSetTxPowerPerBandRspMsg.wdiStatus =
20506 WDI_HAL_2_WDI_STATUS(
20507 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
20508
20509 /* Notify UMAC */
20510 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
20511
20512 return WDI_STATUS_SUCCESS;
20513}
20514
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020515#ifdef FEATURE_WLAN_TDLS
20516/**
20517 @brief Process TDLS Link Establish Rsp function (called
20518 when a response is being received over the bus from HAL)
20519
20520 @param pWDICtx: pointer to the WLAN DAL context
20521 pEventData: pointer to the event information structure
20522
20523 @see
20524 @return Result of the function call
20525*/
20526WDI_Status
20527WDI_ProcessLinkEstablishReqRsp
20528(
20529 WDI_ControlBlockType* pWDICtx,
20530 WDI_EventInfoType* pEventData
20531)
20532{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020533 eHalStatus halStatus;
20534 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053020535 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
20536 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
20537
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020538 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20539
20540 /*-------------------------------------------------------------------------
20541 Sanity check
20542 -------------------------------------------------------------------------*/
20543 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20544 ( NULL == pEventData->pEventData))
20545 {
20546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20547 "%s: Invalid parameters", __func__);
20548 WDI_ASSERT(0);
20549 return WDI_STATUS_E_FAILURE;
20550 }
20551
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053020552 /*-------------------------------------------------------------------------
20553 Extract indication and send it to UMAC
20554 -------------------------------------------------------------------------*/
20555 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
20556 pEventData->pEventData,
20557 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
20558
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020559 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
20560
20561 /*-------------------------------------------------------------------------
20562 Extract response and send it to UMAC
20563 -------------------------------------------------------------------------*/
20564 wpalMemoryCopy( &halStatus,
20565 pEventData->pEventData,
20566 sizeof(halStatus));
20567
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053020568 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20569 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020570
20571 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053020572 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020573
20574 return WDI_STATUS_SUCCESS;
20575}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053020576
20577
20578
20579/**
20580 @brief Process TDLS Chan switch Rsp function (called
20581 when a response is being received over the bus from HAL)
20582
20583 @param pWDICtx: pointer to the WLAN DAL context
20584 pEventData: pointer to the event information structure
20585
20586 @see
20587 @return Result of the function call
20588*/
20589WDI_Status
20590WDI_ProcessChanSwitchReqRsp
20591(
20592 WDI_ControlBlockType* pWDICtx,
20593 WDI_EventInfoType* pEventData
20594)
20595{
20596 eHalStatus halStatus;
20597 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
20598 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
20599 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
20600
20601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20602
20603 /*-------------------------------------------------------------------------
20604 Sanity check
20605 -------------------------------------------------------------------------*/
20606 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20607 ( NULL == pEventData->pEventData))
20608 {
20609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
20610 "%s: Invalid parameters", __func__);
20611 WDI_ASSERT(0);
20612 return WDI_STATUS_E_FAILURE;
20613 }
20614
20615 /*-------------------------------------------------------------------------
20616 Extract indication and send it to UMAC
20617 -------------------------------------------------------------------------*/
20618 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
20619 pEventData->pEventData,
20620 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
20621
20622 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
20623
20624 /*-------------------------------------------------------------------------
20625 Extract response and send it to UMAC
20626 -------------------------------------------------------------------------*/
20627 wpalMemoryCopy( &halStatus,
20628 pEventData->pEventData,
20629 sizeof(halStatus));
20630
20631 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20632 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
20633
20634 /*Notify UMAC*/
20635 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
20636
20637 return WDI_STATUS_SUCCESS;
20638}/*WDI_ProcessChanSwitchReqRsp*/
20639
20640
20641
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020642#endif
schang86c22c42013-03-13 18:41:24 -070020643
Jeff Johnson295189b2012-06-20 16:38:30 -070020644/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020645 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070020646 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020647
20648 @param pWDICtx: pointer to the WLAN DAL context
20649 pEventData: pointer to the event information structure
20650
Jeff Johnson295189b2012-06-20 16:38:30 -070020651 @see
20652 @return Result of the function call
20653*/
20654WDI_Status
20655WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020656(
Jeff Johnson295189b2012-06-20 16:38:30 -070020657 WDI_ControlBlockType* pWDICtx,
20658 WDI_EventInfoType* pEventData
20659)
20660{
20661 WDI_Status wdiStatus;
20662 eHalStatus halStatus;
20663 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
20664 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20665
20666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020667 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 -------------------------------------------------------------------------*/
20669 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20670 ( NULL == pEventData->pEventData))
20671 {
20672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020673 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 }
20677
20678 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
20679
20680 /*-------------------------------------------------------------------------
20681 Extract response and send it to UMAC
20682 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020683 wpalMemoryCopy( &halStatus,
20684 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 sizeof(halStatus));
20686
Jeff Johnsone7245742012-09-05 17:12:55 -070020687 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020688
20689 /*Notify UMAC*/
20690 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20691
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020693}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020695 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020696 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020697
20698 @param pWDICtx: pointer to the WLAN DAL context
20699 pEventData: pointer to the event information structure
20700
Jeff Johnson295189b2012-06-20 16:38:30 -070020701 @see
20702 @return Result of the function call
20703*/
20704WDI_Status
20705WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020706(
Jeff Johnson295189b2012-06-20 16:38:30 -070020707 WDI_ControlBlockType* pWDICtx,
20708 WDI_EventInfoType* pEventData
20709)
20710{
20711 WDI_Status wdiStatus;
20712 eHalStatus halStatus;
20713 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020714 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020715 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20716
20717 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020718 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 -------------------------------------------------------------------------*/
20720 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20721 ( NULL == pEventData->pEventData))
20722 {
20723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020724 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020725 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020726 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020727 }
20728
20729 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20730
20731 /*-------------------------------------------------------------------------
20732 Extract response and send it to UMAC
20733 -------------------------------------------------------------------------*/
20734 halStatus = *((eHalStatus*)pEventData->pEventData);
20735
Jeff Johnsone7245742012-09-05 17:12:55 -070020736 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020737
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020738 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20739 * Other module states are taken care by PMC.
20740 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20741 */
20742 if (wdiStatus != WDI_STATUS_SUCCESS) {
20743
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20745 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20746 halStatus);
20747 /* Call Back is not required as we are putting the DXE in FULL
20748 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020749 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20750
20751 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020753 "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 -080020754 WDI_ASSERT(0);
20755 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020756 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020757 /*Notify UMAC*/
20758 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20759
Jeff Johnsone7245742012-09-05 17:12:55 -070020760 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020761}/*WDI_ProcessEnterImpsRsp*/
20762
20763/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020764 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020765 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020766
20767 @param pWDICtx: pointer to the WLAN DAL context
20768 pEventData: pointer to the event information structure
20769
Jeff Johnson295189b2012-06-20 16:38:30 -070020770 @see
20771 @return Result of the function call
20772*/
20773WDI_Status
20774WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020775(
Jeff Johnson295189b2012-06-20 16:38:30 -070020776 WDI_ControlBlockType* pWDICtx,
20777 WDI_EventInfoType* pEventData
20778)
20779{
20780 WDI_Status wdiStatus;
20781 eHalStatus halStatus;
20782 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020783 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20785
20786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020788 -------------------------------------------------------------------------*/
20789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20790 ( NULL == pEventData->pEventData))
20791 {
20792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 }
20797
20798 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20799
20800 /*-------------------------------------------------------------------------
20801 Extract response and send it to UMAC
20802 -------------------------------------------------------------------------*/
20803 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020804 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020805
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020806 if (halStatus != eHAL_STATUS_SUCCESS)
20807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20808 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20809
Jeff Johnson295189b2012-06-20 16:38:30 -070020810 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020811 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20812 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20813 {
20814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020815 "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 -080020816 WDI_ASSERT(0);
20817 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020818 /*Notify UMAC*/
20819 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20820
Jeff Johnsone7245742012-09-05 17:12:55 -070020821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020822}/*WDI_ProcessExitImpsRsp*/
20823
20824/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020827
20828 @param pWDICtx: pointer to the WLAN DAL context
20829 pEventData: pointer to the event information structure
20830
Jeff Johnson295189b2012-06-20 16:38:30 -070020831 @see
20832 @return Result of the function call
20833*/
20834WDI_Status
20835WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020836(
Jeff Johnson295189b2012-06-20 16:38:30 -070020837 WDI_ControlBlockType* pWDICtx,
20838 WDI_EventInfoType* pEventData
20839)
20840{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020841 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20842 tHalEnterBmpsRspParams halEnterBmpsRsp;
20843 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20844 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020845 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020846 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20847
20848 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020849 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020850 -------------------------------------------------------------------------*/
20851 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20852 ( NULL == pEventData->pEventData))
20853 {
20854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020855 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020856 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020857 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020858 }
20859
Jeff Johnson295189b2012-06-20 16:38:30 -070020860 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020861 Extract response and send it to UMAC
20862 -------------------------------------------------------------------------*/
20863 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20864 {
20865 wpalMemoryCopy( &halEnterBmpsRsp,
20866 pEventData->pEventData,
20867 sizeof(halEnterBmpsRsp));
20868
20869 //Used to print debug message
20870 halStatus = halEnterBmpsRsp.status;
20871 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20872 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20873 }
20874 else
20875 {
20876 halStatus = *((eHalStatus*)pEventData->pEventData);
20877 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20878 }
20879
20880 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020881
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020882 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20883 * Other module states are taken care by PMC.
20884 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20885 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020886 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20887 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020888
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020890 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20891 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020892 /* Call Back is not required as we are putting the DXE in FULL
20893 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020894 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20895 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20896 {
20897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020898 "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 -080020899 WDI_ASSERT(0);
20900 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020901 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020902 }
20903
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020905 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020906
Jeff Johnsone7245742012-09-05 17:12:55 -070020907 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020908}/*WDI_ProcessEnterBmpsRsp*/
20909
20910/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020911 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020912 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020913
20914 @param pWDICtx: pointer to the WLAN DAL context
20915 pEventData: pointer to the event information structure
20916
Jeff Johnson295189b2012-06-20 16:38:30 -070020917 @see
20918 @return Result of the function call
20919*/
20920WDI_Status
20921WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020922(
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 WDI_ControlBlockType* pWDICtx,
20924 WDI_EventInfoType* pEventData
20925)
20926{
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 eHalStatus halStatus;
20928 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020929 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020930 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20931 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20933
20934 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020935 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020936 -------------------------------------------------------------------------*/
20937 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20938 ( NULL == pEventData->pEventData))
20939 {
20940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020941 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020942 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 }
20945
20946 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20947
20948 /*-------------------------------------------------------------------------
20949 Extract response and send it to UMAC
20950 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020951
20952 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20953 {
20954 wpalMemoryCopy( &halExitBmpsRsp,
20955 pEventData->pEventData,
20956 sizeof(halExitBmpsRsp));
20957
20958 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20959 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20960 }
20961 else
20962 {
20963 halStatus = *((eHalStatus*)pEventData->pEventData);
20964 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20965 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020966
20967 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020968 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20969 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20970 {
20971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020972 "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 -080020973 WDI_ASSERT(0);
20974 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020975 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20976
20977 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020978 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020979
Jeff Johnsone7245742012-09-05 17:12:55 -070020980 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020981}/*WDI_ProcessExitBmpsRsp*/
20982
20983/**
20984 @brief Process Enter UAPSD Rsp function (called when a response
20985 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020986
20987 @param pWDICtx: pointer to the WLAN DAL context
20988 pEventData: pointer to the event information structure
20989
Jeff Johnson295189b2012-06-20 16:38:30 -070020990 @see
20991 @return Result of the function call
20992*/
20993WDI_Status
20994WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020995(
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 WDI_ControlBlockType* pWDICtx,
20997 WDI_EventInfoType* pEventData
20998)
20999{
Jeff Johnson295189b2012-06-20 16:38:30 -070021000 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021001 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070021002 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021003 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
21004
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21006
21007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021008 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 -------------------------------------------------------------------------*/
21010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21011 ( NULL == pEventData->pEventData))
21012 {
21013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021014 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021015 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021016 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021017 }
21018
21019 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
21020
21021 /*-------------------------------------------------------------------------
21022 Extract response and send it to UMAC
21023 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021024 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21025 {
21026 wpalMemoryCopy( &halEnterUapsdRsp,
21027 pEventData->pEventData,
21028 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070021029
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021030 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
21031 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
21032 }
21033 else
21034 {
21035 halStatus = *((eHalStatus*)pEventData->pEventData);
21036 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
21037 }
21038
21039 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070021040 {
21041 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
21042 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
21043 // the traffic to decide when to suspend the trigger frames when there is no traffic
21044 // activity on the trigger enabled ACs
21045 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
21046
21047#ifdef WLAN_PERF
21048 // Increment the BD signature to refresh the fast path BD utilization
21049 pWDICtx->uBdSigSerialNum++;
21050#endif
21051 }
21052
21053 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021054 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021055
Jeff Johnsone7245742012-09-05 17:12:55 -070021056 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021057}/*WDI_ProcessEnterUapsdRsp*/
21058
21059/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021060 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021061 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021062
21063 @param pWDICtx: pointer to the WLAN DAL context
21064 pEventData: pointer to the event information structure
21065
Jeff Johnson295189b2012-06-20 16:38:30 -070021066 @see
21067 @return Result of the function call
21068*/
21069WDI_Status
21070WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021071(
Jeff Johnson295189b2012-06-20 16:38:30 -070021072 WDI_ControlBlockType* pWDICtx,
21073 WDI_EventInfoType* pEventData
21074)
21075{
Jeff Johnson295189b2012-06-20 16:38:30 -070021076 eHalStatus halStatus;
21077 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021078 tHalExitUapsdRspParams halExitUapsdRsp;
21079 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21081
21082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021084 -------------------------------------------------------------------------*/
21085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21086 ( NULL == pEventData->pEventData))
21087 {
21088 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021090 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021091 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 }
21093
21094 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
21095
21096 /*-------------------------------------------------------------------------
21097 Extract response and send it to UMAC
21098 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021099 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21100 {
21101 wpalMemoryCopy( &halExitUapsdRsp,
21102 pEventData->pEventData,
21103 sizeof(halExitUapsdRsp));
21104
21105 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
21106 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
21107 }
21108 else
21109 {
21110 halStatus = *((eHalStatus*)pEventData->pEventData);
21111 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
21112 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
21114 // directly instead of the FW WQ.
21115 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
21116
21117#ifdef WLAN_PERF
21118 // Increment the BD signature to refresh the fast path BD utilization
21119 pWDICtx->uBdSigSerialNum++;
21120#endif
21121
21122 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021123 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021124
Jeff Johnsone7245742012-09-05 17:12:55 -070021125 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021126}/*WDI_ProcessExitUapsdRsp*/
21127
21128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021130 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021131
21132 @param pWDICtx: pointer to the WLAN DAL context
21133 pEventData: pointer to the event information structure
21134
Jeff Johnson295189b2012-06-20 16:38:30 -070021135 @see
21136 @return Result of the function call
21137*/
21138WDI_Status
21139WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021140(
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 WDI_ControlBlockType* pWDICtx,
21142 WDI_EventInfoType* pEventData
21143)
21144{
21145 WDI_Status wdiStatus;
21146 eHalStatus halStatus;
21147 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
21148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21149
21150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 -------------------------------------------------------------------------*/
21153 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21154 ( NULL == pEventData->pEventData))
21155 {
21156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021157 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021158 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021159 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021160 }
21161
21162 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
21163
21164 /*-------------------------------------------------------------------------
21165 Extract response and send it to UMAC
21166 -------------------------------------------------------------------------*/
21167 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021168 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021169
21170 /*Notify UMAC*/
21171 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
21172
Jeff Johnsone7245742012-09-05 17:12:55 -070021173 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021174}/*WDI_ProcessSetUapsdAcParamsRsp*/
21175
21176/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021177 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021179
21180 @param pWDICtx: pointer to the WLAN DAL context
21181 pEventData: pointer to the event information structure
21182
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 @see
21184 @return Result of the function call
21185*/
21186WDI_Status
21187WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021188(
Jeff Johnson295189b2012-06-20 16:38:30 -070021189 WDI_ControlBlockType* pWDICtx,
21190 WDI_EventInfoType* pEventData
21191)
21192{
21193 WDI_Status wdiStatus;
21194 eHalStatus halStatus;
21195 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
21196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21197
21198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021200 -------------------------------------------------------------------------*/
21201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21202 ( NULL == pEventData->pEventData))
21203 {
21204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021208 }
21209
21210 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
21211
21212 /*-------------------------------------------------------------------------
21213 Extract response and send it to UMAC
21214 -------------------------------------------------------------------------*/
21215 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021216 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021217
21218 /*Notify UMAC*/
21219 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
21220
Jeff Johnsone7245742012-09-05 17:12:55 -070021221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021222}/*WDI_ProcessUpdateUapsdParamsRsp*/
21223
21224/**
21225 @brief Process Configure RXP filter Rsp function (called when a
21226 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021227
21228 @param pWDICtx: pointer to the WLAN DAL context
21229 pEventData: pointer to the event information structure
21230
Jeff Johnson295189b2012-06-20 16:38:30 -070021231 @see
21232 @return Result of the function call
21233*/
21234WDI_Status
21235WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021236(
Jeff Johnson295189b2012-06-20 16:38:30 -070021237 WDI_ControlBlockType* pWDICtx,
21238 WDI_EventInfoType* pEventData
21239)
21240{
21241 WDI_Status wdiStatus;
21242 eHalStatus halStatus;
21243 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
21244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21245
21246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021248 -------------------------------------------------------------------------*/
21249 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21250 ( NULL == pEventData->pEventData))
21251 {
21252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021256 }
21257
21258 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
21259
21260 /*-------------------------------------------------------------------------
21261 Extract response and send it to UMAC
21262 -------------------------------------------------------------------------*/
21263 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021264 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021265
21266 /*Notify UMAC*/
21267 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
21268
Jeff Johnsone7245742012-09-05 17:12:55 -070021269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021270}/*WDI_ProcessConfigureRxpFilterRsp*/
21271
21272/**
21273 @brief Process Set beacon filter Rsp function (called when a
21274 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021275
21276 @param pWDICtx: pointer to the WLAN DAL context
21277 pEventData: pointer to the event information structure
21278
Jeff Johnson295189b2012-06-20 16:38:30 -070021279 @see
21280 @return Result of the function call
21281*/
21282WDI_Status
21283WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021284(
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 WDI_ControlBlockType* pWDICtx,
21286 WDI_EventInfoType* pEventData
21287)
21288{
21289 WDI_Status wdiStatus;
21290 eHalStatus halStatus;
21291 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
21292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21293
21294 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021295 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021296 -------------------------------------------------------------------------*/
21297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21298 ( NULL == pEventData->pEventData))
21299 {
21300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021301 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021302 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021303 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 }
21305
21306 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
21307
21308 /*-------------------------------------------------------------------------
21309 Extract response and send it to UMAC
21310 -------------------------------------------------------------------------*/
21311 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021312 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021313
21314 /*Notify UMAC*/
21315 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
21316
Jeff Johnsone7245742012-09-05 17:12:55 -070021317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021318}/*WDI_ProcessSetBeaconFilterRsp*/
21319
21320/**
21321 @brief Process remove beacon filter Rsp function (called when a
21322 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021323
21324 @param pWDICtx: pointer to the WLAN DAL context
21325 pEventData: pointer to the event information structure
21326
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 @see
21328 @return Result of the function call
21329*/
21330WDI_Status
21331WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021332(
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 WDI_ControlBlockType* pWDICtx,
21334 WDI_EventInfoType* pEventData
21335)
21336{
21337 WDI_Status wdiStatus;
21338 eHalStatus halStatus;
21339 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
21340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21341
21342 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021343 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 -------------------------------------------------------------------------*/
21345 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21346 ( NULL == pEventData->pEventData))
21347 {
21348 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021349 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021350 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021351 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021352 }
21353
21354 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
21355
21356 /*-------------------------------------------------------------------------
21357 Extract response and send it to UMAC
21358 -------------------------------------------------------------------------*/
21359 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021360 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021361
21362 /*Notify UMAC*/
21363 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
21364
Jeff Johnsone7245742012-09-05 17:12:55 -070021365 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021366}/*WDI_ProcessRemBeaconFilterRsp*/
21367
21368/**
21369 @brief Process set RSSI thresholds Rsp function (called when a
21370 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021371
21372 @param pWDICtx: pointer to the WLAN DAL context
21373 pEventData: pointer to the event information structure
21374
Jeff Johnson295189b2012-06-20 16:38:30 -070021375 @see
21376 @return Result of the function call
21377*/
21378WDI_Status
21379WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021380(
Jeff Johnson295189b2012-06-20 16:38:30 -070021381 WDI_ControlBlockType* pWDICtx,
21382 WDI_EventInfoType* pEventData
21383)
21384{
21385 WDI_Status wdiStatus;
21386 eHalStatus halStatus;
21387 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
21388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21389
21390 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021391 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021392 -------------------------------------------------------------------------*/
21393 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21394 ( NULL == pEventData->pEventData))
21395 {
21396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021398 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021399 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021400 }
21401
21402 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
21403
21404 /*-------------------------------------------------------------------------
21405 Extract response and send it to UMAC
21406 -------------------------------------------------------------------------*/
21407 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021408 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021409
21410 /*Notify UMAC*/
21411 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
21412
Jeff Johnsone7245742012-09-05 17:12:55 -070021413 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021414}/*WDI_ProcessSetRSSIThresoldsRsp*/
21415
21416/**
21417 @brief Process host offload Rsp function (called when a
21418 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021419
21420 @param pWDICtx: pointer to the WLAN DAL context
21421 pEventData: pointer to the event information structure
21422
Jeff Johnson295189b2012-06-20 16:38:30 -070021423 @see
21424 @return Result of the function call
21425*/
21426WDI_Status
21427WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021428(
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 WDI_ControlBlockType* pWDICtx,
21430 WDI_EventInfoType* pEventData
21431)
21432{
21433 WDI_Status wdiStatus;
21434 eHalStatus halStatus;
21435 WDI_HostOffloadCb wdiHostOffloadCb;
21436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21437
21438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021439 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021440 -------------------------------------------------------------------------*/
21441 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21442 ( NULL == pEventData->pEventData))
21443 {
21444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021445 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021446 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021447 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 }
21449
21450 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
21451
21452 /*-------------------------------------------------------------------------
21453 Extract response and send it to UMAC
21454 -------------------------------------------------------------------------*/
21455 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021456 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021457
21458 /*Notify UMAC*/
21459 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
21460
Jeff Johnsone7245742012-09-05 17:12:55 -070021461 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021462}/*WDI_ProcessHostOffloadRsp*/
21463
21464/**
21465 @brief Process keep alive Rsp function (called when a
21466 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021467
21468 @param pWDICtx: pointer to the WLAN DAL context
21469 pEventData: pointer to the event information structure
21470
Jeff Johnson295189b2012-06-20 16:38:30 -070021471 @see
21472 @return Result of the function call
21473*/
21474WDI_Status
21475WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021476(
Jeff Johnson295189b2012-06-20 16:38:30 -070021477 WDI_ControlBlockType* pWDICtx,
21478 WDI_EventInfoType* pEventData
21479)
21480{
21481 WDI_Status wdiStatus;
21482 eHalStatus halStatus;
21483 WDI_KeepAliveCb wdiKeepAliveCb;
21484 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053021485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070021486 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
21487
21488
21489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021491 -------------------------------------------------------------------------*/
21492 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21493 ( NULL == pEventData->pEventData))
21494 {
21495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021496 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021497 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021498 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021499 }
21500
Jeff Johnsone7245742012-09-05 17:12:55 -070021501 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
21502
Jeff Johnson295189b2012-06-20 16:38:30 -070021503 /*-------------------------------------------------------------------------
21504 Extract response and send it to UMAC
21505 -------------------------------------------------------------------------*/
21506 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021507 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021508
21509 /*Notify UMAC*/
21510 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
21511
Jeff Johnsone7245742012-09-05 17:12:55 -070021512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021513}/*WDI_ProcessKeepAliveRsp*/
21514
21515/**
21516 @brief Process wowl add ptrn Rsp function (called when a
21517 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021518
21519 @param pWDICtx: pointer to the WLAN DAL context
21520 pEventData: pointer to the event information structure
21521
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 @see
21523 @return Result of the function call
21524*/
21525WDI_Status
21526WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021527(
Jeff Johnson295189b2012-06-20 16:38:30 -070021528 WDI_ControlBlockType* pWDICtx,
21529 WDI_EventInfoType* pEventData
21530)
21531{
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 eHalStatus halStatus;
21533 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021534 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
21535 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
21536
Jeff Johnson295189b2012-06-20 16:38:30 -070021537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21538
21539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021541 -------------------------------------------------------------------------*/
21542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21543 ( NULL == pEventData->pEventData))
21544 {
21545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 }
21550
21551 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
21552
21553 /*-------------------------------------------------------------------------
21554 Extract response and send it to UMAC
21555 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021556 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21557 {
21558 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
21559 pEventData->pEventData,
21560 sizeof(halAddWowlBcastPtrRsp));
21561
21562 wdiWowlAddBcPtrRsp.wdiStatus =
21563 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
21564 }
21565 else
21566 {
21567 halStatus = *((eHalStatus*)pEventData->pEventData);
21568 wdiWowlAddBcPtrRsp.wdiStatus =
21569 WDI_HAL_2_WDI_STATUS(halStatus);
21570 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021571
21572 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021573 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021574
Jeff Johnsone7245742012-09-05 17:12:55 -070021575 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021576}/*WDI_ProcessWowlAddBcPtrnRsp*/
21577
21578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021580 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021581
21582 @param pWDICtx: pointer to the WLAN DAL context
21583 pEventData: pointer to the event information structure
21584
Jeff Johnson295189b2012-06-20 16:38:30 -070021585 @see
21586 @return Result of the function call
21587*/
21588WDI_Status
21589WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021590(
Jeff Johnson295189b2012-06-20 16:38:30 -070021591 WDI_ControlBlockType* pWDICtx,
21592 WDI_EventInfoType* pEventData
21593)
21594{
Jeff Johnson295189b2012-06-20 16:38:30 -070021595 eHalStatus halStatus;
21596 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021597 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
21598 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070021599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21600
21601 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021602 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021603 -------------------------------------------------------------------------*/
21604 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21605 ( NULL == pEventData->pEventData))
21606 {
21607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021608 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021609 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021610 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 }
21612
21613 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
21614
21615 /*-------------------------------------------------------------------------
21616 Extract response and send it to UMAC
21617 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021618 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21619 {
21620 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
21621 pEventData->pEventData,
21622 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070021623
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021624 wdiWowlDelBcstPtrRsp.wdiStatus =
21625 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
21626 }
21627 else
21628 {
21629 halStatus = *((eHalStatus*)pEventData->pEventData);
21630 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
21631 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021632 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021633 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021634
Jeff Johnsone7245742012-09-05 17:12:55 -070021635 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021636}/*WDI_ProcessWowlDelBcPtrnRsp*/
21637
21638/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021639 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021640 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021641
21642 @param pWDICtx: pointer to the WLAN DAL context
21643 pEventData: pointer to the event information structure
21644
Jeff Johnson295189b2012-06-20 16:38:30 -070021645 @see
21646 @return Result of the function call
21647*/
21648WDI_Status
21649WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021650(
Jeff Johnson295189b2012-06-20 16:38:30 -070021651 WDI_ControlBlockType* pWDICtx,
21652 WDI_EventInfoType* pEventData
21653)
21654{
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 eHalStatus halStatus;
21656 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021657 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
21658 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21660
21661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 -------------------------------------------------------------------------*/
21664 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21665 ( NULL == pEventData->pEventData))
21666 {
21667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 }
21672
21673 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
21674
21675 /*-------------------------------------------------------------------------
21676 Extract response and send it to UMAC
21677 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021678 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21679 {
21680 wpalMemoryCopy( &halEnterWowlRspParams,
21681 (wpt_uint8*)pEventData->pEventData,
21682 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021683
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021684 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
21685 wdiwowlEnterRsp.status =
21686 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
21687 }
21688 else
21689 {
21690 halStatus = *((eHalStatus*)pEventData->pEventData);
21691 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21692 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021694 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021695
Jeff Johnsone7245742012-09-05 17:12:55 -070021696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021697}/*WDI_ProcessWowlEnterRsp*/
21698
21699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021700 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021701 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021702
21703 @param pWDICtx: pointer to the WLAN DAL context
21704 pEventData: pointer to the event information structure
21705
Jeff Johnson295189b2012-06-20 16:38:30 -070021706 @see
21707 @return Result of the function call
21708*/
21709WDI_Status
21710WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021711(
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 WDI_ControlBlockType* pWDICtx,
21713 WDI_EventInfoType* pEventData
21714)
21715{
Jeff Johnson295189b2012-06-20 16:38:30 -070021716 eHalStatus halStatus;
21717 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021718 tHalExitWowlRspParams halExitWowlRspParams;
21719 WDI_WowlExitRspParamsType wdiWowlExitRsp;
21720
Jeff Johnson295189b2012-06-20 16:38:30 -070021721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21722
21723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021725 -------------------------------------------------------------------------*/
21726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21727 ( NULL == pEventData->pEventData))
21728 {
21729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021733 }
21734
21735 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21736
21737 /*-------------------------------------------------------------------------
21738 Extract response and send it to UMAC
21739 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021740 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21741 {
21742 wpalMemoryCopy( &halExitWowlRspParams,
21743 pEventData->pEventData,
21744 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021745
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021746 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21747 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21748
21749 }
21750 else
21751 {
21752 halStatus = *((eHalStatus*)pEventData->pEventData);
21753 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21754 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021755 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021756 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021757
Jeff Johnsone7245742012-09-05 17:12:55 -070021758 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021759}/*WDI_ProcessWowlExitRsp*/
21760
21761/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021762 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021763 (called when a response is being received over the bus
21764 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021765
21766 @param pWDICtx: pointer to the WLAN DAL context
21767 pEventData: pointer to the event information structure
21768
Jeff Johnson295189b2012-06-20 16:38:30 -070021769 @see
21770 @return Result of the function call
21771*/
21772WDI_Status
21773WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021774(
Jeff Johnson295189b2012-06-20 16:38:30 -070021775 WDI_ControlBlockType* pWDICtx,
21776 WDI_EventInfoType* pEventData
21777)
21778{
21779 WDI_Status wdiStatus;
21780 eHalStatus halStatus;
21781 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21783
21784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 -------------------------------------------------------------------------*/
21787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21788 ( NULL == pEventData->pEventData))
21789 {
21790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021794 }
21795
21796 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21797
21798 /*-------------------------------------------------------------------------
21799 Extract response and send it to UMAC
21800 -------------------------------------------------------------------------*/
21801 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021802 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021803
21804 /*Notify UMAC*/
21805 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21806
Jeff Johnsone7245742012-09-05 17:12:55 -070021807 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021808}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21809
21810
21811/**
21812 @brief Process Nv download(called when a response
21813 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021814
21815 @param pWDICtx: pointer to the WLAN DAL context
21816 pEventData: pointer to the event information structure
21817
Jeff Johnson295189b2012-06-20 16:38:30 -070021818 @see
21819 @return Result of the function call
21820*/
21821WDI_Status
21822WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021823(
Jeff Johnson295189b2012-06-20 16:38:30 -070021824 WDI_ControlBlockType* pWDICtx,
21825 WDI_EventInfoType* pEventData
21826)
21827{
21828
21829 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21830 tHalNvImgDownloadRspParams halNvDownloadRsp;
21831 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21832
21833 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021834 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021835 -------------------------------------------------------------------------*/
21836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21837 ( NULL == pEventData->pEventData))
21838 {
21839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021840 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021841 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021842 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021843 }
21844
21845 /*-------------------------------------------------------------------------
21846 Extract response and send it to UMAC
21847 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021848 wpalMemoryCopy( &halNvDownloadRsp,
21849 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021850 sizeof(halNvDownloadRsp));
21851
21852 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21853
21854 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021855 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21856 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021857 {
21858 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021859 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021860 }
21861 else
21862 {
21863 /*Reset the Nv related global information in WDI context information */
21864 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21865 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21866 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21867 /*call WDA callback function for last fragment */
21868 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21869 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21870 }
21871
Jeff Johnsone7245742012-09-05 17:12:55 -070021872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021873}
21874#ifdef WLAN_FEATURE_VOWIFI_11R
21875/**
21876 @brief Process Add TSpec Rsp function (called when a response
21877 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021878
21879 @param pWDICtx: pointer to the WLAN DAL context
21880 pEventData: pointer to the event information structure
21881
Jeff Johnson295189b2012-06-20 16:38:30 -070021882 @see
21883 @return Result of the function call
21884*/
21885WDI_Status
21886WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021887(
Jeff Johnson295189b2012-06-20 16:38:30 -070021888 WDI_ControlBlockType* pWDICtx,
21889 WDI_EventInfoType* pEventData
21890)
21891{
21892 WDI_Status wdiStatus;
21893 tAggrAddTsRspParams aggrAddTsRsp;
21894 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21896
21897 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021898 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021899 -------------------------------------------------------------------------*/
21900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21901 ( NULL == pEventData->pEventData))
21902 {
21903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021904 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021905 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021906 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021907 }
21908
21909 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21910
21911 /*-------------------------------------------------------------------------
21912 Extract response and send it to UMAC
21913 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021914 wpalMemoryCopy( &aggrAddTsRsp,
21915 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021916 sizeof(aggrAddTsRsp));
21917
21918 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021919 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021920
21921 /*Notify UMAC*/
21922 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21923
Jeff Johnsone7245742012-09-05 17:12:55 -070021924 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021925}/*WDI_ProcessAddTSpecRsp*/
21926#endif /* WLAN_FEATURE_VOWIFI_11R */
21927
21928/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021929 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021930 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021931
21932 @param pWDICtx: pointer to the WLAN DAL context
21933 pEventData: pointer to the event information structure
21934
Jeff Johnson295189b2012-06-20 16:38:30 -070021935 @see
21936 @return Result of the function call
21937*/
21938WDI_Status
21939WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021940(
Jeff Johnson295189b2012-06-20 16:38:30 -070021941 WDI_ControlBlockType* pWDICtx,
21942 WDI_EventInfoType* pEventData
21943)
21944{
21945 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21946 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21947 tHalHostResumeRspParams hostResumeRspMsg;
21948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21949
21950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021952 -------------------------------------------------------------------------*/
21953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21954 ( NULL == pEventData->pEventData))
21955 {
21956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021957 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021958 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021959 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021960 }
21961
21962 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21963
21964 /*-------------------------------------------------------------------------
21965 Extract response and send it to UMAC
21966 -------------------------------------------------------------------------*/
21967
Jeff Johnsone7245742012-09-05 17:12:55 -070021968 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021969 (wpt_uint8*)pEventData->pEventData,
21970 sizeof(hostResumeRspMsg));
21971
Jeff Johnsone7245742012-09-05 17:12:55 -070021972 wdiResumeRspParams.wdiStatus =
21973 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021974
21975 /*Notify UMAC*/
21976 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21977
21978 return WDI_STATUS_SUCCESS;
21979}
21980
21981/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021982 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021983 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021984
21985 @param pWDICtx: pointer to the WLAN DAL context
21986 pEventData: pointer to the event information structure
21987
Jeff Johnson295189b2012-06-20 16:38:30 -070021988 @see
21989 @return Result of the function call
21990*/
21991WDI_Status
21992WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021993(
Jeff Johnson295189b2012-06-20 16:38:30 -070021994 WDI_ControlBlockType* pWDICtx,
21995 WDI_EventInfoType* pEventData
21996)
21997{
21998 WDI_Status wdiStatus;
21999 eHalStatus halStatus;
22000 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
22001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22002
22003 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022004 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022005 -------------------------------------------------------------------------*/
22006 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22007 ( NULL == pEventData->pEventData))
22008 {
22009 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022010 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022012 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022013 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022014
22015 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022016
22017 /*-------------------------------------------------------------------------
22018 Extract response and send it to UMAC
22019 -------------------------------------------------------------------------*/
22020 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070022021 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022022
22023 /*Notify UMAC*/
22024 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
22025
Jeff Johnsone7245742012-09-05 17:12:55 -070022026 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022027}/*WDI_ProcessSetTxPerTrackingRsp*/
22028
22029/*==========================================================================
22030 Indications from HAL
22031 ==========================================================================*/
22032/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022033 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070022034 indication of this kind is being received over the bus
22035 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022036
22037 @param pWDICtx: pointer to the WLAN DAL context
22038 pEventData: pointer to the event information structure
22039
Jeff Johnson295189b2012-06-20 16:38:30 -070022040 @see
22041 @return Result of the function call
22042*/
22043WDI_Status
22044WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022045(
Jeff Johnson295189b2012-06-20 16:38:30 -070022046 WDI_ControlBlockType* pWDICtx,
22047 WDI_EventInfoType* pEventData
22048)
22049{
22050 WDI_LowLevelIndType wdiInd;
22051 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
22052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22053
22054 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022055 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022056 -------------------------------------------------------------------------*/
22057 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22058 ( NULL == pEventData->pEventData))
22059 {
22060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022061 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022062 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022063 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022064 }
22065
22066 /*-------------------------------------------------------------------------
22067 Extract indication and send it to UMAC
22068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022069 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
22070 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022071 sizeof(tHalRSSINotification));
22072
22073 /*Fill in the indication parameters*/
22074 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
22075 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
22076 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
22077 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
22078 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
22079 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
22080 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
22081 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
22082 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
22083 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
22084 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
22085 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
22086 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080022087 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
22088 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070022089
ltimariub77f24b2013-01-24 18:54:33 -080022090 if ( pWDICtx->wdiLowLevelIndCB )
22091 {
22092 /*Notify UMAC of indication*/
22093 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22094 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022095
22096 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022097}/*WDI_ProcessLowRSSIInd*/
22098
22099
22100/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022101 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022102 an indication of this kind is being received over the
22103 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022104
22105 @param pWDICtx: pointer to the WLAN DAL context
22106 pEventData: pointer to the event information structure
22107
Jeff Johnson295189b2012-06-20 16:38:30 -070022108 @see
22109 @return Result of the function call
22110*/
22111WDI_Status
22112WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022113(
Jeff Johnson295189b2012-06-20 16:38:30 -070022114 WDI_ControlBlockType* pWDICtx,
22115 WDI_EventInfoType* pEventData
22116)
22117{
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080022119 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22121
22122 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022123 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 -------------------------------------------------------------------------*/
22125 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22126 ( NULL == pEventData->pEventData))
22127 {
22128 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022129 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022130 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080022133 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022134 /*-------------------------------------------------------------------------
22135 Extract indication and send it to UMAC
22136 -------------------------------------------------------------------------*/
22137 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022138
22139 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022140 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080022141 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
22142 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080022143 if ( pWDICtx->wdiLowLevelIndCB )
22144 {
22145 /*Notify UMAC*/
22146 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22147 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022148
22149 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022150}/*WDI_ProcessMissedBeaconInd*/
22151
22152
22153/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022154 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022155 an indication of this kind is being received over the
22156 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022157
22158 @param pWDICtx: pointer to the WLAN DAL context
22159 pEventData: pointer to the event information structure
22160
Jeff Johnson295189b2012-06-20 16:38:30 -070022161 @see
22162 @return Result of the function call
22163*/
22164WDI_Status
22165WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022166(
Jeff Johnson295189b2012-06-20 16:38:30 -070022167 WDI_ControlBlockType* pWDICtx,
22168 WDI_EventInfoType* pEventData
22169)
22170{
22171 WDI_Status wdiStatus;
22172 eHalStatus halStatus;
22173 WDI_LowLevelIndType wdiInd;
22174 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22175
22176 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022177 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022178 -------------------------------------------------------------------------*/
22179 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22180 ( NULL == pEventData->pEventData))
22181 {
22182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022183 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022184 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 }
22187
22188 /*-------------------------------------------------------------------------
22189 Extract indication and send it to UMAC
22190 -------------------------------------------------------------------------*/
22191 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
22192 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070022193 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022194
22195 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 /* ! TO DO - fill in from HAL struct:
22198 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
22199
ltimariub77f24b2013-01-24 18:54:33 -080022200 if ( pWDICtx->wdiLowLevelIndCB )
22201 {
22202 /*Notify UMAC*/
22203 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22204 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022205
22206 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022207}/*WDI_ProcessUnkAddrFrameInd*/
22208
22209
22210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070022212 indication of this kind is being received over the bus
22213 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022214
22215 @param pWDICtx: pointer to the WLAN DAL context
22216 pEventData: pointer to the event information structure
22217
Jeff Johnson295189b2012-06-20 16:38:30 -070022218 @see
22219 @return Result of the function call
22220*/
22221WDI_Status
22222WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022223(
Jeff Johnson295189b2012-06-20 16:38:30 -070022224 WDI_ControlBlockType* pWDICtx,
22225 WDI_EventInfoType* pEventData
22226)
22227{
22228 WDI_LowLevelIndType wdiInd;
22229 tpSirMicFailureInd pHalMicFailureInd;
22230
22231 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22232
22233 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022235 -------------------------------------------------------------------------*/
22236 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22237 ( NULL == pEventData->pEventData))
22238 {
22239 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022240 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022243 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022244
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
22246 /*-------------------------------------------------------------------------
22247 Extract indication and send it to UMAC
22248 -------------------------------------------------------------------------*/
22249
22250 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022251 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022252 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
22253 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
22254 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
22255 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
22256 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
22257 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
22258 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
22259 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070022260 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070022262 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022263 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022264 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070022265 pHalMicFailureInd->info.keyId;
22266 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
22267 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
22268 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
22269 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080022270
22271 if ( pWDICtx->wdiLowLevelIndCB )
22272 {
22273 /*Notify UMAC*/
22274 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22275 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022276
22277 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022278}/*WDI_ProcessMicFailureInd*/
22279
22280
22281/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 an indication of this kind is being received over the
22284 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022285
22286 @param pWDICtx: pointer to the WLAN DAL context
22287 pEventData: pointer to the event information structure
22288
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 @see
22290 @return Result of the function call
22291*/
22292WDI_Status
22293WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022294(
Jeff Johnson295189b2012-06-20 16:38:30 -070022295 WDI_ControlBlockType* pWDICtx,
22296 WDI_EventInfoType* pEventData
22297)
22298{
22299 WDI_Status wdiStatus;
22300 eHalStatus halStatus;
22301 WDI_LowLevelIndType wdiInd;
22302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22303
22304 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022305 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022306 -------------------------------------------------------------------------*/
22307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22308 ( NULL == pEventData->pEventData))
22309 {
22310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022312 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022313 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 }
22315
22316 /*-------------------------------------------------------------------------
22317 Extract indication and send it to UMAC
22318 -------------------------------------------------------------------------*/
22319
22320 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
22321 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070022322 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070022323
22324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22325 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070022326
Jeff Johnson295189b2012-06-20 16:38:30 -070022327 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022328 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22329 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022330
ltimariub77f24b2013-01-24 18:54:33 -080022331 if ( pWDICtx->wdiLowLevelIndCB )
22332 {
22333 /*Notify UMAC*/
22334 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22335 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022336
22337 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022338}/*WDI_ProcessFatalErrorInd*/
22339
22340/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022341 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022342 an indication of this kind is being received over the
22343 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022344
22345 @param pWDICtx: pointer to the WLAN DAL context
22346 pEventData: pointer to the event information structure
22347
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 @see
22349 @return Result of the function call
22350*/
22351WDI_Status
22352WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022353(
Jeff Johnson295189b2012-06-20 16:38:30 -070022354 WDI_ControlBlockType* pWDICtx,
22355 WDI_EventInfoType* pEventData
22356)
22357{
22358 tDeleteStaContextParams halDelSTACtx;
22359 WDI_LowLevelIndType wdiInd;
22360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22361
22362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022364 -------------------------------------------------------------------------*/
22365 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22366 ( NULL == pEventData->pEventData))
22367 {
22368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022369 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 }
22373
22374 /*-------------------------------------------------------------------------
22375 Extract indication and send it to UMAC
22376 -------------------------------------------------------------------------*/
22377
22378 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022379 wpalMemoryCopy( &halDelSTACtx,
22380 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 sizeof(halDelSTACtx));
22382
22383 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022384 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070022385
22386 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
22387 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
22388 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
22389 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
22390
Jeff Johnsone7245742012-09-05 17:12:55 -070022391 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070022392 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070022393 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070022395 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
22396 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022397
ltimariub77f24b2013-01-24 18:54:33 -080022398 if ( pWDICtx->wdiLowLevelIndCB )
22399 {
22400 /*Notify UMAC*/
22401 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22402 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022403
22404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022405}/*WDI_ProcessDelSTAInd*/
22406
22407/**
22408*@brief Process Coex Indication function (called when
22409 an indication of this kind is being received over the
22410 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022411
22412 @param pWDICtx: pointer to the WLAN DAL context
22413 pEventData: pointer to the event information structure
22414
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 @see
22416 @return Result of the function call
22417*/
22418WDI_Status
22419WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022420(
Jeff Johnson295189b2012-06-20 16:38:30 -070022421 WDI_ControlBlockType* pWDICtx,
22422 WDI_EventInfoType* pEventData
22423)
22424{
22425 WDI_LowLevelIndType wdiInd;
22426 tCoexIndMsg halCoexIndMsg;
22427 wpt_uint32 index;
22428 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22429
22430 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022432 -------------------------------------------------------------------------*/
22433 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22434 ( NULL == pEventData->pEventData ))
22435 {
22436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022437 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022438 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 }
22441
22442 /*-------------------------------------------------------------------------
22443 Extract indication and send it to UMAC
22444 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
22446 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 sizeof(halCoexIndMsg.coexIndParams) );
22448
22449 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022450 wdiInd.wdiIndicationType = WDI_COEX_IND;
22451 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
22453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070022455 }
22456
22457 // DEBUG
22458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22459 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070022460 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
22461 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
22462 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
22463 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
22464 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070022465
ltimariub77f24b2013-01-24 18:54:33 -080022466 if ( pWDICtx->wdiLowLevelIndCB )
22467 {
22468 /*Notify UMAC*/
22469 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22470 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022471
22472 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022473}/*WDI_ProcessCoexInd*/
22474
22475/**
22476*@brief Process Tx Complete Indication function (called when
22477 an indication of this kind is being received over the
22478 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022479
22480 @param pWDICtx: pointer to the WLAN DAL context
22481 pEventData: pointer to the event information structure
22482
Jeff Johnson295189b2012-06-20 16:38:30 -070022483 @see
22484 @return Result of the function call
22485*/
22486WDI_Status
22487WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022488(
Jeff Johnson295189b2012-06-20 16:38:30 -070022489 WDI_ControlBlockType* pWDICtx,
22490 WDI_EventInfoType* pEventData
22491)
22492{
22493 WDI_LowLevelIndType wdiInd;
22494 tTxComplIndMsg halTxComplIndMsg;
22495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22496
22497 /*-------------------------------------------------------------------------
22498 Sanity check
22499 -------------------------------------------------------------------------*/
22500 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22501 ( NULL == pEventData->pEventData ))
22502 {
22503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022504 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022505 WDI_ASSERT( 0 );
22506 return WDI_STATUS_E_FAILURE;
22507 }
22508
22509 /*-------------------------------------------------------------------------
22510 Extract indication and send it to UMAC
22511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022512 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
22513 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070022514 sizeof(halTxComplIndMsg.txComplParams) );
22515
22516 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022517 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053022518
22519 wpalMemoryCopy( &wdiInd.wdiIndicationData,
22520 &halTxComplIndMsg.txComplParams,
22521 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070022522
ltimariub77f24b2013-01-24 18:54:33 -080022523 if ( pWDICtx->wdiLowLevelIndCB )
22524 {
22525 /*Notify UMAC*/
22526 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22527 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022528
22529 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022530}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022531#ifdef FEATURE_WLAN_TDLS
22532/**
22533*@brief Process TDLS Indication function (called when
22534 an indication of this kind is being received over the
22535 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070022536
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022537 @param pWDICtx: pointer to the WLAN DAL context
22538 pEventData: pointer to the event information structure
22539
22540 @see
22541 @return Result of the function call
22542*/
22543WDI_Status
22544WDI_ProcessTdlsInd
22545(
22546 WDI_ControlBlockType* pWDICtx,
22547 WDI_EventInfoType* pEventData
22548)
22549{
22550 WDI_LowLevelIndType wdiInd;
22551 tTdlsIndMsg halTdlsIndMsg;
22552 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22553
22554 /*-------------------------------------------------------------------------
22555 Sanity check
22556 -------------------------------------------------------------------------*/
22557 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22558 ( NULL == pEventData->pEventData ))
22559 {
22560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22561 "%s: Invalid parameters", __func__);
22562 WDI_ASSERT( 0 );
22563 return WDI_STATUS_E_FAILURE;
22564 }
22565
22566 /*-------------------------------------------------------------------------
22567 Extract indication and send it to UMAC
22568 -------------------------------------------------------------------------*/
22569 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
22570 pEventData->pEventData,
22571 sizeof(halTdlsIndMsg.tdlsIndParams) );
22572
22573 /*Fill in the indication parameters*/
22574 wdiInd.wdiIndicationType = WDI_TDLS_IND;
22575
22576 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
22577 = halTdlsIndMsg.tdlsIndParams.status;
22578
22579 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
22580 = halTdlsIndMsg.tdlsIndParams.staIdx;
22581
22582 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
22583 = halTdlsIndMsg.tdlsIndParams.reasonCode;
22584
Atul Mittalbb2aad02014-09-22 19:09:36 +053022585 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
22586 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053022587 /*Notify UMAC*/
22588 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22589
22590 return WDI_STATUS_SUCCESS;
22591}/*WDI_ProcessTdlsInd*/
22592#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +053022593
22594#ifdef WLAN_FEATURE_RMC
22595/**
22596*@brief Process Tx Fail Indication
22597
22598 @param pWDICtx: pointer to the WLAN DAL context
22599 pEventData: pointer to the event information structure
22600
22601 @see
22602 @return Result of the function call
22603*/
22604WDI_Status
22605WDI_ProcessTXFailInd
22606(
22607 WDI_ControlBlockType* pWDICtx,
22608 WDI_EventInfoType* pEventData
22609)
22610{
22611 WDI_LowLevelIndType wdiInd;
22612 tHalTXFailIndMsg halTXFailIndMsg;
22613 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22614
22615 /*-------------------------------------------------------------------------
22616 Sanity check
22617 -------------------------------------------------------------------------*/
22618 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22619 ( NULL == pEventData->pEventData ))
22620 {
22621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22622 "%s: Invalid parameters", __func__);
22623 WDI_ASSERT( 0 );
22624 return WDI_STATUS_E_FAILURE;
22625 }
22626 /*-------------------------------------------------------------------------
22627 Extract indication and send it to UMAC
22628 -------------------------------------------------------------------------*/
22629 wpalMemoryCopy( &halTXFailIndMsg.txFailIndParams,
22630 pEventData->pEventData,
22631 sizeof(halTXFailIndMsg.txFailIndParams) );
22632
22633 /*Fill in the indication parameters*/
22634 wdiInd.wdiIndicationType = WDI_TX_FAIL_IND;
22635
22636 wdiInd.wdiIndicationData.wdiTXFailInd.seqNo
22637 = halTXFailIndMsg.txFailIndParams.seqNo;
22638
22639 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiTXFailInd.macAddr,
22640 halTXFailIndMsg.txFailIndParams.macAddr,
22641 sizeof(wdiInd.wdiIndicationData.wdiTXFailInd.macAddr));
22642
22643 /*Notify UMAC*/
22644 if (pWDICtx->wdiLowLevelIndCB)
22645 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22646
22647 return WDI_STATUS_SUCCESS;
22648}
22649#endif /* WLAN_FEATURE_RMC */
22650
Jeff Johnson295189b2012-06-20 16:38:30 -070022651/**
Viral Modid86bde22012-12-10 13:09:21 -080022652*@brief Process Noa Start Indication function (called when
22653 an indication of this kind is being received over the
22654 bus from HAL)
22655
22656 @param pWDICtx: pointer to the WLAN DAL context
22657 pEventData: pointer to the event information structure
22658
22659 @see
22660 @return Result of the function call
22661*/
22662WDI_Status
22663WDI_ProcessP2pNoaStartInd
22664(
22665 WDI_ControlBlockType* pWDICtx,
22666 WDI_EventInfoType* pEventData
22667)
22668{
22669 WDI_LowLevelIndType wdiInd;
22670 tNoaStartIndMsg halNoaStartIndMsg;
22671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22672
22673 /*-------------------------------------------------------------------------
22674 Sanity check
22675 -------------------------------------------------------------------------*/
22676 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22677 ( NULL == pEventData->pEventData ))
22678 {
22679 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22680 "%s: Invalid parameters", __func__);
22681 WDI_ASSERT( 0 );
22682 return WDI_STATUS_E_FAILURE;
22683 }
22684
22685 /*-------------------------------------------------------------------------
22686 Extract indication and send it to UMAC
22687 -------------------------------------------------------------------------*/
22688 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
22689 pEventData->pEventData,
22690 sizeof(halNoaStartIndMsg.noaStartIndParams) );
22691
22692 /*Fill in the indication parameters*/
22693 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
22694
22695 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
22696 = halNoaStartIndMsg.noaStartIndParams.status;
22697
22698 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
22699 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
22700
22701 /*Notify UMAC*/
22702 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22703
22704 return WDI_STATUS_SUCCESS;
22705}/*WDI_ProcessNoaAttrInd*/
22706
22707/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022708*@brief Process Noa Attr Indication function (called when
22709 an indication of this kind is being received over the
22710 bus from HAL)
22711
22712 @param pWDICtx: pointer to the WLAN DAL context
22713 pEventData: pointer to the event information structure
22714
22715 @see
22716 @return Result of the function call
22717*/
22718WDI_Status
22719WDI_ProcessP2pNoaAttrInd
22720(
22721 WDI_ControlBlockType* pWDICtx,
22722 WDI_EventInfoType* pEventData
22723)
22724{
22725 WDI_LowLevelIndType wdiInd;
22726 tNoaAttrIndMsg halNoaAttrIndMsg;
22727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22728
22729 /*-------------------------------------------------------------------------
22730 Sanity check
22731 -------------------------------------------------------------------------*/
22732 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22733 ( NULL == pEventData->pEventData ))
22734 {
22735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 WDI_ASSERT( 0 );
22738 return WDI_STATUS_E_FAILURE;
22739 }
22740
22741 /*-------------------------------------------------------------------------
22742 Extract indication and send it to UMAC
22743 -------------------------------------------------------------------------*/
22744 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
22745 pEventData->pEventData,
22746 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
22747
22748 /*Fill in the indication parameters*/
22749 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070022750
Jeff Johnson295189b2012-06-20 16:38:30 -070022751 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
22752 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070022753
Jeff Johnson295189b2012-06-20 16:38:30 -070022754 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
22755 = halNoaAttrIndMsg.noaAttrIndParams.index;
22756 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
22757 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
22758 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
22759 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070022760
Jeff Johnson295189b2012-06-20 16:38:30 -070022761 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
22762 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
22763 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
22764 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
22765 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
22766 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
22767 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
22768 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070022769
Jeff Johnson295189b2012-06-20 16:38:30 -070022770 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
22771 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
22772 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
22773 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
22774 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
22775 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22776 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22777 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22778
ltimariub77f24b2013-01-24 18:54:33 -080022779 if ( pWDICtx->wdiLowLevelIndCB )
22780 {
22781 /*Notify UMAC*/
22782 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22783 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022784
22785 return WDI_STATUS_SUCCESS;
22786}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022787
22788/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022789 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022790 an indication of this kind is being received over the
22791 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022792
22793 @param pWDICtx: pointer to the WLAN DAL context
22794 pEventData: pointer to the event information structure
22795
Jeff Johnson295189b2012-06-20 16:38:30 -070022796 @see
22797 @return Result of the function call
22798*/
22799WDI_Status
22800WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022801(
Jeff Johnson295189b2012-06-20 16:38:30 -070022802 WDI_ControlBlockType* pWDICtx,
22803 WDI_EventInfoType* pEventData
22804)
22805{
22806 WDI_LowLevelIndType wdiInd;
22807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022808
Jeff Johnson295189b2012-06-20 16:38:30 -070022809 /*-------------------------------------------------------------------------
22810 Extract indication and send it to UMAC
22811 -------------------------------------------------------------------------*/
22812 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022813 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22814
ltimariub77f24b2013-01-24 18:54:33 -080022815 if ( pWDICtx->wdiLowLevelIndCB )
22816 {
22817 /*Notify UMAC*/
22818 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22819 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022820
Jeff Johnsone7245742012-09-05 17:12:55 -070022821 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022822}/*WDI_ProcessTxPerHitInd*/
22823
Jeff Johnson295189b2012-06-20 16:38:30 -070022824/**
Yue Mab9c86f42013-08-14 15:59:08 -070022825 @brief Process Periodic Tx Pattern Fw Indication function
22826
22827 @param pWDICtx: pointer to the WLAN DAL context
22828 pEventData: pointer to the event information structure
22829
22830 @see
22831 @return Result of the function call
22832*/
22833WDI_Status
22834WDI_ProcessPeriodicTxPtrnFwInd
22835(
22836 WDI_ControlBlockType* pWDICtx,
22837 WDI_EventInfoType* pEventData
22838)
22839{
22840 WDI_LowLevelIndType wdiInd;
22841
22842 /*-------------------------------------------------------------------------
22843 Sanity check
22844 -------------------------------------------------------------------------*/
22845 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22846 (NULL == pEventData->pEventData))
22847 {
22848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22849 "%s: Invalid parameters", __func__);
22850 WDI_ASSERT(0);
22851 return WDI_STATUS_E_FAILURE;
22852 }
22853
22854 /*-------------------------------------------------------------------------
22855 Extract indication and send it to UMAC
22856 -------------------------------------------------------------------------*/
22857 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22858 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22859 sizeof(tHalPeriodicTxPtrnFwInd));
22860
22861 if (pWDICtx->wdiLowLevelIndCB)
22862 {
22863 /*Notify UMAC*/
22864 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22865 }
22866
22867 return WDI_STATUS_SUCCESS;
22868}
22869
22870/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022871 @brief WDI_ProcessFTMCommandReq
22872 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022873
22874 @param pWDICtx: pointer to the WLAN DAL context
22875 pEventData: pointer to the event information structure
22876
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 @see
22878 @return Result of the function call
22879*/
22880WDI_Status
22881WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022882(
Jeff Johnson295189b2012-06-20 16:38:30 -070022883 WDI_ControlBlockType* pWDICtx,
22884 WDI_EventInfoType* pEventData
22885)
22886{
22887 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22888 wpt_uint8 *ftmCommandBuffer = NULL;
22889 wpt_uint16 dataOffset;
22890 wpt_uint16 bufferSize;
22891 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022892 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022893 -------------------------------------------------------------------------*/
22894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22895 ( NULL == pEventData->pEventData))
22896
22897 {
22898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022899 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022901 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022902 }
22903
22904 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22905
22906 /* Get MSG Buffer */
22907 WDI_GetMessageBuffer(pWDICtx,
22908 WDI_FTM_CMD_REQ,
22909 ftmCommandReq->bodyLength,
22910 &ftmCommandBuffer,
22911 &dataOffset,
22912 &bufferSize);
22913
22914 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22915 ftmCommandReq->FTMCommandBody,
22916 ftmCommandReq->bodyLength);
22917
22918 /* Send MSG */
22919 return WDI_SendMsg(pWDICtx,
22920 ftmCommandBuffer,
22921 bufferSize,
22922 pEventData->pCBfnc,
22923 pEventData->pUserData,
22924 WDI_FTM_CMD_RESP);
22925}
22926
22927/**
22928 @brief WDI_ProcessFTMCommandRsp
22929 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022930
22931 @param pWDICtx: pointer to the WLAN DAL context
22932 pEventData: pointer to the event information structure
22933
Jeff Johnson295189b2012-06-20 16:38:30 -070022934 @see
22935 @return Result of the function call
22936*/
22937WDI_Status
22938WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022939(
Jeff Johnson295189b2012-06-20 16:38:30 -070022940 WDI_ControlBlockType* pWDICtx,
22941 WDI_EventInfoType* pEventData
22942)
22943{
22944 WDI_FTMCommandRspCb ftmCMDRspCb;
22945 tProcessPttRspParams *ftmCMDRspData = NULL;
22946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22947
22948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022950 -------------------------------------------------------------------------*/
22951 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22952 ( NULL == pEventData->pEventData))
22953 {
22954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022955 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022956 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022957 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 }
22959
22960 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22961
22962 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22963
Jeff Johnsone7245742012-09-05 17:12:55 -070022964 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22965 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022966 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22967
22968 /*Notify UMAC*/
22969 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22970
Jeff Johnsone7245742012-09-05 17:12:55 -070022971 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022972}
Jeff Johnson295189b2012-06-20 16:38:30 -070022973/**
22974 @brief WDI_ProcessHalDumpCmdReq
22975 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022976
22977 @param pWDICtx: pointer to the WLAN DAL context
22978 pEventData: pointer to the event information structure
22979
Jeff Johnson295189b2012-06-20 16:38:30 -070022980 @see
22981 @return Result of the function call
22982*/
22983WDI_Status
22984WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022985(
Jeff Johnson295189b2012-06-20 16:38:30 -070022986 WDI_ControlBlockType* pWDICtx,
22987 WDI_EventInfoType* pEventData
22988)
22989{
22990 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22991 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22992 wpt_uint16 usDataOffset = 0;
22993 wpt_uint16 usSendSize = 0;
22994 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022996
22997 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022998 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022999 -------------------------------------------------------------------------*/
23000 if (( NULL == pEventData ) ||
23001 ( NULL == pEventData->pEventData) ||
23002 ( NULL == pEventData->pCBfnc ))
23003 {
23004 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023005 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023006 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023007 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023008 }
23009
23010 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
23011 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
23012
23013 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023014 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023015 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070023016 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023017 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070023018 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023019 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070023020 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023021 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070023022 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070023023 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070023024
Jeff Johnson295189b2012-06-20 16:38:30 -070023025 /*-----------------------------------------------------------------------
23026 Get message buffer
23027 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023028 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
23030 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070023031 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070023032 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
23033 {
23034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070023035 "Unable to get send buffer in HAL Dump Command req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
23037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023039 }
23040
Jeff Johnsone7245742012-09-05 17:12:55 -070023041 wpalMemoryCopy( pSendBuffer+usDataOffset,
23042 &halDumpCmdReqMsg.dumpCmdReqParams,
23043 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070023044
23045 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070023046 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023047
23048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023049 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023050 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023051 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
23052 wdiHALDumpCmdRspCb, pEventData->pUserData,
23053 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070023054}
23055
23056/**
23057 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023058 Process hal Dump Command Response from HAL, simply route to HDD
23059
23060 @param pWDICtx: pointer to the WLAN DAL context
23061 pEventData: pointer to the event information structure
23062
Jeff Johnson295189b2012-06-20 16:38:30 -070023063 @see
23064 @return Result of the function call
23065*/
23066WDI_Status
23067WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070023068(
Jeff Johnson295189b2012-06-20 16:38:30 -070023069 WDI_ControlBlockType* pWDICtx,
23070 WDI_EventInfoType* pEventData
23071)
23072{
23073 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023074 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
23076
23077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 -------------------------------------------------------------------------*/
23080 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
23081 ( NULL == pEventData->pEventData))
23082 {
23083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 }
23088
Sravan Kumar Kairamd400d962017-12-13 12:29:48 +053023089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
23090 "%s: WDI process HAL dump cmd rsp", __func__);
23091
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023093
23094 /*Initialize the WDI Response structure */
23095 wdiHALDumpCmdRsp.usBufferLen = 0;
23096 wdiHALDumpCmdRsp.pBuffer = NULL;
23097
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023098 wpalMemoryCopy( &halDumpCmdRspParams,
23099 pEventData->pEventData,
23100 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070023101
23102 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023103 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070023104
23105 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023106 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070023107 {
23108 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080023109 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
23110 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
23111
23112 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
23113 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053023114 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070023115 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023116
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 /*Notify UMAC*/
23118 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
23119
23120 if(wdiHALDumpCmdRsp.pBuffer != NULL)
23121 {
23122 /* Free the allocated buffer */
23123 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
23124 }
23125 return WDI_STATUS_SUCCESS;
23126}
23127
23128/*==========================================================================
23129 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070023130
Jeff Johnson295189b2012-06-20 16:38:30 -070023131 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070023132 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070023133==========================================================================*/
23134/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023135 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070023136 when it wishes to send up a notification like the ones
23137 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070023138
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070023140
23141 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070023142 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070023143 wctsNotifyCBData: the callback data of the user
23144
Jeff Johnson295189b2012-06-20 16:38:30 -070023145 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070023146
23147 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023148*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023149void
Jeff Johnson295189b2012-06-20 16:38:30 -070023150WDI_NotifyMsgCTSCB
23151(
Jeff Johnsone7245742012-09-05 17:12:55 -070023152 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070023153 WCTS_NotifyEventType wctsEvent,
23154 void* wctsNotifyCBData
23155)
23156{
Jeff Johnsone7245742012-09-05 17:12:55 -070023157 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23159
23160 if (NULL == pWDICtx )
23161 {
23162 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023165 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023166 }
23167
23168 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
23169 {
23170 /* callback presumably occurred after close */
23171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023172 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023174 }
23175
23176 if ( WCTS_EVENT_OPEN == wctsEvent )
23177 {
23178 /*Flag must be set atomically as it is checked from incoming request
23179 functions*/
23180 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070023181 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023182
23183 /*Nothing to do - so try to dequeue any pending request that may have
23184 occurred while we were trying to establish this*/
23185 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070023186 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023187 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023188 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070023189 {
23190 /*Flag must be set atomically as it is checked from incoming request
23191 functions*/
23192 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070023193 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023194
23195 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023196 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070023197 wpalMutexRelease(&pWDICtx->wptMutex);
23198
23199 /*Notify that the Control Channel is closed */
23200 wpalEventSet(&pWDICtx->wctsActionEvent);
23201 }
23202
23203}/*WDI_NotifyMsgCTSCB*/
23204
23205
23206/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023207 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070023208 when it wishes to send up a packet received over the
23209 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070023210
Jeff Johnson295189b2012-06-20 16:38:30 -070023211 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070023212
23213 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070023214 pMsg: the packet
23215 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070023216 wctsRxMsgCBData: the callback data of the user
23217
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070023219
23220 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023221*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023222void
23223WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070023224(
Jeff Johnsone7245742012-09-05 17:12:55 -070023225 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070023226 void* pMsg,
23227 wpt_uint32 uLen,
23228 void* wctsRxMsgCBData
23229)
23230{
Jeff Johnsone7245742012-09-05 17:12:55 -070023231 tHalMsgHeader *pHalMsgHeader;
23232 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023233 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
23234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23235
23236 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023238 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023239 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070023240 ( uLen < sizeof(tHalMsgHeader)))
23241 {
23242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023243 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023245 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 }
23247
23248 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
23249 {
23250 /* callback presumably occurred after close */
23251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023252 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023253 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023254 }
23255
Jeff Johnsone7245742012-09-05 17:12:55 -070023256 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070023257 context - so no serialization is necessary here
23258 ! - revisit this assumption */
23259
23260 pHalMsgHeader = (tHalMsgHeader *)pMsg;
23261
23262 if ( uLen != pHalMsgHeader->msgLen )
23263 {
23264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23265 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Anurag Chouhanf0d0ba12018-02-09 15:13:43 +053023267 wpalWlanReload(VOS_WDI_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053023268
Jeff Johnsone7245742012-09-05 17:12:55 -070023269 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023270 }
23271
23272 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
Arunk Khandavalliaf6c3af2017-01-16 11:44:46 +053023273 vos_log_wdi_event(wdiEventData.wdiResponse, VOS_WDI_READ);
Jeff Johnson295189b2012-06-20 16:38:30 -070023274
23275 /*The message itself starts after the header*/
23276 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
23277 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
23278 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
23279 wdiEventData.pUserData = gWDICb.pRspCBUserData;
23280
23281
23282 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
23283 {
23284 /*Stop the timer as the response was received */
23285 /*!UT - check for potential race conditions between stop and response */
23286 wpalTimerStop(&pWDICtx->wptResponseTimer);
23287 }
23288 /* Check if we receive a response message which is not expected */
23289 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
23290 {
23291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23292 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
23293 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070023294 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070023295 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
23296 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080023297
23298 if (gWDICb.bEnableSSR == false)
23299 {
23300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23301 "SSR is not enabled on WDI timeout");
23302 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23303 return;
23304 }
23305 wpalWcnssResetIntr();
23306 /* if this timer fires, it means Riva did not receive the FIQ */
23307 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
23308
Jeff Johnson295189b2012-06-20 16:38:30 -070023309 return;
23310 }
23311
23312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23313 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
23314
23315 /*Post response event to the state machine*/
23316 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
23317
23318}/*WDI_RXMsgCTSCB*/
23319
23320
23321/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023322 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070023323========================================================================*/
23324
23325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070023328
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 @param pWDICtx - pointer to the control block
23330
23331 @return Result of the function call
23332*/
23333WPT_INLINE WDI_Status
23334WDI_CleanCB
23335(
23336 WDI_ControlBlockType* pWDICtx
23337)
23338{
23339 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23340
23341 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023342 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070023343
Jeff Johnsone7245742012-09-05 17:12:55 -070023344 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070023345 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
23346 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
23347
23348 WDI_ResetAssocSessions( pWDICtx );
23349
23350 return WDI_STATUS_SUCCESS;
23351}/*WDI_CleanCB*/
23352
23353
23354/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023355 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023356
Jeff Johnsone7245742012-09-05 17:12:55 -070023357
23358 @param pWDICtx: pointer to the WLAN DAL context
23359 pEventData: pointer to the event information structure
23360
Jeff Johnson295189b2012-06-20 16:38:30 -070023361 @see
23362 @return Result of the function call
23363*/
23364WPT_INLINE WDI_Status
23365WDI_ProcessRequest
23366(
23367 WDI_ControlBlockType* pWDICtx,
23368 WDI_EventInfoType* pEventData
23369)
23370{
23371 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23372
Jeff Johnsone7245742012-09-05 17:12:55 -070023373 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070023374 already checked these pointers*/
23375
23376 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
23377 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023378 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070023380 "Calling request processing function for req %s (%d) %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070023381 WDI_getReqMsgString(pEventData->wdiRequest),
23382 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
23383 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
23384 }
23385 else
23386 {
23387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023388 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023389 pEventData->wdiRequest);
23390 return WDI_STATUS_E_NOT_IMPLEMENT;
23391 }
23392}/*WDI_ProcessRequest*/
23393
23394
23395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023396 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070023397 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070023398 prefixes it with a send message header
23399
23400 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023401 wdiReqType: type of the request being sent
23402 uBufferLen: message buffer len
23403 pMsgBuffer: resulting allocated buffer
23404 pusDataOffset: offset in the buffer where the caller
23405 can start copying its message data
23406 puBufferSize: the resulting buffer size (offset+buff
23407 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070023408
Jeff Johnson295189b2012-06-20 16:38:30 -070023409 @see
23410 @return Result of the function call
23411*/
23412WDI_Status
23413WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070023414(
23415 WDI_ControlBlockType* pWDICtx,
23416 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070023417 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070023418 wpt_uint8** pMsgBuffer,
23419 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070023420 wpt_uint16* pusBufferSize
23421)
23422{
23423 tHalMsgHeader halMsgHeader;
23424 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23425
Jeff Johnsone7245742012-09-05 17:12:55 -070023426 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070023427 again*/
23428
23429 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023431 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023432 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070023433 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
23434 if ( NULL == *pMsgBuffer )
23435 {
23436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23437 "Unable to allocate message buffer for req %s (%d)",
23438 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070023440 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 }
23443
23444 /*-------------------------------------------------------------------------
23445 Fill in the message header
23446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023447 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
23448 /* Fill msgVersion */
23449#ifdef WLAN_FEATURE_11AC
23450 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023451 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070023452 else
23453#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070023454 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023455
Jeff Johnsone7245742012-09-05 17:12:55 -070023456 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
23457 *pusDataOffset = sizeof(halMsgHeader);
Kapil Guptab3a981b2016-06-26 13:36:51 +053023458
Jeff Johnsone7245742012-09-05 17:12:55 -070023459 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
23460
23461 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023462}/*WDI_GetMessageBuffer*/
23463
23464
23465/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023466 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070023467 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070023468 the CB
23469
23470 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023471 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070023472
Jeff Johnson295189b2012-06-20 16:38:30 -070023473 usSendSize size of the buffer to be sent
23474 pRspCb: response callback - save in the WDI
23475 CB
23476 pUserData: user data associated with the
23477 callback
23478 wdiExpectedResponse: the code of the response that is
23479 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070023480
Jeff Johnson295189b2012-06-20 16:38:30 -070023481 @see
23482 @return Result of the function call
23483*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023484WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023485WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070023486(
23487 WDI_ControlBlockType* pWDICtx,
23488 wpt_uint8* pSendBuffer,
23489 wpt_uint32 usSendSize,
23490 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070023491 void* pUserData,
23492 WDI_ResponseEnumType wdiExpectedResponse
23493)
23494{
Jeff Johnsond13512a2012-07-17 11:42:19 -070023495 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023496 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070023497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23498
23499 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023500 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 ------------------------------------------------------------------------*/
23502 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023503 pWDICtx->pfncRspCB = pRspCb;
23504 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023505
23506 /*-----------------------------------------------------------------------
23507 Call the CTS to send this message over - free message afterwards
23508 - notify transport failure
23509 Note: CTS is reponsible for freeing the message buffer.
23510 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023511 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
23512 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
23513 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070023515 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053023516 "Failed to send message with expected response %s (%d)"
23517 " over the bus - catastrophic failure",
23518 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
23519 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070023520
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053023521 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
23522 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023523 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023524 else
23525 {
23526 /* even when message was placed in CTS deferred Q, we will treat it
23527 success but log this info
23528 */
23529 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
23530 {
23531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23532 "WDI_SendMsg: message placed in CTS deferred Q, expected "
23533 "response %s (%d)",
23534 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
23535 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080023536 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023537 }
23538 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023539
Jeff Johnsond13512a2012-07-17 11:42:19 -070023540 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070023541 if ( NULL != pWDICtx->wdiReqStatusCB )
23542 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070023543 /*Inform originator whether request went through or not*/
23544 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
23545 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070023546 pWDICtx->wdiReqStatusCB = NULL;
23547 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070023548 callback(wdiStatus, callbackContext);
23549
23550 /*For WDI requests which have registered a request callback,
23551 inform the WDA caller of the same via setting the return value
23552 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
23553 end up repeating the functonality in the req callback for the
23554 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053023555 if (wdiStatus != WDI_STATUS_SUCCESS)
23556 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070023557 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053023558 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023559 }
23560
Jeff Johnsond13512a2012-07-17 11:42:19 -070023561 if ( wdiStatus == WDI_STATUS_SUCCESS )
23562 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023563 /*Start timer for the expected response */
23564 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023565
23566 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080023567 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080023568 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070023569 }
23570 else
23571 {
Jeff Johnson902c9832012-12-10 14:28:09 -080023572 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070023573 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
23574 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023575
Jeff Johnsond13512a2012-07-17 11:42:19 -070023576 return wdiStatus;
23577
Jeff Johnson295189b2012-06-20 16:38:30 -070023578}/*WDI_SendMsg*/
23579
23580
23581
23582/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023583 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070023584 the bus using the control transport and saves some info
23585 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023586
23587 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023588 pSendBuffer: buffer to be sent
23589 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070023590
Jeff Johnson295189b2012-06-20 16:38:30 -070023591 @see
23592 @return Result of the function call
23593*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023594WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070023595WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070023596(
23597 WDI_ControlBlockType* pWDICtx,
23598 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070023599 wpt_uint32 usSendSize
23600)
23601{
23602 wpt_uint32 uStatus ;
23603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23604
23605 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070023607 Note: CTS is reponsible for freeing the message buffer.
23608 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023609 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070023610 (void*)pSendBuffer, usSendSize );
23611
23612 /*Inform Upper MAC about the outcome of the request*/
23613 if ( NULL != pWDICtx->wdiReqStatusCB )
23614 {
23615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23616 "Send indication status : %d", uStatus);
23617
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023618 /* even if CTS placed indication into its deferred Q, we treat it
23619 * as success and let CTS drain its queue as per smd interrupt to CTS
23620 */
23621 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 -070023622 pWDICtx->pReqStatusUserData);
Kapil Gupta2b44acb2016-12-30 16:49:51 +053023623 pWDICtx->wdiReqStatusCB = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023624 }
23625
23626 /*If sending of the message failed - it is considered catastrophic and
23627 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023628 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
23629 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
23630
Jeff Johnson295189b2012-06-20 16:38:30 -070023631 {
23632 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023633 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070023634
23635 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
23636 return WDI_STATUS_E_FAILURE;
23637 }
23638
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023640}/*WDI_SendIndication*/
23641
23642
23643/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 @brief WDI_DetectedDeviceError - called internally by DAL when
23645 it has detected a failure in the device
23646
23647 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 usErrorCode: error code detected by WDI or received
23649 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023650
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023652 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023653*/
23654void
23655WDI_DetectedDeviceError
23656(
23657 WDI_ControlBlockType* pWDICtx,
23658 wpt_uint16 usErrorCode
23659)
23660{
23661 WDI_LowLevelIndType wdiInd;
23662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23663
23664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23665 "Device Error detected code: %d - transitioning to stopped state",
23666 usErrorCode);
23667
Katya Nigamf02ad012014-05-05 16:12:49 +053023668 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
23669
Jeff Johnson295189b2012-06-20 16:38:30 -070023670 wpalMutexAcquire(&pWDICtx->wptMutex);
23671
23672 WDI_STATableStop(pWDICtx);
23673
23674 WDI_ResetAssocSessions(pWDICtx);
23675
23676 /*Set the expected state transition to stopped - because the device
23677 experienced a failure*/
23678 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
23679
23680 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023681 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070023682
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070023684
23685 /*TO DO: - there should be an attempt to reset the device here*/
23686
23687 wpalMutexRelease(&pWDICtx->wptMutex);
23688
23689 /*------------------------------------------------------------------------
23690 Notify UMAC if a handler is registered
23691 ------------------------------------------------------------------------*/
23692 if (pWDICtx->wdiLowLevelIndCB)
23693 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
23695 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023696
23697 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
23698 }
23699}/*WDI_DetectedDeviceError*/
23700
23701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070023703 we started on send message has expire - this should
23704 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070023705 reply - trigger catastrophic failure
23706 @param
23707
Jeff Johnson295189b2012-06-20 16:38:30 -070023708 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070023709
23710 @see
23711 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023712*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023713void
Jeff Johnson295189b2012-06-20 16:38:30 -070023714WDI_ResponseTimerCB
23715(
23716 void *pUserData
23717)
23718{
23719 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
23720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23721
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023722 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070023723 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023724 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023727 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023728 }
23729
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023730 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080023731 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080023732 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023733
23734 /* If response timer is running at this time that means this timer
23735 * event is not for the last request but rather last-to-last request and
23736 * this timer event has come after we recevied respone for last-to-last
23737 * message
23738 */
23739 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
23740 {
23741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23742 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023743 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023744 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23746 "uArchTimeStampTmrStart: %llu seconds, "
23747 "uArchTimeStampTmrExp: %llu seconds",
23748 pWDICtx->uArchTimeStampRspTmrStart,
23749 pWDICtx->uArchTimeStampRspTmrExp);
23750
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023751 return;
23752 }
23753
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023754 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070023755 {
23756
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023757 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070023758 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023759 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070023760 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023761 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23762 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23764 "uArchTimeStampTmrStart: %llu seconds, "
23765 "uArchTimeStampTmrExp: %llu seconds",
23766 pWDICtx->uArchTimeStampRspTmrStart,
23767 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023768
23769 /* WDI timeout means Riva is not responding or SMD communication to Riva
23770 * is not happening. The only possible way to recover from this error
23771 * is to initiate SSR from APPS.
23772 * There is also an option to re-enable wifi, which will eventually
23773 * trigger SSR
23774 */
23775 if (gWDICb.bEnableSSR == false)
23776 {
23777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23778 "SSR is not enabled on WDI timeout");
23779 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23780 return;
23781 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023782#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023783 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023784 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023785 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023786 if(wpalIsSsrPanicOnFailure())
23787 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023788 } else {
23789 /* if this timer fires, it means Riva did not receive the FIQ */
23790 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023791 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023792#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023793 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Anurag Chouhanf0d0ba12018-02-09 15:13:43 +053023794 wpalWlanReload(VOS_WDI_FAILURE);
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023795#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023796 }
23797 else
23798 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023800 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023801 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023802 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23803 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23805 "uArchTimeStampTmrStart: %llu seconds, "
23806 "uArchTimeStampTmrExp: %llu seconds",
23807 pWDICtx->uArchTimeStampRspTmrStart,
23808 pWDICtx->uArchTimeStampRspTmrExp);
23809
Jeff Johnson295189b2012-06-20 16:38:30 -070023810 }
23811
23812 return;
23813
23814}/*WDI_ResponseTimerCB*/
23815
23816
23817/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023818 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023819
Jeff Johnsone7245742012-09-05 17:12:55 -070023820
23821 @param pWDICtx: pointer to the WLAN DAL context
23822 pEventData: pointer to the event information structure
23823
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 @see
23825 @return Result of the function call
23826*/
23827WPT_INLINE WDI_Status
23828WDI_ProcessResponse
23829(
23830 WDI_ControlBlockType* pWDICtx,
23831 WDI_EventInfoType* pEventData
23832)
23833{
23834 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23835
Jeff Johnsone7245742012-09-05 17:12:55 -070023836 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023837 already checked these pointers
23838 ! - revisit this assumption */
23839 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23840 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023841 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023842 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070023843 "Calling response processing function for resp %s (%d) %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070023844 WDI_getRespMsgString(pEventData->wdiResponse),
23845 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23846 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23847 }
23848 else
23849 {
23850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023851 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023852 pEventData->wdiResponse);
23853 return WDI_STATUS_E_NOT_IMPLEMENT;
23854 }
23855}/*WDI_ProcessResponse*/
23856
23857
23858/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023859 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023860=========================================================================*/
23861
23862/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023863 @brief Utility function used by the DAL Core to help queue a
23864 request that cannot be processed right away.
23865 @param
23866
Jeff Johnson295189b2012-06-20 16:38:30 -070023867 pWDICtx: - pointer to the WDI control block
23868 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 queued
23870
23871 @see
23872 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023873*/
23874WDI_Status
23875WDI_QueuePendingReq
23876(
23877 WDI_ControlBlockType* pWDICtx,
23878 WDI_EventInfoType* pEventData
23879)
23880{
Jeff Johnsone7245742012-09-05 17:12:55 -070023881 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023882 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023883 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23885
23886 if ( NULL == pEventDataQueue )
23887 {
23888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 WDI_ASSERT(0);
23891 return WDI_STATUS_MEM_FAILURE;
23892 }
23893
23894 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23895 pEventDataQueue->pUserData = pEventData->pUserData;
23896 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23897 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023898 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023899
23900 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23901 {
23902 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023903
Jeff Johnson295189b2012-06-20 16:38:30 -070023904 if ( NULL == pEventInfo )
23905 {
23906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 WDI_ASSERT(0);
23909 wpalMemoryFree(pEventDataQueue);
23910 return WDI_STATUS_MEM_FAILURE;
23911 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023912
Jeff Johnson295189b2012-06-20 16:38:30 -070023913 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23914
23915 }
23916 pEventDataQueue->pEventData = pEventInfo;
23917
23918 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023919 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023920
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023921 if (eWLAN_PAL_STATUS_E_FAILURE ==
23922 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23923 {
23924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23925 "pEventDataQueue wpal_list_insert_back failed");
23926 WDI_ASSERT(0);
23927 wpalMemoryFree(pEventDataQueue);
23928 wpalMemoryFree(pEventInfo);
23929 return WDI_STATUS_MEM_FAILURE;
23930 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023931
23932 return WDI_STATUS_SUCCESS;
23933}/*WDI_QueuePendingReq*/
23934
23935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023936 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023937 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023938 @param
23939
23940 pMsg - pointer to the message
23941
23942 @see
23943 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023944*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023945void
Jeff Johnson295189b2012-06-20 16:38:30 -070023946WDI_PALCtrlMsgCB
23947(
23948 wpt_msg *pMsg
23949)
23950{
23951 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023952 WDI_ControlBlockType* pWDICtx = NULL;
23953 WDI_Status wdiStatus;
23954 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023955 void* pUserData;
23956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23957
23958 if (( NULL == pMsg )||
23959 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23960 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23961 {
23962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023963 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023965 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023966 }
23967
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023968 /*Access to the global state must be locked */
23969 wpalMutexAcquire(&pWDICtx->wptMutex);
23970
Jeff Johnson295189b2012-06-20 16:38:30 -070023971 /*Transition back to the state that we had before serialization
23972 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023973 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023974 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023975 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023976
23977 /*-----------------------------------------------------------------------
23978 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023980 -----------------------------------------------------------------------*/
23981 switch ( pEventData->wdiRequest )
23982 {
23983
Jeff Johnsone7245742012-09-05 17:12:55 -070023984 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023985 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23986 break;
23987
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 case WDI_NV_DOWNLOAD_REQ:
23989 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23990 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23991 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23992 {
23993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023994 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023995 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23996 }
23997 else
23998 {
23999 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
24000 }
24001
24002 break;
24003
24004 default:
24005 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
24006 break;
24007 }/*switch ( pEventData->wdiRequest )*/
24008
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053024009 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024010 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070024011 {
24012 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
24013
24014 if ( NULL != pfnReqStatusCB )
24015 {
24016 /*Fail the request*/
24017 pfnReqStatusCB( wdiStatus, pUserData);
24018 }
24019 }
24020
24021 /* Free data - that was allocated when queueing*/
24022 if( pEventData != NULL )
24023 {
24024 if( pEventData->pEventData != NULL )
24025 {
24026 wpalMemoryFree(pEventData->pEventData);
24027 }
24028 wpalMemoryFree(pEventData);
24029 }
24030
24031 if( pMsg != NULL )
24032 {
24033 wpalMemoryFree(pMsg);
24034 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024035
Jeff Johnson295189b2012-06-20 16:38:30 -070024036}/*WDI_PALCtrlMsgCB*/
24037
24038/**
24039 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070024040 and schedule for execution a pending request
24041 @param
24042
Jeff Johnson295189b2012-06-20 16:38:30 -070024043 pWDICtx: - pointer to the WDI control block
24044 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070024045 queued
24046
24047 @see
24048 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024049*/
24050WDI_Status
24051WDI_DequeuePendingReq
24052(
24053 WDI_ControlBlockType* pWDICtx
24054)
24055{
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070024058 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070024059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24060
Jeff Johnsone7245742012-09-05 17:12:55 -070024061 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024062
24063 if ( NULL == pNode )
24064 {
24065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070024066 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070024067 return WDI_STATUS_SUCCESS;
24068 }
24069
24070 /*The node actually points to the 1st element inside the Event Data struct -
24071 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024072 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070024073
24074 /*Serialize processing in the control thread
24075 !TO DO: - check to see if these are all the messages params that need
24076 to be filled in*/
24077 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
24078
24079 if ( NULL == palMsg )
24080 {
24081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070024082 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070024083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024084 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024085 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024086 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070024087 palMsg->callback = WDI_PALCtrlMsgCB;
24088 palMsg->ptr = pEventData;
24089
24090 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024091 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080024092 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070024093
Jeff Johnson295189b2012-06-20 16:38:30 -070024094 /*Transition back to BUSY as we need to handle a queued request*/
24095 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070024096
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
24098
24099 return WDI_STATUS_PENDING;
24100}/*WDI_DequeuePendingReq*/
24101
24102
24103/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 away.- The assoc requests will be queued by BSSID
24107 @param
24108
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 pWDICtx: - pointer to the WDI control block
24110 pEventData: pointer to the evnt info that needs to be queued
24111 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070024112
24113 @see
24114 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024115*/
24116WDI_Status
24117WDI_QueueNewAssocRequest
24118(
24119 WDI_ControlBlockType* pWDICtx,
24120 WDI_EventInfoType* pEventData,
24121 wpt_macAddr macBSSID
24122)
24123{
Jeff Johnsone7245742012-09-05 17:12:55 -070024124 wpt_uint8 i;
24125 WDI_BSSSessionType* pSession = NULL;
24126 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070024128 void* pEventInfo;
24129 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070024130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070024131
Jeff Johnsone7245742012-09-05 17:12:55 -070024132
24133 /*------------------------------------------------------------------------
24134 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024135 ------------------------------------------------------------------------*/
24136 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24137 {
24138 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
24139 {
24140 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024141 pSession = &pWDICtx->aBSSSessions[i];
24142 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070024143 }
24144 }
24145
24146 if ( i >= WDI_MAX_BSS_SESSIONS )
24147 {
24148 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024150 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024151
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 /*------------------------------------------------------------------------
24153 Fill in the BSSID for this session and set the usage flag
24154 ------------------------------------------------------------------------*/
24155 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070024156 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024157
24158 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024159 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070024160 ------------------------------------------------------------------------*/
24161 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
24162 if ( NULL == pEventDataQueue )
24163 {
24164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024165 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024166 WDI_ASSERT(0);
24167 return WDI_STATUS_MEM_FAILURE;
24168 }
24169
24170 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
24171 if ( NULL == pSessionIdElement )
24172 {
24173 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024174 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024175 WDI_ASSERT(0);
24176 wpalMemoryFree(pEventDataQueue);
24177 return WDI_STATUS_MEM_FAILURE;
24178 }
24179
24180 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
24181 if ( NULL == pEventInfo )
24182 {
24183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024184 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024185 WDI_ASSERT(0);
24186 wpalMemoryFree(pSessionIdElement);
24187 wpalMemoryFree(pEventDataQueue);
24188 return WDI_STATUS_MEM_FAILURE;
24189 }
24190
24191 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
24192 pEventDataQueue->pUserData = pEventData->pUserData;
24193 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
24194 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070024195 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070024196
24197 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
24198 pEventDataQueue->pEventData = pEventInfo;
24199
24200 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024201 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070024202
24203 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024204 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024205
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053024206 if (eWLAN_PAL_STATUS_E_FAILURE ==
24207 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
24208 {
24209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24210 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
24211 WDI_ASSERT(0);
24212 wpalMemoryFree(pSessionIdElement);
24213 wpalMemoryFree(pEventDataQueue);
24214 wpalMemoryFree(pEventInfo);
24215 return WDI_STATUS_MEM_FAILURE;
24216 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024217
24218 /*We need to maintain a separate list that keeps track of the order in which
24219 the new assoc requests are being queued such that we can start processing
24220 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024221 pSessionIdElement->ucIndex = i;
24222 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070024223
24224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24225 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053024226 if (eWLAN_PAL_STATUS_E_FAILURE ==
24227 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
24228 {
24229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24230 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
24231 WDI_ASSERT(0);
24232 wpalMemoryFree(pSessionIdElement);
24233 wpalMemoryFree(pEventDataQueue);
24234 wpalMemoryFree(pEventInfo);
24235 return WDI_STATUS_MEM_FAILURE;
24236 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024237
24238 /*Return pending as this is what the status of the request is since it has
24239 been queued*/
24240 return WDI_STATUS_PENDING;
24241}/*WDI_QueueNewAssocRequest*/
24242
24243/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024244 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070024245 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070024246 away.- The assoc requests will be queued by BSSID
24247 @param
24248
Jeff Johnson295189b2012-06-20 16:38:30 -070024249 pWDICtx: - pointer to the WDI control block
24250 pSession: - session in which to queue
24251 pEventData: pointer to the event info that needs to be
24252 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070024253
24254 @see
24255 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024256*/
24257WDI_Status
24258WDI_QueueAssocRequest
24259(
24260 WDI_ControlBlockType* pWDICtx,
24261 WDI_BSSSessionType* pSession,
24262 WDI_EventInfoType* pEventData
24263)
24264{
Jeff Johnsone7245742012-09-05 17:12:55 -070024265 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070024266 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070024268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070024269
24270 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070024271 Sanity check
24272 ------------------------------------------------------------------------*/
24273 if (( NULL == pSession ) || ( NULL == pWDICtx ))
24274 {
24275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024276 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024277
Jeff Johnsone7245742012-09-05 17:12:55 -070024278 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024279 }
24280
24281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024282 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 ------------------------------------------------------------------------*/
24284 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
24285 if ( NULL == pEventDataQueue )
24286 {
24287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024288 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024289 WDI_ASSERT(0);
24290 return WDI_STATUS_MEM_FAILURE;
24291 }
24292
24293 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
24294 if ( NULL == pEventInfo )
24295 {
24296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24297 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024298 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024299 WDI_ASSERT(0);
24300 wpalMemoryFree(pEventDataQueue);
24301 return WDI_STATUS_MEM_FAILURE;
24302 }
24303
24304 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
24305 pEventDataQueue->pUserData = pEventData->pUserData;
24306 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
24307 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070024308 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070024309 pEventDataQueue->pEventData = pEventInfo;
24310
24311 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
24312
24313 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024314 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070024315
24316 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053024319 if (eWLAN_PAL_STATUS_E_FAILURE ==
24320 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
24321 {
24322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
24323 "%s: Cannot allocate memory for queueing event data info",
24324 __func__);
24325 WDI_ASSERT(0);
24326 wpalMemoryFree(pEventDataQueue);
24327 wpalMemoryFree(pEventInfo);
24328 return WDI_STATUS_MEM_FAILURE;
24329 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024330
24331 /*The result of this operation is pending because the request has been
24332 queued and it will be processed at a later moment in time */
24333 return WDI_STATUS_PENDING;
24334}/*WDI_QueueAssocRequest*/
24335
24336/**
24337 @brief Utility function used by the DAL Core to help dequeue
24338 an association request that was pending
24339 The request will be queued up in front of the main
24340 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070024341 @param
24342
Jeff Johnson295189b2012-06-20 16:38:30 -070024343 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070024344
24345
24346 @see
24347 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024348*/
24349WDI_Status
24350WDI_DequeueAssocRequest
24351(
24352 WDI_ControlBlockType* pWDICtx
24353)
24354{
Jeff Johnsone7245742012-09-05 17:12:55 -070024355 wpt_list_node* pNode = NULL;
24356 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070024357 WDI_BSSSessionType* pSession;
24358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070024359
24360 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 Sanity check
24362 ------------------------------------------------------------------------*/
24363 if ( NULL == pWDICtx )
24364 {
24365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024367
Jeff Johnsone7245742012-09-05 17:12:55 -070024368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024369 }
24370
24371 /*------------------------------------------------------------------------
24372 An association has been completed => a new association can occur
24373 Check to see if there are any pending associations ->
24374 If so , transfer all the pending requests into the busy queue for
24375 processing
24376 These requests have arrived prior to the requests in the busy queue
24377 (bc they needed to be processed in order to be placed in this queue)
24378 => they will be placed at the front of the busy queue
24379 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024381
24382 if ( NULL == pNode )
24383 {
24384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070024385 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 return WDI_STATUS_SUCCESS;
24387 }
24388
24389 /*The node actually points to the 1st element inside the Session Id struct -
24390 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024391 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070024392
24393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
24394 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
24395
24396 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
24397 {
24398 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070024399
Jeff Johnson295189b2012-06-20 16:38:30 -070024400 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070024401 the front of the main waiting queue for subsequent execution*/
24402 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024403 while ( NULL != pNode )
24404 {
24405 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
24407 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024408 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024409 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024410 }
24411 else
24412 {
24413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070024414 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 WPAL_ASSERT(0);
24416 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070024417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024418 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024419
Jeff Johnson295189b2012-06-20 16:38:30 -070024420 /*Clean this up as it is no longer needed in order to prevent memory leak*/
24421 wpalMemoryFree(pSessionIdElement);
24422 return WDI_STATUS_SUCCESS;
24423}/*WDI_DequeueAssocRequest*/
24424
24425/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024426 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070024427 pending requests - all req cb will be called with
24428 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070024429 @param
24430
Jeff Johnson295189b2012-06-20 16:38:30 -070024431 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070024432
24433 @see
24434 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070024435*/
24436WDI_Status
24437WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070024438(
Jeff Johnson295189b2012-06-20 16:38:30 -070024439 WDI_ControlBlockType* pWDICtx
24440)
24441{
Jeff Johnsone7245742012-09-05 17:12:55 -070024442 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024443 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070024444 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070024445 void* pUserData;
24446 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
24447
Jeff Johnsone7245742012-09-05 17:12:55 -070024448 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070024449
24450 /*------------------------------------------------------------------------
24451 Go through all the requests and fail them - this will only be called
24452 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070024453 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070024454 ------------------------------------------------------------------------*/
24455 while( pNode )
24456 {
24457 /*The node actually points to the 1st element inside the Event Data struct -
24458 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024459 pEventDataQueue = (WDI_EventInfoType*)pNode;
24460
Jeff Johnson295189b2012-06-20 16:38:30 -070024461 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
24462 if ( NULL != pfnReqStatusCB )
24463 {
24464 /*Fail the request*/
24465 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
24466 }
24467 /* Free data - that was allocated when queueing */
24468 if ( pEventDataQueue->pEventData != NULL )
24469 {
24470 wpalMemoryFree(pEventDataQueue->pEventData);
24471 }
24472 wpalMemoryFree(pEventDataQueue);
24473
24474 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
24475 {
24476 break;
24477 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 }
24479
Jeff Johnson295189b2012-06-20 16:38:30 -070024480 return WDI_STATUS_SUCCESS;
24481}/*WDI_ClearPendingRequests*/
24482
24483/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024484 @brief Helper routine used to init the BSS Sessions in the WDI control block
24485
24486
24487 @param pWDICtx: pointer to the WLAN DAL context
24488
Jeff Johnson295189b2012-06-20 16:38:30 -070024489 @see
24490*/
24491void
24492WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070024493(
Jeff Johnson295189b2012-06-20 16:38:30 -070024494 WDI_ControlBlockType* pWDICtx
24495)
24496{
Jeff Johnsone7245742012-09-05 17:12:55 -070024497 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024498 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24499
24500 /*-------------------------------------------------------------------------
24501 No Sanity check
24502 -------------------------------------------------------------------------*/
24503 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24504 {
Jeff Johnsone7245742012-09-05 17:12:55 -070024505 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070024506 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
24507 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
24508 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
24509 }
24510}/*WDI_ResetAssocSessions*/
24511
24512/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024513 @brief Helper routine used to find a session based on the BSSID
24514
24515
24516 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024517 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070024518 pSession: pointer to the session (if found)
24519
Jeff Johnson295189b2012-06-20 16:38:30 -070024520 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024521 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024522*/
24523wpt_uint8
24524WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070024525(
Jeff Johnson295189b2012-06-20 16:38:30 -070024526 WDI_ControlBlockType* pWDICtx,
24527 wpt_macAddr macBSSID,
24528 WDI_BSSSessionType** ppSession
24529)
24530{
Jeff Johnsone7245742012-09-05 17:12:55 -070024531 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24533
24534 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024535 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024536 -------------------------------------------------------------------------*/
24537 if ( NULL == ppSession )
24538 {
24539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024540 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024541 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024542 }
24543
Jeff Johnsone7245742012-09-05 17:12:55 -070024544 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024545
Jeff Johnsone7245742012-09-05 17:12:55 -070024546 /*------------------------------------------------------------------------
24547 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024548 ------------------------------------------------------------------------*/
24549 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24550 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070024551 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
24552 (eWLAN_PAL_TRUE ==
24553 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
24554 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070024555 {
24556 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024557 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070024558 return i;
24559 }
24560 }
24561
Jeff Johnsone7245742012-09-05 17:12:55 -070024562 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024563}/*WDI_FindAssocSession*/
24564
24565/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024566 @brief Helper routine used to find a session based on the BSSID
24567
24568
24569 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024570 ucBSSIdx: BSS Index of the session
24571 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070024572
Jeff Johnson295189b2012-06-20 16:38:30 -070024573 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024574 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024575*/
24576wpt_uint8
24577WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070024578(
Jeff Johnson295189b2012-06-20 16:38:30 -070024579 WDI_ControlBlockType* pWDICtx,
24580 wpt_uint16 ucBSSIdx,
24581 WDI_BSSSessionType** ppSession
24582)
24583{
Jeff Johnsone7245742012-09-05 17:12:55 -070024584 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24586
24587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024589 -------------------------------------------------------------------------*/
24590 if ( NULL == ppSession )
24591 {
24592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024593 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024594 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024595 }
24596
Jeff Johnsone7245742012-09-05 17:12:55 -070024597 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024598
Jeff Johnsone7245742012-09-05 17:12:55 -070024599 /*------------------------------------------------------------------------
24600 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024601 ------------------------------------------------------------------------*/
24602 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24603 {
24604 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
24605 {
24606 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024607 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 return i;
24609 }
24610 }
24611
Jeff Johnsone7245742012-09-05 17:12:55 -070024612 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024613}/*WDI_FindAssocSessionByBSSIdx*/
24614
24615/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024616 @brief Helper routine used to find a session based on the BSSID
24617
24618
24619 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024620 ucBSSIdx: BSS Index of the session
24621 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070024622
Jeff Johnson295189b2012-06-20 16:38:30 -070024623 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024624 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024625*/
24626wpt_uint8
24627WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070024628(
Jeff Johnson295189b2012-06-20 16:38:30 -070024629 WDI_ControlBlockType* pWDICtx,
24630 wpt_uint16 usIdx,
24631 WDI_BSSSessionType** ppSession
24632)
24633{
24634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24635
24636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024638 -------------------------------------------------------------------------*/
24639 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
24640 {
24641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024642 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024643 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024644 }
24645
24646 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024647 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070024648
24649 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024650
Jeff Johnson295189b2012-06-20 16:38:30 -070024651}/*WDI_FindAssocSessionByBSSIdx*/
24652
24653/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024654 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070024655 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070024656
24657
24658 @param pWDICtx: pointer to the WLAN DAL context
24659 pSession: pointer to the session (if found)
24660
Jeff Johnson295189b2012-06-20 16:38:30 -070024661 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024662 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024663*/
24664wpt_uint8
24665WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070024666(
Jeff Johnson295189b2012-06-20 16:38:30 -070024667 WDI_ControlBlockType* pWDICtx,
24668 WDI_BSSSessionType** ppSession
24669)
24670{
Jeff Johnsone7245742012-09-05 17:12:55 -070024671 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024672 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24673 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024674 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024675 -------------------------------------------------------------------------*/
24676 if ( NULL == ppSession )
24677 {
24678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024679 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024680 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024681 }
24682
Jeff Johnsone7245742012-09-05 17:12:55 -070024683 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024684
Jeff Johnsone7245742012-09-05 17:12:55 -070024685 /*------------------------------------------------------------------------
24686 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070024687 ------------------------------------------------------------------------*/
24688 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24689 {
24690 if ( ! pWDICtx->aBSSSessions[i].bInUse )
24691 {
24692 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024693 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 return i;
24695 }
24696 }
24697
Jeff Johnsone7245742012-09-05 17:12:55 -070024698 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024699}/*WDI_FindEmptySession*/
24700
24701
24702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024703 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070024704 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070024705
24706
24707 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024708 macBSSID: pointer to BSSID. If NULL, get all the session.
24709 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
24710 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
24711 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 @see
24713 @return Number of sessions in use
24714*/
24715wpt_uint8
24716WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070024717(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024718 WDI_ControlBlockType* pWDICtx,
24719 wpt_macAddr macBSSID,
24720 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024721)
24722{
Jeff Johnsone7245742012-09-05 17:12:55 -070024723 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024725
24726 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070024727 Count all sessions in use
24728 ------------------------------------------------------------------------*/
24729 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24730 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024731 if ( macBSSID && skipBSSID &&
24732 (eWLAN_PAL_TRUE ==
24733 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
24734 WDI_MAC_ADDR_LEN)))
24735 {
24736 continue;
24737 }
24738 else if ( pWDICtx->aBSSSessions[i].bInUse )
24739 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024740 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024741 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024742 }
24743
Jeff Johnsone7245742012-09-05 17:12:55 -070024744 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070024745}/*WDI_GetActiveSessionsCount*/
24746
24747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024748 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070024749 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070024750
24751
24752 @param pWDICtx: pointer to the WLAN DAL context
24753 pSession: pointer to the session (if found)
24754
Jeff Johnson295189b2012-06-20 16:38:30 -070024755 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024756 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024757*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024758void
Jeff Johnson295189b2012-06-20 16:38:30 -070024759WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070024760(
Jeff Johnson295189b2012-06-20 16:38:30 -070024761 WDI_ControlBlockType* pWDICtx,
24762 WDI_BSSSessionType* ppSession
24763)
24764{
24765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024766 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024767 -------------------------------------------------------------------------*/
24768 if ( NULL == ppSession )
24769 {
24770 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024771 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024772 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024773 }
24774
Jeff Johnsone7245742012-09-05 17:12:55 -070024775 /*------------------------------------------------------------------------
24776 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070024777 ------------------------------------------------------------------------*/
24778 wpal_list_destroy(&ppSession->wptPendingQueue);
24779 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070024780 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
24781 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024782 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24783 wpal_list_init(&ppSession->wptPendingQueue);
24784
24785}/*WDI_DeleteSession*/
24786
24787/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024788 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024789 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024790 @param
24791
Jeff Johnson295189b2012-06-20 16:38:30 -070024792 WDI_AddStaParams: - pointer to the WDI Add STA params
24793 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024794
24795 @see
24796 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024797*/
24798void
24799WDI_AddBcastSTAtoSTATable
24800(
24801 WDI_ControlBlockType* pWDICtx,
24802 WDI_AddStaParams * staParams,
24803 wpt_uint16 usBcastStaIdx
24804)
24805{
24806 WDI_AddStaParams wdiAddSTAParam = {0};
24807 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24809
24810 /*---------------------------------------------------------------------
24811 Sanity check
24812 ---------------------------------------------------------------------*/
24813 if ( NULL == staParams )
24814 {
24815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024817
Jeff Johnsone7245742012-09-05 17:12:55 -070024818 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024819 }
24820
24821 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24822 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24823 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24824 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24825 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24826 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24827 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24828 WDI_MAC_ADDR_LEN );
24829 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24830 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24831 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24832 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24833 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24834 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24835 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024836
Jeff Johnson295189b2012-06-20 16:38:30 -070024837 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24838}
24839
24840/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024841 @brief NV blob will be divided into fragments of size 4kb and
24842 Sent to HAL
24843
24844 @param pWDICtx: pointer to the WLAN DAL context
24845 pEventData: pointer to the event information structure
24846
Jeff Johnson295189b2012-06-20 16:38:30 -070024847 @see
24848 @return Result of the function call
24849 */
24850
24851WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024852(
Jeff Johnson295189b2012-06-20 16:38:30 -070024853 WDI_ControlBlockType* pWDICtx,
24854 WDI_EventInfoType* pEventData
24855)
24856{
24857
24858 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24859 wpt_uint8* pSendBuffer = NULL;
24860 wpt_uint16 usDataOffset = 0;
24861 wpt_uint16 usSendSize = 0;
24862 wpt_uint16 usCurrentFragmentSize =0;
24863 wpt_uint8* pSrcBuffer = NULL;
24864 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24865 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24866
24867 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24868 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24869 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24870
Jeff Johnsone7245742012-09-05 17:12:55 -070024871 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024872 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24873
24874 /* Update the current Fragment Number */
24875 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24876
24877 /*Update the HAL REQ structure */
24878 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24879 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24880 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24881
24882 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024883 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 image will be sent to HAL*/
24885
Jeff Johnsone7245742012-09-05 17:12:55 -070024886 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024887 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024888 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024889 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024890 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024891 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24892 usCurrentFragmentSize = FRAGMENT_SIZE;
24893
24894 /*Update the HAL REQ structure */
24895 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24896 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24897
24898 }
24899 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024900 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024901 usCurrentFragmentSize = FRAGMENT_SIZE;
24902
24903 /*Update the HAL REQ structure */
24904 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24905 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24906 }
24907
24908 /*-----------------------------------------------------------------------
24909 Get message buffer
24910 -----------------------------------------------------------------------*/
24911 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24912 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24913 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024914 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024915 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24916 {
24917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070024918 "Unable to get send buffer in NV Download req %pK %pK ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024919 pEventData, pwdiNvDownloadReqParams);
24920 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024921 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024922 }
24923
24924 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024925 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24927
24928 /* Appending the NV image fragment */
24929 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24930 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24931 usCurrentFragmentSize);
24932
24933 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024934 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024935
Jeff Johnsone7245742012-09-05 17:12:55 -070024936 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24937 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024938 WDI_NV_DOWNLOAD_RESP);
24939
24940}
Jeff Johnsone7245742012-09-05 17:12:55 -070024941/*============================================================================
24942 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024943 ============================================================================*/
24944/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024945 @brief Helper routine used to find a session based on the BSSID
24946 @param pContext: pointer to the WLAN DAL context
24947 @param pDPContext: pointer to the Datapath context
24948
Jeff Johnson295189b2012-06-20 16:38:30 -070024949 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024950 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024951*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024952WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024953WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24954{
24955 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24956
24957 pCB->pDPContext = pDPContext;
24958 return;
24959}
24960
24961/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024962 @brief Helper routine used to find a session based on the BSSID
24963
24964
24965 @param pContext: pointer to the WLAN DAL context
24966
Jeff Johnson295189b2012-06-20 16:38:30 -070024967 @see
24968 @return pointer to Datapath context
24969*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024970WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024971WDI_DS_GetDatapathContext (void *pContext)
24972{
24973 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24974 return pCB->pDPContext;
24975}
24976/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024977 @brief Helper routine used to find a session based on the BSSID
24978
24979
24980 @param pContext: pointer to the WLAN DAL context
24981 @param pDTDriverContext: pointer to the Transport Driver context
24982
Jeff Johnson295189b2012-06-20 16:38:30 -070024983 @see
24984 @return void
24985*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024986WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024987WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24988{
24989 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24990
24991 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024992 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024993}
24994
24995/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024996 @brief Helper routine used to find a session based on the BSSID
24997
24998
24999 @param pWDICtx: pointer to the WLAN DAL context
25000
Jeff Johnson295189b2012-06-20 16:38:30 -070025001 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070025002 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070025003*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025004WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070025005WDT_GetTransportDriverContext (void *pContext)
25006{
25007 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070025008 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070025009}
25010
Jeff Johnsone7245742012-09-05 17:12:55 -070025011/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070025012 Helper inline converters
25013 ============================================================================*/
25014/*Convert WDI driver type into HAL driver type*/
25015WPT_STATIC WPT_INLINE WDI_Status
25016WDI_HAL_2_WDI_STATUS
25017(
25018 eHalStatus halStatus
25019)
25020{
Jeff Johnsone7245742012-09-05 17:12:55 -070025021 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025022 the chances of getting inlined*/
25023 switch( halStatus )
25024 {
25025 case eHAL_STATUS_SUCCESS:
25026 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
25027 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
25028 return WDI_STATUS_SUCCESS;
25029 case eHAL_STATUS_FAILURE:
25030 return WDI_STATUS_E_FAILURE;
25031 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070025032 return WDI_STATUS_MEM_FAILURE;
25033 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070025034 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025035 default:
Mukul Sharmaa6feb382017-07-13 16:46:57 +053025036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25037 "Fwr halStatus:%d", halStatus);
Jeff Johnsone7245742012-09-05 17:12:55 -070025038 return WDI_STATUS_DEV_INTERNAL_FAILURE;
25039 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025040
Jeff Johnsone7245742012-09-05 17:12:55 -070025041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025042}/*WDI_HAL_2_WDI_STATUS*/
25043
25044/*Convert WDI request type into HAL request type*/
25045WPT_STATIC WPT_INLINE tHalHostMsgType
25046WDI_2_HAL_REQ_TYPE
25047(
25048 WDI_RequestEnumType wdiReqType
25049)
25050{
Jeff Johnsone7245742012-09-05 17:12:55 -070025051 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025052 the chances of getting inlined*/
25053 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070025054 {
Jeff Johnson295189b2012-06-20 16:38:30 -070025055 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025056 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025057 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025058 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025059 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025060 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025061 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025062 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025063 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025064 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025065 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025066 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025067 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025068 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025069 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025070 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025071 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025072 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025073 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025074 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025076 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025077 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025078 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025079 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025080 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025081 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025082 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025083 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025084 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025085 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025086 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025087 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025088 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025089 return WLAN_HAL_RMV_STAKEY_REQ;
25090 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025091 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025092 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025093 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025094 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025095 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025096 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025097 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025098 case WDI_DEL_BA_REQ:
25099 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025100#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025101 case WDI_TSM_STATS_REQ:
25102 return WLAN_HAL_TSM_STATS_REQ;
25103#endif
25104 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025105 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025106 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025107 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025108 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025109 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025110 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025111 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025112 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025113 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025114 case WDI_ADD_BA_SESSION_REQ:
25115 return WLAN_HAL_ADD_BA_SESSION_REQ;
25116 case WDI_TRIGGER_BA_REQ:
25117 return WLAN_HAL_TRIGGER_BA_REQ;
25118 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025119 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025120 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025121 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025122 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
25123 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
25124 case WDI_SET_MAX_TX_POWER_REQ:
25125 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070025126 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
25127 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070025128 case WDI_SET_TX_POWER_REQ:
25129 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025130 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
25131 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053025132#ifdef FEATURE_WLAN_TDLS
25133 case WDI_TDLS_LINK_ESTABLISH_REQ:
25134 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053025135 case WDI_TDLS_CHAN_SWITCH_REQ:
25136 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053025137#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025138 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025139 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025140 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025141 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025142 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025143 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025144 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025145 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025146 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025147 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025148 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025149 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025150 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025151 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025152 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025153 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025154 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025155 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025156 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025157 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025158 case WDI_REM_BEACON_FILTER_REQ:
25159 return WLAN_HAL_REM_BCN_FILTER_REQ;
25160 case WDI_SET_RSSI_THRESHOLDS_REQ:
25161 return WLAN_HAL_SET_RSSI_THRESH_REQ;
25162 case WDI_HOST_OFFLOAD_REQ:
25163 return WLAN_HAL_HOST_OFFLOAD_REQ;
25164 case WDI_WOWL_ADD_BC_PTRN_REQ:
25165 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
25166 case WDI_WOWL_DEL_BC_PTRN_REQ:
25167 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
25168 case WDI_WOWL_ENTER_REQ:
25169 return WLAN_HAL_ENTER_WOWL_REQ;
25170 case WDI_WOWL_EXIT_REQ:
25171 return WLAN_HAL_EXIT_WOWL_REQ;
25172 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25173 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
25174 case WDI_NV_DOWNLOAD_REQ:
25175 return WLAN_HAL_DOWNLOAD_NV_REQ;
25176 case WDI_FLUSH_AC_REQ:
25177 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
25178 case WDI_BTAMP_EVENT_REQ:
25179 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
25180#ifdef WLAN_FEATURE_VOWIFI_11R
25181 case WDI_AGGR_ADD_TS_REQ:
25182 return WLAN_HAL_AGGR_ADD_TS_REQ;
25183#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070025184 case WDI_FTM_CMD_REQ:
25185 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025186 case WDI_ADD_STA_SELF_REQ:
25187 return WLAN_HAL_ADD_STA_SELF_REQ;
25188 case WDI_DEL_STA_SELF_REQ:
25189 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070025190#ifdef FEATURE_OEM_DATA_SUPPORT
25191 case WDI_START_OEM_DATA_REQ:
25192 return WLAN_HAL_START_OEM_DATA_REQ;
25193#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070025194 case WDI_HOST_RESUME_REQ:
25195 return WLAN_HAL_HOST_RESUME_REQ;
25196 case WDI_HOST_SUSPEND_IND:
25197 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080025198 case WDI_TRAFFIC_STATS_IND:
25199 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070025200#ifdef WLAN_FEATURE_11W
25201 case WDI_EXCLUDE_UNENCRYPTED_IND:
25202 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
25203#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025204 case WDI_KEEP_ALIVE_REQ:
25205 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025206#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025207 case WDI_ROAM_SCAN_OFFLOAD_REQ:
25208 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025209#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025210#ifdef FEATURE_WLAN_SCAN_PNO
25211 case WDI_SET_PREF_NETWORK_REQ:
25212 return WLAN_HAL_SET_PREF_NETWORK_REQ;
25213 case WDI_SET_RSSI_FILTER_REQ:
25214 return WLAN_HAL_SET_RSSI_FILTER_REQ;
25215 case WDI_UPDATE_SCAN_PARAMS_REQ:
25216 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
25217#endif // FEATURE_WLAN_SCAN_PNO
25218 case WDI_SET_TX_PER_TRACKING_REQ:
25219 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
25220#ifdef WLAN_FEATURE_PACKET_FILTERING
25221 case WDI_8023_MULTICAST_LIST_REQ:
25222 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
25223 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070025224 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025225 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25226 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
25227 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25228 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
25229#endif // WLAN_FEATURE_PACKET_FILTERING
25230 case WDI_HAL_DUMP_CMD_REQ:
25231 return WLAN_HAL_DUMP_COMMAND_REQ;
25232#ifdef WLAN_FEATURE_GTK_OFFLOAD
25233 case WDI_GTK_OFFLOAD_REQ:
25234 return WLAN_HAL_GTK_OFFLOAD_REQ;
25235 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25236 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
25237#endif /* WLAN_FEATURE_GTK_OFFLOAD */
25238
25239 case WDI_INIT_SCAN_CON_REQ:
25240 return WLAN_HAL_INIT_SCAN_CON_REQ;
25241 case WDI_SET_POWER_PARAMS_REQ:
25242 return WLAN_HAL_SET_POWER_PARAMS_REQ;
25243 case WDI_SET_TM_LEVEL_REQ:
25244 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
25245 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
25246 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070025247#ifdef WLAN_FEATURE_11AC
25248 case WDI_UPDATE_VHT_OP_MODE_REQ:
25249 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
25250#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025251 case WDI_GET_ROAM_RSSI_REQ:
25252 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053025253 case WDI_DHCP_START_IND:
25254 return WLAN_HAL_DHCP_START_IND;
25255 case WDI_DHCP_STOP_IND:
25256 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070025257#ifdef FEATURE_WLAN_LPHB
25258 case WDI_LPHB_CFG_REQ:
25259 return WLAN_HAL_LPHB_CFG_REQ;
25260#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070025261 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
25262 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
25263 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
25264 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025265#ifdef WLAN_FEATURE_RMC
25266 case WDI_RMC_RULER_REQ:
25267 return WLAN_HAL_RMC_RULER_REQ;
25268 case WDI_RMC_UPDATE_IND:
25269 return WLAN_HAL_RMC_UPDATE_IND;
25270 case WDI_HAL_IBSS_PEER_INFO_REQ:
25271 return WLAN_HAL_GET_IBSS_PEER_INFO_REQ;
25272#endif /* WLAN_FEATURE_RMC */
25273 case WDI_RATE_UPDATE_IND:
25274 return WLAN_HAL_RATE_UPDATE_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070025275
Rajeev79dbe4c2013-10-05 11:03:42 +053025276#ifdef FEATURE_WLAN_BATCH_SCAN
25277 case WDI_SET_BATCH_SCAN_REQ:
25278 return WLAN_HAL_BATCHSCAN_SET_REQ;
25279 case WDI_STOP_BATCH_SCAN_IND:
25280 return WLAN_HAL_BATCHSCAN_STOP_IND;
25281 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
25282 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
25283#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025284
25285#ifdef WLAN_FEATURE_RMC
25286 case WDI_TX_FAIL_MONITOR_IND:
25287 return WLAN_HAL_TX_FAIL_MONITOR_IND;
25288#endif
25289
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053025290 case WDI_START_HT40_OBSS_SCAN_IND:
25291 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
25292 case WDI_STOP_HT40_OBSS_SCAN_IND:
25293 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025294 case WDI_UPDATE_CHAN_REQ:
25295 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025296 case WDI_CH_SWITCH_REQ_V1:
25297 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053025298 case WDI_GET_BCN_MISS_RATE_REQ:
25299 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053025300
25301#ifdef WLAN_FEATURE_LINK_LAYER_STATS
25302 case WDI_LL_STATS_SET_REQ:
25303 return WLAN_HAL_LL_SET_STATS_REQ;
25304 case WDI_LL_STATS_GET_REQ:
25305 return WLAN_HAL_LL_GET_STATS_REQ;
25306 case WDI_LL_STATS_CLEAR_REQ:
25307 return WLAN_HAL_LL_CLEAR_STATS_REQ;
25308#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053025309#ifdef WLAN_FEATURE_EXTSCAN
25310 case WDI_EXTSCAN_START_REQ:
25311 return WLAN_HAL_EXT_SCAN_START_REQ;
25312 case WDI_EXTSCAN_STOP_REQ:
25313 return WLAN_HAL_EXT_SCAN_STOP_REQ;
25314 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
25315 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
25316 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
25317 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
25318 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
25319 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
25320 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
25321 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053025322 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
25323 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053025324#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053025325 case WDI_SPOOF_MAC_ADDR_REQ:
25326 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053025327 case WDI_GET_FW_STATS_REQ:
25328 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053025329 case WDI_ENCRYPT_MSG_REQ:
25330 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053025331 case WDI_FW_LOGGING_INIT_REQ:
25332 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053025333 case WDI_GET_FRAME_LOG_REQ:
25334 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053025335 case WDI_NAN_REQUEST:
25336 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053025337 case WDI_SET_RTS_CTS_HTVHT_IND:
25338 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Sourav Mohapatra2416e0e2018-03-05 18:44:21 +053025339 case WDI_SET_VOWIFI_IND:
25340 return WLAN_HAL_VOWIFI_IND;
Ashish Kumar Dhanotiyaf59c7762018-04-10 17:54:25 +053025341 case WDI_SET_QPOWER:
25342 return WLAN_HAL_QPOWER_ENABLE_BY_HOST_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053025343 case WDI_MON_START_REQ:
25344 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
25345 case WDI_MON_STOP_REQ:
25346 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053025347 case WDI_FW_LOGGING_DXE_DONE_IND:
25348 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053025349 case WDI_FATAL_EVENT_LOGGING_REQ:
25350 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053025351 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
25352 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053025353 case WDI_FWR_MEM_DUMP_REQ:
25354 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053025355 case WDI_START_RSSI_MONITOR_REQ:
25356 return WLAN_HAL_START_RSSI_MONITORING_REQ;
25357 case WDI_STOP_RSSI_MONITOR_REQ:
25358 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053025359 case WDI_WIFI_CONFIG_SET_REQ:
25360 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053025361 case WDI_START_OEM_DATA_REQ_IND_NEW:
25362 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053025363 case WDI_ANTENNA_DIVERSITY_SELECTION_REQ:
25364 return WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_REQ;
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053025365 case WDI_MODIFY_ROAM_PARAMS_IND:
25366 return WLAN_HAL_MODIFY_ROAM_PARAMS_IND;
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053025367 case WDI_SET_ALLOWED_ACTION_FRAMES_IND:
25368 return WLAN_HAL_SET_ALLOWED_ACTION_FRAMES_IND;
Kapil Gupta3d923fb2016-12-20 18:59:27 +053025369 case WDI_SET_AP_FIND_IND:
25370 return WLAN_HAL_QRF_AP_FIND_COMMAND;
Kapil Guptab3a981b2016-06-26 13:36:51 +053025371#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25372 case WDI_PER_ROAM_SCAN_OFFLOAD_REQ:
25373 return WLAN_HAL_SET_PER_ROAM_CONFIG_REQ;
25374 case WDI_PER_ROAM_SCAN_TRIGGER_REQ:
25375 return WLAN_HAL_PER_ROAM_SCAN_TRIGGER_REQ;
25376#endif
Agrawal Ashish17ef5082016-10-17 18:33:21 +053025377#ifdef SAP_AUTH_OFFLOAD
25378 case WDI_PROCESS_SAP_AUTH_OFFLOAD_IND:
25379 return WLAN_HAL_SAP_AUTH_OFFLOAD_IND;
25380#endif
Anurag Chouhan83026002016-12-13 22:46:21 +053025381#ifdef DHCP_SERVER_OFFLOAD
25382 case WDI_DHCP_SERVER_OFFLOAD_REQ:
25383 return WLAN_HAL_DHCP_SERVER_OFFLOAD_REQ;
25384#endif /* DHCP_SERVER_OFFLOAD */
Anurag Chouhan0b29de02016-12-16 13:18:40 +053025385#ifdef MDNS_OFFLOAD
25386 case WDI_MDNS_ENABLE_OFFLOAD_REQ:
25387 return WLAN_HAL_MDNS_ENABLE_OFFLOAD_REQ;
25388 case WDI_MDNS_FQDN_OFFLOAD_REQ:
25389 return WLAN_HAL_MDNS_FQDN_OFFLOAD_REQ;
25390 case WDI_MDNS_RESP_OFFLOAD_REQ:
25391 return WLAN_HAL_MDNS_RESP_OFFLOAD_REQ;
25392 case WDI_MDNS_STATS_OFFLOAD_REQ:
25393 return WLAN_HAL_MDNS_STATS_OFFLOAD_REQ;
25394#endif /* MDNS_OFFLOAD */
Manjeet Singh3ed79242017-01-11 19:04:32 +053025395 case WDI_CAP_TSF_REQ:
25396 return WLAN_HAL_CAPTURE_GET_TSF_TSTAMP;
25397 case WDI_GET_TSF_REQ:
25398 return WLAN_HAL_CAPTURE_GET_TSF_TSTAMP;
Anurag Chouhan6ee81542017-02-09 18:09:27 +053025399 case WDI_FW_ARP_STATS_REQ:
25400 return WLAN_HAL_FW_SET_CLEAR_ARP_STATS_REQ;
25401 case WDI_FW_GET_ARP_STATS_REQ:
25402 return WLAN_HAL_FW_GET_ARP_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025403 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070025404 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025405 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025406
Jeff Johnson295189b2012-06-20 16:38:30 -070025407}/*WDI_2_HAL_REQ_TYPE*/
25408
25409/*Convert WDI response type into HAL response type*/
25410WPT_STATIC WPT_INLINE WDI_ResponseEnumType
25411HAL_2_WDI_RSP_TYPE
25412(
25413 tHalHostMsgType halMsg
25414)
25415{
Jeff Johnsone7245742012-09-05 17:12:55 -070025416 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025417 the chances of getting inlined*/
25418 switch( halMsg )
25419 {
25420 case WLAN_HAL_START_RSP:
25421 return WDI_START_RESP;
25422 case WLAN_HAL_STOP_RSP:
25423 return WDI_STOP_RESP;
25424 case WLAN_HAL_INIT_SCAN_RSP:
25425 return WDI_INIT_SCAN_RESP;
25426 case WLAN_HAL_START_SCAN_RSP:
25427 return WDI_START_SCAN_RESP;
25428 case WLAN_HAL_END_SCAN_RSP:
25429 return WDI_END_SCAN_RESP;
25430 case WLAN_HAL_FINISH_SCAN_RSP:
25431 return WDI_FINISH_SCAN_RESP;
25432 case WLAN_HAL_CONFIG_STA_RSP:
25433 return WDI_CONFIG_STA_RESP;
25434 case WLAN_HAL_DELETE_STA_RSP:
25435 return WDI_DEL_STA_RESP;
25436 case WLAN_HAL_CONFIG_BSS_RSP:
25437 return WDI_CONFIG_BSS_RESP;
25438 case WLAN_HAL_DELETE_BSS_RSP:
25439 return WDI_DEL_BSS_RESP;
25440 case WLAN_HAL_JOIN_RSP:
25441 return WDI_JOIN_RESP;
25442 case WLAN_HAL_POST_ASSOC_RSP:
25443 return WDI_POST_ASSOC_RESP;
25444 case WLAN_HAL_SET_BSSKEY_RSP:
25445 return WDI_SET_BSS_KEY_RESP;
25446 case WLAN_HAL_SET_STAKEY_RSP:
25447 return WDI_SET_STA_KEY_RESP;
25448 case WLAN_HAL_RMV_BSSKEY_RSP:
25449 return WDI_RMV_BSS_KEY_RESP;
25450 case WLAN_HAL_RMV_STAKEY_RSP:
25451 return WDI_RMV_STA_KEY_RESP;
25452 case WLAN_HAL_SET_BCASTKEY_RSP:
25453 return WDI_SET_STA_BCAST_KEY_RESP;
25454 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
25455 // return WDI_RMV_STA_BCAST_KEY_RESP;
25456 case WLAN_HAL_ADD_TS_RSP:
25457 return WDI_ADD_TS_RESP;
25458 case WLAN_HAL_DEL_TS_RSP:
25459 return WDI_DEL_TS_RESP;
25460 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
25461 return WDI_UPD_EDCA_PRMS_RESP;
25462 case WLAN_HAL_ADD_BA_RSP:
25463 return WDI_ADD_BA_RESP;
25464 case WLAN_HAL_DEL_BA_RSP:
25465 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025466#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025467 case WLAN_HAL_TSM_STATS_RSP:
25468 return WDI_TSM_STATS_RESP;
25469#endif
25470 case WLAN_HAL_CH_SWITCH_RSP:
25471 return WDI_CH_SWITCH_RESP;
25472 case WLAN_HAL_SET_LINK_ST_RSP:
25473 return WDI_SET_LINK_ST_RESP;
25474 case WLAN_HAL_GET_STATS_RSP:
25475 return WDI_GET_STATS_RESP;
25476 case WLAN_HAL_UPDATE_CFG_RSP:
25477 return WDI_UPDATE_CFG_RESP;
25478 case WLAN_HAL_ADD_BA_SESSION_RSP:
25479 return WDI_ADD_BA_SESSION_RESP;
25480 case WLAN_HAL_TRIGGER_BA_RSP:
25481 return WDI_TRIGGER_BA_RESP;
25482 case WLAN_HAL_UPDATE_BEACON_RSP:
25483 return WDI_UPD_BCON_PRMS_RESP;
25484 case WLAN_HAL_SEND_BEACON_RSP:
25485 return WDI_SND_BCON_RESP;
25486 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
25487 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
25488 /*Indications*/
25489 case WLAN_HAL_RSSI_NOTIFICATION_IND:
25490 return WDI_HAL_RSSI_NOTIFICATION_IND;
25491 case WLAN_HAL_MISSED_BEACON_IND:
25492 return WDI_HAL_MISSED_BEACON_IND;
25493 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
25494 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
25495 case WLAN_HAL_MIC_FAILURE_IND:
25496 return WDI_HAL_MIC_FAILURE_IND;
25497 case WLAN_HAL_FATAL_ERROR_IND:
25498 return WDI_HAL_FATAL_ERROR_IND;
25499 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
25500 return WDI_HAL_DEL_STA_IND;
25501 case WLAN_HAL_COEX_IND:
25502 return WDI_HAL_COEX_IND;
25503 case WLAN_HAL_OTA_TX_COMPL_IND:
25504 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025505 case WLAN_HAL_P2P_NOA_ATTR_IND:
25506 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080025507 case WLAN_HAL_P2P_NOA_START_IND:
25508 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053025509 case WLAN_HAL_DEL_BA_IND:
25510 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070025511 case WLAN_HAL_TX_PER_HIT_IND:
25512 return WDI_HAL_TX_PER_HIT_IND;
25513 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
25514 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070025515 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
25516 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070025517 case WLAN_HAL_SET_TX_POWER_RSP:
25518 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025519 case WLAN_HAL_SET_P2P_GONOA_RSP:
25520 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053025521#ifdef FEATURE_WLAN_TDLS
25522 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
25523 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053025524 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
25525 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053025526 case WLAN_HAL_TDLS_IND:
25527 return WDI_HAL_TDLS_IND;
25528#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025529 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025530 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025531 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025532 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025533 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025534 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025535 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025536 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025537 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025538 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025540 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025541 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025544 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025545 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025546 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025547 case WLAN_HAL_ADD_BCN_FILTER_RSP:
25548 return WDI_SET_BEACON_FILTER_RESP;
25549 case WLAN_HAL_REM_BCN_FILTER_RSP:
25550 return WDI_REM_BEACON_FILTER_RESP;
25551 case WLAN_HAL_SET_RSSI_THRESH_RSP:
25552 return WDI_SET_RSSI_THRESHOLDS_RESP;
25553 case WLAN_HAL_HOST_OFFLOAD_RSP:
25554 return WDI_HOST_OFFLOAD_RESP;
25555 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
25556 return WDI_WOWL_ADD_BC_PTRN_RESP;
25557 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
25558 return WDI_WOWL_DEL_BC_PTRN_RESP;
25559 case WLAN_HAL_ENTER_WOWL_RSP:
25560 return WDI_WOWL_ENTER_RESP;
25561 case WLAN_HAL_EXIT_WOWL_RSP:
25562 return WDI_WOWL_EXIT_RESP;
25563 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
25564 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
25565 case WLAN_HAL_DOWNLOAD_NV_RSP:
25566 return WDI_NV_DOWNLOAD_RESP;
25567 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
25568 return WDI_FLUSH_AC_RESP;
25569 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
25570 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025571 case WLAN_HAL_PROCESS_PTT_RSP:
25572 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 case WLAN_HAL_ADD_STA_SELF_RSP:
25574 return WDI_ADD_STA_SELF_RESP;
25575case WLAN_HAL_DEL_STA_SELF_RSP:
25576 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070025577#ifdef FEATURE_OEM_DATA_SUPPORT
25578 case WLAN_HAL_START_OEM_DATA_RSP:
25579 return WDI_START_OEM_DATA_RESP;
25580#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070025581 case WLAN_HAL_HOST_RESUME_RSP:
25582 return WDI_HOST_RESUME_RESP;
25583 case WLAN_HAL_KEEP_ALIVE_RSP:
25584 return WDI_KEEP_ALIVE_RESP;
25585#ifdef FEATURE_WLAN_SCAN_PNO
25586 case WLAN_HAL_SET_PREF_NETWORK_RSP:
25587 return WDI_SET_PREF_NETWORK_RESP;
25588 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025589 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
25591 return WDI_UPDATE_SCAN_PARAMS_RESP;
25592 case WLAN_HAL_PREF_NETW_FOUND_IND:
25593 return WDI_HAL_PREF_NETWORK_FOUND_IND;
25594#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025595#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070025596 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
25597 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070025598#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025599 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
25600 return WDI_SET_TX_PER_TRACKING_RESP;
25601#ifdef WLAN_FEATURE_PACKET_FILTERING
25602 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
25603 return WDI_8023_MULTICAST_LIST_RESP;
25604 case WLAN_HAL_SET_PACKET_FILTER_RSP:
25605 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
25606 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
25607 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
25608 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
25609 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
25610#endif // WLAN_FEATURE_PACKET_FILTERING
25611
25612 case WLAN_HAL_DUMP_COMMAND_RSP:
25613 return WDI_HAL_DUMP_CMD_RESP;
25614 case WLAN_HAL_SET_POWER_PARAMS_RSP:
25615 return WDI_SET_POWER_PARAMS_RESP;
25616#ifdef WLAN_FEATURE_VOWIFI_11R
25617 case WLAN_HAL_AGGR_ADD_TS_RSP:
25618 return WDI_AGGR_ADD_TS_RESP;
25619#endif
25620
25621#ifdef WLAN_FEATURE_GTK_OFFLOAD
25622 case WLAN_HAL_GTK_OFFLOAD_RSP:
25623 return WDI_GTK_OFFLOAD_RESP;
25624 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
25625 return WDI_GTK_OFFLOAD_GETINFO_RESP;
25626#endif /* WLAN_FEATURE_GTK_OFFLOAD */
25627#ifdef WLAN_WAKEUP_EVENTS
25628 case WLAN_HAL_WAKE_REASON_IND:
25629 return WDI_HAL_WAKE_REASON_IND;
25630#endif // WLAN_WAKEUP_EVENTS
25631
25632 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
25633 return WDI_SET_TM_LEVEL_RESP;
25634 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
25635 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070025636#ifdef WLAN_FEATURE_11AC
25637 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
25638 return WDI_UPDATE_VHT_OP_MODE_RESP;
25639#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025640#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025641 case WLAN_HAL_GET_ROAM_RSSI_RSP:
25642 return WDI_GET_ROAM_RSSI_RESP;
25643#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025644
Leo Chang9056f462013-08-01 19:21:11 -070025645#ifdef FEATURE_WLAN_LPHB
25646 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070025647 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070025648 case WLAN_HAL_LPHB_CFG_RSP:
25649 return WDI_LPHB_CFG_RESP;
25650#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025651
25652 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
25653 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070025654 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
25655 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025656
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025657#ifdef WLAN_FEATURE_RMC
25658 case WLAN_HAL_RMC_RULER_RSP:
25659 return WDI_RMC_RULER_RESP;
25660 case WLAN_HAL_RMC_UPDATE_IND:
25661 return WDI_RMC_UPDATE_IND_TO_HOST;
25662 case WLAN_HAL_GET_IBSS_PEER_INFO_RSP:
25663 return WDI_HAL_IBSS_PEER_INFO_RSP;
25664#endif /* WLAN_FEATURE_RMC */
25665
Rajeev79dbe4c2013-10-05 11:03:42 +053025666#ifdef FEATURE_WLAN_BATCH_SCAN
25667 case WLAN_HAL_BATCHSCAN_SET_RSP:
25668 return WDI_SET_BATCH_SCAN_RESP;
25669 case WLAN_HAL_BATCHSCAN_RESULT_IND:
25670 return WDI_BATCHSCAN_RESULT_IND;
25671#endif // FEATURE_WLAN_BATCH_SCAN
25672
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025673#ifdef WLAN_FEATURE_RMC
25674 case WLAN_HAL_TX_FAIL_IND:
25675 return WDI_HAL_TX_FAIL_IND;
25676#endif /* WLAN_FEATURE_RMC */
25677
Leo Chang0b0e45a2013-12-15 15:18:55 -080025678#ifdef FEATURE_WLAN_CH_AVOID
25679 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
25680 return WDI_HAL_CH_AVOID_IND;
25681#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025682 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
25683 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053025684 case WLAN_HAL_PRINT_REG_INFO_IND:
25685 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053025686 case WLAN_HAL_CH_SWITCH_V1_RSP:
25687 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053025688 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
25689 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053025690#ifdef WLAN_FEATURE_LINK_LAYER_STATS
25691 case WLAN_HAL_LL_SET_STATS_RSP:
25692 return WDI_LL_STATS_SET_RSP;
25693 case WLAN_HAL_LL_GET_STATS_RSP:
25694 return WDI_LL_STATS_GET_RSP;
25695 case WLAN_HAL_LL_CLEAR_STATS_RSP:
25696 return WDI_LL_STATS_CLEAR_RSP;
25697 case WLAN_HAL_LL_NOTIFY_STATS:
25698 return WDI_HAL_LL_STATS_RESULTS_IND;
25699#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053025700#ifdef WLAN_FEATURE_EXTSCAN
25701 case WLAN_HAL_EXT_SCAN_START_RSP:
25702 return WDI_EXTSCAN_START_RSP;
25703 case WLAN_HAL_EXT_SCAN_STOP_RSP:
25704 return WDI_EXTSCAN_STOP_RSP;
25705 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
25706 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
25707 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
25708 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
25709 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
25710 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
25711 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
25712 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053025713 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
25714 return WDI_HAL_EXTSCAN_PROGRESS_IND;
25715 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
25716 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
25717 case WLAN_HAL_EXT_SCAN_RESULT_IND:
25718 return WDI_HAL_EXTSCAN_RESULT_IND;
25719 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
25720 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053025721#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053025722 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
25723 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053025724 case WLAN_HAL_FW_STATS_RSP:
25725 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053025726 case WLAN_HAL_ENCRYPT_DATA_RSP:
25727 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053025728 case WLAN_HAL_FW_LOGGING_INIT_RSP:
25729 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053025730 case WLAN_HAL_GET_FRAME_LOG_RSP:
25731 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053025732 case WLAN_HAL_NAN_RSP:
25733 return WDI_NAN_RESPONSE;
25734 case WLAN_HAL_NAN_EVT:
25735 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053025736 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
25737 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053025738 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
25739 return WDI_MON_START_RSP;
25740 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
25741 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053025742 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
25743 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053025744 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
25745 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053025746 case WLAN_HAL_START_RSSI_MONITORING_RSP:
25747 return WDI_START_RSSI_MONITOR_RSP;
25748 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
25749 return WDI_STOP_RSSI_MONITOR_RSP;
25750 case WLAN_HAL_RSSI_MONITORING_IND:
25751 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053025752 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
25753 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053025754#ifdef FEATURE_OEM_DATA_SUPPORT
25755 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
25756 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
25757#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053025758 case WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_RSP:
25759 return WDI_ANTENNA_DIVERSITY_SELECTION_RSP;
Kapil Guptab3a981b2016-06-26 13:36:51 +053025760#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25761 case WLAN_HAL_SET_PER_ROAM_CONFIG_RSP:
25762 return WDI_PER_ROAM_SCAN_OFFLOAD_RSP;
25763 case WLAN_HAL_PER_ROAM_SCAN_TRIGGER_RSP:
25764 return WDI_PER_ROAM_SCAN_TRIGGER_RSP;
25765#endif
Anurag Chouhan83026002016-12-13 22:46:21 +053025766#ifdef DHCP_SERVER_OFFLOAD
25767 case WLAN_HAL_DHCP_SERVER_OFFLOAD_RSP:
25768 return WDI_DHCP_SERVER_OFFLOAD_RSP;
25769#endif /* DHCP_SERVER_OFFLOAD */
Anurag Chouhan0b29de02016-12-16 13:18:40 +053025770#ifdef MDNS_OFFLOAD
25771 case WLAN_HAL_MDNS_ENABLE_OFFLOAD_RSP:
25772 return WDI_MDNS_ENABLE_OFFLOAD_RSP;
25773 case WLAN_HAL_MDNS_FQDN_OFFLOAD_RSP:
25774 return WDI_MDNS_FQDN_OFFLOAD_RSP;
25775 case WLAN_HAL_MDNS_RESP_OFFLOAD_RSP:
25776 return WDI_MDNS_RESP_OFFLOAD_RSP;
25777 case WLAN_HAL_MDNS_STATS_OFFLOAD_RSP:
25778 return WDI_MDNS_STATS_OFFLOAD_RSP;
25779#endif /* MDNS_OFFLOAD */
Kapil Gupta7a3d9b12016-12-20 20:36:38 +053025780#ifdef WLAN_FEATURE_APFIND
25781 case WLAN_HAL_QRF_PREF_NETW_FOUND_IND:
25782 return WDI_HAL_QRF_PREF_NETWORK_FOUND_IND;
25783#endif
Manjeet Singh3ed79242017-01-11 19:04:32 +053025784 case WLAN_HAL_CAPTURE_GET_TSF_TSTAMP_RSP:
25785 return WDI_CAPTURE_GET_TSF_TSTAMP_RSP;
Anurag Chouhan6ee81542017-02-09 18:09:27 +053025786 case WLAN_HAL_FW_SET_CLEAR_ARP_STATS_RSP:
25787 return WDI_FW_ARP_STATS_RSP;
25788 case WLAN_HAL_FW_GET_ARP_STATS_RSP:
25789 return WDI_FW_GET_ARP_STATS_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025790 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070025791 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025792 }
25793
25794}/*HAL_2_WDI_RSP_TYPE*/
25795
25796
25797/*Convert WDI driver type into HAL driver type*/
25798WPT_STATIC WPT_INLINE tDriverType
25799WDI_2_HAL_DRV_TYPE
25800(
25801 WDI_DriverType wdiDriverType
25802)
25803{
Jeff Johnsone7245742012-09-05 17:12:55 -070025804 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 the chances of getting inlined*/
25806 switch( wdiDriverType )
25807 {
25808 case WDI_DRIVER_TYPE_PRODUCTION:
25809 return eDRIVER_TYPE_PRODUCTION;
25810 case WDI_DRIVER_TYPE_MFG:
25811 return eDRIVER_TYPE_MFG;
25812 case WDI_DRIVER_TYPE_DVT:
25813 return eDRIVER_TYPE_DVT;
25814 }
25815
Jeff Johnsone7245742012-09-05 17:12:55 -070025816 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025817}/*WDI_2_HAL_DRV_TYPE*/
25818
25819
25820/*Convert WDI stop reason into HAL stop reason*/
25821WPT_STATIC WPT_INLINE tHalStopType
25822WDI_2_HAL_STOP_REASON
25823(
25824 WDI_StopType wdiDriverType
25825)
25826{
Jeff Johnsone7245742012-09-05 17:12:55 -070025827 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025828 the chances of getting inlined*/
25829 switch( wdiDriverType )
25830 {
25831 case WDI_STOP_TYPE_SYS_RESET:
25832 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070025833 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
25834 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025835 case WDI_STOP_TYPE_RF_KILL:
25836 return HAL_STOP_TYPE_RF_KILL;
25837 }
25838
Jeff Johnsone7245742012-09-05 17:12:55 -070025839 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025840}/*WDI_2_HAL_STOP_REASON*/
25841
25842
25843/*Convert WDI scan mode type into HAL scan mode type*/
25844WPT_STATIC WPT_INLINE eHalSysMode
25845WDI_2_HAL_SCAN_MODE
25846(
25847 WDI_ScanMode wdiScanMode
25848)
25849{
Jeff Johnsone7245742012-09-05 17:12:55 -070025850 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025851 the chances of getting inlined*/
25852 switch( wdiScanMode )
25853 {
25854 case WDI_SCAN_MODE_NORMAL:
25855 return eHAL_SYS_MODE_NORMAL;
25856 case WDI_SCAN_MODE_LEARN:
25857 return eHAL_SYS_MODE_LEARN;
25858 case WDI_SCAN_MODE_SCAN:
25859 return eHAL_SYS_MODE_SCAN;
25860 case WDI_SCAN_MODE_PROMISC:
25861 return eHAL_SYS_MODE_PROMISC;
25862 case WDI_SCAN_MODE_SUSPEND_LINK:
25863 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070025864 case WDI_SCAN_MODE_ROAM_SCAN:
25865 return eHAL_SYS_MODE_ROAM_SCAN;
25866 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
25867 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070025868 }
25869
Jeff Johnsone7245742012-09-05 17:12:55 -070025870 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025871}/*WDI_2_HAL_SCAN_MODE*/
25872
25873/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025874WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070025875WDI_2_HAL_SEC_CH_OFFSET
25876(
25877 WDI_HTSecondaryChannelOffset wdiSecChOffset
25878)
25879{
Jeff Johnsone7245742012-09-05 17:12:55 -070025880 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025881 the chances of getting inlined*/
25882 switch( wdiSecChOffset )
25883 {
25884 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025885 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025886 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025887 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025888 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025889 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25890#ifdef WLAN_FEATURE_11AC
25891 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25892 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25893 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25894 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25895 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25896 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25897 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25898 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25899 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25900 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25901 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25902 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25903 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25904 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25905#endif
25906 default:
25907 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025908 }
25909
Jeff Johnsone7245742012-09-05 17:12:55 -070025910 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025911}/*WDI_2_HAL_SEC_CH_OFFSET*/
25912
25913/*Convert WDI BSS type into HAL BSS type*/
25914WPT_STATIC WPT_INLINE tSirBssType
25915WDI_2_HAL_BSS_TYPE
25916(
25917 WDI_BssType wdiBSSType
25918)
25919{
Jeff Johnsone7245742012-09-05 17:12:55 -070025920 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025921 the chances of getting inlined*/
25922 switch( wdiBSSType )
25923 {
25924 case WDI_INFRASTRUCTURE_MODE:
25925 return eSIR_INFRASTRUCTURE_MODE;
25926 case WDI_INFRA_AP_MODE:
25927 return eSIR_INFRA_AP_MODE;
25928 case WDI_IBSS_MODE:
25929 return eSIR_IBSS_MODE;
25930 case WDI_BTAMP_STA_MODE:
25931 return eSIR_BTAMP_STA_MODE;
25932 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025933 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025934 case WDI_BSS_AUTO_MODE:
25935 return eSIR_AUTO_MODE;
25936 }
25937
Jeff Johnsone7245742012-09-05 17:12:55 -070025938 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025939}/*WDI_2_HAL_BSS_TYPE*/
25940
25941/*Convert WDI NW type into HAL NW type*/
25942WPT_STATIC WPT_INLINE tSirNwType
25943WDI_2_HAL_NW_TYPE
25944(
25945 WDI_NwType wdiNWType
25946)
25947{
Jeff Johnsone7245742012-09-05 17:12:55 -070025948 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025949 the chances of getting inlined*/
25950 switch( wdiNWType )
25951 {
25952 case WDI_11A_NW_TYPE:
25953 return eSIR_11A_NW_TYPE;
25954 case WDI_11B_NW_TYPE:
25955 return eSIR_11B_NW_TYPE;
25956 case WDI_11G_NW_TYPE:
25957 return eSIR_11G_NW_TYPE;
25958 case WDI_11N_NW_TYPE:
25959 return eSIR_11N_NW_TYPE;
25960 }
25961
Jeff Johnsone7245742012-09-05 17:12:55 -070025962 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025963}/*WDI_2_HAL_NW_TYPE*/
25964
25965/*Convert WDI chanel bonding type into HAL cb type*/
25966WPT_STATIC WPT_INLINE ePhyChanBondState
25967WDI_2_HAL_CB_STATE
25968(
25969 WDI_PhyChanBondState wdiCbState
25970)
25971{
Jeff Johnsone7245742012-09-05 17:12:55 -070025972 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025973 the chances of getting inlined*/
25974 switch ( wdiCbState )
25975 {
25976 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25977 return PHY_SINGLE_CHANNEL_CENTERED;
25978 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25979 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25980 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25981 return PHY_DOUBLE_CHANNEL_CENTERED;
25982 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25983 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025984#ifdef WLAN_FEATURE_11AC
25985 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25986 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25987 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25988 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25989 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25990 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25991 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25992 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25993 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25994 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25995 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25996 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25997 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25998 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25999#endif
26000 case WDI_MAX_CB_STATE:
26001 default:
26002 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026003 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026004
Jeff Johnson295189b2012-06-20 16:38:30 -070026005 return PHY_CHANNEL_BONDING_STATE_MAX;
26006}/*WDI_2_HAL_CB_STATE*/
26007
26008/*Convert WDI chanel bonding type into HAL cb type*/
26009WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
26010WDI_2_HAL_HT_OPER_MODE
26011(
26012 WDI_HTOperatingMode wdiHTOperMode
26013)
26014{
Jeff Johnsone7245742012-09-05 17:12:55 -070026015 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026016 the chances of getting inlined*/
26017 switch ( wdiHTOperMode )
26018 {
26019 case WDI_HT_OP_MODE_PURE:
26020 return eSIR_HT_OP_MODE_PURE;
26021 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
26022 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
26023 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
26024 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
26025 case WDI_HT_OP_MODE_MIXED:
26026 return eSIR_HT_OP_MODE_MIXED;
26027 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026028
Jeff Johnson295189b2012-06-20 16:38:30 -070026029 return eSIR_HT_OP_MODE_MAX;
26030}/*WDI_2_HAL_HT_OPER_MODE*/
26031
26032/*Convert WDI mimo PS type into HAL mimo PS type*/
26033WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
26034WDI_2_HAL_MIMO_PS
26035(
26036 WDI_HTMIMOPowerSaveState wdiHTOperMode
26037)
26038{
Jeff Johnsone7245742012-09-05 17:12:55 -070026039 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 the chances of getting inlined*/
26041 switch ( wdiHTOperMode )
26042 {
26043 case WDI_HT_MIMO_PS_STATIC:
26044 return eSIR_HT_MIMO_PS_STATIC;
26045 case WDI_HT_MIMO_PS_DYNAMIC:
26046 return eSIR_HT_MIMO_PS_DYNAMIC;
26047 case WDI_HT_MIMO_PS_NA:
26048 return eSIR_HT_MIMO_PS_NA;
26049 case WDI_HT_MIMO_PS_NO_LIMIT:
26050 return eSIR_HT_MIMO_PS_NO_LIMIT;
26051 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026052
Jeff Johnson295189b2012-06-20 16:38:30 -070026053 return eSIR_HT_MIMO_PS_MAX;
26054}/*WDI_2_HAL_MIMO_PS*/
26055
26056/*Convert WDI ENC type into HAL ENC type*/
26057WPT_STATIC WPT_INLINE tAniEdType
26058WDI_2_HAL_ENC_TYPE
26059(
26060 WDI_EncryptType wdiEncType
26061)
26062{
Jeff Johnsone7245742012-09-05 17:12:55 -070026063 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026064 the chances of getting inlined*/
26065 switch ( wdiEncType )
26066 {
26067 case WDI_ENCR_NONE:
26068 return eSIR_ED_NONE;
26069
26070 case WDI_ENCR_WEP40:
26071 return eSIR_ED_WEP40;
26072
26073 case WDI_ENCR_WEP104:
26074 return eSIR_ED_WEP104;
26075
26076 case WDI_ENCR_TKIP:
26077 return eSIR_ED_TKIP;
26078
26079 case WDI_ENCR_CCMP:
26080 return eSIR_ED_CCMP;
26081
26082 case WDI_ENCR_AES_128_CMAC:
26083 return eSIR_ED_AES_128_CMAC;
26084#if defined(FEATURE_WLAN_WAPI)
26085 case WDI_ENCR_WPI:
26086 return eSIR_ED_WPI;
26087#endif
26088 default:
26089 return eSIR_ED_NOT_IMPLEMENTED;
26090 }
26091
26092}/*WDI_2_HAL_ENC_TYPE*/
26093
26094/*Convert WDI WEP type into HAL WEP type*/
26095WPT_STATIC WPT_INLINE tAniWepType
26096WDI_2_HAL_WEP_TYPE
26097(
26098 WDI_WepType wdiWEPType
26099)
26100{
Jeff Johnsone7245742012-09-05 17:12:55 -070026101 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026102 the chances of getting inlined*/
26103 switch ( wdiWEPType )
26104 {
26105 case WDI_WEP_STATIC:
26106 return eSIR_WEP_STATIC;
26107
26108 case WDI_WEP_DYNAMIC:
26109 return eSIR_WEP_DYNAMIC;
26110 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026111
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 return eSIR_WEP_MAX;
26113}/*WDI_2_HAL_WEP_TYPE*/
26114
26115WPT_STATIC WPT_INLINE tSirLinkState
26116WDI_2_HAL_LINK_STATE
26117(
26118 WDI_LinkStateType wdiLinkState
26119)
26120{
Jeff Johnsone7245742012-09-05 17:12:55 -070026121 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026122 the chances of getting inlined*/
26123 switch ( wdiLinkState )
26124 {
26125 case WDI_LINK_IDLE_STATE:
26126 return eSIR_LINK_IDLE_STATE;
26127
26128 case WDI_LINK_PREASSOC_STATE:
26129 return eSIR_LINK_PREASSOC_STATE;
26130
26131 case WDI_LINK_POSTASSOC_STATE:
26132 return eSIR_LINK_POSTASSOC_STATE;
26133
26134 case WDI_LINK_AP_STATE:
26135 return eSIR_LINK_AP_STATE;
26136
26137 case WDI_LINK_IBSS_STATE:
26138 return eSIR_LINK_IBSS_STATE;
26139
26140 case WDI_LINK_BTAMP_PREASSOC_STATE:
26141 return eSIR_LINK_BTAMP_PREASSOC_STATE;
26142
26143 case WDI_LINK_BTAMP_POSTASSOC_STATE:
26144 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
26145
26146 case WDI_LINK_BTAMP_AP_STATE:
26147 return eSIR_LINK_BTAMP_AP_STATE;
26148
26149 case WDI_LINK_BTAMP_STA_STATE:
26150 return eSIR_LINK_BTAMP_STA_STATE;
26151
26152 case WDI_LINK_LEARN_STATE:
26153 return eSIR_LINK_LEARN_STATE;
26154
26155 case WDI_LINK_SCAN_STATE:
26156 return eSIR_LINK_SCAN_STATE;
26157
26158 case WDI_LINK_FINISH_SCAN_STATE:
26159 return eSIR_LINK_FINISH_SCAN_STATE;
26160
26161 case WDI_LINK_INIT_CAL_STATE:
26162 return eSIR_LINK_INIT_CAL_STATE;
26163
26164 case WDI_LINK_FINISH_CAL_STATE:
26165 return eSIR_LINK_FINISH_CAL_STATE;
26166
Jeff Johnson295189b2012-06-20 16:38:30 -070026167 case WDI_LINK_LISTEN_STATE:
26168 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026169
Gopichand Nakkala924e4552013-05-08 19:18:14 +053026170 case WDI_LINK_SEND_ACTION_STATE:
26171 return eSIR_LINK_SEND_ACTION_STATE;
26172
Padma, Santhosh Kumar5c317832017-01-20 15:53:00 +053026173#ifdef WLAN_FEATURE_LFR_MBB
26174 case WDI_LINK_PRE_AUTH_REASSOC_STATE:
26175 return eSIR_LINK_PRE_AUTH_REASSOC_STATE;
26176#endif
26177
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 default:
26179 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070026180 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026181}
26182
Jeff Johnsone7245742012-09-05 17:12:55 -070026183/*Translate a STA Context from WDI into HAL*/
26184WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070026185void
26186WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070026187(
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 tConfigStaParams* phalConfigSta,
26189 WDI_ConfigStaReqInfoType* pwdiConfigSta
26190)
26191{
26192 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070026193#ifdef WLAN_FEATURE_11AC
26194 /* Get the Version 1 Handler */
26195 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
26196 if (WDI_getFwWlanFeatCaps(DOT11AC))
26197 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070026198 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070026199 }
26200#endif
26201 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026202 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053026203
Jeff Johnsone7245742012-09-05 17:12:55 -070026204 wpalMemoryCopy(phalConfigSta->bssId,
26205 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
26206
26207 wpalMemoryCopy(phalConfigSta->staMac,
26208 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070026209
26210 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
26211 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
26212 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
26213 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
26214 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
26215 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
26216 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
26217 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
26218 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
26219 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
26220 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
26221 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
26222 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
26223 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
26224 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
26225 phalConfigSta->action = pwdiConfigSta->wdiAction;
26226 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
26227 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
26228 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
26229 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
26230 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
26231 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
26232 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053026233
Jeff Johnson295189b2012-06-20 16:38:30 -070026234 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
26235
Jeff Johnsone7245742012-09-05 17:12:55 -070026236 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070026237 pwdiConfigSta->wdiSupportedRates.opRateMode;
26238 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
26239 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026240 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070026241 pwdiConfigSta->wdiSupportedRates.llbRates[i];
26242 }
26243 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
26244 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026245 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 pwdiConfigSta->wdiSupportedRates.llaRates[i];
26247 }
26248 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
26249 {
26250 phalConfigSta->supportedRates.aniLegacyRates[i] =
26251 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
26252 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026253 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070026254 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
26255 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
26256 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026257 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070026258 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
26259 }
26260 phalConfigSta->supportedRates.rxHighestDataRate =
26261 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
26262
Jeff Johnsone7245742012-09-05 17:12:55 -070026263#ifdef WLAN_FEATURE_11AC
26264 if(phalConfigSta_V1 != NULL)
26265 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070026266 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
26267 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
26268 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
26269 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070026270 }
26271#endif
26272
Jeff Johnson295189b2012-06-20 16:38:30 -070026273 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070026274
Jeff Johnsone7245742012-09-05 17:12:55 -070026275#ifdef WLAN_FEATURE_11AC
26276 if(phalConfigSta_V1 != NULL)
26277 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070026278 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
26279 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080026280 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053026281 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080026282 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
26283 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
26284
Jeff Johnsone7245742012-09-05 17:12:55 -070026285 }
26286#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026287}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070026288
26289/*Translate a Rate set info from WDI into HAL*/
26290WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070026291WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070026292(
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 tSirMacRateSet* pHalRateSet,
26294 WDI_RateSet* pwdiRateSet
26295)
26296{
Jeff Johnsone7245742012-09-05 17:12:55 -070026297 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26299
26300 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
26301 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
26302
26303 for ( i = 0; i < pHalRateSet->numRates; i++ )
26304 {
26305 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
26306 }
Jeff Johnsone7245742012-09-05 17:12:55 -070026307
Jeff Johnson295189b2012-06-20 16:38:30 -070026308}/*WDI_CopyWDIRateSetToHALRateSet*/
26309
26310
26311/*Translate an EDCA Parameter Record from WDI into HAL*/
26312WPT_STATIC WPT_INLINE void
26313WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070026314(
Jeff Johnson295189b2012-06-20 16:38:30 -070026315 tSirMacEdcaParamRecord* phalEdcaParam,
26316 WDI_EdcaParamRecord* pWDIEdcaParam
26317)
26318{
Jeff Johnsone7245742012-09-05 17:12:55 -070026319 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070026320 the chances of getting inlined*/
26321
26322 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
26323 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
26324 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
26325 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
26326
26327 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
26328 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
26329 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
26330}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
26331
26332
26333/*Copy a management frame header from WDI fmt into HAL fmt*/
26334WPT_STATIC WPT_INLINE void
26335WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
26336(
26337 tSirMacMgmtHdr* pmacMgmtHdr,
26338 WDI_MacMgmtHdr* pwdiMacMgmtHdr
26339)
26340{
26341 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
26342 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
26343 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
26344 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
26345 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
26346 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
26347 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
26348 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
26349 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
26350 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
26351 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
26352
26353 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
26354 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
26355
Jeff Johnsone7245742012-09-05 17:12:55 -070026356 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070026357 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070026358 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070026359 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070026360 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026361 pwdiMacMgmtHdr->bssId, 6);
26362
26363 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
26364 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
26365 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
26366
26367}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
26368
26369
26370/*Copy config bss parameters from WDI fmt into HAL fmt*/
26371WPT_STATIC WPT_INLINE void
26372WDI_CopyWDIConfigBSSToHALConfigBSS
26373(
26374 tConfigBssParams* phalConfigBSS,
26375 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
26376)
26377{
26378
26379 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026380#ifdef WLAN_FEATURE_11AC
26381 /* Get the Version 1 Handler */
26382 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
26383 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070026384 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070026385#endif
26386
Jeff Johnson295189b2012-06-20 16:38:30 -070026387 wpalMemoryCopy( phalConfigBSS->bssId,
26388 pwdiConfigBSS->macBSSID,
26389 WDI_MAC_ADDR_LEN);
26390
26391#ifdef HAL_SELF_STA_PER_BSS
26392 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
26393 pwdiConfigBSS->macSelfAddr,
26394 WDI_MAC_ADDR_LEN);
26395#endif
26396
26397 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
26398
26399 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
26400 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
26401
Jeff Johnsone7245742012-09-05 17:12:55 -070026402 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070026403 pwdiConfigBSS->ucShortSlotTimeSupported;
26404 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
26405 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
26406 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
26407 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
26408 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070026409 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070026410 pwdiConfigBSS->ucTXOPProtectionFullSupport;
26411 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
26412 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
26413 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
26414 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
26415 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
26416 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
26417 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
26418 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
26419 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
26420 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
26421
Jeff Johnsone7245742012-09-05 17:12:55 -070026422 phalConfigBSS->htOperMode =
26423 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070026424
26425 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
26426 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
26427 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
Rajeev Kumar Sirasanagandlaade0a332016-06-29 16:52:15 +053026428
26429 if (vos_is_probe_rsp_offload_enabled())
26430 phalConfigBSS->bProxyProbeRespEn = 1;
26431 else
26432 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
Jeff Johnson295189b2012-06-20 16:38:30 -070026433
26434#ifdef WLAN_FEATURE_VOWIFI
26435 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
26436#endif
26437
26438 /*! Used 32 as magic number because that is how the ssid is declared inside the
26439 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070026440 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070026441 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
26442 pwdiConfigBSS->wdiSSID.ucLength : 32;
26443 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070026444 pwdiConfigBSS->wdiSSID.sSSID,
26445 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026446
26447 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
26448 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070026449
Jeff Johnson295189b2012-06-20 16:38:30 -070026450 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
26451 &pwdiConfigBSS->wdiRateSet);
26452
26453 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
26454
26455 if(phalConfigBSS->edcaParamsValid)
26456 {
26457 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
26458 &pwdiConfigBSS->wdiBEEDCAParams);
26459 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
26460 &pwdiConfigBSS->wdiBKEDCAParams);
26461 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
26462 &pwdiConfigBSS->wdiVIEDCAParams);
26463 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
26464 &pwdiConfigBSS->wdiVOEDCAParams);
26465 }
26466
Jeff Johnsone7245742012-09-05 17:12:55 -070026467 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070026468
26469 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
26470
26471#ifdef WLAN_FEATURE_VOWIFI_11R
26472
Jeff Johnsone7245742012-09-05 17:12:55 -070026473 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070026474 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070026475
Jeff Johnson295189b2012-06-20 16:38:30 -070026476 if( phalConfigBSS->extSetStaKeyParamValid )
26477 {
26478 /*-----------------------------------------------------------------------
26479 Copy the STA Key parameters into the HAL message
26480 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026481 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026482 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
26483
Jeff Johnsone7245742012-09-05 17:12:55 -070026484 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070026485 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
26486
26487 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
26488
26489 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
26490
26491 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
26492
Jeff Johnson295189b2012-06-20 16:38:30 -070026493 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
26494 keyIndex++)
26495 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026496 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070026497 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
26498 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
26499 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
26500 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
26501 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
26502 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070026503 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070026504 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070026505 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070026506 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070026507 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070026508 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
26509 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070026510 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070026511 WDI_MAX_KEY_LENGTH);
26512 }
Jeff Johnson295189b2012-06-20 16:38:30 -070026513 }
26514 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
26515 {
Jeff Johnsone7245742012-09-05 17:12:55 -070026516 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 sizeof(phalConfigBSS->extSetStaKeyParam) );
26518 }
26519
26520#endif /*WLAN_FEATURE_VOWIFI_11R*/
26521
Jeff Johnsone7245742012-09-05 17:12:55 -070026522#ifdef WLAN_FEATURE_11AC
26523 if(phalConfigBSS_V1 != NULL)
26524 {
26525 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
26526 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
26527 }
26528#endif
26529
Jeff Johnson295189b2012-06-20 16:38:30 -070026530}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
26531
26532
Jeff Johnsone7245742012-09-05 17:12:55 -070026533/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070026534 pointed to by user data */
26535WPT_STATIC WPT_INLINE void
26536WDI_ExtractRequestCBFromEvent
26537(
26538 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070026539 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 void** ppUserData
26541)
26542{
26543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26544 switch ( pEvent->wdiRequest )
26545 {
26546 case WDI_START_REQ:
26547 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26548 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
26549 break;
26550 case WDI_STOP_REQ:
26551 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26552 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
26553 break;
26554 case WDI_INIT_SCAN_REQ:
26555 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26556 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
26557 break;
26558 case WDI_START_SCAN_REQ:
26559 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26560 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
26561 break;
26562 case WDI_END_SCAN_REQ:
26563 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26564 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
26565 break;
26566 case WDI_FINISH_SCAN_REQ:
26567 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26568 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
26569 break;
26570 case WDI_JOIN_REQ:
26571 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26572 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
26573 break;
26574 case WDI_CONFIG_BSS_REQ:
26575 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26576 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
26577 break;
26578 case WDI_DEL_BSS_REQ:
26579 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26580 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
26581 break;
26582 case WDI_POST_ASSOC_REQ:
26583 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26584 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
26585 break;
26586 case WDI_DEL_STA_REQ:
26587 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26588 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
26589 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053026590
26591 case WDI_ADD_STA_SELF_REQ:
26592 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26593 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
26594 break;
26595
Jeff Johnson295189b2012-06-20 16:38:30 -070026596 case WDI_DEL_STA_SELF_REQ:
26597 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26598 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
26599 break;
26600
26601 case WDI_SET_BSS_KEY_REQ:
26602 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26603 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
26604 break;
26605 case WDI_RMV_BSS_KEY_REQ:
26606 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26607 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
26608 break;
26609 case WDI_SET_STA_KEY_REQ:
26610 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26611 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
26612 break;
26613 case WDI_RMV_STA_KEY_REQ:
26614 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26615 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
26616 break;
26617 case WDI_ADD_TS_REQ:
26618 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26619 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
26620 break;
26621 case WDI_DEL_TS_REQ:
26622 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26623 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
26624 break;
26625 case WDI_UPD_EDCA_PRMS_REQ:
26626 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26627 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
26628 break;
26629 case WDI_ADD_BA_SESSION_REQ:
26630 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26631 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
26632 break;
26633 case WDI_DEL_BA_REQ:
26634 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26635 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
26636 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026637#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 case WDI_TSM_STATS_REQ:
26639 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26640 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
26641 break;
26642#endif
26643 case WDI_CH_SWITCH_REQ:
26644 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26645 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
26646 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080026647 case WDI_CH_SWITCH_REQ_V1:
26648 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
26649 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
26650 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026651 case WDI_CONFIG_STA_REQ:
26652 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26653 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
26654 break;
26655 case WDI_SET_LINK_ST_REQ:
26656 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26657 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
26658 break;
26659 case WDI_GET_STATS_REQ:
26660 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26661 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
26662 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026663#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080026664 case WDI_GET_ROAM_RSSI_REQ:
26665 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26666 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
26667 break;
26668#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026669 case WDI_UPDATE_CFG_REQ:
26670 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26671 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
26672 break;
26673 case WDI_ADD_BA_REQ:
26674 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26675 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
26676 break;
26677 case WDI_TRIGGER_BA_REQ:
26678 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26679 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
26680 break;
26681 case WDI_UPD_BCON_PRMS_REQ:
26682 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26683 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
26684 break;
26685 case WDI_SND_BCON_REQ:
26686 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26687 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
26688 break;
26689 case WDI_ENTER_BMPS_REQ:
26690 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26691 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
26692 break;
26693 case WDI_EXIT_BMPS_REQ:
26694 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26695 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
26696 break;
Mihir Shetea4306052014-03-25 00:02:54 +053026697 case WDI_ENTER_IMPS_REQ:
26698 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26699 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
26700 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026701 case WDI_ENTER_UAPSD_REQ:
26702 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26703 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26704 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026705 case WDI_EXIT_UAPSD_REQ:
26706 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26707 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26708 break;
26709 case WDI_SET_UAPSD_PARAM_REQ:
26710 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26711 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
26712 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026713 case WDI_UPDATE_UAPSD_PARAM_REQ:
26714 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26715 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26716 break;
26717 case WDI_CONFIGURE_RXP_FILTER_REQ:
26718 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26719 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
26720 break;
26721 case WDI_SET_BEACON_FILTER_REQ:
26722 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26723 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
26724 break;
26725 case WDI_REM_BEACON_FILTER_REQ:
26726 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26727 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070026728 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026729 case WDI_SET_RSSI_THRESHOLDS_REQ:
26730 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26731 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
26732 break;
26733 case WDI_HOST_OFFLOAD_REQ:
26734 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26735 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
26736 break;
26737 case WDI_WOWL_ADD_BC_PTRN_REQ:
26738 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26739 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
26740 break;
26741 case WDI_WOWL_DEL_BC_PTRN_REQ:
26742 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26743 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
26744 break;
26745 case WDI_WOWL_ENTER_REQ:
26746 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26747 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
26748 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026749 case WDI_WOWL_EXIT_REQ:
26750 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26751 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
26752 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026753 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
26754 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26755 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
26756 break;
26757 case WDI_FLUSH_AC_REQ:
26758 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26759 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
26760 break;
26761 case WDI_BTAMP_EVENT_REQ:
26762 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26763 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
26764 break;
26765 case WDI_KEEP_ALIVE_REQ:
26766 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26767 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
26768 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026769#if defined FEATURE_WLAN_SCAN_PNO
26770 case WDI_SET_PREF_NETWORK_REQ:
26771 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26772 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
26773 break;
26774 case WDI_SET_RSSI_FILTER_REQ:
26775 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26776 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
26777 break;
26778 case WDI_UPDATE_SCAN_PARAMS_REQ:
26779 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
26780 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
26781 break;
26782#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026783 case WDI_SET_TX_PER_TRACKING_REQ:
26784 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26785 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026786 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026787#if defined WLAN_FEATURE_PACKET_FILTERING
26788 case WDI_8023_MULTICAST_LIST_REQ:
26789 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26790 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
26791 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026792 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
26793 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26794 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
26795 break;
26796 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
26797 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26798 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
26799 break;
26800 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
26801 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26802 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
26803 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026804#endif
26805 case WDI_SET_POWER_PARAMS_REQ:
26806 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26807 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
26808 break;
26809#if defined WLAN_FEATURE_GTK_OFFLOAD
26810 case WDI_GTK_OFFLOAD_REQ:
26811 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
26812 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
26813 break;
26814 case WDI_GTK_OFFLOAD_GETINFO_REQ:
26815 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
26816 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
26817 break;
26818#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026819
Jeff Johnson295189b2012-06-20 16:38:30 -070026820 default:
26821 *ppfnReqCB = NULL;
26822 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026823 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026824 }
26825}/*WDI_ExtractRequestCBFromEvent*/
26826
26827
26828/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026829 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070026830 frame xtl is enabled for a particular STA.
26831
26832 WDI_PostAssocReq must have been called.
26833
Jeff Johnsone7245742012-09-05 17:12:55 -070026834 @param uSTAIdx: STA index
26835
Jeff Johnson295189b2012-06-20 16:38:30 -070026836 @see WDI_PostAssocReq
26837 @return Result of the function call
26838*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026839wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070026840WDI_IsHwFrameTxTranslationCapable
26841(
26842 wpt_uint8 uSTAIdx
26843)
26844{
Jeff Johnsone7245742012-09-05 17:12:55 -070026845 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070026846 uma value*/
26847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026848 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026849 ------------------------------------------------------------------------*/
26850 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26851 {
26852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26853 "WDI API call before module is initialized - Fail request");
26854
Jeff Johnsone7245742012-09-05 17:12:55 -070026855 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026856 }
26857
Gopichand Nakkala976e3252013-01-03 15:45:56 -080026858#ifdef WLAN_SOFTAP_VSTA_FEATURE
26859 if (IS_VSTA_IDX(uSTAIdx))
26860 {
26861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26862 "STA %d is a Virtual STA, "
26863 "HW frame translation disabled", uSTAIdx);
26864 return eWLAN_PAL_FALSE;
26865 }
26866#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070026867
Jeff Johnson295189b2012-06-20 16:38:30 -070026868 return gWDICb.bFrameTransEnabled;
26869}/*WDI_IsHwFrameTxTranslationCapable*/
26870
Katya Nigam6201c3e2014-05-27 17:51:42 +053026871
26872/**
26873 @brief WDI_IsSelfSTA - check if staid is self sta index
26874
26875
26876 @param pWDICtx: pointer to the WLAN DAL context
26877 ucSTAIdx: station index
26878
26879 @return Result of the function call
26880*/
26881wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
26882{
26883 wpt_uint8 ucSTAType;
26884
26885 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
26886 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26887 {
26888 if( ucSTAType == WDI_STA_ENTRY_SELF )
26889 return eWLAN_PAL_TRUE;
26890 }
26891
26892 return eWLAN_PAL_FALSE;
26893}
26894
26895
26896
Jeff Johnson295189b2012-06-20 16:38:30 -070026897#ifdef FEATURE_WLAN_SCAN_PNO
26898/**
26899 @brief WDI_SetPreferredNetworkList
26900
Jeff Johnsone7245742012-09-05 17:12:55 -070026901 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026902 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026903
Jeff Johnson295189b2012-06-20 16:38:30 -070026904 wdiPNOScanCb: callback for passing back the response
26905 of the Set PNO operation received from the
26906 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026907
Jeff Johnson295189b2012-06-20 16:38:30 -070026908 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026909 callback
26910
Jeff Johnson295189b2012-06-20 16:38:30 -070026911 @return Result of the function call
26912*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026913WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026914WDI_SetPreferredNetworkReq
26915(
26916 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26917 WDI_PNOScanCb wdiPNOScanCb,
26918 void* pUserData
26919)
26920{
26921 WDI_EventInfoType wdiEventData = {{0}};
26922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26923
26924 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026925 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026926 ------------------------------------------------------------------------*/
26927 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26928 {
26929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26930 "WDI API call before module is initialized - Fail request");
26931
Jeff Johnsone7245742012-09-05 17:12:55 -070026932 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026933 }
26934
26935 /*------------------------------------------------------------------------
26936 Fill in Event data and post to the Main FSM
26937 ------------------------------------------------------------------------*/
26938 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026939 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026940 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026941 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026942 wdiEventData.pUserData = pUserData;
26943
26944 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26945}
26946
26947
26948/**
26949 @brief WDI_SetRssiFilterReq
26950
Jeff Johnsone7245742012-09-05 17:12:55 -070026951 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026952 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026953
Jeff Johnson295189b2012-06-20 16:38:30 -070026954 wdiRssiFilterCb: callback for passing back the response
26955 of the Set RSSI Filter operation received from the
26956 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026957
Jeff Johnson295189b2012-06-20 16:38:30 -070026958 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026959 callback
26960
Jeff Johnson295189b2012-06-20 16:38:30 -070026961 @return Result of the function call
26962*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026963WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026964WDI_SetRssiFilterReq
26965(
26966 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26967 WDI_RssiFilterCb wdiRssiFilterCb,
26968 void* pUserData
26969)
26970{
26971 WDI_EventInfoType wdiEventData = {{0}};
26972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26973
26974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026976 ------------------------------------------------------------------------*/
26977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26978 {
26979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26980 "WDI API call before module is initialized - Fail request");
26981
Jeff Johnsone7245742012-09-05 17:12:55 -070026982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026983 }
26984
26985 /*------------------------------------------------------------------------
26986 Fill in Event data and post to the Main FSM
26987 ------------------------------------------------------------------------*/
26988 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026989 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026990 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026991 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026992 wdiEventData.pUserData = pUserData;
26993
26994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26995}/*WDI_SetRssiFilterReq*/
26996
26997/**
26998 @brief WDI_UpdateScanParamsReq
26999
Jeff Johnsone7245742012-09-05 17:12:55 -070027000 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070027001 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070027002
Jeff Johnson295189b2012-06-20 16:38:30 -070027003 wdiUpdateScanParamsCb: callback for passing back the response
27004 of the Set PNO operation received from the
27005 device
Jeff Johnsone7245742012-09-05 17:12:55 -070027006
Jeff Johnson295189b2012-06-20 16:38:30 -070027007 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070027008 callback
27009
Jeff Johnson295189b2012-06-20 16:38:30 -070027010 @return Result of the function call
27011*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027012WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027013WDI_UpdateScanParamsReq
27014(
27015 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
27016 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
27017 void* pUserData
27018)
27019{
27020 WDI_EventInfoType wdiEventData = {{0}};
27021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27022
27023 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027024 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027025 ------------------------------------------------------------------------*/
27026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27027 {
27028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27029 "WDI API call before module is initialized - Fail request");
27030
Jeff Johnsone7245742012-09-05 17:12:55 -070027031 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027032 }
27033
27034 /*------------------------------------------------------------------------
27035 Fill in Event data and post to the Main FSM
27036 ------------------------------------------------------------------------*/
27037 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027038 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027039 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027040 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070027041 wdiEventData.pUserData = pUserData;
27042
27043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27044}
27045
27046/**
Jeff Johnsone7245742012-09-05 17:12:55 -070027047 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070027048 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070027049
27050 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070027051 pwdiPNOScanReqParams: pointer to the info received
27052 from upper layers
27053 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070027054 and its size
27055
Jeff Johnson295189b2012-06-20 16:38:30 -070027056 @return Result of the function call
27057*/
27058
27059WDI_Status
27060WDI_PackPreferredNetworkList
27061(
27062 WDI_ControlBlockType* pWDICtx,
27063 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
27064 wpt_uint8** ppSendBuffer,
27065 wpt_uint16* pSize
27066)
27067{
Jeff Johnsone7245742012-09-05 17:12:55 -070027068 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027069 wpt_uint16 usDataOffset = 0;
27070 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027071 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027072 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070027073 /*-----------------------------------------------------------------------
27074 Get message buffer
27075 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027076 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027077 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070027078 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027079 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070027080 {
27081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070027082 "Unable to get send buffer in Set PNO req %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070027083 pwdiPNOScanReqParams);
27084 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027085 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027086 }
27087
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027088 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
27089
Jeff Johnson295189b2012-06-20 16:38:30 -070027090 /*-------------------------------------------------------------------------
27091 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
27092 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027093 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070027094 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027095 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070027096 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
27097
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027098 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070027099 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070027100 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070027101 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070027102 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
27103
27104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027105 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027106 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
27107 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
27108 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
27109
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027110 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027111 {
27112 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027113 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070027114 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
27115
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027116 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027117 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027118 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070027119
27120 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027121 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070027122 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070027123
27124 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027125 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070027126 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070027127
Jeff Johnsone7245742012-09-05 17:12:55 -070027128 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070027129 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027130 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070027131 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
27132 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27133 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
27134 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027135
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027136 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070027137 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027138 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070027139
27140 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027141 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070027142 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
27143
27144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027145 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027146 pPrefNetwListParams->aNetworks[i].ssId.length,
27147 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070027148 }
27149
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027150 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070027151 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070027152 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
27153 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
27154 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
27155
27156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070027157 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027158 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070027159 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
27160 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
27161
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027162 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027163 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027164 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070027165 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027166 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070027167 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
27168 }
27169
27170 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027171 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070027172 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
27173 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
27174 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070027175 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027176
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027177 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070027178 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027179 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027180
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027181 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070027182 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
27183 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
27184 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070027185 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027186
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027187 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070027188 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027189 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027190
27191 /*Set the output values*/
27192 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070027193 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027194
27195 return WDI_STATUS_SUCCESS;
27196}/*WDI_PackPreferredNetworkList*/
27197
27198/**
Jeff Johnsone7245742012-09-05 17:12:55 -070027199 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070027200 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070027201
27202 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070027203 pwdiPNOScanReqParams: pointer to the info received
27204 from upper layers
27205 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070027206 and its size
27207
Jeff Johnson295189b2012-06-20 16:38:30 -070027208 @return Result of the function call
27209*/
27210
27211WDI_Status
27212WDI_PackPreferredNetworkListNew
27213(
27214 WDI_ControlBlockType* pWDICtx,
27215 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
27216 wpt_uint8** ppSendBuffer,
27217 wpt_uint16* pSize
27218)
27219{
Jeff Johnsone7245742012-09-05 17:12:55 -070027220 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027221 wpt_uint16 usDataOffset = 0;
27222 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027223 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027224 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070027225
27226 /*-----------------------------------------------------------------------
27227 Get message buffer
27228 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027229 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027230 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070027231 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027232 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070027233 {
27234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070027235 "Unable to get send buffer in Set PNO req %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070027236 pwdiPNOScanReqParams);
27237 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027239 }
27240
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027241 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
27242
Jeff Johnson295189b2012-06-20 16:38:30 -070027243 /*-------------------------------------------------------------------------
27244 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
27245 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027246 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070027247 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027248 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070027249 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
27250
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027251 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070027252 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070027253 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070027254 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070027255 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
27256
27257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027258 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027259 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
27260 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
27261 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
27262
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027263 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027264 {
27265 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027266 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070027267 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
27268
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027269 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070027270 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027271 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070027272
27273 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027274 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070027275 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070027276
27277 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027278 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070027279 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070027280
27281 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027282 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070027283 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027284
Jeff Johnsone7245742012-09-05 17:12:55 -070027285 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070027286 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027287 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070027288 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
27289
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027290 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070027291 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027292 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070027293
27294 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027295 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070027296 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
27297
27298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027299 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027300 pPrefNetwListParams->aNetworks[i].ssId.length,
27301 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070027302 }
27303
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027304 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070027305 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070027306 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
27307 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
27308 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
27309
27310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027311 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027312 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070027313 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
27314 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
27315
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027316 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027317 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027318 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070027319 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027320 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070027321 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
27322 }
27323
27324 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027325 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070027326 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
27327 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
27328 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070027329 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027330
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027331 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070027332 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027333 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027334
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027335 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070027336 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
27337 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
27338 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070027339 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027340
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027341 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070027342 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027343 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027344
Jeff Johnson295189b2012-06-20 16:38:30 -070027345
27346 /*Set the output values*/
27347 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070027348 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027349
27350 return WDI_STATUS_SUCCESS;
27351}/*WDI_PackPreferredNetworkListNew*/
27352
27353/**
27354 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027355
27356 @param pWDICtx: pointer to the WLAN DAL context
27357 pEventData: pointer to the event information structure
27358
Jeff Johnson295189b2012-06-20 16:38:30 -070027359 @return Result of the function call
27360*/
27361WDI_Status
27362WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027363(
Jeff Johnson295189b2012-06-20 16:38:30 -070027364 WDI_ControlBlockType* pWDICtx,
27365 WDI_EventInfoType* pEventData
27366)
27367{
27368 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
27369 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027370 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027371 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070027372 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027373
27374 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027375 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027376 -------------------------------------------------------------------------*/
27377 if (( NULL == pEventData ) ||
27378 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
27379 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
27380 {
27381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027385 }
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053027386 /*----------------------------------------------------------------------
27387 Avoid Enable PNO during any active session or an ongoing session
Agrawal Ashishcff31692016-12-16 17:17:50 +053027388 Allow only if SAP auth offload feature is enabled
27389 ----------------------------------------------------------------------*/
27390 if ((pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
27391 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) &&
27392 !WDI_getFwWlanFeatCaps(SAP_OFFLOADS))
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053027393 {
Agrawal Ashishcff31692016-12-16 17:17:50 +053027394 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053027395 "%s:(Active/Ongoing Session) - Fail request", __func__);
27396
Agrawal Ashishcff31692016-12-16 17:17:50 +053027397 return WDI_STATUS_E_FAILURE;
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053027398 }
27399
Jeff Johnson295189b2012-06-20 16:38:30 -070027400 /*-------------------------------------------------------------------------
27401 Pack the PNO request structure based on version
27402 -------------------------------------------------------------------------*/
27403 if ( pWDICtx->wdiPNOVersion > 0 )
27404 {
27405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027406 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070027407 pWDICtx->wdiPNOVersion);
27408
27409 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
27410 &pSendBuffer, &usSendSize);
27411 }
27412 else
27413 {
27414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027415 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070027416 pWDICtx->wdiPNOVersion);
27417
27418 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
27419 &pSendBuffer, &usSendSize);
27420 }
27421
27422 if (( WDI_STATUS_SUCCESS != wdiStatus )||
27423 ( NULL == pSendBuffer )||( 0 == usSendSize ))
27424 {
27425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027426 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027428 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027429 }
27430
27431 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027432 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027433
27434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027435 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027436 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027437 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27438 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027439}
27440
27441/**
27442 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027443
27444 @param pWDICtx: pointer to the WLAN DAL context
27445 pEventData: pointer to the event information structure
27446
Jeff Johnson295189b2012-06-20 16:38:30 -070027447 @see
27448 @return Result of the function call
27449*/
27450WDI_Status
27451WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027452(
Jeff Johnson295189b2012-06-20 16:38:30 -070027453 WDI_ControlBlockType* pWDICtx,
27454 WDI_EventInfoType* pEventData
27455)
27456{
27457 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
27458 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027459 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027460 wpt_uint16 usDataOffset = 0;
27461 wpt_uint16 usSendSize = 0;
27462 wpt_uint8 ucRssiThreshold;
27463
27464 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027465 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027466 -------------------------------------------------------------------------*/
27467 if (( NULL == pEventData ) ||
27468 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
27469 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
27470 {
27471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027472 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027473 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027474 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027475 }
27476
27477 /*-----------------------------------------------------------------------
27478 Get message buffer
27479 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053027480 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027481 sizeof(ucRssiThreshold),
27482 &pSendBuffer, &usDataOffset, &usSendSize))||
27483 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
27484 {
27485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070027486 "Unable to get send buffer in Set PNO req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070027487 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
27488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027490 }
27491
27492 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
27493
Jeff Johnsone7245742012-09-05 17:12:55 -070027494 wpalMemoryCopy( pSendBuffer+usDataOffset,
27495 &ucRssiThreshold,
27496 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070027497
27498 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027499 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027500
27501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027502 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
27505 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027506}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027507#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
27508/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027509 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070027510
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027511 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027512 by the Device Interface
27513
27514 wdiRoamOffloadScancb: callback for passing back the response
27515 of the Roam Candidate Lookup Req operation received from the
27516 device
27517
27518 pUserData: user data will be passed back with the
27519 callback
27520 @return Result of the function call
27521*/
27522WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027523WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027524(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027525 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027526 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
27527 void* pUserData
27528)
27529{
27530 WDI_EventInfoType wdiEventData = {{0}};
27531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27532
27533 /*------------------------------------------------------------------------
27534 Sanity Check
27535 ------------------------------------------------------------------------*/
27536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27537 {
27538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27539 "WDI API call before module is initialized - Fail request");
27540
27541 return WDI_STATUS_E_NOT_ALLOWED;
27542 }
27543
27544 /*------------------------------------------------------------------------
27545 Fill in Event data and post to the Main FSM
27546 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027547 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
27548 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
27549 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027550 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
27551 wdiEventData.pUserData = pUserData;
27552
27553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27554}
27555
Kapil Guptab3a981b2016-06-26 13:36:51 +053027556WDI_Status
27557WDI_PERRoamScanOffloadReq(WDI_PERRoamOffloadScanInfo
27558 *pwdiPERRoamScanOffloadReqParams,
27559 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb,
27560 void *pUserData)
27561{
27562 WDI_EventInfoType wdiEventData = {{0}};
27563
27564 if (eWLAN_PAL_FALSE == gWDIInitialized) {
27565 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27566 "WDI API call before module is initialized - Fail request");
27567
27568 return WDI_STATUS_E_NOT_ALLOWED;
27569 }
27570
27571 wdiEventData.wdiRequest = WDI_PER_ROAM_SCAN_OFFLOAD_REQ;
27572 wdiEventData.pEventData = pwdiPERRoamScanOffloadReqParams;
27573 wdiEventData.uEventDataSize = sizeof(*pwdiPERRoamScanOffloadReqParams);
27574 wdiEventData.pCBfnc = wdiPERRoamOffloadScancb;
27575 wdiEventData.pUserData = pUserData;
27576
27577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27578}
27579
27580WDI_Status
27581WDI_PERRoamScanTriggerReq(WDI_PERRoamTriggerScanInfo
27582 *pwdiPERRoamScanTriggerReqParams,
27583 WDI_PERRoamTriggerScanCb wdiPERRoamTriggerScancb,
27584 void *pUserData)
27585{
27586 WDI_EventInfoType wdiEventData = {{0}};
27587 if (eWLAN_PAL_FALSE == gWDIInitialized) {
27588 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27589 "WDI API call before module is initialized - Fail request");
27590
27591 return WDI_STATUS_E_NOT_ALLOWED;
27592 }
27593
27594 wdiEventData.wdiRequest = WDI_PER_ROAM_SCAN_TRIGGER_REQ;
27595 wdiEventData.pEventData = pwdiPERRoamScanTriggerReqParams;
27596 wdiEventData.uEventDataSize = sizeof(*pwdiPERRoamScanTriggerReqParams);
27597 wdiEventData.pCBfnc = wdiPERRoamTriggerScancb;
27598 wdiEventData.pUserData = pUserData;
27599
27600 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27601}
27602
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027603void
27604WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
27605{
27606 switch (wdiEdType)
27607 {
27608 case WDI_ED_NONE:
27609 *EdType = eED_NONE;
27610 break;
27611 case WDI_ED_WEP40:
27612 case WDI_ED_WEP104:
27613 *EdType = eED_WEP;
27614 break;
27615 case WDI_ED_TKIP:
27616 *EdType = eED_TKIP;
27617 break;
27618 case WDI_ED_CCMP:
27619#ifdef WLAN_FEATURE_11W
27620 case WDI_ED_AES_128_CMAC:
27621#endif
27622 *EdType = eED_CCMP;
27623 break;
27624#ifdef FEATURE_WLAN_WAPI
27625 case WDI_ED_WPI:
27626 *EdType = eED_WPI;
27627 break;
27628#endif
27629 case WDI_ED_ANY:
27630 *EdType = eED_ANY;
27631 break;
27632
27633 default:
27634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27635 "%s: Unknown Encryption Type", __func__);
27636 break;
27637 }
27638}
27639
27640/**
27641 @brief Helper function to pack Start Roam Candidate Lookup
27642 Request parameters
27643
27644 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027645 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027646 from upper layers
27647 ppSendBuffer, pSize - out pointers of the packed buffer
27648 and its size
27649
27650 @return Result of the function call
27651*/
27652
27653WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027654WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027655(
27656 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027657 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027658 wpt_uint8** ppSendBuffer,
27659 wpt_uint16* pSize
27660)
27661{
27662 wpt_uint8* pSendBuffer = NULL;
27663 wpt_uint16 usDataOffset = 0;
27664 wpt_uint16 usSendSize = 0;
27665 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
27666 wpt_uint8 i;
27667 /*-----------------------------------------------------------------------
27668 Get message buffer
27669 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027671 sizeof(tRoamCandidateListParams),
27672 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070027673 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027674 {
27675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070027676 "Unable to get send buffer in Start Roam Candidate Lookup Req %pK",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027677 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027678 WDI_ASSERT(0);
27679 return WDI_STATUS_E_FAILURE;
27680 }
27681 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070027682 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027683 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027684 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027685 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027686 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027687 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027688 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027689 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027690 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027691 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027692
27693 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027694 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027695 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027696 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027697 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
27698 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027699 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
27700 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
27701 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
27702 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
27703 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080027704 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027705 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080027706 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027707 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
27708 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
27709 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
27710 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
27711 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
27712 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
27713 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080027714 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027715 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027716 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
27717 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
27718 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Sreelakshmi Konamki70bfdaf2017-05-29 18:47:29 +053027719 pRoamCandidateListParams->WeakZoneRssiThresholdForRoam =
27720 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.WeakZoneRssiThresholdForRoam;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027721
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
27723 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
27724 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
27725 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
27726 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
27727 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Sreelakshmi Konamki70bfdaf2017-05-29 18:47:29 +053027728 "HomeAwayTime=%d RssiThesholdForRoam=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027729 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
27730 pRoamCandidateListParams->RoamScanOffloadEnabled,
27731 pRoamCandidateListParams->Command,
27732 pRoamCandidateListParams->StartScanReason,
27733 pRoamCandidateListParams->NeighborScanTimerPeriod,
27734 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
27735 pRoamCandidateListParams->NeighborScanChannelMinTime,
27736 pRoamCandidateListParams->NeighborScanChannelMaxTime,
27737 pRoamCandidateListParams->EmptyRefreshScanPeriod,
27738 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
27739 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
27740 pRoamCandidateListParams->ConnectedNetwork.authentication,
27741 pRoamCandidateListParams->ConnectedNetwork.encryption,
27742 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
27743 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
Sreelakshmi Konamki70bfdaf2017-05-29 18:47:29 +053027744 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime,
27745 pRoamCandidateListParams->WeakZoneRssiThresholdForRoam);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027746 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027747 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027748 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027749 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027750 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
27751 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027752 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027753 pRoamCandidateListParams->us24GProbeSize);
27754 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027755 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027756 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027757 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027758 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
27759 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027760 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027761 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027762 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
27763 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
27764 pRoamCandidateListParams->nProbes =
27765 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
27766 pRoamCandidateListParams->HomeAwayTime =
27767 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
27768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027769 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
27770 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027771 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027772 }
27773
27774
27775 /*Set the output values*/
27776 *ppSendBuffer = pSendBuffer;
27777 *pSize = usSendSize;
27778 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027779}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027780
27781/**
27782 @brief Process Start Roam Candidate Lookup Request function
27783
27784 @param pWDICtx: pointer to the WLAN DAL context
27785 pEventData: pointer to the event information structure
27786
27787 @return Result of the function call
27788*/
27789WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027790WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027791(
27792 WDI_ControlBlockType* pWDICtx,
27793 WDI_EventInfoType* pEventData
27794)
27795{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027796 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027797 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
27798 wpt_uint8* pSendBuffer = NULL;
27799 wpt_uint16 usSendSize = 0;
27800 WDI_Status wdiStatus;
27801 /*-------------------------------------------------------------------------
27802 Sanity check
27803 -------------------------------------------------------------------------*/
27804 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027805 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027806 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
27807 {
27808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27809 "%s: Invalid parameters", __func__);
27810 WDI_ASSERT(0);
27811 return WDI_STATUS_E_FAILURE;
27812 }
27813
27814 /*-------------------------------------------------------------------------
27815 Pack the Start Roam Candidate Lookup request structure based on version
27816 -------------------------------------------------------------------------*/
27817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27818 "%s: Packing Roam Candidate Lookup request ", __func__);
27819
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027820 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027821 &pSendBuffer, &usSendSize);
27822
27823 if (( WDI_STATUS_SUCCESS != wdiStatus )||
27824 ( NULL == pSendBuffer )||( 0 == usSendSize ))
27825 {
27826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27827 "%s: failed to pack request parameters", __func__);
27828 WDI_ASSERT(0);
27829 return wdiStatus;
27830 }
27831
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027832 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
27833 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027834
27835 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027836 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027837 -------------------------------------------------------------------------*/
27838 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027839 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027840}
27841
Kapil Guptab3a981b2016-06-26 13:36:51 +053027842
27843WDI_Status
27844WDI_ProcessPERRoamScanOffloadReq(WDI_ControlBlockType *pWDICtx,
27845 WDI_EventInfoType *pEventData)
27846{
27847 wpt_uint16 usSendSize = 0;
27848 wpt_uint16 usDataOffset = 0;
27849 wpt_uint8 *pSendBuffer = NULL;
27850 WDI_PERRoamOffloadScanInfo *wdiPERRoamOffloadReq = NULL;
27851 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb = NULL;
27852 tSetPerRoamConfigReq halPERRoamConfigReq;
27853
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027854 if (!pEventData) {
27855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27856 "%s: *pEventdata is null", __func__);
27857 WDI_ASSERT(0);
27858 return WDI_STATUS_E_FAILURE;
27859 }
27860
Kapil Guptab3a981b2016-06-26 13:36:51 +053027861 wdiPERRoamOffloadReq = (WDI_PERRoamOffloadScanInfo *)pEventData->pEventData;
27862 wdiPERRoamOffloadScancb = (WDI_PERRoamOffloadScanCb)pEventData->pCBfnc;
27863
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027864 if (!wdiPERRoamOffloadReq || !wdiPERRoamOffloadScancb) {
Kapil Guptab3a981b2016-06-26 13:36:51 +053027865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27866 "%s: Invalid parameters", __func__);
27867 WDI_ASSERT(0);
27868 return WDI_STATUS_E_FAILURE;
27869 }
27870
27871 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27872 WDI_PER_ROAM_SCAN_OFFLOAD_REQ,
27873 sizeof(halPERRoamConfigReq.perRoamConfigParams),
27874 &pSendBuffer, &usDataOffset, &usSendSize))||
27875 (usSendSize < (usDataOffset +
27876 sizeof(halPERRoamConfigReq.perRoamConfigParams)))) {
27877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27878 "Unable to get send buffer halPERRoamConfigReq Req");
27879 WDI_ASSERT(0);
27880 return WDI_STATUS_E_FAILURE;
27881 }
27882
27883 halPERRoamConfigReq.perRoamConfigParams.request_id =
27884 wdiPERRoamOffloadReq->requestId;
27885 halPERRoamConfigReq.perRoamConfigParams.waitPeriodForNextPERScan =
27886 wdiPERRoamOffloadReq->waitPeriodForNextPERScan;
27887 halPERRoamConfigReq.perRoamConfigParams.rateUpThreshold =
27888 wdiPERRoamOffloadReq->rateUpThreshold;
27889 halPERRoamConfigReq.perRoamConfigParams.rateDownThreshold =
27890 wdiPERRoamOffloadReq->rateDownThreshold;
27891 halPERRoamConfigReq.perRoamConfigParams.isPERRoamCCAEnabled =
27892 wdiPERRoamOffloadReq->isPERRoamCCAEnabled;
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027893 halPERRoamConfigReq.perRoamConfigParams.PERRoamFullScanThreshold =
27894 wdiPERRoamOffloadReq->PERRoamFullScanThreshold;
Kapil Guptab3a981b2016-06-26 13:36:51 +053027895 halPERRoamConfigReq.perRoamConfigParams.PERroamTriggerPercent =
27896 wdiPERRoamOffloadReq->PERroamTriggerPercent;
27897 halPERRoamConfigReq.perRoamConfigParams.PERtimerThreshold =
27898 wdiPERRoamOffloadReq->PERtimerThreshold;
27899
27900 halPERRoamConfigReq.perRoamConfigParams.reserved = 0;
27901
27902 wpalMemoryCopy(pSendBuffer+usDataOffset,
27903 &halPERRoamConfigReq.perRoamConfigParams,
27904 sizeof(halPERRoamConfigReq.perRoamConfigParams));
27905
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27907 "waitPeriodForNextPERScan=%d rateUpThreshold=%d rateDownThreshold=%d isPERRoamCCAEnabled=%d",
Kapil Guptab3a981b2016-06-26 13:36:51 +053027908 halPERRoamConfigReq.perRoamConfigParams.waitPeriodForNextPERScan,
27909 halPERRoamConfigReq.perRoamConfigParams.rateUpThreshold,
27910 halPERRoamConfigReq.perRoamConfigParams.rateDownThreshold,
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027911 halPERRoamConfigReq.perRoamConfigParams.isPERRoamCCAEnabled);
27912 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27913 "PERtimerThreshold=%d PERroamTriggerPercent =%d PERRoamFullScanThreshold %d",
Kapil Guptab3a981b2016-06-26 13:36:51 +053027914 halPERRoamConfigReq.perRoamConfigParams.PERtimerThreshold,
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027915 halPERRoamConfigReq.perRoamConfigParams.PERroamTriggerPercent,
27916 halPERRoamConfigReq.perRoamConfigParams.PERRoamFullScanThreshold);
27917
Kapil Guptab3a981b2016-06-26 13:36:51 +053027918 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27919 wdiPERRoamOffloadScancb, pEventData->pUserData,
27920 WDI_PER_ROAM_SCAN_OFFLOAD_RSP);
27921}
27922
27923WDI_Status
27924WDI_ProcessPERRoamScanTriggerReq(WDI_ControlBlockType *pWDICtx,
27925 WDI_EventInfoType *pEventData)
27926{
27927 wpt_uint16 usSendSize = 0;
27928 wpt_uint16 usDataOffset = 0;
27929 wpt_uint8 *pSendBuffer = NULL;
27930 WDI_PERRoamTriggerScanCb wdiPERRoamTriggerScancb = NULL;
27931 WDI_PERRoamTriggerScanInfo *wdiPERRoamTriggerReq;
27932 tStartRoamScanReq halPERRoamTriggerReq;
27933
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027934 if (!pEventData) {
27935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27936 "%s: pEventdata is null", __func__);
27937 WDI_ASSERT(0);
27938 return WDI_STATUS_E_FAILURE;
27939 }
27940
Kapil Guptab3a981b2016-06-26 13:36:51 +053027941 wdiPERRoamTriggerReq = (WDI_PERRoamTriggerScanInfo *) pEventData->pEventData;
27942 wdiPERRoamTriggerScancb = (WDI_PERRoamTriggerScanCb)pEventData->pCBfnc;
27943
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027944 if (!wdiPERRoamTriggerReq || !wdiPERRoamTriggerScancb) {
Kapil Guptab3a981b2016-06-26 13:36:51 +053027945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27946 "%s: Invalid parameters", __func__);
27947 WDI_ASSERT(0);
27948 return WDI_STATUS_E_FAILURE;
27949 }
27950
27951 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27952 WDI_PER_ROAM_SCAN_TRIGGER_REQ,
27953 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams),
27954 &pSendBuffer, &usDataOffset, &usSendSize))||
27955 (usSendSize < (usDataOffset +
27956 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams)))) {
27957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27958 "Unable to get send buffer in GetFrameLog Req");
27959 WDI_ASSERT(0);
27960 return WDI_STATUS_E_FAILURE;
27961 }
27962
27963 halPERRoamTriggerReq.startRoamScanTriggerParams.roamScanReq =
27964 wdiPERRoamTriggerReq->roamScanReq;
27965
27966 wpalMemoryCopy(pSendBuffer+usDataOffset,
27967 &halPERRoamTriggerReq.startRoamScanTriggerParams,
27968 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams));
27969
27970 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27971 wdiPERRoamTriggerScancb, pEventData->pUserData,
27972 WDI_PER_ROAM_SCAN_TRIGGER_RSP);
27973}
27974
27975
27976
27977
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027978/**
27979 @brief Process Start Roam Candidate Lookup Rsp function (called when a
27980 response is being received over the bus from HAL)
27981
27982 @param pWDICtx: pointer to the WLAN DAL context
27983 pEventData: pointer to the event information structure
27984
27985 @see
27986 @return Result of the function call
27987*/
27988WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027989WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027990(
27991 WDI_ControlBlockType* pWDICtx,
27992 WDI_EventInfoType* pEventData
27993)
27994{
27995 WDI_Status wdiStatus;
27996 eHalStatus halStatus;
27997 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
27998
27999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28000
28001 /*-------------------------------------------------------------------------
28002 Sanity check
28003 -------------------------------------------------------------------------*/
28004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28005 ( NULL == pEventData->pEventData ))
28006 {
28007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28008 "%s: Invalid parameters", __func__);
28009 WDI_ASSERT(0);
28010 return WDI_STATUS_E_FAILURE;
28011 }
28012
28013 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
28014
28015 /*-------------------------------------------------------------------------
28016 Extract response and send it to UMAC
28017 -------------------------------------------------------------------------*/
28018 halStatus = *((eHalStatus*)pEventData->pEventData);
28019 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28020
28021 /*Notify UMAC*/
28022 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
28023
28024 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070028025}/* WDI_ProcessRoamScanOffloadRsp */
Kapil Guptab3a981b2016-06-26 13:36:51 +053028026
28027WDI_Status
28028WDI_ProcessPERRoamScanOffloadRsp(WDI_ControlBlockType *pWDICtx,
28029 WDI_EventInfoType *pEventData)
28030{
28031 WDI_Status wdiStatus;
28032 eHalStatus halStatus;
28033 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb = NULL;
28034
28035 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28036 (NULL == pEventData->pEventData)) {
28037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28038 "%s: Invalid parameters", __func__);
28039 WDI_ASSERT(0);
28040 return WDI_STATUS_E_FAILURE;
28041 }
28042
28043 wdiPERRoamOffloadScancb = (WDI_PERRoamOffloadScanCb)pWDICtx->pfncRspCB;
28044
28045 halStatus = *((eHalStatus*)pEventData->pEventData);
28046 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28047
28048 /*Notify UMAC*/
28049 wdiPERRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
28050
28051 return WDI_STATUS_SUCCESS;
28052}/* WDI_ProcessPERRoamScanOffloadRsp */
28053
28054WDI_Status
28055WDI_ProcessPERRoamScanTriggerRsp
28056(
28057 WDI_ControlBlockType* pWDICtx,
28058 WDI_EventInfoType* pEventData
28059)
28060{
28061 WDI_Status wdiStatus;
28062 eHalStatus halStatus;
28063 WDI_PERRoamOffloadScanCb wdiPERRoamTriggerScancb = NULL;
28064
28065 if ((NULL == pWDICtx) || (NULL == pEventData) ||
28066 (NULL == pEventData->pEventData)) {
28067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28068 "%s: Invalid parameters", __func__);
28069 WDI_ASSERT(0);
28070 return WDI_STATUS_E_FAILURE;
28071 }
28072
28073 wdiPERRoamTriggerScancb = (WDI_PERRoamTriggerScanCb)pWDICtx->pfncRspCB;
28074
28075 halStatus = *((eHalStatus*)pEventData->pEventData);
28076 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28077
28078 /* Notify UMAC */
28079 wdiPERRoamTriggerScancb(wdiStatus, pWDICtx->pRspCBUserData);
28080
28081 return WDI_STATUS_SUCCESS;
28082}/* WDI_ProcessPERRoamScanTriggerRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070028083#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070028084
Kapil Gupta7a3d9b12016-12-20 20:36:38 +053028085#ifdef WLAN_FEATURE_APFIND
Kapil Gupta04897452017-03-13 12:50:35 +053028086#define FIND_AP_WAKELOCK_TIMEOUT 1000
Kapil Gupta7a3d9b12016-12-20 20:36:38 +053028087/**
28088 @brief Process QRF Preferred Network Found Indication function
28089
28090 @param pWDICtx: pointer to the WLAN DAL context
28091 pEventData: pointer to the event information structure
28092
28093 @see
28094 @return Result of the function call
28095*/
28096WDI_Status
28097WDI_ProcessQRFPrefNetworkFoundInd
28098(
28099 WDI_ControlBlockType* pWDICtx,
28100 WDI_EventInfoType* pEventData
28101)
28102{
28103 WDI_LowLevelIndType wdiInd;
28104
28105 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28106 "%s:%d Enter", __func__, __LINE__);
28107
28108 /*-------------------------------------------------------------------------
28109 Sanity check
28110 -------------------------------------------------------------------------*/
28111 if (NULL == pWDICtx)
28112 {
28113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28114 "%s: Invalid parameters", __func__);
28115 WDI_ASSERT( 0 );
28116 return WDI_STATUS_E_FAILURE;
28117 }
Kapil Gupta04897452017-03-13 12:50:35 +053028118 vos_wake_lock_timeout_release(&pWDICtx->find_ap_lock,
28119 FIND_AP_WAKELOCK_TIMEOUT,
28120 WIFI_POWER_EVENT_WAKELOCK_FIND_AP_INDICATION);
Kapil Gupta7a3d9b12016-12-20 20:36:38 +053028121 /*Fill in the indication parameters*/
28122 wdiInd.wdiIndicationType = WDI_AP_FOUND_IND;
28123 if ( pWDICtx->wdiLowLevelIndCB )
28124 {
28125 /*Notify UMAC*/
28126 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28127 }
28128
28129 return WDI_STATUS_SUCCESS;
28130}
28131#endif
28132
Jeff Johnson295189b2012-06-20 16:38:30 -070028133/**
28134 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070028135
28136 @param pWDICtx: pointer to the WLAN DAL context
28137 pEventData: pointer to the event information structure
28138
Jeff Johnson295189b2012-06-20 16:38:30 -070028139 @see
28140 @return Result of the function call
28141*/
28142WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028143WDI_PackUpdateScanParamsReq
28144(
28145 WDI_ControlBlockType* pWDICtx,
28146 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
28147 wpt_uint8** ppSendBuffer,
28148 wpt_uint16* pSize
28149)
28150{
28151 wpt_uint8* pSendBuffer = NULL;
28152 wpt_uint16 usDataOffset = 0;
28153 wpt_uint16 usSendSize = 0;
28154 tUpdateScanParams updateScanParams = {0};
28155
28156
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080028157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028158 "Begin WDI Update Scan Parameters Old Style Params");
28159 /*-----------------------------------------------------------------------
28160 Get message buffer
28161 -----------------------------------------------------------------------*/
28162 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
28163 sizeof(updateScanParams),
28164 &pSendBuffer, &usDataOffset, &usSendSize))||
28165 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
28166 {
28167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028168 "Unable to get send buffer in Update Scan Params req %pK",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028169 pwdiUpdateScanParams);
28170 WDI_ASSERT(0);
28171 return WDI_STATUS_E_FAILURE;
28172 }
28173
28174 //
28175 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
28176 //
28177
28178 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
28179 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
28180
28181 updateScanParams.ucChannelCount =
28182 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
28183 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
28184 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
28185 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
28186
28187 wpalMemoryCopy( updateScanParams.aChannels,
28188 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
28189 updateScanParams.ucChannelCount);
28190
28191
28192 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
28193 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
28194 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
28195 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
28196 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
28197
28198 wpalMemoryCopy( pSendBuffer+usDataOffset,
28199 &updateScanParams,
28200 sizeof(updateScanParams));
28201
28202 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
28203 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
28204
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080028205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028206 "End Update Scan Parameters Old Style");
28207
28208 /*Set the output values*/
28209 *ppSendBuffer = pSendBuffer;
28210 *pSize = usSendSize;
28211
28212 return WDI_STATUS_SUCCESS;
28213}
28214
28215/**
28216 @brief Process Update Scan Params function
28217
28218 @param pWDICtx: pointer to the WLAN DAL context
28219 pEventData: pointer to the event information structure
28220
28221 @see
28222 @return Result of the function call
28223*/
28224WDI_Status
28225WDI_PackUpdateScanParamsReqEx
28226(
28227 WDI_ControlBlockType* pWDICtx,
28228 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
28229 wpt_uint8** ppSendBuffer,
28230 wpt_uint16* pSize
28231)
28232{
28233 wpt_uint8* pSendBuffer = NULL;
28234 wpt_uint16 usDataOffset = 0;
28235 wpt_uint16 usSendSize = 0;
28236 tUpdateScanParamsEx updateScanParams = {0};
28237
28238
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028239 /*-----------------------------------------------------------------------
28240 Get message buffer
28241 -----------------------------------------------------------------------*/
28242 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
28243 sizeof(updateScanParams),
28244 &pSendBuffer, &usDataOffset, &usSendSize))||
28245 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
28246 {
28247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028248 "Unable to get send buffer in Update Scan Params Ex req %pK",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028249 pwdiUpdateScanParams);
28250 WDI_ASSERT(0);
28251 return WDI_STATUS_E_FAILURE;
28252 }
28253
28254 //
28255 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
28256 //
28257
28258 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
28259 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
28260
28261 updateScanParams.ucChannelCount =
28262 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
28263 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
28264 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
28265 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
28266
28267 wpalMemoryCopy( updateScanParams.aChannels,
28268 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
28269 updateScanParams.ucChannelCount);
28270
28271
28272 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
28273 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
28274 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
28275 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
28276 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
28277
28278 wpalMemoryCopy( pSendBuffer+usDataOffset,
28279 &updateScanParams,
28280 sizeof(updateScanParams));
28281
28282 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
28283 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
28284
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028285 /*Set the output values*/
28286 *ppSendBuffer = pSendBuffer;
28287 *pSize = usSendSize;
28288
28289 return WDI_STATUS_SUCCESS;
28290}
28291
28292/**
28293 @brief Process Update Scan Params function
28294
28295 @param pWDICtx: pointer to the WLAN DAL context
28296 pEventData: pointer to the event information structure
28297
28298 @see
28299 @return Result of the function call
28300*/
28301WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028302WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028303(
Jeff Johnson295189b2012-06-20 16:38:30 -070028304 WDI_ControlBlockType* pWDICtx,
28305 WDI_EventInfoType* pEventData
28306)
28307{
28308 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
28309 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028310 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028311 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080028312 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028313
28314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028316 -------------------------------------------------------------------------*/
28317 if (( NULL == pEventData ) ||
28318 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
28319 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
28320 {
28321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028322 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028323 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028324 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028325 }
28326
28327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28328 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070028329
28330 //
28331 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
28332 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028333 if ( pWDICtx->wlanVersion.revision < 1 )
28334 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080028335 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028336 &pSendBuffer, &usSendSize);
28337 }
28338 else
28339 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080028340 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
28341 &pSendBuffer, &usSendSize);
28342 }
28343
28344 if(WDI_STATUS_SUCCESS != wdiStatus)
28345 {
28346 //memory allocation failed
28347 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028348 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028349
Jeff Johnson295189b2012-06-20 16:38:30 -070028350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028351 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028352 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028353 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053028354 wdiUpdateScanParamsCb, pEventData->pUserData,
28355 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028356}
28357
28358/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080028359 @brief Process Update Channel Params function
28360
28361 @param pWDICtx: pointer to the WLAN DAL context
28362 pEventData: pointer to the event information structure
28363
28364 @see
28365 @return Result of the function call
28366*/
28367WDI_Status
28368WDI_ProcessUpdateChannelParamsReq
28369(
28370 WDI_ControlBlockType* pWDICtx,
28371 WDI_EventInfoType* pEventData
28372)
28373{
28374 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
28375 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
28376 wpt_uint8* pSendBuffer = NULL;
28377 wpt_uint16 usDataOffset = 0;
28378 wpt_uint16 usSendSize = 0;
28379 tUpdateChannelReqType *updateChannelParams;
28380 wpt_uint32 usUpdateChanParamSize;
28381 wpt_uint8 num_channels = 0;
28382
28383 /*-------------------------------------------------------------------------
28384 Sanity check
28385 -------------------------------------------------------------------------*/
28386 if (( NULL == pEventData ) ||
28387 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
28388 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
28389 {
28390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28391 "%s: Invalid parameters", __func__);
28392 WDI_ASSERT(0);
28393 return WDI_STATUS_E_FAILURE;
28394 }
28395 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053028396 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080028397
28398 /*-----------------------------------------------------------------------
28399 Get message buffer
28400 -----------------------------------------------------------------------*/
28401 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28402 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
28403 &pSendBuffer, &usDataOffset, &usSendSize))||
28404 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
28405 {
28406 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028407 "Unable to get send buffer in Update Channel Params req %pK",
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080028408 pwdiUpdateChanListParams);
28409 WDI_ASSERT(0);
28410 return WDI_STATUS_E_FAILURE;
28411 }
28412 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
28413
28414 updateChannelParams->numChan = num_channels;
28415 wpalMemoryCopy(&updateChannelParams->chanParam,
28416 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
28417 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
28418
28419 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
28420 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
28421
28422 /*-------------------------------------------------------------------------
28423 Send Update channel request to fw
28424 -------------------------------------------------------------------------*/
28425 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
28426 wdiUpdateChanParamsCb, pEventData->pUserData,
28427 WDI_UPDATE_CHAN_RESP);
28428}
28429
28430/**
Jeff Johnson295189b2012-06-20 16:38:30 -070028431 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070028432
28433 @param pWDICtx: pointer to the WLAN DAL context
28434 pEventData: pointer to the event information structure
28435
Jeff Johnson295189b2012-06-20 16:38:30 -070028436 @see
28437 @return Result of the function call
28438*/
28439WDI_Status
28440WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070028441(
Jeff Johnson295189b2012-06-20 16:38:30 -070028442 WDI_ControlBlockType* pWDICtx,
28443 WDI_EventInfoType* pEventData
28444)
28445{
Srikant Kuppa066904f2013-05-07 13:56:02 -070028446 WDI_LowLevelIndType wdiInd;
28447 tpPrefNetwFoundParams pNetwFoundParams;
28448 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070028449
28450
28451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028453 -------------------------------------------------------------------------*/
28454 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28455 ( NULL == pEventData->pEventData ))
28456 {
28457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028458 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028459 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070028460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028461 }
28462
28463 /*-------------------------------------------------------------------------
28464 Extract indication and send it to UMAC
28465 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070028466 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
28467
28468 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
28469 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
28470 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
28471
28472 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
28473 {
28474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28475 "%s: fail to allocate memory", __func__);
28476 return WDI_STATUS_MEM_FAILURE;
28477 }
28478
28479 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
28480 (pNetwFoundParams->ssId.length < 32 )?
28481 pNetwFoundParams->ssId.length : 32;
28482 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
28483 pNetwFoundParams->ssId.ssId,
28484 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
28485 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
28486 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
28487 pNetwFoundParams->frameLength;
28488 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
28489 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
28490 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028491
28492 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028493 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070028494
Jeff Johnson295189b2012-06-20 16:38:30 -070028495 // DEBUG
28496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053028497 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070028498 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070028499 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070028500 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070028501 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070028502 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
28503
ltimariub77f24b2013-01-24 18:54:33 -080028504 if ( pWDICtx->wdiLowLevelIndCB )
28505 {
28506 /*Notify UMAC*/
28507 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
28508 }
Nishank Aggarwal760a2e42017-02-14 12:49:20 +053028509 else
28510 vos_mem_free( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028511
28512 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028513}
28514
28515/**
28516 @brief Process PNO Rsp function (called when a
28517 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028518
28519 @param pWDICtx: pointer to the WLAN DAL context
28520 pEventData: pointer to the event information structure
28521
Jeff Johnson295189b2012-06-20 16:38:30 -070028522 @see
28523 @return Result of the function call
28524*/
28525WDI_Status
28526WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028527(
Jeff Johnson295189b2012-06-20 16:38:30 -070028528 WDI_ControlBlockType* pWDICtx,
28529 WDI_EventInfoType* pEventData
28530)
28531{
28532 WDI_Status wdiStatus;
28533 eHalStatus halStatus;
28534 WDI_PNOScanCb wdiPNOScanCb = NULL;
28535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28536
28537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028539 -------------------------------------------------------------------------*/
28540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28541 ( NULL == pEventData->pEventData ))
28542 {
28543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028547 }
28548
28549
Jeff Johnsone7245742012-09-05 17:12:55 -070028550 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028551
28552 /*-------------------------------------------------------------------------
28553 Extract response and send it to UMAC
28554 -------------------------------------------------------------------------*/
28555 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028556 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028557
28558 /*Notify UMAC*/
28559 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
28560
Jeff Johnsone7245742012-09-05 17:12:55 -070028561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028562}/*WDI_ProcessSetPreferredNetworkRsp*/
28563
28564/**
28565 @brief Process RSSI Filter Rsp function (called when a
28566 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028567
28568 @param pWDICtx: pointer to the WLAN DAL context
28569 pEventData: pointer to the event information structure
28570
Jeff Johnson295189b2012-06-20 16:38:30 -070028571 @see
28572 @return Result of the function call
28573*/
28574WDI_Status
28575WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028576(
Jeff Johnson295189b2012-06-20 16:38:30 -070028577 WDI_ControlBlockType* pWDICtx,
28578 WDI_EventInfoType* pEventData
28579)
28580{
28581 WDI_Status wdiStatus;
28582 eHalStatus halStatus;
28583 WDI_RssiFilterCb wdiRssiFilterCb;
28584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28585
28586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028588 -------------------------------------------------------------------------*/
28589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28590 ( NULL == pEventData->pEventData ))
28591 {
28592 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028596 }
28597
Jeff Johnsone7245742012-09-05 17:12:55 -070028598 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028599
28600 /*-------------------------------------------------------------------------
28601 Extract response and send it to UMAC
28602 -------------------------------------------------------------------------*/
28603 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028604 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028605
28606 /*Notify UMAC*/
28607 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
28608
Jeff Johnsone7245742012-09-05 17:12:55 -070028609 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028610}/*WDI_ProcessSetRssiFilterRsp*/
28611
28612/**
28613 @brief Process Update Scan Params Rsp function (called when a
28614 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028615
28616 @param pWDICtx: pointer to the WLAN DAL context
28617 pEventData: pointer to the event information structure
28618
Jeff Johnson295189b2012-06-20 16:38:30 -070028619 @see
28620 @return Result of the function call
28621*/
28622WDI_Status
28623WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028624(
Jeff Johnson295189b2012-06-20 16:38:30 -070028625 WDI_ControlBlockType* pWDICtx,
28626 WDI_EventInfoType* pEventData
28627)
28628{
28629 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070028630 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028631 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028632 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28634
28635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028637 -------------------------------------------------------------------------*/
28638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28639 ( NULL == pEventData->pEventData ))
28640 {
28641 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028645 }
28646
28647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028648 "%s: Process UPD scan params ptr : %pK",
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028649 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028650
Jeff Johnsone7245742012-09-05 17:12:55 -070028651 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028652
28653 /*-------------------------------------------------------------------------
28654 Extract response and send it to UMAC
28655 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028656 wpalMemoryCopy( (void *)&halUpdScanParams.status,
28657 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028658 sizeof(halUpdScanParams.status));
28659
28660 uStatus = halUpdScanParams.status;
28661
28662 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070028663 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070028664
28665 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028666 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070028667
Jeff Johnsone7245742012-09-05 17:12:55 -070028668 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028669
28670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028671 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070028672 halUpdScanParams.status);
28673
28674 /*Notify UMAC*/
28675 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28676
Jeff Johnsone7245742012-09-05 17:12:55 -070028677 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028678}
28679#endif // FEATURE_WLAN_SCAN_PNO
28680
28681#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070028682WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028683WDI_8023MulticastListReq
28684(
28685 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
28686 WDI_8023MulticastListCb wdi8023MulticastListCallback,
28687 void* pUserData
28688)
28689{
28690 WDI_EventInfoType wdiEventData;
28691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28692
28693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028694 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028695
28696 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028697 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028698 ------------------------------------------------------------------------*/
28699 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28700 {
28701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28702 "WDI API call before module is initialized - Fail request");
28703
Jeff Johnsone7245742012-09-05 17:12:55 -070028704 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028705 }
28706
28707 /*------------------------------------------------------------------------
28708 Fill in Event data and post to the Main FSM
28709 ------------------------------------------------------------------------*/
28710 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028711 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028712 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028713 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028714 wdiEventData.pUserData = pUserData;
28715
28716 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28717}
28718
Jeff Johnsone7245742012-09-05 17:12:55 -070028719WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028720WDI_ReceiveFilterSetFilterReq
28721(
28722 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
28723 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
28724 void* pUserData
28725)
28726{
28727 WDI_EventInfoType wdiEventData;
28728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28729
28730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028731 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028732
28733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028734 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028735 ------------------------------------------------------------------------*/
28736 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28737 {
28738 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28739 "WDI API call before module is initialized - Fail request");
28740
Jeff Johnsone7245742012-09-05 17:12:55 -070028741 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028742 }
28743
28744 /*------------------------------------------------------------------------
28745 Fill in Event data and post to the Main FSM
28746 ------------------------------------------------------------------------*/
28747 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028748 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
28749 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070028750 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
28751 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028752 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028753 wdiEventData.pUserData = pUserData;
28754
28755
28756 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28757}
28758
Jeff Johnsone7245742012-09-05 17:12:55 -070028759WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028760WDI_FilterMatchCountReq
28761(
28762 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
28763 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
28764 void* pUserData
28765)
28766{
28767 WDI_EventInfoType wdiEventData;
28768 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28769
28770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028771 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028772
28773 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028774 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028775 ------------------------------------------------------------------------*/
28776 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28777 {
28778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28779 "WDI API call before module is initialized - Fail request");
28780
Jeff Johnsone7245742012-09-05 17:12:55 -070028781 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028782 }
28783
28784 /*------------------------------------------------------------------------
28785 Fill in Event data and post to the Main FSM
28786 ------------------------------------------------------------------------*/
28787 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028788 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028789 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028790 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028791 wdiEventData.pUserData = pUserData;
28792
28793
28794 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28795}
28796
Jeff Johnsone7245742012-09-05 17:12:55 -070028797WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028798WDI_ReceiveFilterClearFilterReq
28799(
28800 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
28801 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
28802 void* pUserData
28803)
28804{
28805 WDI_EventInfoType wdiEventData;
28806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28807
28808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028809 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028810
28811 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028812 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028813 ------------------------------------------------------------------------*/
28814 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28815 {
28816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28817 "WDI API call before module is initialized - Fail request");
28818
Jeff Johnsone7245742012-09-05 17:12:55 -070028819 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028820 }
28821
28822 /*------------------------------------------------------------------------
28823 Fill in Event data and post to the Main FSM
28824 ------------------------------------------------------------------------*/
28825 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028826 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028827 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028828 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028829 wdiEventData.pUserData = pUserData;
28830
28831
28832 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28833}
28834
28835/**
28836 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028837
28838 @param pWDICtx: pointer to the WLAN DAL context
28839 pEventData: pointer to the event information structure
28840
Jeff Johnson295189b2012-06-20 16:38:30 -070028841 @see
28842 @return Result of the function call
28843*/
28844WDI_Status
28845WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028846(
Jeff Johnson295189b2012-06-20 16:38:30 -070028847 WDI_ControlBlockType* pWDICtx,
28848 WDI_EventInfoType* pEventData
28849)
28850{
28851 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
28852 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028853 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028854 wpt_uint16 usDataOffset = 0;
28855 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028856 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028857 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070028858 wpt_uint8 ucCurrentBSSSesIdx = 0;
28859 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028860
28861 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028862 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028863
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028864 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
28865 if( NULL == pRcvFltMcAddrListType )
28866 {
28867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28868 "Failed to alloc in WDI_Process8023MulticastListReq");
28869 return WDI_STATUS_E_FAILURE;
28870 }
28871
Jeff Johnson295189b2012-06-20 16:38:30 -070028872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028874 -------------------------------------------------------------------------*/
28875 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028876 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028877 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028878 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028879 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
28880 {
28881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028882 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028883 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028884 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028885 return WDI_STATUS_E_FAILURE;
28886 }
28887
28888 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28889 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
28890 &pBSSSes);
28891 if ( NULL == pBSSSes )
28892 {
28893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028894 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028895 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070028896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028897 }
28898
28899 /*-----------------------------------------------------------------------
28900 Get message buffer
28901 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028902 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28903 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028904 sizeof(tHalRcvFltMcAddrListType),
28905 &pSendBuffer, &usDataOffset, &usSendSize))||
28906 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
28907 {
28908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28909 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070028910 "WDI_Process8023MulticastListReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070028911 pEventData, pwdiFltPktSetMcListReqParamsType,
28912 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070028913 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028914 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028915 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028916 }
28917
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028918 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070028919 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028920 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070028921 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028922 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070028923 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
28924 sizeof(tSirMacAddr));
28925 }
28926
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028927 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028928 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028929 pRcvFltMcAddrListType,
28930 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070028931
28932 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028933 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028934
28935
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028936 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028937 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028938 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028939 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028940 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028941 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028942 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028943}
28944
28945/**
28946 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028947
28948 @param pWDICtx: pointer to the WLAN DAL context
28949 pEventData: pointer to the event information structure
28950
Jeff Johnson295189b2012-06-20 16:38:30 -070028951 @see
28952 @return Result of the function call
28953*/
28954WDI_Status
28955WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028956(
Jeff Johnson295189b2012-06-20 16:38:30 -070028957 WDI_ControlBlockType* pWDICtx,
28958 WDI_EventInfoType* pEventData
28959)
28960{
28961 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
28962 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028963 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028964 wpt_uint16 usDataOffset = 0;
28965 wpt_uint16 usSendSize = 0;
28966 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028967 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028968 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070028969 wpt_uint8 ucCurrentBSSSesIdx = 0;
28970 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028971 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
28972 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070028973
28974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028975 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028976
28977 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028978 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028979 -------------------------------------------------------------------------*/
28980 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028981 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070028982 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028983 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028984 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
28985 {
28986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028987 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028988 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028989 return WDI_STATUS_E_FAILURE;
28990 }
28991
28992 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28993 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
28994 &pBSSSes);
28995 if ( NULL == pBSSSes )
28996 {
28997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028998 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029000 }
29001
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029002 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
29003 {
Jeff Johnson295189b2012-06-20 16:38:30 -070029004
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029005 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
29006 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
29007 * sizeof(tHalSessionizedRcvPktFilterCfgType));
29008
29009 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
29010 usSessRcvPktFilterCfgSize);
29011
29012 if(NULL == pSessRcvPktFilterCfg)
29013 {
29014 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29015 "%s: Failed to allocate memory for "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029016 "tHalRcvPktFilterCfgType: %pK %pK %pK ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029017 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029018 WDI_ASSERT(0);
29019 return WDI_STATUS_E_FAILURE;
29020 }
29021
29022 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
29023
29024 /*-----------------------------------------------------------------------
29025 Get message buffer
29026 -----------------------------------------------------------------------*/
29027
29028 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
29029 usSessRcvPktFilterCfgSize,
29030 &pSendBuffer, &usDataOffset, &usSendSize))||
29031 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
29032 {
29033 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29034 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029035 "WDI_ProcessReceiveFilterSetFilterReq() %pK %pK %pK",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029036 pEventData, pwdiSetRcvPktFilterReqInfo,
29037 wdiReceiveFilterSetFilterCb);
29038 WDI_ASSERT(0);
29039 wpalMemoryFree(pSessRcvPktFilterCfg);
29040 return WDI_STATUS_E_FAILURE;
29041 }
29042
29043 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029044 "UsData Off %d UsSend %d cfg %pK",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029045 usSendSize,pSessRcvPktFilterCfg);
29046
29047 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
29048 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
29049 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
29050 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
29051
29052 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
29053
29054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29055 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
29056 pSessRcvPktFilterCfg->filterType);
29057 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29058 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
29059 pSessRcvPktFilterCfg->coleasceTime);
29060
29061 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
29062 {
29063 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
29064 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
29065 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
29066 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
29067 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
29068 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
29069 pSessRcvPktFilterCfg->paramsData[i].dataLength =
29070 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
29071
29072 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
29073 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
29074 8);
29075 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
29076 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
29077 8);
29078
29079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029080 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029081 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
29082 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
29083
29084 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029085 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029086 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
29087 pSessRcvPktFilterCfg->paramsData[i].dataLength);
29088
29089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029090 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029091 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
29092 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
29093 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
29094 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
29095 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
29096 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
29097
29098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029099 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029100 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
29101 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
29102 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
29103 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
29104 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
29105 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
29106 }
29107
29108 wpalMemoryCopy( pSendBuffer+usDataOffset,
29109 pSessRcvPktFilterCfg,
29110 usSessRcvPktFilterCfgSize);
29111
29112
29113 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
29114 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
29115
29116 wpalMemoryFree(pSessRcvPktFilterCfg);
29117
29118 }
29119 /*If SLM_SESSIONIZATION is not supported then do this */
29120 else
29121 {
29122 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
29123 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
29124 * sizeof(tHalRcvPktFilterParams));
29125
29126 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070029127 usRcvPktFilterCfgSize);
29128
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029129 if(NULL == pRcvPktFilterCfg)
29130 {
29131 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29132 "%s: Failed to allocate memory for "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029133 "tHalRcvPktFilterCfgType: %pK %pK %pK ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029134 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029135 WDI_ASSERT(0);
29136 return WDI_STATUS_E_FAILURE;
29137 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029138
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029139 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070029140
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029141 /*-----------------------------------------------------------------------
29142 Get message buffer
29143 -----------------------------------------------------------------------*/
29144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070029145 usRcvPktFilterCfgSize,
29146 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029147 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
29148 {
29149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070029150 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029151 "WDI_ProcessReceiveFilterSetFilterReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070029152 pEventData, pwdiSetRcvPktFilterReqInfo,
29153 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029154 WDI_ASSERT(0);
29155 wpalMemoryFree(pRcvPktFilterCfg);
29156 return WDI_STATUS_E_FAILURE;
29157 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029158
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070029160 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070029161 usSendSize,usRcvPktFilterCfgSize);
29162
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029163 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
29164 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
29165 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
29166 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070029167
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070029169 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070029170 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029171 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070029172 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070029173 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070029174
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029175 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
29176 {
29177 pRcvPktFilterCfg->paramsData[i].protocolLayer =
29178 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
29179 pRcvPktFilterCfg->paramsData[i].cmpFlag =
29180 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
29181 pRcvPktFilterCfg->paramsData[i].dataOffset =
29182 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
29183 pRcvPktFilterCfg->paramsData[i].dataLength =
29184 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070029185
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029186 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070029187 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
29188 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029189 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070029190 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
29191 8);
29192
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029194 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070029195 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070029196 pRcvPktFilterCfg->paramsData[i].cmpFlag);
29197
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029198 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029199 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029200 pRcvPktFilterCfg->paramsData[i].dataOffset,
29201 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070029202
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029204 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029205 pRcvPktFilterCfg->paramsData[i].compareData[0],
29206 pRcvPktFilterCfg->paramsData[i].compareData[1],
29207 pRcvPktFilterCfg->paramsData[i].compareData[2],
29208 pRcvPktFilterCfg->paramsData[i].compareData[3],
29209 pRcvPktFilterCfg->paramsData[i].compareData[4],
29210 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070029211
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029213 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029214 pRcvPktFilterCfg->paramsData[i].dataMask[0],
29215 pRcvPktFilterCfg->paramsData[i].dataMask[1],
29216 pRcvPktFilterCfg->paramsData[i].dataMask[2],
29217 pRcvPktFilterCfg->paramsData[i].dataMask[3],
29218 pRcvPktFilterCfg->paramsData[i].dataMask[4],
29219 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
29220 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029221
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029222 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070029223 pRcvPktFilterCfg,
29224 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070029225
29226
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029227 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
29228 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029229
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029230 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029231 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029232 wpalMemoryFree(pRcvPktFilterCfg);
29233 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029235 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029236 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029237 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070029238 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070029239 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029240}
29241
29242/**
29243 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070029244
29245 @param pWDICtx: pointer to the WLAN DAL context
29246 pEventData: pointer to the event information structure
29247
Jeff Johnson295189b2012-06-20 16:38:30 -070029248 @see
29249 @return Result of the function call
29250*/
29251WDI_Status
29252WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070029253(
Jeff Johnson295189b2012-06-20 16:38:30 -070029254 WDI_ControlBlockType* pWDICtx,
29255 WDI_EventInfoType* pEventData
29256)
29257{
29258 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
29259 NULL;
29260 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
29261 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070029262 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029263 wpt_uint16 usDataOffset = 0;
29264 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029265 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
29266 wpt_uint8 ucCurrentBSSSesIdx = 0;
29267 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029268
29269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029270 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029271
29272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029274 -------------------------------------------------------------------------*/
29275 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070029276 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070029277 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070029278 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070029279 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
29280 {
29281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029285 }
29286
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029287 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
29288 pwdiRcvFltPktMatchCntReqParamsType->bssId,
29289 &pBSSSes);
29290 if ( NULL == pBSSSes )
29291 {
29292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029293 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029294 return WDI_STATUS_E_FAILURE;
29295 }
29296
Jeff Johnson295189b2012-06-20 16:38:30 -070029297 /*-----------------------------------------------------------------------
29298 Get message buffer
29299 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029300 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29301 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029302 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029303 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029304 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029305 {
29306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29307 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029308 "WDI_ProcessFilterMatchCountReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070029309 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
29310 wdiFilterMatchCountCb);
29311 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029312 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029313 }
29314
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029315 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
29316 wpalMemoryCopy( pSendBuffer+usDataOffset,
29317 &rcvFltPktMatchCntReqParam,
29318 sizeof(rcvFltPktMatchCntReqParam));
29319
Jeff Johnson295189b2012-06-20 16:38:30 -070029320 //
29321 // Don't need to fill send buffer other than header
29322 //
29323 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070029324 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029325
29326
29327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029328 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029329 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029330 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29331 wdiFilterMatchCountCb,
29332 pEventData->pUserData,
29333 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029334}
29335
29336/**
29337 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070029338
29339 @param pWDICtx: pointer to the WLAN DAL context
29340 pEventData: pointer to the event information structure
29341
Jeff Johnson295189b2012-06-20 16:38:30 -070029342 @see
29343 @return Result of the function call
29344*/
29345WDI_Status
29346WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070029347(
Jeff Johnson295189b2012-06-20 16:38:30 -070029348 WDI_ControlBlockType* pWDICtx,
29349 WDI_EventInfoType* pEventData
29350)
Jeff Johnsone7245742012-09-05 17:12:55 -070029351{
Jeff Johnson295189b2012-06-20 16:38:30 -070029352 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
29353 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070029354 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029355 wpt_uint16 usDataOffset = 0;
29356 wpt_uint16 usSendSize = 0;
29357 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029358 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070029359 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029360
29361 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029362 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029363
29364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029366 -------------------------------------------------------------------------*/
29367 if (( NULL == pEventData ) ||
29368 ( NULL == (pwdiRcvFltPktClearReqParamsType =
29369 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070029370 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070029371 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
29372 {
29373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029376 return WDI_STATUS_E_FAILURE;
29377 }
29378
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029379 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070029380 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
29381 &pBSSSes);
29382 if ( NULL == pBSSSes )
29383 {
29384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029385 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070029386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029387 }
29388
29389 /*-----------------------------------------------------------------------
29390 Get message buffer
29391 -----------------------------------------------------------------------*/
29392 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070029393 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070029394 sizeof(tHalRcvFltPktClearParam),
29395 &pSendBuffer, &usDataOffset, &usSendSize))||
29396 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
29397 {
29398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
29399 "Unable to get send buffer in "
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029400 "WDI_ProcessReceiveFilterClearFilterReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070029401 pEventData, pwdiRcvFltPktClearReqParamsType,
29402 wdiRcvFltPktClearFilterCb);
29403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029405 }
29406
29407
29408 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070029409 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070029410 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070029411 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070029412
Jeff Johnsone7245742012-09-05 17:12:55 -070029413 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
29414 wpalMemoryCopy( pSendBuffer+usDataOffset,
29415 &rcvFltPktClearParam,
29416 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070029417
29418 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070029419 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029420
29421
29422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029423 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070029426 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070029427 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029428}
29429
29430/**
29431 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070029432
29433 @param pWDICtx: pointer to the WLAN DAL context
29434 pEventData: pointer to the event information structure
29435
Jeff Johnson295189b2012-06-20 16:38:30 -070029436 @see
29437 @return Result of the function call
29438*/
29439WDI_Status
29440WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029441(
Jeff Johnson295189b2012-06-20 16:38:30 -070029442 WDI_ControlBlockType* pWDICtx,
29443 WDI_EventInfoType* pEventData
29444)
29445{
Jeff Johnson295189b2012-06-20 16:38:30 -070029446 eHalStatus halStatus;
29447 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029448 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
29449 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070029450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29451
29452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029453 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029454
29455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029457 -------------------------------------------------------------------------*/
29458 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29459 ( NULL == pEventData->pEventData ))
29460 {
29461 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029462 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029463 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029464 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029465 }
29466
Jeff Johnsone7245742012-09-05 17:12:55 -070029467 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029468
29469 /*-------------------------------------------------------------------------
29470 Extract response and send it to UMAC
29471 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029472 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29473 {
29474 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
29475 pEventData->pEventData,
29476 sizeof(halRcvFltPktSetMcListRsp));
29477
29478 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
29479 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
29480 wdiRcvFltPktSetMcListRspInfo.bssIdx =
29481 halRcvFltPktSetMcListRsp.bssIdx;
29482 }
29483 else
29484 {
29485 halStatus = *((eHalStatus*)pEventData->pEventData);
29486 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29487 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029488
29489 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029490 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029491
Jeff Johnsone7245742012-09-05 17:12:55 -070029492 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029493}
29494
29495/**
29496 @brief Process Set Rsp function (called when a
29497 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070029498
29499 @param pWDICtx: pointer to the WLAN DAL context
29500 pEventData: pointer to the event information structure
29501
Jeff Johnson295189b2012-06-20 16:38:30 -070029502 @see
29503 @return Result of the function call
29504*/
29505WDI_Status
29506WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029507(
Jeff Johnson295189b2012-06-20 16:38:30 -070029508 WDI_ControlBlockType* pWDICtx,
29509 WDI_EventInfoType* pEventData
29510)
29511{
Jeff Johnson295189b2012-06-20 16:38:30 -070029512 eHalStatus halStatus;
29513 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029514 tHalSetPktFilterRspParams halSetPktFilterRspParams;
29515 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070029516 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29517
29518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029519 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029520
29521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029522 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029523 -------------------------------------------------------------------------*/
29524 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29525 ( NULL == pEventData->pEventData ))
29526 {
29527 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029528 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029529 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029530 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029531 }
29532
29533 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070029534 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029535
29536 /*-------------------------------------------------------------------------
29537 Extract response and send it to UMAC
29538 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029539 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29540 {
29541 wpalMemoryCopy( &halSetPktFilterRspParams,
29542 pEventData->pEventData,
29543 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029544
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029545 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
29546 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
29547 }
29548 else
29549 {
29550 halStatus = *((eHalStatus*)pEventData->pEventData);
29551 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29552 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029553 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029554 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029555
Jeff Johnsone7245742012-09-05 17:12:55 -070029556 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029557}
29558
29559/**
29560 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070029561
29562 @param pWDICtx: pointer to the WLAN DAL context
29563 pEventData: pointer to the event information structure
29564
Jeff Johnson295189b2012-06-20 16:38:30 -070029565 @see
29566 @return Result of the function call
29567*/
29568WDI_Status
29569WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029570(
Jeff Johnson295189b2012-06-20 16:38:30 -070029571 WDI_ControlBlockType* pWDICtx,
29572 WDI_EventInfoType* pEventData
29573)
29574{
Jeff Johnson295189b2012-06-20 16:38:30 -070029575 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029576 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029577 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
29578 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029579
29580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29581
29582 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029583 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029584
29585 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029586 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029587 -------------------------------------------------------------------------*/
29588 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29589 ( NULL == pEventData->pEventData ))
29590 {
29591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029592 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029593 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029594 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029595 }
29596
Jeff Johnsone7245742012-09-05 17:12:55 -070029597 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029598
29599 /*-------------------------------------------------------------------------
29600 Extract response and send it to UMAC
29601 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029602 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29603 {
29604 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
29605 pEventData->pEventData,
29606 sizeof(halRcvFltrPktMatachRsp));
29607
29608 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
29609 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
29610 }
29611 else
29612 {
29613 halStatus = *((eHalStatus*)pEventData->pEventData);
29614 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29615 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029616
29617 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029618 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029619
Jeff Johnsone7245742012-09-05 17:12:55 -070029620 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029621}
29622
29623/**
29624 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070029625
29626 @param pWDICtx: pointer to the WLAN DAL context
29627 pEventData: pointer to the event information structure
29628
Jeff Johnson295189b2012-06-20 16:38:30 -070029629 @see
29630 @return Result of the function call
29631*/
29632WDI_Status
29633WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029634(
Jeff Johnson295189b2012-06-20 16:38:30 -070029635 WDI_ControlBlockType* pWDICtx,
29636 WDI_EventInfoType* pEventData
29637)
29638{
Jeff Johnson295189b2012-06-20 16:38:30 -070029639 eHalStatus halStatus;
29640 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029641 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
29642 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070029643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29644
29645 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029646 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029647
29648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029650 -------------------------------------------------------------------------*/
29651 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29652 ( NULL == pEventData->pEventData ))
29653 {
29654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029655 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029658 }
29659
29660 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070029661 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029662
29663 /*-------------------------------------------------------------------------
29664 Extract response and send it to UMAC
29665 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029666 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29667 {
29668 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
29669 pEventData->pEventData,
29670 sizeof(halRcvFltPktClearRspMsg));
29671
29672 wdiRcvFltPktClearRspParamsType.wdiStatus =
29673 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
29674 wdiRcvFltPktClearRspParamsType.bssIdx =
29675 halRcvFltPktClearRspMsg.bssIdx;
29676 }
29677 else
29678 {
29679 halStatus = *((eHalStatus*)pEventData->pEventData);
29680 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29681 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029682
29683 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029684 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029685
Jeff Johnsone7245742012-09-05 17:12:55 -070029686 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029687}
29688#endif // WLAN_FEATURE_PACKET_FILTERING
29689
29690/**
29691 @brief Process Shutdown Rsp function
29692 There is no shutdown response comming from HAL
29693 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070029694
Jeff Johnson295189b2012-06-20 16:38:30 -070029695 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070029696 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070029697
29698 @see
29699 @return Result of the function call
29700*/
29701WDI_Status
29702WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029703(
Jeff Johnson295189b2012-06-20 16:38:30 -070029704 WDI_ControlBlockType* pWDICtx,
29705 WDI_EventInfoType* pEventData
29706)
29707{
29708 /*There is no shutdown response comming from HAL - function just kept for
29709 simmetry */
29710 WDI_ASSERT(0);
29711 return WDI_STATUS_SUCCESS;
29712}/*WDI_ProcessShutdownRsp*/
29713
29714/**
29715 @brief WDI_SetPowerParamsReq
29716
Jeff Johnsone7245742012-09-05 17:12:55 -070029717 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070029718 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070029719
Jeff Johnson295189b2012-06-20 16:38:30 -070029720 wdiPowerParamsCb: callback for passing back the response
29721 of the Set Power Params operation received from the
29722 device
Jeff Johnsone7245742012-09-05 17:12:55 -070029723
Jeff Johnson295189b2012-06-20 16:38:30 -070029724 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070029725 callback
29726
Jeff Johnson295189b2012-06-20 16:38:30 -070029727 @return Result of the function call
29728*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029729WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070029730WDI_SetPowerParamsReq
29731(
29732 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
29733 WDI_SetPowerParamsCb wdiPowerParamsCb,
29734 void* pUserData
29735)
29736{
29737 WDI_EventInfoType wdiEventData;
29738 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29739
29740 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029741 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070029742 ------------------------------------------------------------------------*/
29743 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29744 {
29745 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29746 "WDI API call before module is initialized - Fail request");
29747
Jeff Johnsone7245742012-09-05 17:12:55 -070029748 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070029749 }
29750
29751 /*------------------------------------------------------------------------
29752 Fill in Event data and post to the Main FSM
29753 ------------------------------------------------------------------------*/
29754 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070029755 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029756 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070029757 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070029758 wdiEventData.pUserData = pUserData;
29759
29760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29761}/*WDI_SetPowerParamsReq*/
29762
29763/**
29764 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070029765
29766 @param pWDICtx: pointer to the WLAN DAL context
29767 pEventData: pointer to the event information structure
29768
Jeff Johnson295189b2012-06-20 16:38:30 -070029769 @see
29770 @return Result of the function call
29771*/
29772WDI_Status
29773WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070029774(
Jeff Johnson295189b2012-06-20 16:38:30 -070029775 WDI_ControlBlockType* pWDICtx,
29776 WDI_EventInfoType* pEventData
29777)
29778{
29779 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
29780 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070029781 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029782 wpt_uint16 usDataOffset = 0;
29783 wpt_uint16 usSendSize = 0;
29784 tSetPowerParamsType powerParams;
29785
29786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029788 -------------------------------------------------------------------------*/
29789 if (( NULL == pEventData ) ||
29790 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
29791 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
29792 {
29793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029794 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029795 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029796 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029797 }
29798
29799 /*-----------------------------------------------------------------------
29800 Get message buffer
29801 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029802 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070029803 sizeof(powerParams),
29804 &pSendBuffer, &usDataOffset, &usSendSize))||
29805 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
29806 {
29807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070029808 "Unable to get send buffer in Set PNO req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070029809 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
29810 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029811 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029812 }
29813
29814 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070029815 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070029816 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
29817
29818 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029819 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070029820 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
29821
29822 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070029823 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070029824 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
29825
29826 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070029827 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070029828 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
29829
29830 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070029831 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070029832 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
29833
29834 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070029835 powerParams.uBETInterval =
29836 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070029837
Yue Mac24062f2013-05-13 17:01:29 -070029838 /* MAX LI for modulated DTIM */
29839 powerParams.uMaxLIModulatedDTIM =
29840 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070029841
29842 wpalMemoryCopy( pSendBuffer+usDataOffset,
29843 &powerParams,
29844 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029845
29846 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070029847 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029848
29849 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029850 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029851 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029852 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29853 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029854}
29855
29856/**
29857 @brief Process Power Params Rsp function (called when a
29858 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070029859
29860 @param pWDICtx: pointer to the WLAN DAL context
29861 pEventData: pointer to the event information structure
29862
Jeff Johnson295189b2012-06-20 16:38:30 -070029863 @see
29864 @return Result of the function call
29865*/
29866WDI_Status
29867WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029868(
Jeff Johnson295189b2012-06-20 16:38:30 -070029869 WDI_ControlBlockType* pWDICtx,
29870 WDI_EventInfoType* pEventData
29871)
29872{
29873 WDI_Status wdiStatus;
29874 eHalStatus halStatus;
29875 WDI_SetPowerParamsCb wdiPowerParamsCb;
29876 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29877
29878 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029879 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029880 -------------------------------------------------------------------------*/
29881 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29882 ( NULL == pEventData->pEventData ))
29883 {
29884 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029885 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029886 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029887 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029888 }
29889
Jeff Johnsone7245742012-09-05 17:12:55 -070029890 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029891
29892 /*-------------------------------------------------------------------------
29893 Extract response and send it to UMAC
29894 -------------------------------------------------------------------------*/
29895 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070029896 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070029897
29898 /*Notify UMAC*/
29899 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29900
Jeff Johnsone7245742012-09-05 17:12:55 -070029901 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029902}/*WDI_ProcessSetPowerParamsRsp*/
29903
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029904/**
29905 @brief WDI_dhcpStartInd
29906 Host will send an event to the FW when DHCP is initiated
29907
29908 @param
29909 WDI_DHCPInd: DHCP Indication
29910 @see
29911 @return Result of the function call
29912*/
29913WDI_Status
29914WDI_dhcpStartInd
29915(
29916 WDI_DHCPInd *wdiDHCPInd
29917)
29918{
29919 WDI_EventInfoType wdiEventData;
29920
29921 /*------------------------------------------------------------------------
29922 Sanity Check
29923 ------------------------------------------------------------------------*/
29924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29925 {
29926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29927 "WDI API call before module is initialized - Fail request");
29928
29929 return WDI_STATUS_E_NOT_ALLOWED;
29930 }
29931
29932 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
29933 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053029934 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029935 wdiEventData.pCBfnc = NULL;
29936 wdiEventData.pUserData = NULL;
29937
29938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29939}
29940
29941
29942/**
29943 @brief WDI_dhcpStopInd
29944 Host will send an event to the FW when DHCP is completed
29945
29946 @param
29947 WDI_DHCPInd: DHCP Indication
29948 @see
29949 @return Result of the function call
29950*/
29951WDI_Status
29952WDI_dhcpStopInd
29953(
29954 WDI_DHCPInd *wdiDHCPInd
29955)
29956{
29957 WDI_EventInfoType wdiEventData;
29958
29959 /*------------------------------------------------------------------------
29960 Sanity Check
29961 ------------------------------------------------------------------------*/
29962 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29963 {
29964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29965 "WDI API call before module is initialized - Fail request");
29966
29967 return WDI_STATUS_E_NOT_ALLOWED;
29968 }
29969
29970 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
29971 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053029972 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029973 wdiEventData.pCBfnc = NULL;
29974 wdiEventData.pUserData = NULL;
29975
29976 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29977}
29978
Abhishek Singh7cd040e2016-01-07 10:51:04 +053029979#ifdef WLAN_FEATURE_RMC
29980/**
29981 @brief WDI_TXFailMonitorInd
29982 Host will send an event to the FW to start TX Fail Monitor
29983
29984 @param
29985 WDI_TXFailMonitorInd
29986 @see
29987 @return Result of the function call
29988*/
29989WDI_Status
29990WDI_TXFailMonitorStartStopInd
29991(
29992 WDI_TXFailMonitorInd *wdiTXFailMonitorInd
29993)
29994{
29995 WDI_EventInfoType wdiEventData;
29996
29997 /*------------------------------------------------------------------------
29998 Sanity Check
29999 ------------------------------------------------------------------------*/
30000 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30001 {
30002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30003 "WDI API call before module is initialized - Fail request");
30004
30005 return WDI_STATUS_E_NOT_ALLOWED;
30006 }
30007
30008 wdiEventData.wdiRequest = WDI_TX_FAIL_MONITOR_IND;
30009 wdiEventData.pEventData = wdiTXFailMonitorInd;
30010 wdiEventData.uEventDataSize = sizeof(wdiTXFailMonitorInd);
30011 wdiEventData.pCBfnc = NULL;
30012 wdiEventData.pUserData = NULL;
30013
30014 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30015}
30016#endif /* WLAN_FEATURE_RMC */
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030017
30018/**
30019 @brief Process DHCP Start Indication message and post it to HAL
30020
30021 @param pWDICtx: pointer to the WLAN DAL context
30022 pEventData: pointer to the event information structure
30023
30024 @see
30025 @return Result of the function call
30026*/
30027WDI_Status
30028WDI_ProcessDHCPStartInd
30029(
30030 WDI_ControlBlockType* pWDICtx,
30031 WDI_EventInfoType* pEventData
30032)
30033{
30034 wpt_uint8* pSendBuffer = NULL;
30035 wpt_uint16 usDataOffset = 0;
30036 wpt_uint16 usSendSize = 0;
30037 wpt_uint16 usLen = 0;
30038 WDI_DHCPInd* pwdiDHCPInd = NULL;
30039 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053030040 WDI_Status wdiStatus;
30041
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030042
30043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30044
30045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30046 "%s", __func__);
30047
30048 /*-------------------------------------------------------------------------
30049 Sanity check
30050 -------------------------------------------------------------------------*/
30051 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30052 {
30053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30054 "%s: Invalid parameters", __func__);
30055 WDI_ASSERT(0);
30056 return WDI_STATUS_E_FAILURE;
30057 }
30058 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
30059 /*-----------------------------------------------------------------------
30060 Get message buffer
30061 -----------------------------------------------------------------------*/
30062
30063 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30064 WDI_DHCP_START_IND,
30065 sizeof(tDHCPInfo),
30066 &pSendBuffer, &usDataOffset, &usSendSize))||
30067 ( usSendSize < (usDataOffset + usLen )))
30068 {
30069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030070 "Unable to get send buffer in DHCP Start req %pK ",
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030071 pEventData);
30072 WDI_ASSERT(0);
30073 return WDI_STATUS_E_FAILURE;
30074 }
30075
Sandeep Puligillaee789512014-02-13 19:14:52 +053030076 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030077 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
30078 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
30079 WDI_MAC_ADDR_LEN);
30080
30081 pWDICtx->pReqStatusUserData = NULL;
30082 pWDICtx->pfncRspCB = NULL;
30083
30084 /*-------------------------------------------------------------------------
30085 Send DHCP Start Indication to HAL
30086 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053030087 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30088 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030089}/*WDI_ProcessDHCPStartInd*/
30090
30091/**
30092 @brief Process DHCP Stop indication message and post it to HAL
30093
30094 @param pWDICtx: pointer to the WLAN DAL context
30095 pEventData: pointer to the event information structure
30096
30097 @see
30098 @return Result of the function call
30099*/
30100WDI_Status
30101WDI_ProcessDHCPStopInd
30102(
30103 WDI_ControlBlockType* pWDICtx,
30104 WDI_EventInfoType* pEventData
30105)
30106{
30107 wpt_uint8* pSendBuffer = NULL;
30108 wpt_uint16 usDataOffset = 0;
30109 wpt_uint16 usSendSize = 0;
30110 wpt_uint16 usLen = 0;
30111 WDI_DHCPInd* pwdiDHCPInd = NULL;
30112 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053030113 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030114
30115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30116
30117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30118 "%s", __func__);
30119
30120 /*-------------------------------------------------------------------------
30121 Sanity check
30122 -------------------------------------------------------------------------*/
30123
30124 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30125 {
30126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30127 "%s: Invalid parameters", __func__);
30128 WDI_ASSERT(0);
30129 return WDI_STATUS_E_FAILURE;
30130 }
30131 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
30132 /*-----------------------------------------------------------------------
30133 Get message buffer
30134 -----------------------------------------------------------------------*/
30135
30136 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30137 WDI_DHCP_STOP_IND,
30138 sizeof(tDHCPInfo),
30139 &pSendBuffer, &usDataOffset, &usSendSize))||
30140 ( usSendSize < (usDataOffset + usLen )))
30141 {
30142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030143 "Unable to get send buffer in DHCP Start req %pK ",
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030144 pEventData);
30145 WDI_ASSERT(0);
30146 return WDI_STATUS_E_FAILURE;
30147 }
30148
Sandeep Puligillaee789512014-02-13 19:14:52 +053030149 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030150 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
30151 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
30152 WDI_MAC_ADDR_LEN);
30153
30154 pWDICtx->pReqStatusUserData = NULL;
30155 pWDICtx->pfncRspCB = NULL;
30156 /*-------------------------------------------------------------------------
30157 Send DHCP Stop indication to HAL
30158 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053030159 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30160 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030161
30162}/*WDI_ProcessDHCPStopInd*/
30163
Abhishek Singh7cd040e2016-01-07 10:51:04 +053030164#ifdef WLAN_FEATURE_RMC
30165/**
30166 @brief Process TX Fail monitor indication
30167
30168 @param pWDICtx: pointer to the WLAN DAL context
30169 pEventData: pointer to the event information structure
30170
30171 @see
30172 @return Result of the function call
30173*/
30174WDI_Status
30175WDI_ProcessTXFailMonitor
30176(
30177 WDI_ControlBlockType* pWDICtx,
30178 WDI_EventInfoType* pEventData
30179)
30180{
30181 wpt_uint8* pSendBuffer = NULL;
30182 wpt_uint16 usDataOffset = 0;
30183 wpt_uint16 usSendSize = 0;
30184 wpt_uint16 usLen = 0;
30185 WDI_TXFailMonitorInd* pwdiTxFailMonitorInd = NULL;
30186 tTXFailMonitorInfo* pTXFailMonitorInfo;
30187 WDI_Status wdiStatus;
30188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30189
30190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30191 "%s", __func__);
30192
30193 /*-------------------------------------------------------------------------
30194 Sanity check
30195 -------------------------------------------------------------------------*/
30196
30197 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30198 {
30199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30200 "%s: Invalid parameters", __func__);
30201 WDI_ASSERT(0);
30202 return WDI_STATUS_E_FAILURE;
30203 }
30204 pwdiTxFailMonitorInd = (WDI_TXFailMonitorInd*)pEventData->pEventData;
30205 /*-----------------------------------------------------------------------
30206 Get message buffer
30207 -----------------------------------------------------------------------*/
30208
30209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30210 WDI_TX_FAIL_MONITOR_IND,
30211 sizeof(tDHCPInfo),
30212 &pSendBuffer, &usDataOffset, &usSendSize))||
30213 ( usSendSize < (usDataOffset + usLen )))
30214 {
30215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030216 "Unable to get send buffer in DHCP Start req %pK ",
Abhishek Singh7cd040e2016-01-07 10:51:04 +053030217 pEventData);
30218 WDI_ASSERT(0);
30219 return WDI_STATUS_E_FAILURE;
30220 }
30221
30222 pTXFailMonitorInfo = (tTXFailMonitorInfo*)pSendBuffer+usDataOffset;
30223 pTXFailMonitorInfo->tx_fail_count = pwdiTxFailMonitorInd->tx_fail_count;
30224
30225 pWDICtx->pReqStatusUserData = pwdiTxFailMonitorInd->pUserData;
30226 pWDICtx->wdiReqStatusCB = pwdiTxFailMonitorInd->wdiReqStatusCB;
30227 /*-------------------------------------------------------------------------
30228 Send TX Fail Monitor start/stop indication to HAL
30229 -------------------------------------------------------------------------*/
30230 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30231
30232 return (wdiStatus != WDI_STATUS_SUCCESS)?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30233}/*WDI_ProcessTXFailMonitor*/
30234#endif /* WLAN_FEATURE_RMC */
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053030235
Jeff Johnson295189b2012-06-20 16:38:30 -070030236#ifdef WLAN_FEATURE_GTK_OFFLOAD
30237/**
30238 @brief WDI_GTKOffloadReq will be called when the upper MAC
30239 wants to set GTK Rekey Counter while in power save. Upon
30240 the call of this API the WLAN DAL will pack and send a
30241 HAL GTK offload request message to the lower RIVA
30242 sub-system if DAL is in state STARTED.
30243
30244 In state BUSY this request will be queued. Request won't
30245 be allowed in any other state.
30246
30247 WDI_PostAssocReq must have been called.
30248
30249 @param pwdiGtkOffloadParams: the GTK offload as specified
30250 by the Device Interface
30251
30252 wdiGtkOffloadCb: callback for passing back the response
30253 of the GTK offload operation received from the device
30254
30255 pUserData: user data will be passed back with the
30256 callback
30257
30258 @see WDI_PostAssocReq
30259 @return Result of the function call
30260*/
30261WDI_Status
30262WDI_GTKOffloadReq
30263(
30264 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
30265 WDI_GtkOffloadCb wdiGtkOffloadCb,
30266 void* pUserData
30267)
30268{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030269 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070030270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30271
30272 /*------------------------------------------------------------------------
30273 Sanity Check
30274 ------------------------------------------------------------------------*/
30275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30276 {
30277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30278 "WDI API call before module is initialized - Fail request");
30279
30280 return WDI_STATUS_E_NOT_ALLOWED;
30281 }
30282
30283 /*------------------------------------------------------------------------
30284 Fill in Event data and post to the Main FSM
30285 ------------------------------------------------------------------------*/
30286 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
30287 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070030288 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070030289 wdiEventData.pCBfnc = wdiGtkOffloadCb;
30290 wdiEventData.pUserData = pUserData;
30291
30292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30293}
30294
30295
30296/**
30297 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
30298 MAC wants to get GTK Rekey Counter while in power save.
30299 Upon the call of this API the WLAN DAL will pack and
30300 send a HAL GTK offload request message to the lower RIVA
30301 sub-system if DAL is in state STARTED.
30302
30303 In state BUSY this request will be queued. Request won't
30304 be allowed in any other state.
30305
30306 WDI_PostAssocReq must have been called.
30307
30308 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
30309 Information Message as specified by the
30310 Device Interface
30311
30312 wdiGtkOffloadGetInfoCb: callback for passing back the
30313 response of the GTK offload operation received from the
30314 device
30315
30316 pUserData: user data will be passed back with the
30317 callback
30318
30319 @see WDI_PostAssocReq
30320 @return Result of the function call
30321*/
30322WDI_Status
30323WDI_GTKOffloadGetInfoReq
30324(
30325 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
30326 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
30327 void* pUserData
30328)
30329{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030330 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070030331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30332
30333 /*------------------------------------------------------------------------
30334 Sanity Check
30335 ------------------------------------------------------------------------*/
30336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30337 {
30338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30339 "WDI API call before module is initialized - Fail request");
30340
30341 return WDI_STATUS_E_NOT_ALLOWED;
30342 }
30343
30344 /*------------------------------------------------------------------------
30345 Fill in Event data and post to the Main FSM
30346 ------------------------------------------------------------------------*/
30347 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
30348 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
30349 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
30350 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
30351 wdiEventData.pUserData = pUserData;
30352
30353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30354}
30355
30356
30357/**
30358 @brief Process set GTK Offload Request function
30359
30360 @param pWDICtx: pointer to the WLAN DAL context
30361 pEventData: pointer to the event information structure
30362
30363 @see
30364 @return Result of the function call
30365*/
30366WDI_Status
30367WDI_ProcessGTKOffloadReq
30368(
30369 WDI_ControlBlockType* pWDICtx,
30370 WDI_EventInfoType* pEventData
30371)
30372{
30373 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
30374 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
30375 wpt_uint8* pSendBuffer = NULL;
30376 wpt_uint16 usDataOffset = 0;
30377 wpt_uint16 usSendSize = 0;
30378 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030379 wpt_uint8 ucCurrentSessionId = 0;
30380 WDI_BSSSessionType* pBSSSes = NULL;
30381
Jeff Johnson295189b2012-06-20 16:38:30 -070030382 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30383
30384 /*-------------------------------------------------------------------------
30385 Sanity check
30386 -------------------------------------------------------------------------*/
30387 if (( NULL == pEventData ) ||
30388 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
30389 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
30390 {
30391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030392 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030393 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030394 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070030395 }
30396
30397 /*-----------------------------------------------------------------------
30398 Get message buffer
30399 -----------------------------------------------------------------------*/
30400 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
30401 sizeof(gtkOffloadReqParams),
30402 &pSendBuffer, &usDataOffset, &usSendSize))||
30403 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
30404 {
30405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030406 "Unable to get send buffer in GTK offload req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070030407 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
30408 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030409 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070030410 }
30411
30412 //
30413 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
30414 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030415 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
30416 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
30417 &pBSSSes);
30418 if ( NULL == pBSSSes )
30419 {
30420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030421 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030422 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030423 }
30424
30425 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
30426
Jeff Johnson295189b2012-06-20 16:38:30 -070030427 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
30428 // Copy KCK
30429 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
30430 // Copy KEK
30431 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
30432 // Copy KeyReplayCounter
30433 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
30434
30435 wpalMemoryCopy( pSendBuffer+usDataOffset,
30436 &gtkOffloadReqParams,
30437 sizeof(gtkOffloadReqParams));
30438
30439 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
30440 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
30441
30442 /*-------------------------------------------------------------------------
30443 Send Get STA Request to HAL
30444 -------------------------------------------------------------------------*/
30445 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30446 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030447
30448fail:
30449 // Release the message buffer so we don't leak
30450 wpalMemoryFree(pSendBuffer);
30451
30452failRequest:
30453 //WDA should have failure check to avoid the memory leak
30454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070030455}
30456
30457
30458/**
30459 @brief Process GTK Offload Get Information Request function
30460
30461 @param pWDICtx: pointer to the WLAN DAL context
30462 pEventData: pointer to the event information structure
30463
30464 @see
30465 @return Result of the function call
30466*/
30467WDI_Status
30468WDI_ProcessGTKOffloadGetInfoReq
30469(
30470 WDI_ControlBlockType* pWDICtx,
30471 WDI_EventInfoType* pEventData
30472)
30473{
30474 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
30475 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
30476 wpt_uint8* pSendBuffer = NULL;
30477 wpt_uint16 usDataOffset = 0;
30478 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030479 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
30480 wpt_uint8 ucCurrentSessionId = 0;
30481 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070030482
30483 /*-------------------------------------------------------------------------
30484 Sanity check
30485 -------------------------------------------------------------------------*/
30486 if (( NULL == pEventData ) ||
30487 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
30488 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
30489 {
30490 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030491 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030492 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030493 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070030494 }
30495
30496 /*-----------------------------------------------------------------------
30497 Get message buffer
30498 -----------------------------------------------------------------------*/
30499 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030500 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070030501 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030502 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070030503 {
30504 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030505 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070030506 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
30507 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030508 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070030509 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030510 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
30511 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
30512 &pBSSSes);
30513 if ( NULL == pBSSSes )
30514 {
30515 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030516 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030517 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030518 }
30519 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070030520
30521 //
30522 // Don't need to fill send buffer other than header
30523 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030524 wpalMemoryCopy( pSendBuffer+usDataOffset,
30525 &halGtkOffloadGetInfoReqParams,
30526 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070030527
30528 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
30529 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
30530
30531 /*-------------------------------------------------------------------------
30532 Send Get STA Request to HAL
30533 -------------------------------------------------------------------------*/
30534 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30535 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080030536fail:
30537 // Release the message buffer so we don't leak
30538 wpalMemoryFree(pSendBuffer);
30539
30540failRequest:
30541 //WDA should have failure check to avoid the memory leak
30542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070030543}
30544
30545/**
30546 @brief Process host offload Rsp function (called when a
30547 response is being received over the bus from HAL)
30548
30549 @param pWDICtx: pointer to the WLAN DAL context
30550 pEventData: pointer to the event information structure
30551
30552 @see
30553 @return Result of the function call
30554*/
30555WDI_Status
30556WDI_ProcessGtkOffloadRsp
30557(
30558 WDI_ControlBlockType* pWDICtx,
30559 WDI_EventInfoType* pEventData
30560)
30561{
Jeff Johnson295189b2012-06-20 16:38:30 -070030562 eHalStatus halStatus;
30563 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030564 tHalGtkOffloadRspParams halGtkOffloadRspParams;
30565 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070030566
30567 /*-------------------------------------------------------------------------
30568 Sanity check
30569 -------------------------------------------------------------------------*/
30570 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30571 ( NULL == pEventData->pEventData))
30572 {
30573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030575 WDI_ASSERT(0);
30576 return WDI_STATUS_E_FAILURE;
30577 }
30578
Wilson Yang00256342013-10-10 23:13:38 -070030579 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
30580
Jeff Johnson295189b2012-06-20 16:38:30 -070030581 /*-------------------------------------------------------------------------
30582 Extract response and send it to UMAC
30583 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030584 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
30585 {
30586 wpalMemoryCopy( &halGtkOffloadRspParams,
30587 pEventData->pEventData,
30588 sizeof(halGtkOffloadRspParams));
30589
30590 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030591 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030592 wdiGtkOffloadRsparams.bssIdx =
30593 halGtkOffloadRspParams.bssIdx;
30594 }
30595 else
30596 {
30597 halStatus = *((eHalStatus*)pEventData->pEventData);
30598 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30599 }
Jeff Johnson295189b2012-06-20 16:38:30 -070030600
30601 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030602 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070030603
30604 return WDI_STATUS_SUCCESS;
30605}
30606
30607/**
30608 @brief Process GTK Offload Get Information Response function
30609
30610 @param pWDICtx: pointer to the WLAN DAL context
30611 pEventData: pointer to the event information structure
30612
30613 @see
30614 @return Result of the function call
30615*/
30616WDI_Status
30617WDI_ProcessGTKOffloadGetInfoRsp
30618(
30619 WDI_ControlBlockType* pWDICtx,
30620 WDI_EventInfoType* pEventData
30621)
30622{
Jeff Johnson295189b2012-06-20 16:38:30 -070030623 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070030624 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030625 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
30626 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030627 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070030628
Jeff Johnson295189b2012-06-20 16:38:30 -070030629
30630 /*-------------------------------------------------------------------------
30631 Sanity check
30632 -------------------------------------------------------------------------*/
30633 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30634 ( NULL == pEventData->pEventData ))
30635 {
30636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030637 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030638 WDI_ASSERT(0);
30639 return WDI_STATUS_E_FAILURE;
30640 }
30641
Wilson Yang00256342013-10-10 23:13:38 -070030642 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
30643
30644 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070030645 Extract response and send it to UMAC
30646 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030647 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
30648 {
30649 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
30650 pEventData->pEventData,
30651 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070030652
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030653 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030654 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030655 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
30656 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
30657 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
30658 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
30659 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
30660 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
30661 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
30662 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053030663
30664 wpalMutexAcquire(&pWDICtx->wptMutex);
30665 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
30666 &pBSSSes);
30667
30668 if ( NULL == pBSSSes )
30669 {
30670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30671 "Association sequence for this BSS does not exist or "
30672 "association no longer in progress - mysterious HAL response");
30673 wpalMutexRelease(&pWDICtx->wptMutex);
30674 return WDI_STATUS_E_NOT_ALLOWED;
30675 }
30676
30677 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
30678 sizeof (wpt_macAddr));
30679 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030680 }
30681 else
30682 {
30683 halStatus = *((eHalStatus*)pEventData->pEventData);
30684 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30685 }
Jeff Johnson295189b2012-06-20 16:38:30 -070030686 /*Notify UMAC*/
30687 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
30688 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070030689 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070030690
30691 return WDI_STATUS_SUCCESS;
30692}
30693#endif // WLAN_FEATURE_GTK_OFFLOAD
30694
30695#ifdef WLAN_WAKEUP_EVENTS
30696WDI_Status
30697WDI_ProcessWakeReasonInd
30698(
30699 WDI_ControlBlockType* pWDICtx,
30700 WDI_EventInfoType* pEventData
30701)
30702{
30703 WDI_LowLevelIndType *pWdiInd;
30704 tpWakeReasonParams pWakeReasonParams;
30705 wpt_uint32 allocSize = 0;
30706
30707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030708 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030709
30710 /*-------------------------------------------------------------------------
30711 Sanity check
30712 -------------------------------------------------------------------------*/
30713 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30714 ( NULL == pEventData->pEventData ))
30715 {
30716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030717 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030718 WDI_ASSERT( 0 );
30719 return WDI_STATUS_E_FAILURE;
30720 }
30721
30722 /*-------------------------------------------------------------------------
30723 Extract indication and send it to UMAC
30724 -------------------------------------------------------------------------*/
30725 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
30726
30727 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
30728
30729 //Allocate memory for WDI_WakeReasonIndType structure
30730 pWdiInd = wpalMemoryAllocate(allocSize) ;
30731
30732 if(NULL == pWdiInd)
30733 {
30734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030735 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %pK %pK %pK ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030736 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070030737 WDI_ASSERT(0);
30738 return WDI_STATUS_E_FAILURE;
30739 }
30740
30741 wpalMemoryZero(pWdiInd, allocSize);
30742
30743 /* Fill in the indication parameters*/
30744 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
30745 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
30746 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
30747 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
30748 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
30749 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
30750 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
30751 &(pWakeReasonParams->aDataStart[0]),
30752 pWakeReasonParams->ulStoredDataLen);
30753
ltimariub77f24b2013-01-24 18:54:33 -080030754
30755 if ( pWDICtx->wdiLowLevelIndCB )
30756 {
30757 /*Notify UMAC*/
30758 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
30759 }
Jeff Johnson295189b2012-06-20 16:38:30 -070030760
30761 //Free memory allocated for WDI_WakeReasonIndType structure
30762 wpalMemoryFree(pWdiInd);
30763
30764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030765 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030766
30767 return WDI_STATUS_SUCCESS;
30768}
30769#endif // WLAN_WAKEUP_EVENTS
30770
30771void WDI_GetWcnssCompiledApiVersion
30772(
30773 WDI_WlanVersionType *pWcnssApiVersion
30774)
30775{
30776 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
30777 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
30778 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
30779 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
30780}
30781
30782/**
30783 @brief Process Set TM Level Rsp function (called when a
30784 response is being received over the bus from HAL)
30785
30786 @param pWDICtx: pointer to the WLAN DAL context
30787 pEventData: pointer to the event information structure
30788
30789 @see
30790 @return Result of the function call
30791*/
30792WDI_Status
30793WDI_ProcessSetTmLevelRsp
30794(
30795 WDI_ControlBlockType* pWDICtx,
30796 WDI_EventInfoType* pEventData
30797)
30798{
30799 WDI_Status wdiStatus;
30800 eHalStatus halStatus;
30801 WDI_SetTmLevelCb wdiSetTmLevelCb;
30802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30803
30804 /*-------------------------------------------------------------------------
30805 Sanity check
30806 -------------------------------------------------------------------------*/
30807 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30808 ( NULL == pEventData->pEventData ))
30809 {
30810 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030811 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030812 WDI_ASSERT(0);
30813 return WDI_STATUS_E_FAILURE;
30814 }
30815
30816 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
30817
30818 /*-------------------------------------------------------------------------
30819 Extract response and send it to UMAC
30820 -------------------------------------------------------------------------*/
30821 halStatus = *((eHalStatus*)pEventData->pEventData);
30822 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30823
30824 /*Notify UMAC*/
30825 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
30826
30827 return WDI_STATUS_SUCCESS;
30828}/*WDI_ProcessSetTmLevelRsp*/
30829
30830/**
30831 @brief Process Set Thermal Mitigation level Changed request
30832
30833 @param pWDICtx: pointer to the WLAN DAL context
30834 pEventData: pointer to the event information structure
30835
30836 @see
30837 @return Result of the function call
30838*/
30839WDI_Status
30840WDI_ProcessSetTmLevelReq
30841(
30842 WDI_ControlBlockType* pWDICtx,
30843 WDI_EventInfoType* pEventData
30844)
30845{
30846 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
30847 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
30848 wpt_uint8* pSendBuffer = NULL;
30849 wpt_uint16 usDataOffset = 0;
30850 wpt_uint16 usSendSize = 0;
30851 tSetThermalMitgationType halTmMsg;
30852
30853 /*-------------------------------------------------------------------------
30854 Sanity check
30855 -------------------------------------------------------------------------*/
30856 if (( NULL == pEventData ) ||
30857 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
30858 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
30859 {
30860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030861 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030862 WDI_ASSERT(0);
30863 return WDI_STATUS_E_FAILURE;
30864 }
30865
30866 /*-----------------------------------------------------------------------
30867 Get message buffer
30868 -----------------------------------------------------------------------*/
30869 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
30870 sizeof(halTmMsg),
30871 &pSendBuffer, &usDataOffset, &usSendSize))||
30872 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
30873 {
30874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070030875 "Unable to get send buffer in Set PNO req %pK %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070030876 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
30877 WDI_ASSERT(0);
30878 return WDI_STATUS_E_FAILURE;
30879 }
30880
30881 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
30882 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
30883
30884 wpalMemoryCopy( pSendBuffer+usDataOffset,
30885 &halTmMsg,
30886 sizeof(halTmMsg));
30887
30888 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
30889 pWDICtx->pfncRspCB = NULL;
30890 /*-------------------------------------------------------------------------
30891 Send Get STA Request to HAL
30892 -------------------------------------------------------------------------*/
30893 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30894 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
30895}
30896
30897/* Fill the value from the global features enabled array to the global capabilities
30898 * bitmap struct
30899 */
30900static void
30901FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
30902{
30903 wpt_int8 i;
30904 for (i=0; i<len; i++)
30905 {
30906 setFeatCaps(fCaps, enabledFeat[i]);
30907 }
30908}
30909
30910/**
30911 @brief WDI_featureCapsExchangeReq
30912 Post feature capability bitmap exchange event.
30913 Host will send its own capability to FW in this req and
30914 expect FW to send its capability back as a bitmap in Response
30915
30916 @param
30917
30918 wdiFeatureCapsExchangeCb: callback called on getting the response.
30919 It is kept to mantain similarity between WDI reqs and if needed, can
30920 be used in future. Currently, It is set to NULL
30921
30922 pUserData: user data will be passed back with the
30923 callback
30924
30925 @see
30926 @return Result of the function call
30927*/
30928WDI_Status
30929WDI_featureCapsExchangeReq
30930(
30931 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
30932 void* pUserData
30933)
30934{
30935 WDI_EventInfoType wdiEventData;
30936 wpt_int32 fCapsStructSize;
30937
30938 /*------------------------------------------------------------------------
30939 Sanity Check
30940 ------------------------------------------------------------------------*/
30941 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30942 {
30943 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30944 "WDI API call before module is initialized - Fail request");
30945
30946 return WDI_STATUS_E_NOT_ALLOWED;
30947 }
30948
30949 /* Allocate memory separately for global variable carrying FW caps */
30950 fCapsStructSize = sizeof(tWlanFeatCaps);
30951 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
30952 if ( NULL == gpHostWlanFeatCaps )
30953 {
30954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030955 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070030956 WDI_ASSERT(0);
30957 return WDI_STATUS_MEM_FAILURE;
30958 }
30959
30960 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
30961
30962 /*------------------------------------------------------------------------
30963 Fill in Event data and post to the Main FSM
30964 ------------------------------------------------------------------------*/
30965 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
30966 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053030967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030968 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070030969 gpHostWlanFeatCaps->featCaps[0],
30970 gpHostWlanFeatCaps->featCaps[1],
30971 gpHostWlanFeatCaps->featCaps[2],
30972 gpHostWlanFeatCaps->featCaps[3]
30973 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053030974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053030975 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070030976 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
30977 wdiEventData.pEventData = gpHostWlanFeatCaps;
30978 wdiEventData.uEventDataSize = fCapsStructSize;
30979 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
30980 wdiEventData.pUserData = pUserData;
30981
30982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30983}
30984
30985/**
Yathish9f22e662012-12-10 14:21:35 -080030986 @brief Disable Active mode offload in Host
30987
30988 @param void
30989 @see
30990 @return void
30991*/
30992void
30993WDI_disableCapablityFeature(wpt_uint8 feature_index)
30994{
30995 supportEnabledFeatures[feature_index] = 0;
30996 return;
30997}
30998
30999/**
Jeff Johnson295189b2012-06-20 16:38:30 -070031000 @brief Process Host-FW Capability Exchange Request function
31001
31002 @param pWDICtx: pointer to the WLAN DAL context
31003 pEventData: pointer to the event information structure
31004
31005 @see
31006 @return Result of the function call
31007*/
31008WDI_Status
31009WDI_ProcessFeatureCapsExchangeReq
31010(
31011 WDI_ControlBlockType* pWDICtx,
31012 WDI_EventInfoType* pEventData
31013)
31014{
31015 wpt_uint8* pSendBuffer = NULL;
31016 wpt_uint16 usDataOffset = 0;
31017 wpt_uint16 usSendSize = 0;
31018 wpt_uint16 usLen = 0;
31019
31020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31021
31022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031023 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070031024
31025 /*-------------------------------------------------------------------------
31026 Sanity check
31027 -------------------------------------------------------------------------*/
31028 /* Call back function is NULL since not required for cap exchange req */
31029 if (( NULL == pEventData ) ||
31030 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
31031 {
31032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031033 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070031034 WDI_ASSERT(0);
31035 return WDI_STATUS_E_FAILURE;
31036 }
31037
31038 /*-----------------------------------------------------------------------
31039 Get message buffer
31040 -----------------------------------------------------------------------*/
31041 usLen = sizeof(tWlanFeatCaps);
31042
31043 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31044 WDI_FEATURE_CAPS_EXCHANGE_REQ,
31045 usLen,
31046 &pSendBuffer, &usDataOffset, &usSendSize))||
31047 ( usSendSize < (usDataOffset + usLen )))
31048 {
31049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070031050 "Unable to get send buffer in feat caps exchange req %pK %pK",
Jeff Johnson295189b2012-06-20 16:38:30 -070031051 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
31052 WDI_ASSERT(0);
31053 return WDI_STATUS_E_FAILURE;
31054 }
31055
31056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031057 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070031058 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
31059 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
31060 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
31061 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
31062 );
31063
31064 /* Copy host caps after the offset in the send buffer */
31065 wpalMemoryCopy( pSendBuffer+usDataOffset,
31066 (tWlanFeatCaps *)pEventData->pEventData,
31067 usLen);
31068
31069 /*-------------------------------------------------------------------------
31070 Send Start Request to HAL
31071 -------------------------------------------------------------------------*/
31072 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Rajeev Kumar Sirasanagandla4c068d42019-02-22 21:39:36 +053031073 pEventData->pCBfnc,
Jeff Johnson295189b2012-06-20 16:38:30 -070031074 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
31075
31076}/*WDI_ProcessFeatureCapsExchangeReq*/
31077
31078/**
31079 @brief Process Host-FW Capability Exchange Response function
31080
31081 @param pWDICtx: pointer to the WLAN DAL context
31082 pEventData: pointer to the event information structure
31083
31084 @see
31085 @return Result of the function call
31086*/
31087WDI_Status
31088WDI_ProcessFeatureCapsExchangeRsp
31089(
31090 WDI_ControlBlockType* pWDICtx,
31091 WDI_EventInfoType* pEventData
31092)
31093{
31094 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
31095 wpt_int32 fCapsStructSize;
31096 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31097
31098 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031099 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070031100
31101 /*-------------------------------------------------------------------------
31102 Sanity check
31103 -------------------------------------------------------------------------*/
31104 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31105 ( NULL == pEventData->pEventData ))
31106 {
31107 /* It will go here when riva is old (doesn't understand this msg) and host is new */
31108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031109 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070031110 WDI_ASSERT(0);
31111 return WDI_STATUS_E_FAILURE;
31112 }
31113
31114 /* Allocate memory separately for global variable carrying FW caps */
31115 fCapsStructSize = sizeof(tWlanFeatCaps);
31116 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
31117 if ( NULL == gpFwWlanFeatCaps )
31118 {
31119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031120 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070031121 WDI_ASSERT(0);
31122 return WDI_STATUS_MEM_FAILURE;
31123 }
31124
31125 /*-------------------------------------------------------------------------
31126 Unpack HAL Response Message - the header was already extracted by the
31127 main Response Handling procedure
31128 -------------------------------------------------------------------------*/
31129 /*-------------------------------------------------------------------------
31130 Extract response and send it to UMAC
31131 -------------------------------------------------------------------------*/
31132
31133 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
31134 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053031135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031136 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070031137 gpFwWlanFeatCaps->featCaps[0],
31138 gpFwWlanFeatCaps->featCaps[1],
31139 gpFwWlanFeatCaps->featCaps[2],
31140 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053031141 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053031142
Ratheesh S P36dbc932015-08-07 14:28:57 +053031143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053031144 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070031145 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
31146
31147 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
Rajeev Kumar Sirasanagandla4c068d42019-02-22 21:39:36 +053031148 if (wdiFeatureCapsExchangeCb)
31149 wdiFeatureCapsExchangeCb(NULL, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070031150
31151 return WDI_STATUS_SUCCESS;
31152}
31153
Mohit Khanna4a70d262012-09-11 16:30:12 -070031154#ifdef WLAN_FEATURE_11AC
31155WDI_Status
31156WDI_ProcessUpdateVHTOpModeRsp
31157(
31158 WDI_ControlBlockType* pWDICtx,
31159 WDI_EventInfoType* pEventData
31160)
31161{
31162 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
31163 WDI_Status wdiStatus;
31164 eHalStatus halStatus;
31165
31166 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31167
31168 /*-------------------------------------------------------------------------
31169 Sanity check
31170 -------------------------------------------------------------------------*/
31171 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31172 ( NULL == pEventData->pEventData))
31173 {
31174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031175 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031176 WDI_ASSERT(0);
31177 return WDI_STATUS_E_FAILURE;
31178 }
31179 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
31180
31181 /*-------------------------------------------------------------------------
31182 Extract response and send it to UMAC
31183 -------------------------------------------------------------------------*/
31184 halStatus = *((eHalStatus*)pEventData->pEventData);
31185 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31186
31187 /*Notify UMAC*/
31188 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
31189
31190 return WDI_STATUS_SUCCESS;
31191}
31192#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070031193/**
31194 @brief WDI_getHostWlanFeatCaps
31195 WDI API that returns whether the feature passed to it as enum value in
31196 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
31197 variable storing host capability bitmap to find this. This can be used by
31198 other moduels to decide certain things like call different APIs based on
31199 whether a particular feature is supported.
31200
31201 @param
31202
31203 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
31204
31205 @see
31206 @return
31207 0 - if the feature is NOT supported in host
31208 any non-zero value - if the feature is SUPPORTED in host.
31209*/
31210wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
31211{
31212 wpt_uint8 featSupported = 0;
31213 if (gpHostWlanFeatCaps != NULL)
31214 {
31215 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
31216 }
31217 else
31218 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070031219 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070031220 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070031221 }
31222 return featSupported;
31223}
31224
31225/**
31226 @brief WDI_getFwWlanFeatCaps
31227 WDI API that returns whether the feature passed to it as enum value in
31228 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
31229 variable storing host capability bitmap to find this. This can be used by
31230 other moduels to decide certain things like call different APIs based on
31231 whether a particular feature is supported.
31232
31233 @param
31234
31235 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
31236 in wlan_hal_msg.h.
31237
31238 @see
31239 @return
31240 0 - if the feature is NOT supported in FW
31241 any non-zero value - if the feature is SUPPORTED in FW.
31242*/
31243wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
31244{
31245 wpt_uint8 featSupported = 0;
31246 if (gpFwWlanFeatCaps != NULL)
31247 {
31248 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
31249 }
31250 else
31251 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070031252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070031253 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070031254 }
31255 return featSupported;
31256}
Mohit Khanna4a70d262012-09-11 16:30:12 -070031257
Katya Nigamf0511f62015-05-05 16:40:57 +053031258wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
31259{
31260 /* 5gHz Channel */
31261 if( channel >= 34 && channel <= 165 )
31262 {
31263 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
31264 {
31265 if ( channel== 36 || channel == 52 || channel == 100 ||
31266 channel == 116 || channel == 149 )
31267 {
31268 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
31269 }
31270 else if ( channel == 40 || channel == 56 || channel == 104 ||
31271 channel == 120 || channel == 153 )
31272 {
31273 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
31274 }
31275 else if ( channel == 44 || channel == 60 || channel == 108 ||
31276 channel == 124 || channel == 157 )
31277 {
31278 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
31279 }
31280 else if ( channel == 48 || channel == 64 || channel == 112 ||
31281 channel == 128 || channel == 144 || channel == 161 )
31282 {
31283 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
31284 }
31285 else if ( channel == 165 )
31286 {
31287 return PHY_SINGLE_CHANNEL_CENTERED;
31288 }
31289 }
31290
31291 else
31292 {
31293 if ( channel== 40 || channel == 48 || channel == 56 ||
31294 channel == 64 || channel == 104 || channel == 112 ||
31295 channel == 120 || channel == 128 || channel == 136 ||
31296 channel == 144 || channel == 153 || channel == 161 )
31297 {
31298 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
31299 }
31300 else if ( channel== 36 || channel == 44 || channel == 52 ||
31301 channel == 60 || channel == 100 || channel == 108 ||
31302 channel == 116 || channel == 124 || channel == 132 ||
31303 channel == 140 || channel == 149 || channel == 157 )
31304 {
31305 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
31306 }
31307 else if ( channel == 165 )
31308 {
31309 return PHY_SINGLE_CHANNEL_CENTERED;
31310 }
31311 }
31312 }
31313
31314 /* 2.4Ghz Channel */
31315 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
31316 {
31317 if (channel >= 1 && channel <= 7)
31318 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
31319 else if (channel >= 8 && channel <= 13)
31320 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
31321 else if (channel ==14)
31322 return PHY_SINGLE_CHANNEL_CENTERED;
31323 }
31324 return PHY_SINGLE_CHANNEL_CENTERED;
31325}
31326
Mohit Khanna4a70d262012-09-11 16:30:12 -070031327#ifdef WLAN_FEATURE_11AC
31328WDI_Status
31329WDI_ProcessUpdateVHTOpModeReq
31330(
31331 WDI_ControlBlockType* pWDICtx,
31332 WDI_EventInfoType* pEventData
31333)
31334{
31335 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
31336 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
31337 wpt_uint8* pSendBuffer = NULL;
31338 wpt_uint16 usDataOffset = 0;
31339 wpt_uint16 usSendSize = 0;
31340
31341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31342
31343 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031344 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031345
31346 /*-------------------------------------------------------------------------
31347 Sanity check
31348 -------------------------------------------------------------------------*/
31349 if (( NULL == pEventData ) ||
31350 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
31351 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
31352 {
31353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031354 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031355 WDI_ASSERT(0);
31356 return WDI_STATUS_E_FAILURE;
31357 }
31358
31359 /*-----------------------------------------------------------------------
31360 Get message buffer
31361 -----------------------------------------------------------------------*/
31362 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
31363 sizeof(WDI_UpdateVHTOpMode),
31364 &pSendBuffer, &usDataOffset, &usSendSize))||
31365 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
31366 {
31367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31368 "Unable to get send buffer in update vht opMode req");
31369 WDI_ASSERT(0);
31370 return WDI_STATUS_E_FAILURE;
31371 }
31372
31373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031374 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031375
31376 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
31377 sizeof(WDI_UpdateVHTOpMode));
31378
31379 /*-------------------------------------------------------------------------
31380 Send Start Request to HAL
31381 -------------------------------------------------------------------------*/
31382 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
31383 wdiVHTOpModeCb,
31384 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
31385
31386}
31387
31388WDI_Status
31389WDI_UpdateVHTOpModeReq
31390(
31391 WDI_UpdateVHTOpMode *pData,
31392 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
31393 void* pUserData
31394)
31395{
31396 WDI_EventInfoType wdiEventData;
31397
31398 /*------------------------------------------------------------------------
31399 Sanity Check
31400 ------------------------------------------------------------------------*/
31401 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31402 {
31403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31404 "WDI API call before module is initialized - Fail request");
31405
31406 return WDI_STATUS_E_NOT_ALLOWED;
31407 }
31408
31409 /*------------------------------------------------------------------------
31410 Fill in Event data and post to the Main FSM
31411 ------------------------------------------------------------------------*/
31412 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
31413 wdiEventData.pEventData = pData;
31414 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
31415 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
31416 wdiEventData.pUserData = pUserData;
31417
31418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080031419 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070031420
31421 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31422
31423}
31424#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070031425
31426/**
31427 @brief WDI_TransportChannelDebug -
31428 Display DXE Channel debugging information
31429 User may request to display DXE channel snapshot
31430 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070031431
Jeff Johnsonb88db982012-12-10 13:34:59 -080031432 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053031433 @param debugFlags : Enable stall detect features
31434 defined by WPAL_DeviceDebugFlags
31435 These features may effect
31436 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070031437 @see
31438 @return none
31439*/
31440void WDI_TransportChannelDebug
31441(
31442 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053031443 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070031444)
31445{
Mihir Shete40a55652014-03-02 14:14:47 +053031446 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070031447 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070031448}
Sravan Kumar Kairam6eac7522015-11-27 23:37:02 +053031449
31450/**
31451 @brief WDI_TransportKickDxe -
31452 Request Kick DXE when HDD TX time out happen
31453
31454 @param none
31455 @see
31456 @return none
31457*/
31458void WDI_TransportKickDxe()
31459{
31460 WDTS_ChannelKickDxe();
31461 return;
31462}
31463
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070031464/**
31465 @brief WDI_SsrTimerCB
31466 Callback function for SSR timer, if this is called then the graceful
31467 shutdown for Riva did not happen.
31468
31469 @param pUserData : user data to timer
31470
31471 @see
31472 @return none
31473*/
31474void
31475WDI_SsrTimerCB
31476(
31477 void *pUserData
31478)
31479{
31480 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
31481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31482
31483 if (NULL == pWDICtx )
31484 {
31485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070031486 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070031487 WDI_ASSERT(0);
31488 return;
31489 }
31490 wpalRivaSubystemRestart();
31491
31492 return;
31493
31494}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070031495
31496/**
31497 @brief WDI_SetEnableSSR -
31498 This API is called to enable/disable SSR on WDI timeout.
31499
31500 @param enableSSR : enable/disable SSR
31501
31502 @see
31503 @return none
31504*/
31505void WDI_SetEnableSSR(wpt_boolean enableSSR)
31506{
31507 gWDICb.bEnableSSR = enableSSR;
31508}
Leo Chang9056f462013-08-01 19:21:11 -070031509
Agrawal Ashishaf1de652016-03-02 18:03:43 +053031510/**
31511 * WDI_SetMgmtPktViaWQ5() - Set INI params sendMgmtPktViaWQ5 to Control
31512 * Block Type.
31513 * @sendMgmtPktViaWQ5: INI params to enable/disable sending mgmt pkt via WQ5.
31514 *
31515 * Return: void
31516 */
31517void WDI_SetMgmtPktViaWQ5(wpt_boolean sendMgmtPktViaWQ5)
31518{
31519 gWDICb.sendMgmtPktViaWQ5 = sendMgmtPktViaWQ5;
31520}
31521
Leo Chang9056f462013-08-01 19:21:11 -070031522
31523#ifdef FEATURE_WLAN_LPHB
31524/**
Leo Changd9df8aa2013-09-26 13:32:26 -070031525 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070031526 This function will be invoked when FW detects low power
31527 heart beat failure
31528
31529 @param pWDICtx : wdi context
31530 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070031531 @see
31532 @return Result of the function call
31533*/
31534WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070031535WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070031536(
31537 WDI_ControlBlockType* pWDICtx,
31538 WDI_EventInfoType* pEventData
31539)
31540{
31541 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070031542 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070031543 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31544
31545 /*-------------------------------------------------------------------------
31546 Sanity check
31547 -------------------------------------------------------------------------*/
31548 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31549 (NULL == pEventData->pEventData))
31550 {
31551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31552 "%s: Invalid parameters", __func__);
31553 WDI_ASSERT(0);
31554 return WDI_STATUS_E_FAILURE;
31555 }
31556
31557 /*-------------------------------------------------------------------------
31558 Extract indication and send it to UMAC
31559 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070031560 wpalMemoryCopy(&lphbIndicationParam,
31561 pEventData->pEventData,
31562 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070031563
Leo Changd9df8aa2013-09-26 13:32:26 -070031564 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070031565 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070031566 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070031567 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070031568 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070031569 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070031570 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070031571 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070031572 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070031573 /*Notify UMAC*/
31574 if (pWDICtx->wdiLowLevelIndCB)
31575 {
31576 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31577 }
31578
31579 return WDI_STATUS_SUCCESS;
31580}
31581
31582/**
31583 @brief WDI_ProcessLphbCfgRsp -
31584 LPHB configuration response from FW
31585
31586 @param pWDICtx : wdi context
31587 pEventData : indication data
31588
31589 @see
31590 @return Result of the function call
31591*/
31592WDI_Status WDI_ProcessLphbCfgRsp
31593(
31594 WDI_ControlBlockType* pWDICtx,
31595 WDI_EventInfoType* pEventData
31596)
31597{
31598 WDI_Status wdiStatus;
31599 eHalStatus halStatus;
31600 WDI_LphbCfgCb wdiLphbCfgCb;
31601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31602
31603 /*-------------------------------------------------------------------------
31604 Sanity check
31605 -------------------------------------------------------------------------*/
31606 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31607 (NULL == pEventData->pEventData))
31608 {
31609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31610 "%s: Invalid parameters", __func__);
31611 WDI_ASSERT(0);
31612 return WDI_STATUS_E_FAILURE;
31613 }
31614
31615 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
31616
31617 /*-------------------------------------------------------------------------
31618 Extract response and send it to UMAC
31619 -------------------------------------------------------------------------*/
31620 halStatus = *((eHalStatus*)pEventData->pEventData);
31621 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31622
31623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31624 "LPHB Cfg Rsp Return status %d", wdiStatus);
31625 /*Notify UMAC*/
31626 if (NULL != wdiLphbCfgCb)
31627 {
31628 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
31629 }
31630
31631 return WDI_STATUS_SUCCESS;
31632}
31633
31634/**
31635 @brief WDI_ProcessLPHBConfReq -
31636 LPHB configuration request to FW
31637
31638 @param pWDICtx : wdi context
31639 pEventData : indication data
31640
31641 @see
31642 @return none
31643*/
31644WDI_Status WDI_ProcessLPHBConfReq
31645(
31646 WDI_ControlBlockType* pWDICtx,
31647 WDI_EventInfoType* pEventData
31648)
31649{
31650 WDI_LPHBReq *pLphbReqParams;
31651 WDI_Status wdiStatus;
31652 wpt_uint8* pSendBuffer = NULL;
31653 wpt_uint16 usDataOffset = 0;
31654 wpt_uint16 usSendSize = 0;
31655 tHalLowPowerHeartBeatReq *halLphbReqRarams;
31656 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31657
31658 /*-------------------------------------------------------------------------
31659 Sanity check
31660 -------------------------------------------------------------------------*/
31661 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31662 {
31663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31664 "%s: Invalid parameters in Suspend ind",__func__);
31665 WDI_ASSERT(0);
31666 return WDI_STATUS_E_FAILURE;
31667 }
31668
31669 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
31670
31671 /*-----------------------------------------------------------------------
31672 Get message buffer
31673 -----------------------------------------------------------------------*/
31674 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31675 WDI_LPHB_CFG_REQ,
31676 sizeof(tHalLowPowerHeartBeatReqMsg),
31677 &pSendBuffer, &usDataOffset, &usSendSize))||
31678 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
31679 {
31680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31681 "Unable to get send buffer in LPHB Ind ");
31682 WDI_ASSERT(0);
31683 return WDI_STATUS_E_FAILURE;
31684 }
31685
31686 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
31687 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
31688
31689 halLphbReqRarams->lowPowerHeartBeatCmdType =
31690 (tANI_U16)(++pLphbReqParams->cmd);
31691 switch ((tANI_U16)pLphbReqParams->cmd)
31692 {
31693 case WDI_LPHB_SET_EN_PARAMS_INDID:
31694 halLphbReqRarams->sessionIdx =
31695 pLphbReqParams->params.lphbEnableReq.session;
31696 halLphbReqRarams->options.control.heartBeatEnable =
31697 pLphbReqParams->params.lphbEnableReq.enable;
31698 halLphbReqRarams->options.control.heartBeatType =
31699 pLphbReqParams->params.lphbEnableReq.item;
31700 break;
31701
31702 case WDI_LPHB_SET_TCP_PARAMS_INDID:
31703 halLphbReqRarams->sessionIdx =
31704 pLphbReqParams->params.lphbTcpParamReq.session;
31705 halLphbReqRarams->options.tcpParams.timeOutSec =
31706 pLphbReqParams->params.lphbTcpParamReq.timeout;
31707 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
31708 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
31709 sizeof(v_U32_t));
31710 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
31711 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
31712 sizeof(v_U32_t));
31713
31714 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
31715 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
31716 WDI_MAC_ADDR_LEN);
31717
31718 halLphbReqRarams->options.tcpParams.hostPort =
31719 pLphbReqParams->params.lphbTcpParamReq.src_port;
31720 halLphbReqRarams->options.tcpParams.destPort =
31721 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070031722 halLphbReqRarams->options.tcpParams.timePeriodSec =
31723 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
31724 halLphbReqRarams->options.tcpParams.tcpSn =
31725 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070031726 break;
31727
31728 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
31729 halLphbReqRarams->sessionIdx =
31730 pLphbReqParams->params.lphbTcpFilterReq.session;
31731 halLphbReqRarams->options.tcpUdpFilter.offset =
31732 pLphbReqParams->params.lphbTcpFilterReq.offset;
31733 halLphbReqRarams->options.tcpUdpFilter.filterLength =
31734 pLphbReqParams->params.lphbTcpFilterReq.length;
31735 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
31736 pLphbReqParams->params.lphbTcpFilterReq.filter,
31737 WDI_LPHB_FILTER_LEN);
31738 break;
31739
31740 case WDI_LPHB_SET_UDP_PARAMS_INDID:
31741 halLphbReqRarams->sessionIdx =
31742 pLphbReqParams->params.lphbUdpParamReq.session;
31743 halLphbReqRarams->options.udpParams.timeOutSec =
31744 pLphbReqParams->params.lphbUdpParamReq.timeout;
31745 halLphbReqRarams->options.udpParams.timePeriodSec =
31746 pLphbReqParams->params.lphbUdpParamReq.interval;
31747 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
31748 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
31749 sizeof(v_U32_t));
31750 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
31751 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
31752 sizeof(v_U32_t));
31753
31754 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
31755 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
31756 WDI_MAC_ADDR_LEN);
31757
31758 halLphbReqRarams->options.udpParams.hostPort =
31759 pLphbReqParams->params.lphbUdpParamReq.src_port;
31760 halLphbReqRarams->options.udpParams.destPort =
31761 pLphbReqParams->params.lphbUdpParamReq.dst_port;
31762 break;
31763
31764 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
31765 halLphbReqRarams->sessionIdx =
31766 pLphbReqParams->params.lphbUdpFilterReq.session;
31767 halLphbReqRarams->options.tcpUdpFilter.offset =
31768 pLphbReqParams->params.lphbUdpFilterReq.offset;
31769 halLphbReqRarams->options.tcpUdpFilter.filterLength =
31770 pLphbReqParams->params.lphbUdpFilterReq.length;
31771 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
31772 pLphbReqParams->params.lphbUdpFilterReq.filter,
31773 WDI_LPHB_FILTER_LEN);
31774 break;
31775
31776 case WDI_LPHB_SET_NETWORK_INFO_INDID:
31777 /* NA */
31778 break;
31779
31780 default:
31781 break;
31782 }
31783
31784 /*-------------------------------------------------------------------------
31785 Send Suspend Request to HAL
31786 -------------------------------------------------------------------------*/
31787 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31788 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31789
31790 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31791 usSendSize, pWDICtx->pfncRspCB,
31792 pWDICtx->pReqStatusUserData,
31793 WDI_LPHB_CFG_RESP);
31794
31795 return wdiStatus;
31796}
31797
31798/**
31799 @brief WDI_LPHBConfReq -
31800 LPHB configuration request API
31801
31802 @param lphbconfParam : configuration parameter
31803 usrData : client context
31804 lphbCfgCb : callback function pointer
31805
31806 @see
31807 @return Success or fail status code
31808*/
31809WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
31810 void *usrData, WDI_LphbCfgCb lphbCfgCb)
31811{
31812 WDI_EventInfoType wdiEventData;
31813
31814 /*------------------------------------------------------------------------
31815 Sanity Check
31816 ------------------------------------------------------------------------*/
31817 if (eWLAN_PAL_FALSE == gWDIInitialized)
31818 {
31819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31820 "WDI API call before module is initialized - Fail request");
31821
31822 return WDI_STATUS_E_NOT_ALLOWED;
31823 }
31824
31825 /*------------------------------------------------------------------------
31826 Fill in Event data and post to the Main FSM
31827 ------------------------------------------------------------------------*/
31828 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
31829 wdiEventData.pEventData = lphbconfParam;
31830 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
31831 wdiEventData.pCBfnc = lphbCfgCb;
31832 wdiEventData.pUserData = usrData;
31833
31834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31835}
31836#endif /* FEATURE_WLAN_LPHB */
31837
Ravi Joshid2ca7c42013-07-23 08:37:49 -070031838/**
31839 @brief WDI_ProcessIbssPeerInactivityInd
31840 Process peer inactivity indication coming from HAL
31841
31842 @param pWDICtx: pointer to the WLAN DAL context
31843 pEventData: pointer to the event information structure
31844 @see
31845 @return Result of the function call
31846*/
31847WDI_Status
31848WDI_ProcessIbssPeerInactivityInd
31849(
31850 WDI_ControlBlockType* pWDICtx,
31851 WDI_EventInfoType* pEventData
31852)
31853{
31854 WDI_LowLevelIndType wdiInd;
31855 tIbssPeerInactivityIndMsg halIbssIndMsg;
31856
31857 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31858
31859 /*-------------------------------------------------------------------------
31860 Sanity check
31861 -------------------------------------------------------------------------*/
31862 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31863 ( NULL == pEventData->pEventData ))
31864 {
31865 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31866 "%s: Invalid parameters", __func__);
31867 WDI_ASSERT( 0 );
31868 return WDI_STATUS_E_FAILURE;
31869 }
31870
31871 /*-------------------------------------------------------------------------
31872 Extract indication and send it to UMAC
31873 -------------------------------------------------------------------------*/
31874 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
31875 pEventData->pEventData,
31876 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
31877
31878 /*Fill in the indication parameters*/
31879 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
31880
31881 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
31882 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
31883
31884 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
31885 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
31886
31887 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
31888 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
31889 sizeof(tSirMacAddr));
31890
31891 /*Notify UMAC*/
31892 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31893
31894 return WDI_STATUS_SUCCESS;
31895
31896} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053031897
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031898
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031899/**
31900*@brief WDI_RateUpdateInd will be called when the upper MAC
31901 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053031902
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031903
31904 @param wdiRateUpdateIndParams:
31905
31906
31907 @see
31908 @return Result of the function call
31909*/
31910WDI_Status
31911WDI_RateUpdateInd
31912(
31913 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
31914)
31915{
31916 WDI_EventInfoType wdiEventData;
31917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31918
31919 /*------------------------------------------------------------------------
31920 Sanity Check
31921 ------------------------------------------------------------------------*/
31922 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31923 {
31924 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31925 "WDI API call before module is initialized - Fail request");
31926
31927 return WDI_STATUS_E_NOT_ALLOWED;
31928 }
31929
31930 /*------------------------------------------------------------------------
31931 Fill in Event data and post to the Main FSM
31932 ------------------------------------------------------------------------*/
31933 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
31934 wdiEventData.pEventData = wdiRateUpdateIndParams;
31935 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
31936 wdiEventData.pCBfnc = NULL;
31937 wdiEventData.pUserData = NULL;
31938
31939 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31940
31941}/* WDI_RateUpdateInd */
31942
31943/**
31944 @brief Process Rate Update Indication and post it to HAL
31945
31946 @param pWDICtx: pointer to the WLAN DAL context
31947 pEventData: pointer to the event information structure
31948
31949 @see
31950 @return Result of the function call
31951*/
31952WDI_Status
31953WDI_ProcessRateUpdateInd
31954(
31955 WDI_ControlBlockType* pWDICtx,
31956 WDI_EventInfoType* pEventData
31957)
31958{
31959 wpt_uint8* pSendBuffer = NULL;
31960 wpt_uint16 usDataOffset = 0;
31961 wpt_uint16 usSendSize = 0;
31962 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
31963 tHalRateUpdateInd *pRateUpdateInd;
31964 WDI_Status wdiStatus;
31965
31966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31967
31968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31969 "%s", __func__);
31970
31971 /*-------------------------------------------------------------------------
31972 Sanity check
31973 -------------------------------------------------------------------------*/
31974 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31975 {
31976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31977 "%s: Invalid parameters", __func__);
31978 WDI_ASSERT(0);
31979 return WDI_STATUS_E_FAILURE;
31980 }
31981 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
31982 /*-----------------------------------------------------------------------
31983 Get message buffer
31984 -----------------------------------------------------------------------*/
31985
31986 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31987 WDI_RATE_UPDATE_IND,
31988 sizeof(tHalRateUpdateParams),
31989 &pSendBuffer, &usDataOffset, &usSendSize))||
31990 ( usSendSize < (usDataOffset +
31991 sizeof(tHalRateUpdateParams) )))
31992 {
31993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070031994 "Unable to get send buffer in Rate Update Indication %pK ",
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031995 pEventData);
31996 WDI_ASSERT(0);
31997 return WDI_STATUS_E_FAILURE;
31998 }
31999
32000 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
32001
32002 /* Copy the bssid */
32003 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
32004 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
32005
32006 /* Copy the tx flags */
32007 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
32008 pwdiRateUpdateInd->ucastDataRateTxFlag;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032009 pRateUpdateInd->halRateUpdateParams.rmcDataRateTxFlag =
32010 pwdiRateUpdateInd->rmcDataRateTxFlag;
Chittajit Mitraf5413a42013-10-18 14:20:08 -070032011 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
32012 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
32013 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
32014 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
32015
32016 /* Copy the tx rates */
32017 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
32018 pwdiRateUpdateInd->ucastDataRate;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032019 pRateUpdateInd->halRateUpdateParams.rmcDataRate =
32020 pwdiRateUpdateInd->rmcDataRate;
Chittajit Mitraf5413a42013-10-18 14:20:08 -070032021 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
32022 pwdiRateUpdateInd->mcastDataRate24GHz;
32023 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
32024 pwdiRateUpdateInd->mcastDataRate5GHz;
32025
32026 /*-------------------------------------------------------------------------
32027 Send Rate Update Indication to HAL
32028 -------------------------------------------------------------------------*/
32029 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
32030 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
32031
32032 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
32033
32034 return (wdiStatus != WDI_STATUS_SUCCESS) ?
32035 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
32036
32037} /* WDI_ProcessRateUpdateInd */
32038
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032039#ifdef WLAN_FEATURE_RMC
32040WDI_Status
32041WDI_ProcessRMCRulerResp
32042(
32043 WDI_ControlBlockType* pWDICtx,
32044 WDI_EventInfoType* pEventData
32045)
32046{
32047 tHalRmcRulerRspMsg halRmcRulerRspMsg;
32048 WDI_RmcRulerRspCb wdiRmcRulerRspCb;
32049 WDI_RmcRspParamsType wdiRmcRsp;
32050
32051 /* Sanity check */
32052 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32053 ( NULL == pEventData->pEventData ))
32054 {
32055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32056 "%s: Invalid parameters", __func__);
32057 WDI_ASSERT( 0 );
32058 return WDI_STATUS_E_FAILURE;
32059 }
32060
32061 wdiRmcRulerRspCb = (WDI_RmcRulerRspCb)pWDICtx->pfncRspCB;
32062
32063 /* Extract indication and send it to UMAC */
32064 wpalMemoryCopy( &halRmcRulerRspMsg.rulerRspParams,
32065 pEventData->pEventData,
32066 sizeof(halRmcRulerRspMsg.rulerRspParams) );
32067
32068 wdiRmcRsp.status = halRmcRulerRspMsg.rulerRspParams.status;
32069 wpalMemoryCopy(wdiRmcRsp.mcastTransmitter,
32070 &halRmcRulerRspMsg.rulerRspParams.mcastTransmitter,
32071 sizeof(wdiRmcRsp.mcastTransmitter));
32072 wpalMemoryCopy(wdiRmcRsp.mcastGroup,
32073 &halRmcRulerRspMsg.rulerRspParams.mcastGroup,
32074 sizeof(wdiRmcRsp.mcastGroup));
32075
32076 switch (halRmcRulerRspMsg.rulerRspParams.cmd)
32077 {
32078 default:
32079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32080 "%s: Invalid command %d", __func__,
32081 halRmcRulerRspMsg.rulerRspParams.cmd);
32082 return WDI_STATUS_E_FAILURE;
32083
32084 case WLAN_HAL_SUGGEST_RULER:
32085 {
32086 /* Fill in the indication parameters */
32087 wdiRmcRsp.cmd = eWDI_SUGGEST_RULER_CMD;
32088 wpalMemoryCopy(wdiRmcRsp.ruler,
32089 &halRmcRulerRspMsg.rulerRspParams.ruler,
32090 sizeof(halRmcRulerRspMsg.rulerRspParams.ruler));
32091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32092 "%s Suggest_Ruler", __func__);
32093 break;
32094 }
32095
32096 case WLAN_HAL_BECOME_RULER:
32097 {
32098 /* Fill in the indication parameters */
32099 wdiRmcRsp.cmd = eWDI_BECOME_RULER_CMD;
32100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32101 "%s Become_Ruler", __func__);
32102 break;
32103 }
32104 }
32105
32106 /* Notify UMAC */
32107 wdiRmcRulerRspCb(&wdiRmcRsp, pWDICtx->pRspCBUserData);
32108
32109 return WDI_STATUS_SUCCESS;
32110}
32111
32112WDI_Status
32113WDI_ProcessRMCUpdateIndToHost
32114(
32115 WDI_ControlBlockType* pWDICtx,
32116 WDI_EventInfoType* pEventData
32117)
32118{
32119 WDI_LowLevelIndType wdiInd;
32120 tHalRmcUpdateInd halRmcUpdateInd;
32121
32122 /* Sanity check */
32123 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32124 ( NULL == pEventData->pEventData ))
32125 {
32126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32127 "%s: Invalid parameters", __func__);
32128 WDI_ASSERT( 0 );
32129 return WDI_STATUS_E_FAILURE;
32130 }
32131
32132 /* Extract indication and send it to UMAC */
32133 wpalMemoryCopy( &halRmcUpdateInd.rulerIndParams,
32134 pEventData->pEventData,
32135 sizeof(halRmcUpdateInd.rulerIndParams) );
32136
32137 switch (halRmcUpdateInd.rulerIndParams.indication)
32138 {
32139 default:
32140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32141 "%s: Invalid command %d", __func__,
32142 halRmcUpdateInd.rulerIndParams.indication);
32143 return WDI_STATUS_E_FAILURE;
32144
32145 case WLAN_HAL_RULER_PICK_NEW:
32146 {
32147 /* Fill in the indication parameters */
32148 wdiInd.wdiIndicationType = WDI_RMC_RULER_PICK_NEW;
32149 wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.indication
32150 = halRmcUpdateInd.rulerIndParams.indication;
32151 wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.role
32152 = halRmcUpdateInd.rulerIndParams.role;
32153 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd. \
32154 mcastTransmitter,
32155 &halRmcUpdateInd.rulerIndParams.mcastTransmitter,
32156 sizeof(tSirMacAddr) );
32157 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.mcastGroup,
32158 &halRmcUpdateInd.rulerIndParams.mcastGroup,
32159 sizeof(tSirMacAddr) );
32160 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.mcastRuler,
32161 &halRmcUpdateInd.rulerIndParams.mcastRuler,
32162 sizeof(tSirMacAddr) );
32163 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.ruler,
32164 &halRmcUpdateInd.rulerIndParams.ruler,
32165 sizeof(tSirMacAddr) * HAL_NUM_MAX_RULERS );
32166 break;
32167 }
32168 }
32169
32170
32171 /* Notify UMAC */
32172 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32173
32174 return WDI_STATUS_SUCCESS;
32175}
32176
32177WDI_Status
32178WDI_RmcRulerReq
32179(
32180 WDI_RmcRulerReqParams *wdiRmcRulerReqParams,
32181 WDI_RmcRulerRspCb wdiRmcRulerRspCb,
32182 void *usrData
32183)
32184{
32185 WDI_EventInfoType wdiEventData;
32186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32187
32188 /*------------------------------------------------------------------------
32189 Sanity Check
32190 ------------------------------------------------------------------------*/
32191 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32192 {
32193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32194 "WDI API call before module is initialized - Fail request");
32195
32196 return WDI_STATUS_E_NOT_ALLOWED;
32197 }
32198
32199 /*------------------------------------------------------------------------
32200 Fill in Event data and post to the Main FSM
32201 ------------------------------------------------------------------------*/
32202 wdiEventData.wdiRequest = WDI_RMC_RULER_REQ;
32203 wdiEventData.pEventData = wdiRmcRulerReqParams;
32204 wdiEventData.uEventDataSize = sizeof(WDI_RmcRulerReqParams);
32205 wdiEventData.pCBfnc = wdiRmcRulerRspCb;
32206 wdiEventData.pUserData = usrData;
32207
32208 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32209
32210} /* WDI_RmcRulerReq */
32211
32212WDI_Status
32213WDI_RmcUpdateInd
32214(
32215 WDI_RmcUpdateIndParams *wdiRmcUpdateIndParams
32216)
32217{
32218 WDI_EventInfoType wdiEventData;
32219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32220
32221 /*------------------------------------------------------------------------
32222 Sanity Check
32223 ------------------------------------------------------------------------*/
32224 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32225 {
32226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32227 "WDI API call before module is initialized - Fail request");
32228
32229 return WDI_STATUS_E_NOT_ALLOWED;
32230 }
32231
32232 /*------------------------------------------------------------------------
32233 Fill in Event data and post to the Main FSM
32234 ------------------------------------------------------------------------*/
32235 wdiEventData.wdiRequest = WDI_RMC_UPDATE_IND;
32236 wdiEventData.pEventData = wdiRmcUpdateIndParams;
32237 wdiEventData.uEventDataSize = sizeof(WDI_RmcUpdateIndParams);
32238 wdiEventData.pCBfnc = NULL;
32239 wdiEventData.pUserData = NULL;
32240
32241 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32242
32243}/* WDI_RmcUpdateInd */
32244
32245WDI_Status
32246WDI_ProcessRMCRulerReq
32247(
32248 WDI_ControlBlockType* pWDICtx,
32249 WDI_EventInfoType* pEventData
32250)
32251{
32252 WDI_Status wdiStatus;
32253 wpt_uint8* pSendBuffer = NULL;
32254 wpt_uint16 usDataOffset = 0;
32255 wpt_uint16 usSendSize = 0;
32256 WDI_RmcRulerReqParams *pwdiRulerReq = NULL;
32257 tHalRmcRulerReqMsg *pRulerReq;
32258
32259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32260
32261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32262 "%s", __func__);
32263
32264 /*-------------------------------------------------------------------------
32265 Sanity check
32266 -------------------------------------------------------------------------*/
32267 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32268 {
32269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32270 "%s: Invalid parameters", __func__);
32271 WDI_ASSERT(0);
32272 return WDI_STATUS_E_FAILURE;
32273 }
32274 pwdiRulerReq = (WDI_RmcRulerReqParams *)pEventData->pEventData;
32275 /*-----------------------------------------------------------------------
32276 Get message buffer
32277 -----------------------------------------------------------------------*/
32278
32279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32280 WDI_RMC_RULER_REQ,
32281 sizeof(tHalRmcRulerReqParams),
32282 &pSendBuffer, &usDataOffset, &usSendSize))||
32283 ( usSendSize < (usDataOffset +
32284 sizeof(tHalRmcRulerReqParams) )))
32285 {
32286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032287 "Unable to get send buffer in Ruler Req %pK ",
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032288 pEventData);
32289 WDI_ASSERT(0);
32290 return WDI_STATUS_E_FAILURE;
32291 }
32292
32293 pRulerReq = (tHalRmcRulerReqMsg *)pSendBuffer;
32294 pRulerReq->rulerReqParams.cmd = pwdiRulerReq->cmd;
32295 wpalMemoryCopy(pRulerReq->rulerReqParams.mcastTransmitter,
32296 pwdiRulerReq->mcastTransmitter, WDI_MAC_ADDR_LEN);
32297 wpalMemoryCopy(pRulerReq->rulerReqParams.mcastGroup,
32298 pwdiRulerReq->mcastGroup, WDI_MAC_ADDR_LEN);
32299 wpalMemoryCopy(pRulerReq->rulerReqParams.blacklist,
32300 pwdiRulerReq->blacklist,
32301 WDI_MAC_ADDR_LEN * HAL_NUM_MAX_RULERS);
32302
32303 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32304 pWDICtx->pfncRspCB = pEventData->pCBfnc;
32305
32306 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
32307 usSendSize, pWDICtx->pfncRspCB,
32308 pWDICtx->pReqStatusUserData,
32309 WDI_RMC_RULER_RESP);
32310 return wdiStatus;
32311
32312} /* WDI_ProcessRMCRulerReq */
32313
32314/**
32315 @brief Process Update Indication and post it to HAL
32316
32317 @param pWDICtx: pointer to the WLAN DAL context
32318 pEventData: pointer to the event information structure
32319
32320 @see
32321 @return Result of the function call
32322*/
32323WDI_Status
32324WDI_ProcessRMCUpdateInd
32325(
32326 WDI_ControlBlockType* pWDICtx,
32327 WDI_EventInfoType* pEventData
32328)
32329{
32330 wpt_uint8* pSendBuffer = NULL;
32331 wpt_uint16 usDataOffset = 0;
32332 wpt_uint16 usSendSize = 0;
32333 WDI_RmcUpdateIndParams *pwdiUpdateInd = NULL;
32334 tHalRmcUpdateInd *pUpdateInd;
32335 WDI_Status wdiStatus;
32336
32337 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32338
32339 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32340 "%s", __func__);
32341
32342 /*-------------------------------------------------------------------------
32343 Sanity check
32344 -------------------------------------------------------------------------*/
32345 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32346 {
32347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32348 "%s: Invalid parameters", __func__);
32349 WDI_ASSERT(0);
32350 return WDI_STATUS_E_FAILURE;
32351 }
32352 pwdiUpdateInd = (WDI_RmcUpdateIndParams *)pEventData->pEventData;
32353 /*-----------------------------------------------------------------------
32354 Get message buffer
32355 -----------------------------------------------------------------------*/
32356
32357 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32358 WDI_RMC_UPDATE_IND,
32359 sizeof(tHalRmcUpdateIndParams),
32360 &pSendBuffer, &usDataOffset, &usSendSize))||
32361 ( usSendSize < (usDataOffset +
32362 sizeof(tHalRmcUpdateIndParams) )))
32363 {
32364 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032365 "Unable to get send buffer in RMC Update Indication %pK ",
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032366 pEventData);
32367 WDI_ASSERT(0);
32368 return WDI_STATUS_E_FAILURE;
32369 }
32370
32371 pUpdateInd = (tHalRmcUpdateInd *)pSendBuffer;
32372
32373 pUpdateInd->rulerIndParams.indication = pwdiUpdateInd->indication;
32374 pUpdateInd->rulerIndParams.role = pwdiUpdateInd->role;
32375
32376 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastTransmitter,
32377 pwdiUpdateInd->mcastTransmitter, WDI_MAC_ADDR_LEN);
32378 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastGroup,
32379 pwdiUpdateInd->mcastGroup, WDI_MAC_ADDR_LEN);
32380 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastRuler,
32381 pwdiUpdateInd->mcastRuler, WDI_MAC_ADDR_LEN);
32382 /* Zero out parameters not needed for this command */
32383 wpalMemoryZero(pUpdateInd->rulerIndParams.ruler,
32384 WDI_MAC_ADDR_LEN * HAL_NUM_MAX_RULERS);
32385
32386
32387 /*-------------------------------------------------------------------------
32388 Send Update Indication to HAL
32389 -------------------------------------------------------------------------*/
32390 pWDICtx->wdiReqStatusCB = pwdiUpdateInd->wdiReqStatusCB;
32391 pWDICtx->pReqStatusUserData = pwdiUpdateInd->pUserData;
32392
32393 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
32394
32395 return (wdiStatus != WDI_STATUS_SUCCESS) ?
32396 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
32397
32398} /* WDI_ProcessRMCUpdateInd */
32399
32400/**
32401 @brief Process peer info req
32402
32403 @param pWDICtx: pointer to the WLAN DAL context
32404 pEventData: pointer to the event information structure
32405
32406 @see
32407 @return Result of the function call
32408*/
32409WDI_Status
32410WDI_IbssPeerInfoReq
32411(
32412 WDI_IbssPeerInfoReqType* wdiPeerInfoReqParams,
32413 WDI_IbssPeerInfoReqCb wdiIbssPeerInfoReqCb,
32414 void* pUserData
32415)
32416{
32417
32418 WDI_EventInfoType wdiEventData;
32419
32420 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32421 /*------------------------------------------------------------------------
32422 Sanity Check
32423 ------------------------------------------------------------------------*/
32424 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32425 {
32426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32427 "WDI API call before module is initialized - Fail request");
32428
32429 return WDI_STATUS_E_NOT_ALLOWED;
32430 }
32431
32432 /*------------------------------------------------------------------------
32433 Fill in Event data and post to the Main FSM
32434 ------------------------------------------------------------------------*/
32435 wdiEventData.wdiRequest = WDI_HAL_IBSS_PEER_INFO_REQ;
32436 wdiEventData.pEventData = wdiPeerInfoReqParams;
32437 wdiEventData.uEventDataSize = sizeof(WDI_IbssPeerInfoReqType);
32438 wdiEventData.pCBfnc = wdiIbssPeerInfoReqCb;
32439 wdiEventData.pUserData = pUserData;
32440
32441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32442}
32443
32444/**
32445 @brief Process peer info req
32446
32447 @param pWDICtx: pointer to the WLAN DAL context
32448 pEventData: pointer to the event information structure
32449
32450 @see
32451 @return Result of the function call
32452*/
32453WDI_Status
32454WDI_ProcessIbssPeerInfoReq
32455(
32456 WDI_ControlBlockType* pWDICtx,
32457 WDI_EventInfoType* pEventData
32458)
32459{
32460 WDI_Status wdiStatus;
32461 wpt_uint8* pSendBuffer = NULL;
32462 wpt_uint16 usDataOffset = 0;
32463 wpt_uint16 usSendSize = 0;
32464 WDI_IbssPeerInfoReqType *pwdiInfoReq = NULL;
32465 tHalIbssPeerInfoReq *pPeerInfoReq;
32466 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
32467
32468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32469
32470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32471 "%s", __func__);
32472
32473 /*-------------------------------------------------------------------------
32474 Sanity check
32475 -------------------------------------------------------------------------*/
32476 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32477 {
32478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32479 "%s: Invalid parameters", __func__);
32480 WDI_ASSERT(0);
32481 return WDI_STATUS_E_FAILURE;
32482 }
32483 pwdiInfoReq = (WDI_IbssPeerInfoReqType *)pEventData->pEventData;
32484 /*-----------------------------------------------------------------------
32485 Get message buffer
32486 -----------------------------------------------------------------------*/
32487
32488 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32489 WDI_HAL_IBSS_PEER_INFO_REQ,
32490 sizeof(tHalIbssPeerInfoReqParams),
32491 &pSendBuffer, &usDataOffset, &usSendSize))||
32492 ( usSendSize < (usDataOffset +
32493 sizeof(tHalIbssPeerInfoReqParams) )))
32494 {
32495 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032496 "Unable to get send buffer in IBSS Peer Info Req %pK ",
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032497 pEventData);
32498 WDI_ASSERT(0);
32499 return WDI_STATUS_E_FAILURE;
32500 }
32501
32502 pPeerInfoReq = (tHalIbssPeerInfoReq *)pSendBuffer;
32503 if (VOS_FALSE == pwdiInfoReq->wdiAllPeerInfoReqd)
32504 {
32505 if (pSTATable[pwdiInfoReq->wdiStaIdx].valid)
32506 {
32507 pPeerInfoReq->ibssPeerInfoReqParams.bssIdx =
32508 pSTATable[pwdiInfoReq->wdiStaIdx].bssIdx;
32509 }
32510 else
32511 {
32512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32513 "Unable to find BSSIDX for STAIDX %d ",
32514 pwdiInfoReq->wdiStaIdx);
32515 return WDI_STATUS_E_FAILURE;
32516 }
32517 }
32518 else
32519 pPeerInfoReq->ibssPeerInfoReqParams.bssIdx = 0;
32520
32521 pPeerInfoReq->ibssPeerInfoReqParams.staIdx = pwdiInfoReq->wdiStaIdx;
32522 pPeerInfoReq->ibssPeerInfoReqParams.allPeerInfoReqd = pwdiInfoReq->wdiAllPeerInfoReqd;
32523
32524 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32525 pWDICtx->pfncRspCB = pEventData->pCBfnc;
32526
32527 /*-------------------------------------------------------------------------
32528 Send IBSS Peer Info request to HAL
32529 -------------------------------------------------------------------------*/
32530 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
32531 usSendSize, pWDICtx->pfncRspCB,
32532 pWDICtx->pReqStatusUserData,
32533 WDI_HAL_IBSS_PEER_INFO_RSP);
32534 return wdiStatus;
32535}
32536
32537/**
32538 @brief Process peer info resp
32539
32540 @param pWDICtx: pointer to the WLAN DAL context
32541 pEventData: pointer to the event information structure
32542
32543 @see
32544 @return Result of the function call
32545*/
32546WDI_Status
32547WDI_ProcessIbssPeerInfoRsp
32548(
32549 WDI_ControlBlockType* pWDICtx,
32550 WDI_EventInfoType* pEventData
32551)
32552{
32553 WDI_IbssPeerInfoReqCb wdiPeerInfoCb = NULL;
32554 tHalIbssPeerParams *pHalPeerInfoParams;
32555 WDI_IbssPeerInfoRspParams wdiPeerInfoRspParams;
32556 wpt_uint32 allocSize=0;
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032557 WDI_IbssPeerInfoParams *pPeerInfoParams = NULL;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032558 wpt_uint8 wdiCount=0;
32559
32560 /*-------------------------------------------------------------------------
32561 Sanity check
32562 -------------------------------------------------------------------------*/
32563 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32564 ( NULL == pEventData->pEventData))
32565 {
32566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32567 "%s: Invalid parameters", __func__);
32568 WDI_ASSERT(0);
32569 return WDI_STATUS_E_FAILURE;
32570 }
32571
32572 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32573
32574 wdiPeerInfoCb = (WDI_IbssPeerInfoReqCb)pWDICtx->pfncRspCB;
32575
32576 /*-------------------------------------------------------------------------
32577 Extract response and send it to UMAC
32578 -------------------------------------------------------------------------*/
32579 pHalPeerInfoParams =
32580 ((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->ibssPeerParams;
32581 wdiPeerInfoRspParams.wdiStatus =
32582 WDI_HAL_2_WDI_STATUS(((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->status);
32583 wdiPeerInfoRspParams.wdiNumPeers =
32584 ((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->numOfPeers;
32585
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032586 if (!wdiPeerInfoRspParams.wdiNumPeers) {
32587 wdiPeerInfoRspParams.wdiPeerInfoParams = NULL;
32588 goto error;
32589 }
32590 if (wdiPeerInfoRspParams.wdiNumPeers >=
32591 WDI_MAX_IBSS_PEER_SUPPORED_STAS) {
32592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32593 "Number of stations %d exceed max supported stations %d set max",
32594 wdiPeerInfoRspParams.wdiNumPeers,
32595 WDI_MAX_IBSS_PEER_SUPPORED_STAS);
32596 wdiPeerInfoRspParams.wdiNumPeers =
32597 WDI_MAX_IBSS_PEER_SUPPORED_STAS - 1;
32598 }
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032599 /* Size of peer info data received from DAL */
32600 allocSize = (sizeof(WDI_IbssPeerInfoParams) * (wdiPeerInfoRspParams.wdiNumPeers));
32601
32602 pPeerInfoParams = (WDI_IbssPeerInfoParams*)wpalMemoryAllocate(allocSize);
32603
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032604 if (NULL == pPeerInfoParams)
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032605 {
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032607 "Failed to allocate memory in ibss peer info response %pK %pK %pK ",
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032608 pWDICtx, pEventData, pEventData->pEventData);
32609 wdiPeerInfoRspParams.wdiPeerInfoParams = NULL;
32610 goto error;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032611 }
32612
32613 for (wdiCount = 0; wdiCount < wdiPeerInfoRspParams.wdiNumPeers; wdiCount++)
32614 {
32615 tHalIbssPeerParams *pHalTemp = &pHalPeerInfoParams[wdiCount];
32616 WDI_IbssPeerInfoParams *pWdiTemp = &pPeerInfoParams[wdiCount];
32617 pWdiTemp->wdiStaIdx = pHalTemp->staIdx;
32618 pWdiTemp->wdiRssi = pHalTemp->rssi;
32619 pWdiTemp->wdiMcsIndex = pHalTemp->mcsIndex;
32620 pWdiTemp->wdiTxRate = pHalTemp->txRate;
32621 pWdiTemp->wdiTxRateFlags = pHalTemp->txRateFlags;
32622 }
32623
32624 wdiPeerInfoRspParams.wdiPeerInfoParams = pPeerInfoParams;
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032625error:
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032626 /*Notify UMAC*/
32627 if (wdiPeerInfoCb)
32628 {
32629 wdiPeerInfoCb(&wdiPeerInfoRspParams, pWDICtx->pRspCBUserData);
32630 }
32631
32632 /* Free the allocation */
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053032633 if(pPeerInfoParams)
32634 vos_mem_free (pPeerInfoParams);
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032635
32636 return WDI_STATUS_SUCCESS;
32637}
32638#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070032639#ifdef FEATURE_WLAN_BATCH_SCAN
Abhishek Singh7cd040e2016-01-07 10:51:04 +053032640
Rajeev79dbe4c2013-10-05 11:03:42 +053032641/**
32642 @brief Process stop batch indication from WDA
32643
32644 @param pWDICtx: pointer to the WLAN DAL context
32645 pEventData: pointer to the event information structure
32646
32647 @see
32648 @return Result of the function call
32649*/
32650WDI_Status
32651WDI_ProcessStopBatchScanInd
32652(
32653 WDI_ControlBlockType* pWDICtx,
32654 WDI_EventInfoType* pEventData
32655)
32656{
32657 wpt_uint8* pSendBuffer = NULL;
32658 wpt_uint16 usDataOffset = 0;
32659 wpt_uint16 usSendSize = 0;
32660 WDI_Status wdiStatus;
32661 tHalBatchScanStopIndParam *pHalInd = NULL;
32662 WDI_StopBatchScanIndType *pWdiInd = NULL;
32663
32664
32665 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32666
32667 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32668 "%s", __func__);
32669
32670 /*-------------------------------------------------------------------------
32671 Sanity check
32672 -------------------------------------------------------------------------*/
32673
32674 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32675 {
32676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32677 "%s: Invalid parameters", __func__);
32678 WDI_ASSERT(0);
32679 return WDI_STATUS_E_FAILURE;
32680 }
32681 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
32682 /*-----------------------------------------------------------------------
32683 Get message buffer
32684 -----------------------------------------------------------------------*/
32685
32686 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32687 WDI_STOP_BATCH_SCAN_IND,
32688 sizeof(tHalBatchScanStopIndParam),
32689 &pSendBuffer, &usDataOffset, &usSendSize))||
32690 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
32691 {
32692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032693 "Unable to get send buffer in stop batch scan ind %pK ",
Rajeev79dbe4c2013-10-05 11:03:42 +053032694 pEventData);
32695 WDI_ASSERT(0);
32696 return WDI_STATUS_E_FAILURE;
32697 }
32698
32699 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
32700 pHalInd->param = pWdiInd->param;
32701
32702 pWDICtx->pReqStatusUserData = NULL;
32703 pWDICtx->pfncRspCB = NULL;
32704 /*-------------------------------------------------------------------------
32705 Send Stop batch scan indication to HAL
32706 -------------------------------------------------------------------------*/
32707 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32708 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32709}
32710
32711/**
32712 @brief This API is called to trigger batch scan results from FW
32713
32714 @param pWDICtx: pointer to the WLAN DAL context
32715 pEventData: pointer to the event information structure
32716
32717 @see
32718 @return Result of the function call
32719*/
32720WDI_Status
32721WDI_ProcessTriggerBatchScanResultInd
32722(
32723 WDI_ControlBlockType* pWDICtx,
32724 WDI_EventInfoType* pEventData
32725)
32726{
32727 WDI_Status wdiStatus;
32728 wpt_uint8* pSendBuffer = NULL;
32729 wpt_uint16 usDataOffset = 0;
32730 wpt_uint16 usSendSize = 0;
32731 tHalBatchScanTriggerResultParam *pHalInd = NULL;
32732 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
32733
32734
32735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32736
32737 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32738 "%s", __func__);
32739
32740 /*-------------------------------------------------------------------------
32741 Sanity check
32742 -------------------------------------------------------------------------*/
32743
32744 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32745 {
32746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32747 "%s: Invalid parameters", __func__);
32748 WDI_ASSERT(0);
32749 return WDI_STATUS_E_FAILURE;
32750 }
32751 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
32752 /*-----------------------------------------------------------------------
32753 Get message buffer
32754 -----------------------------------------------------------------------*/
32755
32756 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32757 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
32758 sizeof(tHalBatchScanTriggerResultParam),
32759 &pSendBuffer, &usDataOffset, &usSendSize))||
32760 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
32761 {
32762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032763 "Unable to get send buffer in stop batch scan ind %pK ",
Rajeev79dbe4c2013-10-05 11:03:42 +053032764 pEventData);
32765 WDI_ASSERT(0);
32766 return WDI_STATUS_E_FAILURE;
32767 }
32768
32769 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
32770 pHalInd->param = pWdiInd->param;
32771
32772 pWDICtx->pReqStatusUserData = NULL;
32773 pWDICtx->pfncRspCB = NULL;
32774 /*-------------------------------------------------------------------------
32775 Send trigger batch scan result indication to HAL
32776 -------------------------------------------------------------------------*/
32777 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32778 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32779}
32780
32781
32782/**
32783 @brief Process set batch scan response from FW
32784
32785 @param pWDICtx: pointer to the WLAN DAL context
32786 pEventData: pointer to the event information structure
32787
32788 @see
32789 @return Result of the function call
32790*/
32791WDI_Status
32792WDI_ProcessSetBatchScanRsp
32793(
32794 WDI_ControlBlockType* pWDICtx,
32795 WDI_EventInfoType* pEventData
32796)
32797{
32798 WDI_SetBatchScanCb wdiSetBatchScanCb;
32799 WDI_SetBatchScanRspType *pSetBatchScanRsp;
32800
32801 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
32802 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32803
32804 /*sanity check*/
32805 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32806 ( NULL == pEventData->pEventData))
32807 {
32808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32809 "%s: Invalid parameters", __func__);
32810 WDI_ASSERT(0);
32811 return WDI_STATUS_E_FAILURE;
32812 }
32813
32814 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
32815 if ( NULL == wdiSetBatchScanCb)
32816 {
32817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32818 "%s: call back function is NULL", __func__);
32819 WDI_ASSERT(0);
32820 return WDI_STATUS_E_FAILURE;
32821 }
32822
32823 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
32824
32825 if (NULL == pSetBatchScanRsp)
32826 {
32827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070032828 "Failed to allocate memory in set batch scan response %pK %pK %pK ",
Rajeev79dbe4c2013-10-05 11:03:42 +053032829 pWDICtx, pEventData, pEventData->pEventData);
32830 WDI_ASSERT(0);
32831 return WDI_STATUS_E_FAILURE;
32832 }
32833
Sunil Duttbd736ed2014-05-26 21:19:41 +053032834 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032835 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
32836
32837 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
32838
Sunil Duttbd736ed2014-05-26 21:19:41 +053032839 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032840 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
32841
32842 wpalMemoryFree(pSetBatchScanRsp);
32843
32844 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032845}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053032846
32847/**
32848 @brief Process batch scan result indication from FW
32849
32850 @param pWDICtx: pointer to the WLAN DAL context
32851 pEventData: pointer to the event information structure
32852
32853 @see
32854 @return Result of the function call
32855*/
32856WDI_Status
32857WDI_ProcessBatchScanResultInd
32858(
32859 WDI_ControlBlockType* pWDICtx,
32860 WDI_EventInfoType* pEventData
32861)
32862{
32863 void *pBatchScanResultInd;
32864 WDI_LowLevelIndType wdiInd;
32865 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32866
Sunil Duttbd736ed2014-05-26 21:19:41 +053032867 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053032868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32869 ( NULL == pEventData->pEventData))
32870 {
32871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32872 "%s: Invalid parameters", __func__);
32873 WDI_ASSERT(0);
32874 return WDI_STATUS_E_FAILURE;
32875 }
32876
Sunil Duttbd736ed2014-05-26 21:19:41 +053032877 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032878 pBatchScanResultInd = (void *)pEventData->pEventData;
32879
Sunil Duttbd736ed2014-05-26 21:19:41 +053032880 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053032881 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
32882
32883 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
32884
Sunil Duttbd736ed2014-05-26 21:19:41 +053032885 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032886 if (pWDICtx->wdiLowLevelIndCB)
32887 {
32888 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32889 }
32890 else
32891 {
32892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32893 "%s: WDILowLevelIndCb is null", __func__);
32894 WDI_ASSERT(0);
32895 return WDI_STATUS_E_FAILURE;
32896 }
32897
32898 return WDI_STATUS_SUCCESS;
32899} /*End of WDI_ProcessBatchScanResultInd*/
32900
Sunil Duttbd736ed2014-05-26 21:19:41 +053032901#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32902/**
32903 @brief Process Link Layer Statistics Result indication from FW
32904
32905 @param pWDICtx: pointer to the WLAN DAL context
32906 pEventData: pointer to the event information structure
32907
32908 @see
32909 @return Result of the function call
32910*/
32911WDI_Status
32912WDI_ProcessLinkLayerStatsResultsInd
32913(
32914 WDI_ControlBlockType* pWDICtx,
32915 WDI_EventInfoType* pEventData
32916)
32917{
32918 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053032919 WDI_LLstatsResultsType *halLLStatsResults;
32920 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032921 WDI_LowLevelIndType wdiInd;
32922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32923
32924 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32925 "%s: Event RESULTS Indication", __func__);
32926
32927 /* sanity check */
32928 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32929 ( NULL == pEventData->pEventData))
32930 {
32931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32932 "%s: Invalid parameters", __func__);
32933 WDI_ASSERT(0);
32934 return WDI_STATUS_E_FAILURE;
32935 }
32936
32937 /* extract response and send it to UMAC */
32938 pLinkLayerStatsInd = (void *)pEventData->pEventData;
32939
32940 /* Fill in the indication parameters */
32941 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
32942
Dino Mycled3d50022014-07-07 12:58:25 +053032943 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
32944 = pLinkLayerStatsInd;
32945
32946 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
32947
32948
32949 /* Need to fill in the MAC address */
32950 if ( WDI_STATUS_SUCCESS !=
32951 WDI_STATableGetStaMacAddr(pWDICtx,
32952 halLLStatsResults->iface_id,
32953 &macAddr))
32954 {
32955 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32956 " ifaceId: %u does not exist in the WDI Station Table",
32957 halLLStatsResults->iface_id);
32958
32959 return WDI_STATUS_E_FAILURE;
32960 }
32961 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
32962 macAddr, WDI_MAC_ADDR_LEN);
32963
32964 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32965 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
32966 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053032967
32968 /* Notify UMAC */
32969 if (pWDICtx->wdiLowLevelIndCB)
32970 {
32971 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32972 }
32973 else
32974 {
32975 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32976 "%s: WDILowLevelIndCb is null", __func__);
32977 WDI_ASSERT(0);
32978 return WDI_STATUS_E_FAILURE;
32979 }
32980
32981 return WDI_STATUS_SUCCESS;
32982} /* End of WDI_ProcessLinkLayerStatsResultsInd */
32983#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
32984
Rajeev79dbe4c2013-10-05 11:03:42 +053032985/**
32986 @brief WDI_ProcessSetBatchScanReq -
32987 Set batch scan request to FW
32988
32989 @param pWDICtx : wdi context
32990 pEventData : indication data
32991
32992 @see
32993 @return none
32994*/
32995WDI_Status WDI_ProcessSetBatchScanReq
32996(
32997 WDI_ControlBlockType* pWDICtx,
32998 WDI_EventInfoType* pEventData
32999)
33000{
33001 WDI_SetBatchScanReqType *pWdiReq;
33002 WDI_Status wdiStatus;
33003 wpt_uint8* pSendBuffer = NULL;
33004 wpt_uint16 usDataOffset = 0;
33005 wpt_uint16 usSendSize = 0;
33006 tHalBatchScanSetParams *pHalReq;
33007 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33008
33009 /*sanity check*/
33010 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
33011 {
33012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33013 "%s: Invalid parameters in set batch scan request", __func__);
33014 WDI_ASSERT(0);
33015 return WDI_STATUS_E_FAILURE;
33016 }
33017
33018
33019 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
33020
33021
33022 /*get message buffer*/
33023 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
33024 WDI_SET_BATCH_SCAN_REQ,
33025 sizeof(tHalBatchScanSetParams),
33026 &pSendBuffer, &usDataOffset, &usSendSize))||
33027 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
33028 {
33029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33030 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
33031 WDI_ASSERT(0);
33032 return WDI_STATUS_E_FAILURE;
33033 }
33034
33035 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
33036
33037 pHalReq->rtt = pWdiReq->rtt;
33038 pHalReq->rfBand = pWdiReq->rfBand;
33039 pHalReq->bestNetworks = pWdiReq->bestNetwork;
33040 pHalReq->scanInterval = pWdiReq->scanFrequency;
33041 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
33042
33043 /*send set batch scan request to fw*/
33044 pWDICtx->pfncRspCB = pEventData->pCBfnc;
33045 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33046
33047 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
33048 usSendSize, pWDICtx->pfncRspCB,
33049 pWDICtx->pReqStatusUserData,
33050 WDI_SET_BATCH_SCAN_RESP);
33051
33052 return wdiStatus;
33053}
33054
33055/**
33056 @brief WDI_SetBatchScanReq
33057 This API is called to set batch scan request in FW
33058
33059 @param pBatchScanReqParam : pointer to set batch scan re param
33060 usrData : Client context
33061 setBatchScanRspCb : set batch scan resp callback
33062 @see
33063 @return SUCCESS or FAIL
33064*/
33065WDI_Status WDI_SetBatchScanReq
33066(
33067 void *pBatchScanReqParam,
33068 void *usrData,
33069 WDI_SetBatchScanCb setBatchScanRspCb
33070)
33071{
33072 WDI_EventInfoType wdiEventData;
33073
33074 /*sanity check*/
33075 if (eWLAN_PAL_FALSE == gWDIInitialized)
33076 {
33077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33078 "WDI API call before module is initialized - Fail request");
33079
33080 return WDI_STATUS_E_NOT_ALLOWED;
33081 }
33082
33083 /* fill in event data and post to the main FSM */
33084 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
33085 wdiEventData.pEventData = pBatchScanReqParam;
33086 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
33087 wdiEventData.pCBfnc = setBatchScanRspCb;
33088 wdiEventData.pUserData = usrData;
33089
33090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33091}
33092
33093/**
33094 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
33095
33096 @param None
33097
33098 @see
33099
33100 @return Status of the request
33101*/
33102WDI_Status
33103WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
33104{
33105 WDI_EventInfoType wdiEventData;
33106
33107 /*-------------------------------------------------------------------------
33108 Sanity Check
33109 ------------------------------------------------------------------------*/
33110 if (eWLAN_PAL_FALSE == gWDIInitialized)
33111 {
33112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33113 "WDI API call before module is initialized - Fail request!");
33114
33115 return WDI_STATUS_E_NOT_ALLOWED;
33116 }
33117
33118 /*-------------------------------------------------------------------------
33119 Fill in Event data and post to the Main FSM
33120 ------------------------------------------------------------------------*/
33121 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
33122 wdiEventData.pEventData = pWdiReq;
33123 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
33124 wdiEventData.pCBfnc = NULL;
33125 wdiEventData.pUserData = NULL;
33126
33127 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33128}
33129
33130/**
33131 @brief WDI_TriggerBatchScanResultInd
33132 This API is called to pull batch scan result from FW
33133
33134 @param pWdiReq : pointer to get batch scan ind param
33135 @see
33136 @return SUCCESS or FAIL
33137*/
33138WDI_Status WDI_TriggerBatchScanResultInd
33139(
33140 WDI_TriggerBatchScanResultIndType *pWdiReq
33141)
33142{
33143 WDI_EventInfoType wdiEventData;
33144 /*-------------------------------------------------------------------------
33145 Sanity Check
33146 ------------------------------------------------------------------------*/
33147 if (eWLAN_PAL_FALSE == gWDIInitialized)
33148 {
33149 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33150 "WDI API call before module is initialized - Fail request!");
33151
33152 return WDI_STATUS_E_NOT_ALLOWED;
33153 }
33154
33155 /*-------------------------------------------------------------------------
33156 Fill in Event data and post to the Main FSM
33157 ------------------------------------------------------------------------*/
33158 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
33159 wdiEventData.pEventData = pWdiReq;
33160 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
33161 wdiEventData.pCBfnc = NULL;
33162 wdiEventData.pUserData = NULL;
33163
33164 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33165}
Rajeev79dbe4c2013-10-05 11:03:42 +053033166#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080033167
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080033168/**
33169 @brief Process Update Channel Rsp function (called when a response is
33170 being received over the bus from HAL)
33171
33172 @param pWDICtx: pointer to the WLAN DAL context
33173 pEventData: pointer to the event information structure
33174
33175 @see
33176 @return Result of the function call
33177*/
33178WDI_Status
33179WDI_ProcessUpdateChanRsp
33180(
33181 WDI_ControlBlockType* pWDICtx,
33182 WDI_EventInfoType* pEventData
33183)
33184{
33185 WDI_Status wdiStatus;
33186 eHalStatus halStatus;
33187 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
33188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33189
33190 /*-------------------------------------------------------------------------
33191 Sanity check
33192 -------------------------------------------------------------------------*/
33193 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33194 ( NULL == pEventData->pEventData))
33195 {
33196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33197 "%s: Invalid parameters", __func__);
33198 WDI_ASSERT(0);
33199 return WDI_STATUS_E_FAILURE;
33200 }
33201
33202 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
33203
33204 /*-------------------------------------------------------------------------
33205 Extract response and send it to UMAC
33206 -------------------------------------------------------------------------*/
33207 halStatus = *((eHalStatus*)pEventData->pEventData);
33208 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
33209
33210 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
33211
33212 return WDI_STATUS_SUCCESS;
33213}/*WDI_ProcessUpdateChanRsp*/
33214
Leo Chang0b0e45a2013-12-15 15:18:55 -080033215#ifdef FEATURE_WLAN_CH_AVOID
33216/**
33217 @brief v -WDI_ProcessChAvoidInd
33218
33219
33220 @param pWDICtx : wdi context
33221 pEventData : indication data
33222 @see
33223 @return Result of the function call
33224*/
33225WDI_Status
33226WDI_ProcessChAvoidInd
33227(
33228 WDI_ControlBlockType* pWDICtx,
33229 WDI_EventInfoType* pEventData
33230)
33231{
33232 WDI_LowLevelIndType wdiInd;
33233 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
33234 wpt_uint16 rangeLoop;
Abhishek Singhf5590652016-02-09 16:53:03 +053033235 wpt_uint32 dataSize;
Leo Chang0b0e45a2013-12-15 15:18:55 -080033236 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33237
33238 /*-------------------------------------------------------------------------
33239 Sanity check
33240 -------------------------------------------------------------------------*/
33241 if ((NULL == pWDICtx) || (NULL == pEventData) ||
33242 (NULL == pEventData->pEventData))
33243 {
33244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33245 "%s: Invalid parameters", __func__);
33246 WDI_ASSERT(0);
33247 return WDI_STATUS_E_FAILURE;
33248 }
33249
Abhishek Singhf5590652016-02-09 16:53:03 +053033250 dataSize = sizeof(tHalAvoidFreqRangeIndParams);
33251 if (dataSize > pEventData->uEventDataSize)
33252 dataSize = pEventData->uEventDataSize;
33253
Leo Chang0b0e45a2013-12-15 15:18:55 -080033254 /*-------------------------------------------------------------------------
33255 Extract indication and send it to UMAC
33256 -------------------------------------------------------------------------*/
33257 wpalMemoryCopy(&chAvoidIndicationParam,
33258 pEventData->pEventData,
Abhishek Singhf5590652016-02-09 16:53:03 +053033259 dataSize);
Leo Chang0b0e45a2013-12-15 15:18:55 -080033260
Abhishek Singhe34eb552015-06-18 10:12:15 +053033261 /* Avoid Over flow */
33262 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
33263 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
33264
Leo Chang0b0e45a2013-12-15 15:18:55 -080033265 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
33266 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
33267 chAvoidIndicationParam.avoidCnt;
33268 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
33269 (void *)chAvoidIndicationParam.avoidRange,
33270 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
33271 sizeof(WDI_ChAvoidFreqType));
33272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33273 "%s: band count %d", __func__,
33274 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
33275 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
33276 {
33277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33278 "%s: srart freq %d, end freq %d", __func__,
33279 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
33280 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
33281 }
33282
33283 /*Notify UMAC*/
33284 if (pWDICtx->wdiLowLevelIndCB)
33285 {
33286 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
33287 }
33288
33289 return WDI_STATUS_SUCCESS;
33290}
Atul Mittalc0f739f2014-07-31 13:47:47 +053033291
Leo Chang0b0e45a2013-12-15 15:18:55 -080033292#endif /* FEATURE_WLAN_CH_AVOID */
33293
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033294/**
33295 @brief Process OBSS Start scan result indication
33296
33297 @param pWDICtx: pointer to the WLAN DAL context
33298 pEventData: pointer to the event information structure
33299
33300 @see
33301 @return Result of the function call
33302*/
33303WDI_Status
33304WDI_ProcessHT40OBSSScanInd
33305(
33306 WDI_ControlBlockType* pWDICtx,
33307 WDI_EventInfoType* pEventData
33308)
33309{
33310 wpt_uint8* pSendBuffer = NULL;
33311 wpt_uint16 usDataOffset = 0;
33312 wpt_uint16 usSendSize = 0;
33313 wpt_uint16 usLen = 0;
33314 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
33315 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
33316 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
33317 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
33318
33319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33320
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053033321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033322 "%s", __func__);
33323
33324 /*-------------------------------------------------------------------------
33325 Sanity check
33326 -------------------------------------------------------------------------*/
33327 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
33328 {
33329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33330 "%s: Invalid parameters", __func__);
33331 WDI_ASSERT(0);
33332 return WDI_STATUS_E_FAILURE;
33333 }
33334 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
33335
33336 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
33337 /*-----------------------------------------------------------------------
33338 Get message buffer
33339 -----------------------------------------------------------------------*/
33340
33341 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33342 WDI_START_HT40_OBSS_SCAN_IND,
33343 sizeof(tHT40ObssScanIndType),
33344 &pSendBuffer, &usDataOffset, &usSendSize))||
33345 ( usSendSize < (usDataOffset + usLen )))
33346 {
33347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070033348 "Unable to get send buffer in HT40 OBSS Start req %pK ",
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033349 pEventData);
33350 WDI_ASSERT(0);
33351 return WDI_STATUS_E_FAILURE;
33352 }
33353 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
33354 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
33355 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
33356 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
33357 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
33358 pHT40ObssScanInd->OBSSScanActiveDwellTime =
33359 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
33360 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
33361 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
33362 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
33363 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
33364 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
33365 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
33366 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
33367 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
33368 pHT40ObssScanInd->OBSSScanActivityThreshold =
33369 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
33370 pHT40ObssScanInd->selfStaIdx =
33371 pwdiHT40OBSSScanInd->selfStaIdx;
33372 pHT40ObssScanInd->bssIdx =
33373 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053033374 pHT40ObssScanInd->currentOperatingClass =
33375 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033376 pHT40ObssScanInd->fortyMHZIntolerent =
33377 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
33378 pHT40ObssScanInd->channelCount =
33379 pwdiHT40OBSSScanInd->channelCount;
33380
33381 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
33382 WDI_ROAM_SCAN_MAX_CHANNELS);
33383 pHT40ObssScanInd->ieFieldLen =
33384 pwdiHT40OBSSScanInd->ieFieldLen;
33385
33386 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
33387 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
33388 pWDICtx->pReqStatusUserData = NULL;
33389 pWDICtx->pfncRspCB = NULL;
33390
33391 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
33392 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
33393
33394 /*-------------------------------------------------------------------------
33395 Send OBSS Start Indication to HAL
33396 -------------------------------------------------------------------------*/
33397 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
33398 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
33399
33400} /*End of WDI_ProcessHT40OBSSStartScanInd*/
33401
33402
33403/**
33404 @brief wdi_HT40OBSSScanInd
33405 This API is called to start OBSS scan
33406
33407 @param pWdiReq : pointer to get ind param
33408 @see
33409 @return SUCCESS or FAIL
33410*/
33411WDI_Status WDI_HT40OBSSScanInd
33412(
33413 WDI_HT40ObssScanParamsType *pWdiReq
33414)
33415{
33416 WDI_EventInfoType wdiEventData;
33417
33418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33419 "%s", __func__);
33420 /*-------------------------------------------------------------------------
33421 Sanity Check
33422 ------------------------------------------------------------------------*/
33423 if (eWLAN_PAL_FALSE == gWDIInitialized)
33424 {
33425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33426 "WDI API call before module is initialized - Fail request!");
33427
33428 return WDI_STATUS_E_NOT_ALLOWED;
33429 }
33430
33431 /*-------------------------------------------------------------------------
33432 Fill in Event data and post to the Main FSM
33433 ------------------------------------------------------------------------*/
33434 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
33435 wdiEventData.pEventData = pWdiReq;
33436 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
33437 wdiEventData.pCBfnc = NULL;
33438 wdiEventData.pUserData = NULL;
33439
33440
33441 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33442}
33443
33444/**
33445 @brief Process OBSS Stop scan result
33446
33447 @param pWDICtx: pointer to the WLAN DAL context
33448 pEventData: pointer to the event information structure
33449
33450 @see
33451 @return Result of the function call
33452*/
33453WDI_Status
33454WDI_ProcessHT40OBSSStopScanInd
33455(
33456 WDI_ControlBlockType* pWDICtx,
33457 WDI_EventInfoType* pEventData
33458)
33459{
33460 wpt_uint8* pSendBuffer = NULL;
33461 wpt_uint16 usDataOffset = 0;
33462 wpt_uint16 usSendSize = 0;
33463 wpt_uint16 usLen = 0;
33464 wpt_uint8 *wdiBssIdx = 0;
33465 tANI_U8 *bssIdx = 0;
33466 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
33467
33468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33469
33470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33471 "%s", __func__);
33472
33473 /*-------------------------------------------------------------------------
33474 Sanity check
33475 -------------------------------------------------------------------------*/
33476 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
33477 {
33478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33479 "%s: Invalid parameters", __func__);
33480 WDI_ASSERT(0);
33481 return WDI_STATUS_E_FAILURE;
33482 }
33483 bssIdx = (wpt_uint8*)pEventData->pEventData;
33484 /*-----------------------------------------------------------------------
33485 Get message buffer
33486 -----------------------------------------------------------------------*/
33487
33488 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
33489 WDI_STOP_HT40_OBSS_SCAN_IND,
33490 sizeof(tANI_U8),
33491 &pSendBuffer, &usDataOffset, &usSendSize))||
33492 ( usSendSize < (usDataOffset + usLen )))
33493 {
33494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070033495 "Unable to get send buffer in HT40 OBSS Start req %pK ",
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053033496 pEventData);
33497 WDI_ASSERT(0);
33498 return WDI_STATUS_E_FAILURE;
33499 }
33500
33501 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
33502 bssIdx = wdiBssIdx;
33503
33504 pWDICtx->pReqStatusUserData = NULL;
33505 pWDICtx->pfncRspCB = NULL;
33506
33507 /*-------------------------------------------------------------------------
33508 Send DHCP Start Indication to HAL
33509 -------------------------------------------------------------------------*/
33510 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
33511 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
33512} /*End of WDI_ProcessHT40OBSSStopScanInd*/
33513
33514/**
33515 @brief WDI_HT40OBSSStopScanInd
33516 This API is called to start OBSS scan
33517 @param pWdiReq : pointer to get ind param
33518 @see
33519 @return SUCCESS or FAIL
33520*/
33521WDI_Status WDI_HT40OBSSStopScanInd
33522(
33523 wpt_uint8 bssIdx
33524)
33525{
33526 WDI_EventInfoType wdiEventData;
33527
33528 /*-------------------------------------------------------------------------
33529 Sanity Check
33530 ------------------------------------------------------------------------*/
33531 if (eWLAN_PAL_FALSE == gWDIInitialized)
33532 {
33533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33534 "WDI API call before module is initialized - Fail request!");
33535
33536 return WDI_STATUS_E_NOT_ALLOWED;
33537 }
33538
33539 /*-------------------------------------------------------------------------
33540 Fill in Event data and post to the Main FSM
33541 ------------------------------------------------------------------------*/
33542 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
33543 wdiEventData.pEventData = &bssIdx;
33544 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
33545 wdiEventData.pCBfnc = NULL;
33546 wdiEventData.pUserData = NULL;
33547
33548 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33549}
33550
c_hpothu86041002014-04-14 19:06:51 +053033551WDI_Status
33552WDI_printRegInfo
33553(
33554 WDI_ControlBlockType* pWDICtx,
33555 WDI_EventInfoType* pEventData
33556)
33557{
33558 tHalRegDebugInfo *pRegTable;
33559 tHalRegDebugInfoParams *pRegParams;
33560 uint32 cnt=0;
33561
33562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33563 "%s: ", __func__);
33564 /*-------------------------------------------------------------------------
33565 Sanity check
33566 -------------------------------------------------------------------------*/
33567 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33568 ( NULL == pEventData->pEventData))
33569 {
33570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33571 "%s: Invalid parameters", __func__);
33572 WDI_ASSERT(0);
33573 return WDI_STATUS_E_FAILURE;
33574 }
33575
33576 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
33577
33578 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33579 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
33580 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
33581
33582 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
33583
33584 if (pRegParams->regCount <= 0)
33585 {
33586 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33587 "%s incorrect parameters passed", __func__);
33588 return WDI_STATUS_E_FAILURE;
33589 }
33590
33591 while(pRegParams->regCount--)
33592 {
33593 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
33594 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
33595 cnt++;
33596 }
33597
33598 return WDI_STATUS_SUCCESS;
33599}
c_hpothu92367912014-05-01 15:18:17 +053033600
33601/*
Abhishek Singh66c16762014-08-14 19:13:19 +053033602 * FUNCTION: WDI_delBaInd
33603 * send the delBA to peer.
33604 */
33605
33606WDI_Status
33607WDI_delBaInd
33608(
33609 WDI_ControlBlockType* pWDICtx,
33610 WDI_EventInfoType* pEventData
33611
33612)
33613{
33614 tHalWlanDelBaIndMsg halDelBaInd;
33615 WDI_LowLevelIndType wdiInd;
33616 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33617
33618 /*-------------------------------------------------------------------------
33619 Sanity check
33620 -------------------------------------------------------------------------*/
33621 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33622 ( NULL == pEventData->pEventData))
33623 {
33624 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33625 "%s: Invalid parameters", __func__);
33626 WDI_ASSERT(0);
33627 return WDI_STATUS_E_FAILURE;
33628 }
33629
33630 /*-------------------------------------------------------------------------
33631 Extract indication and send it to UMAC
33632 -------------------------------------------------------------------------*/
33633
33634 /* Parameters need to be unpacked according to HAL struct*/
33635 wpalMemoryCopy( &halDelBaInd,
33636 pEventData->pEventData,
33637 sizeof(halDelBaInd));
33638
33639 /*Fill in the indication parameters*/
33640 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
33641
33642 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
33643 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
33644 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
33645
33646 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
33647 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
33648 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
33649
33650 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
33651 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
33652 if ( pWDICtx->wdiLowLevelIndCB )
33653 {
33654 /*Notify UMAC*/
33655 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
33656 }
33657
33658 return WDI_STATUS_SUCCESS;
33659
33660
33661}
33662
33663/*
c_hpothu92367912014-05-01 15:18:17 +053033664 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
33665 * send the response to PE with beacon miss count
33666 * received from WDI.
33667 */
33668WDI_Status
33669WDI_ProcessGetBcnMissRateRsp
33670(
33671 WDI_ControlBlockType* pWDICtx,
33672 WDI_EventInfoType* pEventData
33673)
33674{
33675 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
33676 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
33677
33678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33679 "In %s",__func__);
33680 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33681
33682 /*-------------------------------------------------------------------------
33683 Sanity check
33684 -------------------------------------------------------------------------*/
33685 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33686 ( NULL == pEventData->pEventData))
33687 {
33688 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33689 "%s: Invalid parameters", __func__);
33690 WDI_ASSERT(0);
33691 return WDI_STATUS_E_FAILURE;
33692 }
33693
33694 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
33695 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
33696
33697 /*Notify UMAC*/
33698 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
33699 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
33700 return WDI_STATUS_SUCCESS;
33701}
33702
33703/*
33704 * FUNCTION: WDI_ProcessGetBcnMissRateReq
33705 * Request to WDI to get missed beacon rate.
33706 */
33707WDI_Status
33708WDI_ProcessGetBcnMissRateReq
33709(
33710 WDI_ControlBlockType* pWDICtx,
33711 WDI_EventInfoType* pEventData
33712)
33713{
33714 wpt_uint8* pSendBuffer = NULL;
33715 wpt_uint16 usDataOffset = 0;
33716 wpt_uint16 usSendSize = 0;
33717 wpt_uint8 ucCurrentBSSSesIdx = 0;
33718 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053033719 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
33720 tHalBcnMissRateReqParams halBcnMissRateReq;
33721
33722/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33723
33724 /*-------------------------------------------------------------------------
33725 Sanity check
33726 -------------------------------------------------------------------------*/
33727 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33728 ( NULL == pEventData->pCBfnc ) )
33729 {
33730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33731 "%s: Invalid parameters", __func__);
33732 WDI_ASSERT(0);
33733 return WDI_STATUS_E_FAILURE;
33734 }
33735
33736 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
33737
33738 wpalMutexAcquire(&pWDICtx->wptMutex);
33739
33740 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
33741 pEventData->pEventData, &pBSSSes);
33742 if ( NULL == pBSSSes )
33743 {
33744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33745 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053033746 MAC_ADDRESS_STR, __func__,
33747 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053033748 wpalMutexRelease(&pWDICtx->wptMutex);
33749 return WDI_STATUS_E_NOT_ALLOWED;
33750 }
33751 wpalMutexRelease(&pWDICtx->wptMutex);
33752
33753 /*-----------------------------------------------------------------------
33754 Get message buffer
33755 -----------------------------------------------------------------------*/
33756 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33757 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
33758 sizeof(tHalBcnMissRateReqParams),
33759 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33760 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
33761 {
33762 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070033763 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %pK",
c_hpothu92367912014-05-01 15:18:17 +053033764 pEventData);
33765 WDI_ASSERT(0);
33766 return WDI_STATUS_E_FAILURE;
33767 }
33768
33769 pWDICtx->wdiReqStatusCB = NULL;
33770 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33771
33772 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
33773
33774 wpalMemoryCopy( pSendBuffer+usDataOffset,
33775 &halBcnMissRateReq,
33776 sizeof(tHalBcnMissRateReqParams));
33777 /*-------------------------------------------------------------------------
33778 Send Get STA Request to HAL
33779 -------------------------------------------------------------------------*/
33780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
33781 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
33782}
33783
33784/**
33785 @brief WDI_GetBcnMissRate
33786
33787 @param pUserData: user data will be passed back with the
33788 callback
33789 WDI_GetBcnMissRateCb: callback for passing back the response
33790 of the get stats operation received from the device
33791 bssid: bssid, to send bssIdx to FW
33792
33793 @return SUCCESS or FAIL
33794*/
33795WDI_Status WDI_GetBcnMissRate( void *pUserData,
33796 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
33797 tANI_U8 *bssid )
33798{
33799 WDI_EventInfoType wdiEventData;
33800
33801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33802
33803 /*------------------------------------------------------------------------
33804 Sanity Check
33805 ------------------------------------------------------------------------*/
33806 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33807 {
33808 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33809 "WDI API call before module is initialized - Fail request");
33810
33811 return WDI_STATUS_E_NOT_ALLOWED;
33812 }
33813
33814 /*------------------------------------------------------------------------
33815 Fill in Event data and post to the Main FSM
33816 ------------------------------------------------------------------------*/
33817 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
33818 wdiEventData.pEventData = bssid;
33819 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
33820 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
33821 wdiEventData.pUserData = pUserData;
33822
33823 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33824}
Abhishek Singh85b74712014-10-08 11:38:19 +053033825
33826/*
33827 * FUNCTION: WDI_ProcessGetFwStatsRsp
33828 * send the response with FW stats asked.
33829 */
33830WDI_Status
33831 WDI_ProcessGetFwStatsRsp
33832(
33833 WDI_ControlBlockType* pWDICtx,
33834 WDI_EventInfoType* pEventData
33835)
33836{
33837 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
33838 tpHalfwStatsRspParams pHalFwstatsRsp;
33839 WDI_FWStatsResults fwStats;
33840
33841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33842
33843 /*-------------------------------------------------------------------------
33844 Sanity check
33845 -------------------------------------------------------------------------*/
33846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33847 ( NULL == pEventData->pEventData))
33848 {
33849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33850 "%s: Invalid parameters", __func__);
33851 WDI_ASSERT(0);
33852 return WDI_STATUS_E_FAILURE;
33853 }
33854 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
33855 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
33856
33857 if(pHalFwstatsRsp->length)
33858 {
33859 switch( pHalFwstatsRsp->type )
33860 {
33861 case FW_UBSP_STATS:
33862 {
33863 ubspFwStats *ubspStatsfromFw;
33864
33865 fwStats.type = pHalFwstatsRsp->type;
33866 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
33867 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
33868 ubspStatsfromFw->ubsp_enter_cnt;
33869 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
33870 ubspStatsfromFw->ubsp_jump_ddr_cnt;
33871 }
33872 break;
33873 default:
33874 {
33875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33876 "%s: No handling for stats type %d", __func__,
33877 pHalFwstatsRsp->type);
33878 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
33879 NULL, pWDICtx->pRspCBUserData);
33880 return WDI_STATUS_E_FAILURE;
33881 }
33882 }
33883 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
33884 }
33885 else
33886 {
33887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33888 "%s: Length = 0 for type %d return failure ", __func__,
33889 pHalFwstatsRsp->type);
33890 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
33891 NULL, pWDICtx->pRspCBUserData);
33892 return WDI_STATUS_E_FAILURE;
33893 }
33894 return WDI_STATUS_SUCCESS;
33895}
33896
33897/*
33898 * FUNCTION: WDI_ProcessGetFwStatsReq
33899 * Request to WDI to get FW Stats.
33900 */
33901WDI_Status
33902 WDI_ProcessGetFwStatsReq
33903(
33904 WDI_ControlBlockType* pWDICtx,
33905 WDI_EventInfoType* pEventData
33906)
33907{
33908 wpt_uint8* pSendBuffer = NULL;
33909 wpt_uint16 usDataOffset = 0;
33910 wpt_uint16 usSendSize = 0;
33911 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
33912 tHalfwStatsReqParams halFwStatsReq;
33913
33914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33915
33916 /*-------------------------------------------------------------------------
33917 Sanity check
33918 -------------------------------------------------------------------------*/
33919 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33920 ( NULL == pEventData->pCBfnc ) )
33921 {
33922 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33923 "%s: Invalid parameters", __func__);
33924 WDI_ASSERT(0);
33925 return WDI_STATUS_E_FAILURE;
33926 }
33927
33928 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
33929
33930 /*-----------------------------------------------------------------------
33931 Get message buffer
33932 -----------------------------------------------------------------------*/
33933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33934 pWDICtx, WDI_GET_FW_STATS_REQ,
33935 sizeof(tHalfwStatsReqParams),
33936 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33937 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
33938 {
33939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070033940 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %pK",
Abhishek Singh85b74712014-10-08 11:38:19 +053033941 pEventData);
33942 WDI_ASSERT(0);
33943 return WDI_STATUS_E_FAILURE;
33944 }
33945
33946 pWDICtx->wdiReqStatusCB = NULL;
33947 pWDICtx->pReqStatusUserData = pEventData->pEventData;
33948 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
33949 wpalMemoryCopy( pSendBuffer+usDataOffset,
33950 &halFwStatsReq,
33951 sizeof(tHalfwStatsReqParams));
33952 /*-------------------------------------------------------------------------
33953 Send Get STA Request to HAL
33954 -------------------------------------------------------------------------*/
33955 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
33956 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
33957}
33958
Sunil Duttbd736ed2014-05-26 21:19:41 +053033959#ifdef WLAN_FEATURE_LINK_LAYER_STATS
33960
33961/**
33962 @brief WDI_LLStatsSetReq
33963 This API is called to set link layer stats request in FW
33964
33965 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
33966 wdiLLStatsSetRspCb : set link layer stats resp callback
33967 usrData : Client context
33968 @see
33969 @return SUCCESS or FAIL
33970*/
33971WDI_Status
33972WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
33973 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
33974 void* pUserData)
33975{
33976 WDI_EventInfoType wdiEventData;
33977
33978 /*------------------------------------------------------------------------
33979 Sanity Check
33980 ------------------------------------------------------------------------*/
33981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33982 {
33983 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33984 "WDI API call before module is initialized - Fail request");
33985
33986 return WDI_STATUS_E_NOT_ALLOWED;
33987 }
33988
33989 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
33990 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
33991 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
33992 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
33993 wdiEventData.pUserData = pUserData;
33994
33995 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33996}
33997
33998/**
33999 @brief WDI_ProcessLLStatsSetReq -
34000 Set Link Layer Stats request to FW
34001
34002 @param pWDICtx : wdi context
34003 pEventData : indication data
34004
34005 @see
34006 @return none
34007*/
34008WDI_Status
34009WDI_ProcessLLStatsSetReq
34010(
34011 WDI_ControlBlockType* pWDICtx,
34012 WDI_EventInfoType* pEventData
34013)
34014{
34015 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
34016 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
34017 wpt_uint8* pSendBuffer = NULL;
34018 wpt_uint16 usSendSize = 0;
34019 wpt_uint16 usDataOffset = 0;
34020 tHalMacLlSetStatsReqParams halLLStatsSetParams;
34021
34022 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34023 ( NULL == pEventData->pCBfnc ))
34024 {
34025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34026 "%s: Invalid parameters", __func__);
34027 WDI_ASSERT(0);
34028 return WDI_STATUS_E_FAILURE;
34029 }
34030
34031 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
34032 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
34033
34034 /*-----------------------------------------------------------------------
34035 Get message buffer
34036 ! TO DO : proper conversion into the HAL Message Request Format
34037 -----------------------------------------------------------------------*/
34038 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34039 pWDICtx,
34040 WDI_LL_STATS_SET_REQ,
34041 sizeof(tHalMacLlSetStatsReqParams),
34042 &pSendBuffer, &usDataOffset,
34043 &usSendSize))||
34044 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
34045 {
34046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034047 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Sunil Duttbd736ed2014-05-26 21:19:41 +053034048 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
34049 WDI_ASSERT(0);
34050 return WDI_STATUS_E_FAILURE;
34051 }
34052
34053
Dino Mycled3d50022014-07-07 12:58:25 +053034054 /* Need to fill in the self STA Index */
34055 if ( WDI_STATUS_SUCCESS !=
34056 WDI_STATableFindStaidByAddr(pWDICtx,
34057 pwdiLLStatsSetReqParams->macAddr,
34058 &halLLStatsSetParams.sta_id))
34059 {
34060 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34061 MAC_ADDRESS_STR
34062 ": This station does not exist in the WDI Station Table",
34063 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
34064
34065 wpalMemoryFree(pSendBuffer);
34066 return WDI_STATUS_E_FAILURE;
34067 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053034068
34069 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053034070 halLLStatsSetParams.mpdu_size_threshold =
34071 pwdiLLStatsSetReqParams->mpduSizeThreshold;
34072 halLLStatsSetParams.aggressive_statistics_gathering =
34073 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
34074
34075 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34076 " halLLStatsSetParams.req_id = %u",
34077 halLLStatsSetParams.req_id);
34078 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34079 " halLLStatsSetParams.sta_id = %u",
34080 halLLStatsSetParams.sta_id);
34081 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34082 " halLLStatsSetParams.mpdu_size_threshold = %u",
34083 halLLStatsSetParams.mpdu_size_threshold);
34084 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34085 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
34086 halLLStatsSetParams.aggressive_statistics_gathering);
34087
34088 wpalMemoryCopy(pSendBuffer+usDataOffset,
34089 &halLLStatsSetParams,
34090 sizeof(halLLStatsSetParams));
34091
34092 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34093
34094 /*-------------------------------------------------------------------------
34095 Send Clear Link Layer Stats Request to HAL
34096 -------------------------------------------------------------------------*/
34097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34098 wdiLLStatsSetCb, pEventData->pUserData,
34099 WDI_LL_STATS_SET_RSP);
34100}
34101
34102/**
34103 @brief WDI_LLStatsGetReq
34104 This API is called to get link layer stats request in FW
34105
34106 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
34107 wdiLLStatsGetRspCb : get link layer stats resp callback
34108 usrData : Client context
34109 @see
34110 @return SUCCESS or FAIL
34111*/
34112WDI_Status
34113WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
34114 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
34115 void* pUserData)
34116{
34117 WDI_EventInfoType wdiEventData;
34118
34119 /*------------------------------------------------------------------------
34120 Sanity Check
34121 ------------------------------------------------------------------------*/
34122 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34123 {
34124 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34125 "WDI API call before module is initialized - Fail request");
34126
34127 return WDI_STATUS_E_NOT_ALLOWED;
34128 }
34129
34130 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
34131 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
34132 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
34133 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
34134 wdiEventData.pUserData = pUserData;
34135
34136 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34137}
34138
34139/**
34140 @brief WDI_ProcessLLStatsGetReq -
34141 Get Link Layer Stats request to FW
34142
34143 @param pWDICtx : wdi context
34144 pEventData : indication data
34145
34146 @see
34147 @return none
34148*/
34149WDI_Status
34150WDI_ProcessLLStatsGetReq
34151(
34152 WDI_ControlBlockType* pWDICtx,
34153 WDI_EventInfoType* pEventData
34154)
34155{
34156 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
34157 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
34158 wpt_uint8* pSendBuffer = NULL;
34159 wpt_uint16 usSendSize = 0;
34160 wpt_uint16 usDataOffset = 0;
34161 tHalMacLlGetStatsReqParams halLLStatsGetParams;
34162
34163 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34164 ( NULL == pEventData->pCBfnc ))
34165 {
34166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34167 "%s: Invalid parameters", __func__);
34168 WDI_ASSERT(0);
34169 return WDI_STATUS_E_FAILURE;
34170 }
34171
34172 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
34173 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
34174
34175 /*-----------------------------------------------------------------------
34176 Get message buffer
34177 ! TO DO : proper conversion into the HAL Message Request Format
34178 -----------------------------------------------------------------------*/
34179 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34180 pWDICtx,
34181 WDI_LL_STATS_GET_REQ,
34182 sizeof(tHalMacLlGetStatsReqParams),
34183 &pSendBuffer, &usDataOffset,
34184 &usSendSize))||
34185 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
34186 {
34187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034188 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Sunil Duttbd736ed2014-05-26 21:19:41 +053034189 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
34190 WDI_ASSERT(0);
34191 return WDI_STATUS_E_FAILURE;
34192 }
Dino Mycled3d50022014-07-07 12:58:25 +053034193 /* Need to fill in the self STA Index */
34194 if ( WDI_STATUS_SUCCESS !=
34195 WDI_STATableFindStaidByAddr(pWDICtx,
34196 pwdiLLStatsGetReqParams->macAddr,
34197 &halLLStatsGetParams.sta_id))
34198 {
34199 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34200 MAC_ADDRESS_STR
34201 ": This station does not exist in the WDI Station Table",
34202 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
34203
34204 wpalMemoryFree(pSendBuffer);
34205 return WDI_STATUS_E_FAILURE;
34206 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053034207
34208 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053034209 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
34210
34211 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34212 " halLLStatsGetParams.req_id = %u",
34213 halLLStatsGetParams.req_id);
34214 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34215 " halLLStatsGetParams.staId = %u",
34216 halLLStatsGetParams.sta_id);
34217 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34218 " halLLStatsGetParams.Mask = %u",
34219 halLLStatsGetParams.param_id_mask);
34220
34221 wpalMemoryCopy(pSendBuffer+usDataOffset,
34222 &halLLStatsGetParams,
34223 sizeof(halLLStatsGetParams));
34224
34225 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34226
34227 /*-------------------------------------------------------------------------
34228 Send Clear Link Layer Stats Request to HAL
34229 -------------------------------------------------------------------------*/
34230 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34231 wdiLLStatsGetCb, pEventData->pUserData,
34232 WDI_LL_STATS_GET_RSP);
34233}
34234
34235/**
34236 @brief WDI_LLStatsClearReq
34237 This API is called to clear link layer stats request in FW
34238
34239 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
34240 wdiLLStatsSetRspCb : clear link layer stats resp callback
34241 usrData : Client context
34242 @see
34243 @return SUCCESS or FAIL
34244*/
34245WDI_Status
34246WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
34247 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
34248 void* pUserData)
34249{
34250 WDI_EventInfoType wdiEventData;
34251
34252 /*------------------------------------------------------------------------
34253 Sanity Check
34254 ------------------------------------------------------------------------*/
34255 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34256 {
34257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34258 "WDI API call before module is initialized - Fail request");
34259
34260 return WDI_STATUS_E_NOT_ALLOWED;
34261 }
34262
34263 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
34264 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
34265 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
34266 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
34267 wdiEventData.pUserData = pUserData;
34268
34269 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34270 "%s:%d Enter", __func__, __LINE__);
34271
34272 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34273}
34274
34275/**
34276 @brief WDI_ProcessLLStatsClearReq -
34277 Clear Link Layer Stats request to FW
34278
34279 @param pWDICtx : wdi context
34280 pEventData : indication data
34281
34282 @see
34283 @return none
34284*/
34285WDI_Status
34286WDI_ProcessLLStatsClearReq
34287(
34288 WDI_ControlBlockType* pWDICtx,
34289 WDI_EventInfoType* pEventData
34290)
34291{
34292 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
34293 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
34294 wpt_uint8* pSendBuffer = NULL;
34295 wpt_uint16 usSendSize = 0;
34296 wpt_uint16 usDataOffset = 0;
34297 tHalMacLlClearStatsReqParams halLLStatsClearParams;
34298
34299 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34300 ( NULL == pEventData->pCBfnc ))
34301 {
34302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34303 "%s: Invalid parameters", __func__);
34304 WDI_ASSERT(0);
34305 return WDI_STATUS_E_FAILURE;
34306 }
34307
34308 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
34309 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
34310
34311 /*-----------------------------------------------------------------------
34312 Get message buffer
34313 ! TO DO : proper conversion into the HAL Message Request Format
34314 -----------------------------------------------------------------------*/
34315 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34316 pWDICtx,
34317 WDI_LL_STATS_CLEAR_REQ,
34318 sizeof(tHalMacLlClearStatsReqParams),
34319 &pSendBuffer, &usDataOffset,
34320 &usSendSize))||
34321 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
34322 {
34323 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034324 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Sunil Duttbd736ed2014-05-26 21:19:41 +053034325 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
34326 WDI_ASSERT(0);
34327 return WDI_STATUS_E_FAILURE;
34328 }
Dino Mycled3d50022014-07-07 12:58:25 +053034329 /* Need to fill in the self STA Index */
34330 if ( WDI_STATUS_SUCCESS !=
34331 WDI_STATableFindStaidByAddr(pWDICtx,
34332 pwdiLLStatsClearReqParams->macAddr,
34333 &halLLStatsClearParams.sta_id))
34334 {
34335 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34336 MAC_ADDRESS_STR
34337 ": This station does not exist in the WDI Station Table",
34338 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
34339
34340 wpalMemoryFree(pSendBuffer);
34341 return WDI_STATUS_E_FAILURE;
34342 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053034343
34344 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053034345 halLLStatsClearParams.stats_clear_req_mask =
34346 pwdiLLStatsClearReqParams->statsClearReqMask;
34347 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
34348
34349 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34350 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
34351 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34352 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
34353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34354 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
34355 halLLStatsClearParams.stats_clear_req_mask);
34356 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34357 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
34358
34359 wpalMemoryCopy(pSendBuffer+usDataOffset,
34360 &halLLStatsClearParams,
34361 sizeof(halLLStatsClearParams));
34362
34363 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34364
34365 /*-------------------------------------------------------------------------
34366 Send Clear Link Layer Stats Request to HAL
34367 -------------------------------------------------------------------------*/
34368 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34369 wdiLLStatsClearCb, pEventData->pUserData,
34370 WDI_LL_STATS_CLEAR_RSP);
34371}
34372#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053034373
Abhishek Singh85b74712014-10-08 11:38:19 +053034374WDI_Status WDI_FWStatsGetReq( void* pUserData,
34375 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
34376 wpt_uint32 stats)
34377{
34378 WDI_EventInfoType wdiEventData;
34379
34380 /*------------------------------------------------------------------------
34381 Sanity Check
34382 ------------------------------------------------------------------------*/
34383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34384 {
34385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34386 "WDI API call before module is initialized - Fail request");
34387 return WDI_STATUS_E_NOT_ALLOWED;
34388 }
34389 /*------------------------------------------------------------------------
34390 Fill in Event data and post to the Main FSM
34391 ------------------------------------------------------------------------*/
34392 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
34393 wdiEventData.pEventData = (void *)&stats;
34394 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
34395 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
34396 wdiEventData.pUserData = pUserData;
34397
34398 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34399
34400}
34401
Katya Nigamf0511f62015-05-05 16:40:57 +053034402WDI_Status
34403WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034404 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053034405 void* pUserData)
34406{
34407 WDI_EventInfoType wdiEventData;
34408
34409 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34410 "%s", __func__);
34411
34412 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34413 {
34414 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34415 "WDI API call before module is initialized - Fail request");
34416
34417 return WDI_STATUS_E_NOT_ALLOWED;
34418 }
34419
34420 wdiEventData.wdiRequest = WDI_MON_START_REQ;
34421 wdiEventData.pEventData = pwdiMonStartReqParams;
34422 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034423 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034424 wdiEventData.pUserData = pUserData;
34425
34426 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34427}
34428
34429WDI_Status
34430WDI_ProcessMonStartReq
34431(
34432 WDI_ControlBlockType* pWDICtx,
34433 WDI_EventInfoType* pEventData
34434)
34435{
34436 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034437 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034438 wpt_uint8* pSendBuffer = NULL;
34439 wpt_uint16 usSendSize = 0;
34440 wpt_uint16 usDataOffset = 0;
34441 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
34442
34443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34444 "%s", __func__);
34445
34446 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34447 ( NULL == pEventData->pCBfnc ))
34448 {
34449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34450 "%s: Invalid parameters", __func__);
34451 WDI_ASSERT(0);
34452 return WDI_STATUS_E_FAILURE;
34453 }
34454
34455 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034456 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053034457
34458 /*-----------------------------------------------------------------------
34459 Get message buffer
34460 ! TO DO : proper conversion into the HAL Message Request Format
34461 -----------------------------------------------------------------------*/
34462 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34463 pWDICtx,
34464 WDI_MON_START_REQ,
34465 sizeof(tHalEnableMonitorModeReqParams),
34466 &pSendBuffer, &usDataOffset,
34467 &usSendSize))||
34468 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
34469 {
34470 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034471 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Katya Nigamf0511f62015-05-05 16:40:57 +053034472 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
34473 WDI_ASSERT(0);
34474 return WDI_STATUS_E_FAILURE;
34475 }
34476
34477 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
34478 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
34479 pwdiMonStartReqParams->ChannelBW);
34480 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
34481 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
34482 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
34483 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
34484 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
34485 pwdiMonStartReqParams->mmFilters[0].macAddr,
34486 sizeof( wpt_macAddr ));
34487 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
34488 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
34489 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
34490 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
34491
34492 wpalMemoryCopy(pSendBuffer+usDataOffset,
34493 &halEnableMonitorModeParams,
34494 sizeof(halEnableMonitorModeParams));
34495
34496 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34497
34498 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34499 wdiMonStartCb, pEventData->pUserData,
34500 WDI_MON_START_RSP);
34501}
34502
Anurag Chouhan83026002016-12-13 22:46:21 +053034503#ifdef DHCP_SERVER_OFFLOAD
34504/**
34505 * wdi_dhcp_server_offload_rsp() - wdi api for the dhcp server response
34506 * @wdi_ctx: pointer to the wdi context
34507 * @event_data: pointer to the event data
34508 *
34509 * Return: WDI_Status
34510 * WDI_STATUS_SUCCESS - success or else failure status
34511 */
34512WDI_Status
34513wdi_dhcp_server_offload_rsp
34514(
34515 WDI_ControlBlockType *wdi_ctx,
34516 WDI_EventInfoType *event_data
34517)
34518{
34519 wdi_dhcp_srv_offload_rsp_cb wdi_dhcp_srv_offload_rsp_callback;
34520
Anurag Chouhan0b29de02016-12-16 13:18:40 +053034521 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Anurag Chouhan83026002016-12-13 22:46:21 +053034522 "%s: Enter ", __func__);
34523 /*-------------------------------------------------------------------
34524 Sanity check
34525 -----------------------------------------------------------------*/
34526 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34527 (NULL == event_data->pEventData))
34528 {
34529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34530 "%s: Invalid parameters", __func__);
34531 WDI_ASSERT(0);
34532 return WDI_STATUS_E_FAILURE;
34533 }
34534
34535 wdi_dhcp_srv_offload_rsp_callback =
34536 (wdi_dhcp_srv_offload_rsp_cb)wdi_ctx->pfncRspCB;
34537
34538 wdi_dhcp_srv_offload_rsp_callback((void *) event_data->pEventData,
34539 wdi_ctx->pRspCBUserData);
34540
34541 return WDI_STATUS_SUCCESS;
34542}
34543#endif /* DHCP_SERVER_OFFLOAD */
34544
Anurag Chouhan0b29de02016-12-16 13:18:40 +053034545#ifdef MDNS_OFFLOAD
34546/**
34547 * wdi_mdns_enable_offload_rsp() - wdi api for the mdns enable response
34548 * @wdi_ctx: pointer to the wdi context
34549 * @event_data: pointer to the event data
34550 *
34551 * Return: WDI_Status
34552 * WDI_STATUS_SUCCESS - success or else failure status
34553 */
34554WDI_Status
34555wdi_mdns_enable_offload_rsp
34556(
34557 WDI_ControlBlockType *wdi_ctx,
34558 WDI_EventInfoType *event_data
34559)
34560{
34561 wdi_mdns_enable_rsp_cb wdi_mdns_rsp_callback;
34562
34563 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34564 "%s: Enter ", __func__);
34565 /*-------------------------------------------------------------------
34566 Sanity check
34567 -----------------------------------------------------------------*/
34568 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34569 (NULL == event_data->pEventData))
34570 {
34571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34572 "%s: Invalid parameters", __func__);
34573 WDI_ASSERT(0);
34574 return WDI_STATUS_E_FAILURE;
34575 }
34576
34577 wdi_mdns_rsp_callback =
34578 (wdi_mdns_enable_rsp_cb)wdi_ctx->pfncRspCB;
34579
34580 wdi_mdns_rsp_callback((void *) event_data->pEventData,
34581 wdi_ctx->pRspCBUserData);
34582
34583 return WDI_STATUS_SUCCESS;
34584}
34585
34586/**
34587 * wdi_mdns_fqdn_offload_rsp() - wdi api for the mdns fqdn response
34588 * @wdi_ctx: pointer to the wdi context
34589 * @event_data: pointer to the event data
34590 *
34591 * Return: WDI_Status
34592 * WDI_STATUS_SUCCESS - success or else failure status
34593 */
34594WDI_Status
34595wdi_mdns_fqdn_offload_rsp
34596(
34597 WDI_ControlBlockType *wdi_ctx,
34598 WDI_EventInfoType *event_data
34599)
34600{
34601 wdi_mdns_enable_rsp_cb wdi_mdns_rsp_callback;
34602
34603 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34604 "%s: Enter ", __func__);
34605 /*-------------------------------------------------------------------
34606 Sanity check
34607 -----------------------------------------------------------------*/
34608 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34609 (NULL == event_data->pEventData))
34610 {
34611 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34612 "%s: Invalid parameters", __func__);
34613 WDI_ASSERT(0);
34614 return WDI_STATUS_E_FAILURE;
34615 }
34616
34617 wdi_mdns_rsp_callback =
34618 (wdi_mdns_enable_rsp_cb)wdi_ctx->pfncRspCB;
34619
34620 wdi_mdns_rsp_callback((void *) event_data->pEventData,
34621 wdi_ctx->pRspCBUserData);
34622
34623 return WDI_STATUS_SUCCESS;
34624}
34625
34626/**
34627 * wdi_mdns_resp_offload_rsp() - wdi api for the mdns resp response
34628 * @wdi_ctx: pointer to the wdi context
34629 * @event_data: pointer to the event data
34630 *
34631 * Return: WDI_Status
34632 * WDI_STATUS_SUCCESS - success or else failure status
34633 */
34634WDI_Status
34635wdi_mdns_resp_offload_rsp
34636(
34637 WDI_ControlBlockType *wdi_ctx,
34638 WDI_EventInfoType *event_data
34639)
34640{
34641 wdi_mdns_resp_rsp_cb wdi_mdns_rsp_callback;
34642
34643 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34644 "%s: Enter ", __func__);
34645 /*-------------------------------------------------------------------
34646 Sanity check
34647 -----------------------------------------------------------------*/
34648 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34649 (NULL == event_data->pEventData))
34650 {
34651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34652 "%s: Invalid parameters", __func__);
34653 WDI_ASSERT(0);
34654 return WDI_STATUS_E_FAILURE;
34655 }
34656
34657 wdi_mdns_rsp_callback =
34658 (wdi_mdns_resp_rsp_cb)wdi_ctx->pfncRspCB;
34659
34660 wdi_mdns_rsp_callback((void *) event_data->pEventData,
34661 wdi_ctx->pRspCBUserData);
34662
34663 return WDI_STATUS_SUCCESS;
34664}
34665
34666/**
34667 * wdi_get_mdns_stats_offload_rsp() - wdi api for the mdns stats response
34668 * @wdi_ctx: pointer to the wdi context
34669 * @event_data: pointer to the event data
34670 *
34671 * Return: WDI_Status
34672 * WDI_STATUS_SUCCESS - success or else failure status
34673 */
34674WDI_Status
34675wdi_get_mdns_stats_offload_rsp
34676(
34677 WDI_ControlBlockType *wdi_ctx,
34678 WDI_EventInfoType *event_data
34679)
34680{
34681 wdi_get_stats_rsp_cb wdi_mdns_rsp_callback;
34682
34683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34684 "%s: Enter ", __func__);
34685 /*-------------------------------------------------------------------
34686 Sanity check
34687 -----------------------------------------------------------------*/
34688 if ((NULL == wdi_ctx) || (NULL == event_data) ||
34689 (NULL == event_data->pEventData))
34690 {
34691 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34692 "%s: Invalid parameters", __func__);
34693 WDI_ASSERT(0);
34694 return WDI_STATUS_E_FAILURE;
34695 }
34696
34697 wdi_mdns_rsp_callback =
34698 (wdi_get_stats_rsp_cb)wdi_ctx->pfncRspCB;
34699
34700 wdi_mdns_rsp_callback((void *) event_data->pEventData,
34701 wdi_ctx->pRspCBUserData);
34702
34703 return WDI_STATUS_SUCCESS;
34704}
34705#endif /* MDNS_OFFLOAD */
34706
Katya Nigamf0511f62015-05-05 16:40:57 +053034707WDI_Status
34708WDI_ProcessMonStartRsp
34709(
34710 WDI_ControlBlockType* pWDICtx,
34711 WDI_EventInfoType* pEventData
34712)
34713{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034714 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034715
34716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34717 "%s: Enter ", __func__);
34718 /*-------------------------------------------------------------------------
34719 Sanity check
34720 -------------------------------------------------------------------------*/
34721 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34722 ( NULL == pEventData->pEventData))
34723 {
34724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34725 "%s: Invalid parameters", __func__);
34726 WDI_ASSERT(0);
34727 return WDI_STATUS_E_FAILURE;
34728 }
34729
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034730 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053034731
34732 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34733
34734 return WDI_STATUS_SUCCESS;
34735}
34736
34737WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034738WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053034739 void* pUserData)
34740{
34741 WDI_EventInfoType wdiEventData;
34742
34743 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34744 "%s", __func__);
34745
34746 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34747 {
34748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34749 "WDI API call before module is initialized - Fail request");
34750
34751 return WDI_STATUS_E_NOT_ALLOWED;
34752 }
34753
34754 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
34755 wdiEventData.pEventData = NULL;
34756 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034757 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034758 wdiEventData.pUserData = pUserData;
34759
34760 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34761}
34762
34763WDI_Status
34764WDI_ProcessMonStopReq
34765(
34766 WDI_ControlBlockType* pWDICtx,
34767 WDI_EventInfoType* pEventData
34768)
34769{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034770 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034771 wpt_uint8* pSendBuffer = NULL;
34772 wpt_uint16 usSendSize = 0;
34773 wpt_uint16 usDataOffset = 0;
34774 wpt_uint8 resetConfiguration;
34775
34776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
34777 "%s", __func__);
34778
34779 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
34780 {
34781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34782 "%s: Invalid parameters", __func__);
34783 WDI_ASSERT(0);
34784 return WDI_STATUS_E_FAILURE;
34785 }
34786
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034787 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053034788
34789 /*-----------------------------------------------------------------------
34790 Get message buffer
34791 ! TO DO : proper conversion into the HAL Message Request Format
34792 -----------------------------------------------------------------------*/
34793 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34794 pWDICtx,
34795 WDI_MON_STOP_REQ,
34796 sizeof(wpt_uint8),
34797 &pSendBuffer, &usDataOffset,
34798 &usSendSize))||
34799 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
34800 {
34801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070034802 "Unable to get send buffer in %s %pK %pK", __func__,
Katya Nigamf0511f62015-05-05 16:40:57 +053034803 pEventData, wdiMonStopCb);
34804 WDI_ASSERT(0);
34805 return WDI_STATUS_E_FAILURE;
34806 }
34807
34808 wpalMemoryCopy(pSendBuffer+usDataOffset,
34809 &resetConfiguration,
34810 sizeof(wpt_uint8));
34811
34812 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34813
34814 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34815 wdiMonStopCb, pEventData->pUserData,
34816 WDI_MON_STOP_RSP);
34817}
34818
34819WDI_Status
34820WDI_ProcessMonStopRsp
34821(
34822 WDI_ControlBlockType* pWDICtx,
34823 WDI_EventInfoType* pEventData
34824)
34825{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034826 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053034827
34828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34829 "%s: Enter ", __func__);
34830 /*-------------------------------------------------------------------------
34831 Sanity check
34832 -------------------------------------------------------------------------*/
34833 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
34834 {
34835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34836 "%s: Invalid parameters", __func__);
34837 WDI_ASSERT(0);
34838 return WDI_STATUS_E_FAILURE;
34839 }
34840
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034841 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053034842
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053034843 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053034844
34845 return WDI_STATUS_SUCCESS;
34846}
34847
Dino Mycle41bdc942014-06-10 11:30:24 +053034848#ifdef WLAN_FEATURE_EXTSCAN
34849
34850/**
34851 @brief Process EXTSCAN BUffer full indication from FW
34852
34853 @param pWDICtx: pointer to the WLAN DAL context
34854 pEventData: pointer to the event information structure
34855
34856 @see
34857 @return Result of the function call
34858*/
34859WDI_Status
34860WDI_ProcessEXTScanProgressInd
34861(
34862 WDI_ControlBlockType* pWDICtx,
34863 WDI_EventInfoType* pEventData
34864)
34865{
34866 WDI_LowLevelIndType wdiInd;
34867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34868
34869 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34870 "%s: ", __func__);
34871
34872 /* sanity check */
34873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34874 ( NULL == pEventData->pEventData))
34875 {
34876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34877 "%s: Invalid parameters", __func__);
34878 WDI_ASSERT(0);
34879 return WDI_STATUS_E_FAILURE;
34880 }
34881
34882 /* Fill in the indication parameters */
34883 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
34884
34885 /* extract response and send it to UMAC */
34886 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34887
34888 /* Notify UMAC */
34889 if (pWDICtx->wdiLowLevelIndCB)
34890 {
34891 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34892 }
34893 else
34894 {
Dino Mycled3d50022014-07-07 12:58:25 +053034895 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053034896 "%s: WDILowLevelIndCb is null", __func__);
34897 WDI_ASSERT(0);
34898 return WDI_STATUS_E_FAILURE;
34899 }
34900 return WDI_STATUS_SUCCESS;
34901
34902} /* End of WDI_ProcessEXTScanProgressInd */
34903
34904
34905/**
34906 @brief Process EXTScan Scan Available indication from FW
34907
34908 @param pWDICtx: pointer to the WLAN DAL context
34909 pEventData: pointer to the event information structure
34910
34911 @see
34912 @return Result of the function call
34913*/
34914WDI_Status
34915WDI_ProcessEXTScanScanAvailableInd
34916(
34917 WDI_ControlBlockType* pWDICtx,
34918 WDI_EventInfoType* pEventData
34919)
34920{
34921 WDI_LowLevelIndType wdiInd;
34922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34923
34924 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34925 "%s: ", __func__);
34926
34927 /* sanity check */
34928 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34929 ( NULL == pEventData->pEventData))
34930 {
34931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34932 "%s: Invalid parameters", __func__);
34933 WDI_ASSERT(0);
34934 return WDI_STATUS_E_FAILURE;
34935 }
34936
34937
34938
34939 /* Fill in the indication parameters */
34940 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
34941
34942 /* extract response and send it to UMAC */
34943 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34944
34945 /* Notify UMAC */
34946 if (pWDICtx->wdiLowLevelIndCB)
34947 {
34948 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34949 }
34950 else
34951 {
34952 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34953 "%s: WDILowLevelIndCb is null", __func__);
34954 WDI_ASSERT(0);
34955 return WDI_STATUS_E_FAILURE;
34956 }
34957 return WDI_STATUS_SUCCESS;
34958} /* End of WDI_ProcessEXTScanScanDoneInd */
34959
34960/**
34961 @brief Process EXTScan Result Indication indication from FW
34962
34963 @param pWDICtx: pointer to the WLAN DAL context
34964 pEventData: pointer to the event information structure
34965
34966 @see
34967 @return Result of the function call
34968*/
34969WDI_Status
34970WDI_ProcessEXTScanResultInd
34971(
34972 WDI_ControlBlockType* pWDICtx,
34973 WDI_EventInfoType* pEventData
34974)
34975{
34976 WDI_LowLevelIndType wdiInd;
34977 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34978
34979 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34980 "%s: ", __func__);
34981
34982 /* sanity check */
34983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34984 ( NULL == pEventData->pEventData))
34985 {
34986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34987 "%s: Invalid parameters", __func__);
34988 WDI_ASSERT(0);
34989 return WDI_STATUS_E_FAILURE;
34990 }
34991
34992 /* Fill in the indication parameters */
34993 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
34994
34995 /* extract response and send it to UMAC */
34996 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34997
34998 /* Notify UMAC */
34999 if (pWDICtx->wdiLowLevelIndCB)
35000 {
35001 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35002 }
35003 else
35004 {
35005 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35006 "%s: WDILowLevelIndCb is null", __func__);
35007 WDI_ASSERT(0);
35008 return WDI_STATUS_E_FAILURE;
35009 }
35010 return WDI_STATUS_SUCCESS;
35011} /* End of WDI_ProcessEXTScanResultInd */
35012
35013/**
35014 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
35015
35016 @param pWDICtx: pointer to the WLAN DAL context
35017 pEventData: pointer to the event information structure
35018
35019 @see
35020 @return Result of the function call
35021*/
35022WDI_Status
35023WDI_ProcessEXTScanBssidHotListResultInd
35024(
35025 WDI_ControlBlockType* pWDICtx,
35026 WDI_EventInfoType* pEventData
35027)
35028{
35029 WDI_LowLevelIndType wdiInd;
35030 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35031
35032 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35033 "%s: ", __func__);
35034
35035 /* sanity check */
35036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35037 ( NULL == pEventData->pEventData))
35038 {
35039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35040 "%s: Invalid parameters", __func__);
35041 WDI_ASSERT(0);
35042 return WDI_STATUS_E_FAILURE;
35043 }
35044
35045 /* Fill in the indication parameters */
35046 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
35047
35048 /* extract response and send it to UMAC */
35049 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
35050
35051 /* Notify UMAC */
35052 if (pWDICtx->wdiLowLevelIndCB)
35053 {
35054 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
35055 }
35056 else
35057 {
35058 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35059 "%s: WDILowLevelIndCb is null", __func__);
35060 WDI_ASSERT(0);
35061 return WDI_STATUS_E_FAILURE;
35062 }
35063 return WDI_STATUS_SUCCESS;
35064} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
35065
35066/**
Dino Mycle41bdc942014-06-10 11:30:24 +053035067 @brief WDI_EXTScanGetCapabilitiesReq
35068
35069 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
35070 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
35071 of the Req operation received from the device
35072 pUserData: user data will be passed back with the callback
35073
35074 @return SUCCESS or FAIL
35075*/
35076WDI_Status
35077WDI_EXTScanGetCapabilitiesReq(
35078 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
35079 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
35080 void* pUserData)
35081{
35082 WDI_EventInfoType wdiEventData;
35083
35084 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35085 "%s: %d ",__func__, __LINE__);
35086 /*------------------------------------------------------------------------
35087 Sanity Check
35088 ------------------------------------------------------------------------*/
35089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35090 {
35091 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35092 "WDI API call before module is initialized - Fail request");
35093
35094 return WDI_STATUS_E_NOT_ALLOWED;
35095 }
35096
35097 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
35098 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
35099 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
35100 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
35101 wdiEventData.pUserData = pUserData;
35102
35103 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35104}
35105
35106/**
35107 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
35108 Extended Scan Get Capability request to FW
35109
35110 @param pWDICtx : wdi context
35111 pEventData : indication data
35112
35113 @see
35114 @return none
35115*/
35116WDI_Status
35117WDI_ProcessEXTScanGetCapabilitiesReq
35118(
35119 WDI_ControlBlockType* pWDICtx,
35120 WDI_EventInfoType* pEventData
35121)
35122{
35123 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
35124 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
35125 wpt_uint8* pSendBuffer = NULL;
35126 wpt_uint16 usSendSize = 0;
35127 wpt_uint16 usDataOffset = 0;
35128 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
35129
35130 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35131 "%s: %d Enter",__func__, __LINE__);
35132
35133 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35134 ( NULL == pEventData->pCBfnc ))
35135 {
35136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35137 "%s: Invalid parameters", __func__);
35138 WDI_ASSERT(0);
35139 return WDI_STATUS_E_FAILURE;
35140 }
35141
35142 pwdiEXTScanGetCapabilitiesReqParams =
35143 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
35144 wdiEXTScanGetCapabilitiesRspCb =
35145 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
35146
35147 /*-----------------------------------------------------------------------
35148 Get message buffer
35149 ! TO DO : proper conversion into the HAL Message Request Format
35150 -----------------------------------------------------------------------*/
35151 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35152 pWDICtx,
35153 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
35154 sizeof(halEXTScanGetCapReqParams),
35155 &pSendBuffer, &usDataOffset,
35156 &usSendSize))||
35157 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
35158 {
35159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035160 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035161 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
35162 wdiEXTScanGetCapabilitiesRspCb);
35163 WDI_ASSERT(0);
35164 return WDI_STATUS_E_FAILURE;
35165 }
35166
35167 halEXTScanGetCapReqParams.requestId =
35168 pwdiEXTScanGetCapabilitiesReqParams->requestId;
35169 halEXTScanGetCapReqParams.sessionId =
35170 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
35171
35172 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35173 " requestId %u "
35174 " sessionId %u ",
35175 halEXTScanGetCapReqParams.requestId,
35176 halEXTScanGetCapReqParams.sessionId);
35177
35178 wpalMemoryCopy(pSendBuffer+usDataOffset,
35179 &halEXTScanGetCapReqParams,
35180 sizeof(halEXTScanGetCapReqParams));
35181
35182 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35183
35184
35185 /*-------------------------------------------------------------------------
35186 Send EXTScan Stop Request to HAL
35187 -------------------------------------------------------------------------*/
35188 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35189 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
35190 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
35191}
35192
35193/**
35194 @brief WDI_EXTScanGetCachedResultsReq
35195
35196 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
35197 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
35198 of the Req operation received from the device
35199 pUserData: user data will be passed back with the callback
35200
35201 @return SUCCESS or FAIL
35202*/
35203
35204WDI_Status
35205WDI_EXTScanGetCachedResultsReq(
35206 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
35207 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
35208 void* pUserData)
35209{
35210 WDI_EventInfoType wdiEventData;
35211
35212 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35213 "%s: %d Enter",__func__, __LINE__);
35214 /*------------------------------------------------------------------------
35215 Sanity Check
35216 ------------------------------------------------------------------------*/
35217 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35218 {
35219 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35220 "WDI API call before module is initialized - Fail request");
35221
35222 return WDI_STATUS_E_NOT_ALLOWED;
35223 }
35224
35225 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
35226 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
35227 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
35228 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
35229 wdiEventData.pUserData = pUserData;
35230
35231 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35232}
35233
35234/**
35235 @brief WDI_ProcessEXTScanGetCachedResultsReq -
35236 Extended Scan Get Cached Result request to FW
35237
35238 @param pWDICtx : wdi context
35239 pEventData : indication data
35240
35241 @see
35242 @return none
35243*/
35244WDI_Status
35245WDI_ProcessEXTScanGetCachedResultsReq
35246(
35247 WDI_ControlBlockType* pWDICtx,
35248 WDI_EventInfoType* pEventData
35249)
35250{
35251 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
35252 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
35253 wpt_uint8* pSendBuffer = NULL;
35254 wpt_uint16 usSendSize = 0;
35255 wpt_uint16 usDataOffset = 0;
35256 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
35257
35258 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35259 "%s: %d Enter",__func__, __LINE__);
35260
35261 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35262 ( NULL == pEventData->pCBfnc ))
35263 {
35264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35265 "%s: Invalid parameters", __func__);
35266 WDI_ASSERT(0);
35267 return WDI_STATUS_E_FAILURE;
35268 }
35269
35270 pwdiEXTScanGetCachedResultsReqParams =
35271 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
35272 wdiEXTScanGetCachedResultsCb =
35273 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
35274
35275 /*-----------------------------------------------------------------------
35276 Get message buffer
35277 ! TO DO : proper conversion into the HAL Message Request Format
35278 -----------------------------------------------------------------------*/
35279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35280 pWDICtx,
35281 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
35282 sizeof(tHalExtScanGetScanReq),
35283 &pSendBuffer, &usDataOffset,
35284 &usSendSize))||
35285 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
35286 {
35287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035288 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035289 pEventData, pwdiEXTScanGetCachedResultsReqParams,
35290 wdiEXTScanGetCachedResultsCb);
35291 WDI_ASSERT(0);
35292 return WDI_STATUS_E_FAILURE;
35293 }
35294
35295 halEXTScanGetScanReqParams.requestId =
35296 pwdiEXTScanGetCachedResultsReqParams->requestId;
35297 halEXTScanGetScanReqParams.sessionId =
35298 pwdiEXTScanGetCachedResultsReqParams->sessionId;
35299 halEXTScanGetScanReqParams.flush =
35300 pwdiEXTScanGetCachedResultsReqParams->flush;
35301
35302 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35303 " requestId %u "
35304 " sessionId %u "
35305 " flush %u ",
35306 halEXTScanGetScanReqParams.requestId,
35307 halEXTScanGetScanReqParams.sessionId,
35308 halEXTScanGetScanReqParams.flush);
35309
35310 wpalMemoryCopy(pSendBuffer+usDataOffset,
35311 &halEXTScanGetScanReqParams,
35312 sizeof(halEXTScanGetScanReqParams));
35313
35314 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35315
35316
35317 /*-------------------------------------------------------------------------
35318 Send EXTScan Stop Request to HAL
35319 -------------------------------------------------------------------------*/
35320 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35321 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
35322 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
35323}
35324
35325/**
35326 @brief WDI_EXTScanStopReq
35327
35328 @param WDI_EXTScanStopReqParams: Req parameter for the FW
35329 WDI_EXTScanStopRspCb: callback for passing back the response
35330 of the Req operation received from the device
35331 pUserData: user data will be passed back with the callback
35332
35333 @return SUCCESS or FAIL
35334*/
35335WDI_Status
35336WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
35337 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
35338 void* pUserData)
35339{
35340 WDI_EventInfoType wdiEventData;
35341
35342 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35343 "%s: %d ",__func__, __LINE__);
35344 /*------------------------------------------------------------------------
35345 Sanity Check
35346 ------------------------------------------------------------------------*/
35347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35348 {
35349 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35350 "WDI API call before module is initialized - Fail request");
35351
35352 return WDI_STATUS_E_NOT_ALLOWED;
35353 }
35354
35355 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
35356 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
35357 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
35358 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
35359 wdiEventData.pUserData = pUserData;
35360
35361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35362}
35363
35364/**
35365 @brief WDI_ProcessEXTScanStopReq -
35366 Extended Scan Stop request to FW
35367
35368 @param pWDICtx : wdi context
35369 pEventData : indication data
35370
35371 @see
35372 @return none
35373*/
35374WDI_Status
35375WDI_ProcessEXTScanStopReq
35376(
35377 WDI_ControlBlockType* pWDICtx,
35378 WDI_EventInfoType* pEventData
35379)
35380{
35381 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
35382 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
35383 wpt_uint8* pSendBuffer = NULL;
35384 wpt_uint16 usSendSize = 0;
35385 wpt_uint16 usDataOffset = 0;
35386 tHalExtScanStopReq halEXTScanStopReqParams;
35387
35388 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35389 "%s: %d ",__func__, __LINE__);
35390
35391 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35392 ( NULL == pEventData->pCBfnc ))
35393 {
35394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35395 "%s: Invalid parameters", __func__);
35396 WDI_ASSERT(0);
35397 return WDI_STATUS_E_FAILURE;
35398 }
35399
35400 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
35401 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
35402
35403 /*-----------------------------------------------------------------------
35404 Get message buffer
35405 ! TO DO : proper conversion into the HAL Message Request Format
35406 -----------------------------------------------------------------------*/
35407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35408 pWDICtx,
35409 WDI_EXTSCAN_STOP_REQ,
35410 sizeof(tHalExtScanStopReq),
35411 &pSendBuffer, &usDataOffset,
35412 &usSendSize))||
35413 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
35414 {
35415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035416 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035417 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
35418 WDI_ASSERT(0);
35419 return WDI_STATUS_E_FAILURE;
35420 }
35421
35422 halEXTScanStopReqParams.requestId =
35423 pwdiEXTScanStopReqParams->requestId;
35424 halEXTScanStopReqParams.sessionId =
35425 pwdiEXTScanStopReqParams->sessionId;
35426
35427 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35428 " halEXTScanStopReqParams.requestId %u "
35429 " halEXTScanStopReqParams.sessionId %u ",
35430 halEXTScanStopReqParams.requestId,
35431 halEXTScanStopReqParams.sessionId);
35432
35433 wpalMemoryCopy(pSendBuffer+usDataOffset,
35434 &halEXTScanStopReqParams,
35435 sizeof(halEXTScanStopReqParams));
35436
35437 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35438
35439
35440 /*-------------------------------------------------------------------------
35441 Send EXTScan Stop Request to HAL
35442 -------------------------------------------------------------------------*/
35443 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35444 wdiEXTScanStopCb, pEventData->pUserData,
35445 WDI_EXTSCAN_STOP_RSP);
35446}
35447
35448/**
35449 @brief WDI_EXTScanStartReq
35450
35451 @param WDI_EXTScanStartReqParams: Req parameter for the FW
35452 WDI_EXTScanStartRspCb: callback for passing back the response
35453 of the Req operation received from the device
35454 pUserData: user data will be passed back with the callback
35455
35456 @return SUCCESS or FAIL
35457*/
35458WDI_Status
35459WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
35460 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
35461 void* pUserData)
35462{
35463 WDI_EventInfoType wdiEventData;
35464
35465 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35466 "%s: %d Enter",__func__, __LINE__);
35467 /*------------------------------------------------------------------------
35468 Sanity Check
35469 ------------------------------------------------------------------------*/
35470 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35471 {
35472 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35473 "WDI API call before module is initialized - Fail request");
35474
35475 return WDI_STATUS_E_NOT_ALLOWED;
35476 }
35477
35478 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
35479 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
35480 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
35481 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
35482 wdiEventData.pUserData = pUserData;
35483
35484 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35485}
35486
35487/**
35488 @brief WDI_ProcessEXTScanStartReq -
35489 Extended Scan Start Request to FW
35490
35491 @param pWDICtx : wdi context
35492 pEventData : indication data
35493
35494 @see
35495 @return none
35496*/
35497WDI_Status
35498WDI_ProcessEXTScanStartReq
35499(
35500 WDI_ControlBlockType* pWDICtx,
35501 WDI_EventInfoType* pEventData
35502)
35503{
35504 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
35505 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
35506 wpt_uint8* pSendBuffer = NULL;
35507 wpt_uint16 usSendSize = 0;
35508 wpt_uint16 usDataOffset = 0;
35509 tpHalExtScanStartReq pHalExtScanStartReqParams;
35510 int i = 0;
35511 int j = 0;
35512
35513 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35514 "%s: %d Enter",__func__, __LINE__);
35515
35516 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35517 ( NULL == pEventData->pCBfnc ))
35518 {
35519 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35520 "%s: Invalid parameters", __func__);
35521 WDI_ASSERT(0);
35522 return WDI_STATUS_E_FAILURE;
35523 }
35524
35525 pwdiEXTScanStartReqParams =
35526 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
35527 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
35528
35529 /*-----------------------------------------------------------------------
35530 Get message buffer
35531 ! TO DO : proper conversion into the HAL Message Request Format
35532 -----------------------------------------------------------------------*/
35533 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35534 pWDICtx,
35535 WDI_EXTSCAN_START_REQ,
35536 sizeof(tHalExtScanStartReq),
35537 &pSendBuffer, &usDataOffset,
35538 &usSendSize))||
35539 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
35540 {
35541 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035542 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035543 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
35544 WDI_ASSERT(0);
35545 return WDI_STATUS_E_FAILURE;
35546 }
35547
35548 pHalExtScanStartReqParams =
35549 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
35550
35551 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
35552 pHalExtScanStartReqParams->maxApPerScan =
35553 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035554 pHalExtScanStartReqParams->reportThresholdPercent =
35555 pwdiEXTScanStartReqParams->reportThresholdPercent;
35556 pHalExtScanStartReqParams->reportThresholdNumScans =
35557 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053035558 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
35559 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
35560 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035561 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053035562
35563 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
35564 {
35565 pHalExtScanStartReqParams->bucketData[i].bucketId =
35566 pwdiEXTScanStartReqParams->buckets[i].bucket;
35567 pHalExtScanStartReqParams->bucketData[i].channelBand =
35568 pwdiEXTScanStartReqParams->buckets[i].band;
35569 pHalExtScanStartReqParams->bucketData[i].period =
35570 pwdiEXTScanStartReqParams->buckets[i].period;
35571 pHalExtScanStartReqParams->bucketData[i].reportEvents =
35572 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035573 pHalExtScanStartReqParams->bucketData[i].max_period =
35574 pwdiEXTScanStartReqParams->buckets[i].max_period;
35575 pHalExtScanStartReqParams->bucketData[i].exponent =
35576 pwdiEXTScanStartReqParams->buckets[i].exponent;
35577 pHalExtScanStartReqParams->bucketData[i].step_count =
35578 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053035579 pHalExtScanStartReqParams->bucketData[i].numChannels =
35580 pwdiEXTScanStartReqParams->buckets[i].numChannels;
35581
35582 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
35583 {
35584 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
35585 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
35586 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
35587 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
35588 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
35589 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
35590 }
35591
35592 }
35593
35594
35595 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035596 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
35597 "reportThresholdNumScans %u requestId %u"
35598 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053035599 pHalExtScanStartReqParams->basePeriod,
35600 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035601 pHalExtScanStartReqParams->reportThresholdPercent,
35602 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053035603 pHalExtScanStartReqParams->requestId,
35604 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035605 pHalExtScanStartReqParams->numBuckets,
35606 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053035607
35608 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
35609 {
35610 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
35611 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035612 " reportEvents %u numChannels %u "
35613 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053035614 pHalExtScanStartReqParams->bucketData[i].bucketId,
35615 pHalExtScanStartReqParams->bucketData[i].channelBand,
35616 pHalExtScanStartReqParams->bucketData[i].period,
35617 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053035618 pHalExtScanStartReqParams->bucketData[i].numChannels,
35619 pHalExtScanStartReqParams->bucketData[i].max_period,
35620 pHalExtScanStartReqParams->bucketData[i].exponent,
35621 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053035622
35623 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
35624 {
35625 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35626 "%d) channel %u dwellTimeMs %u passive %u ",j,
35627 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
35628 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
35629 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
35630 }
35631
35632 }
35633
Dino Mycle41bdc942014-06-10 11:30:24 +053035634 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35635
35636 /*-------------------------------------------------------------------------
35637 Send EXTSCAN Start Request to HAL
35638 -------------------------------------------------------------------------*/
35639 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35640 wdiEXTScanStartCb, pEventData->pUserData,
35641 WDI_EXTSCAN_START_RSP);
35642}
35643
35644/**
35645 @brief WDI_EXTScanSetBSSIDHotlistReq
35646
35647 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
35648 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
35649 of the Req operation received from the device
35650 pUserData: user data will be passed back with the callback
35651
35652 @return SUCCESS or FAIL
35653*/
35654WDI_Status
35655WDI_EXTScanSetBSSIDHotlistReq(
35656 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
35657 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
35658 void* pUserData)
35659{
35660 WDI_EventInfoType wdiEventData;
35661
35662 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35663 "%s: %d Enter ",__func__, __LINE__);
35664 /*------------------------------------------------------------------------
35665 Sanity Check
35666 ------------------------------------------------------------------------*/
35667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35668 {
35669 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35670 "WDI API call before module is initialized - Fail request");
35671
35672 return WDI_STATUS_E_NOT_ALLOWED;
35673 }
35674
35675 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
35676 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
35677 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
35678 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
35679 wdiEventData.pUserData = pUserData;
35680
35681 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35682}
35683
35684/**
35685 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
35686 Extended Scan Set BSSSID Hotlist Request to FW
35687
35688 @param pWDICtx : wdi context
35689 pEventData : indication data
35690
35691 @see
35692 @return none
35693*/
35694WDI_Status
35695WDI_ProcessEXTScanSetBSSIDHotlistReq
35696(
35697 WDI_ControlBlockType* pWDICtx,
35698 WDI_EventInfoType* pEventData
35699)
35700{
35701 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
35702 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
35703 wpt_uint8* pSendBuffer = NULL;
35704 wpt_uint16 usSendSize = 0;
35705 wpt_uint16 usDataOffset = 0;
35706 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
35707 int i;
35708
35709 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35710 "%s: %d Enter",__func__, __LINE__);
35711
35712 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35713 ( NULL == pEventData->pCBfnc ))
35714 {
35715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35716 "%s: Invalid parameters", __func__);
35717 WDI_ASSERT(0);
35718 return WDI_STATUS_E_FAILURE;
35719 }
35720
35721 pwdiEXTScanSetBSSIDHotlistReqParams =
35722 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
35723 wdiEXTScanSetBSSIDHotlistRspCb =
35724 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
35725
35726 /*-----------------------------------------------------------------------
35727 Get message buffer
35728 ! TO DO : proper conversion into the HAL Message Request Format
35729 -----------------------------------------------------------------------*/
35730 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35731 pWDICtx,
35732 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
35733 sizeof(tHalBssidHotlistSetReq),
35734 &pSendBuffer, &usDataOffset,
35735 &usSendSize))||
35736 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
35737 {
35738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035739 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035740 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
35741 wdiEXTScanSetBSSIDHotlistRspCb);
35742 WDI_ASSERT(0);
35743 return WDI_STATUS_E_FAILURE;
35744 }
35745 pHalBssidHotlistSetReqParams =
35746 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
35747
35748 pHalBssidHotlistSetReqParams->requestId =
35749 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
35750
35751 pHalBssidHotlistSetReqParams->sessionId =
35752 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
35753
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035754 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
35755 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
35756
35757 pHalBssidHotlistSetReqParams->numBssid =
35758 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053035759
35760 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
35761
35762 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
35763 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
35764 WDI_MAC_ADDR_LEN);
35765
35766 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
35767 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
35768
35769 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
35770 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
35771
Dino Mycle41bdc942014-06-10 11:30:24 +053035772 }
35773
35774 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035775 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053035776 pHalBssidHotlistSetReqParams->requestId,
35777 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035778 pHalBssidHotlistSetReqParams->numBssid,
35779 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053035780
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035781 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053035782
35783 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035784 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053035785 __func__, __LINE__, i,
35786 pHalBssidHotlistSetReqParams->ap[i].bssid,
35787 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053035788 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053035789
35790 }
35791
35792 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35793
35794
35795 /*-------------------------------------------------------------------------
35796 Send EXTScan Stop Request to HAL
35797 -------------------------------------------------------------------------*/
35798 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35799 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
35800 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
35801}
35802
35803/**
35804 @brief WDI_EXTScanResetBSSIDHotlistReq
35805
35806 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
35807 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
35808 of the Req operation received from the device
35809 pUserData: user data will be passed back with the callback
35810
35811 @return SUCCESS or FAIL
35812*/
35813WDI_Status
35814WDI_EXTScanResetBSSIDHotlistReq(
35815 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
35816 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
35817 void* pUserData)
35818{
35819 WDI_EventInfoType wdiEventData;
35820
35821 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35822 "%s: %d",__func__, __LINE__);
35823 /*------------------------------------------------------------------------
35824 Sanity Check
35825 ------------------------------------------------------------------------*/
35826 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35827 {
35828 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35829 "WDI API call before module is initialized - Fail request");
35830
35831 return WDI_STATUS_E_NOT_ALLOWED;
35832 }
35833
35834 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
35835 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
35836 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
35837 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
35838 wdiEventData.pUserData = pUserData;
35839
35840 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35841}
35842
35843/**
35844 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
35845 Extended Scan reset BSSID hotlist Request to FW
35846
35847 @param pWDICtx : wdi context
35848 pEventData : indication data
35849
35850 @see
35851 @return none
35852*/
35853WDI_Status
35854WDI_ProcessEXTScanResetBSSIDHotlistReq
35855(
35856 WDI_ControlBlockType* pWDICtx,
35857 WDI_EventInfoType* pEventData
35858)
35859{
35860 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
35861 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
35862 wpt_uint8* pSendBuffer = NULL;
35863 wpt_uint16 usSendSize = 0;
35864 wpt_uint16 usDataOffset = 0;
35865 tpHalHotlistResetReq pHalHotlistResetReqParams;
35866
35867 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35868 "%s: %d",__func__, __LINE__);
35869
35870 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35871 ( NULL == pEventData->pCBfnc ))
35872 {
35873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35874 "%s: Invalid parameters", __func__);
35875 WDI_ASSERT(0);
35876 return WDI_STATUS_E_FAILURE;
35877 }
35878
35879 pwdiEXTScanResetBSSIDHotlistReqParams =
35880 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
35881 wdiEXTScanResetBSSIDHotlistRspCb =
35882 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
35883
35884 /*-----------------------------------------------------------------------
35885 Get message buffer
35886 ! TO DO : proper conversion into the HAL Message Request Format
35887 -----------------------------------------------------------------------*/
35888 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35889 pWDICtx,
35890 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
35891 sizeof(tHalHotlistResetReq),
35892 &pSendBuffer, &usDataOffset,
35893 &usSendSize))||
35894 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
35895 {
35896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070035897 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Dino Mycle41bdc942014-06-10 11:30:24 +053035898 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
35899 wdiEXTScanResetBSSIDHotlistRspCb);
35900 WDI_ASSERT(0);
35901 return WDI_STATUS_E_FAILURE;
35902 }
35903 pHalHotlistResetReqParams =
35904 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
35905
35906 pHalHotlistResetReqParams->requestId =
35907 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
35908
35909 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35910
35911 /*-------------------------------------------------------------------------
35912 Send EXTScan Stop Request to HAL
35913 -------------------------------------------------------------------------*/
35914 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35915 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
35916 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
35917}
35918
35919/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053035920 @brief WDI_HighPriorityDataInfoInd
35921
35922 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
35923
35924 @return SUCCESS or FAIL
35925*/
35926WDI_Status
35927WDI_HighPriorityDataInfoInd
35928(
35929 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
35930)
35931{
35932 WDI_EventInfoType wdiEventData;
35933
35934 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35935 "%s: %d",__func__, __LINE__);
35936 /*------------------------------------------------------------------------
35937 Sanity Check
35938 ------------------------------------------------------------------------*/
35939 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35940 {
35941 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35942 "WDI API call before module is initialized - Fail request");
35943
35944 return WDI_STATUS_E_NOT_ALLOWED;
35945 }
35946
35947 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
35948 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
35949 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
35950 wdiEventData.pCBfnc = NULL;
35951 wdiEventData.pUserData = NULL;
35952
35953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35954}
35955
35956/**
35957 @brief WDI_ProcessHighPriorityDataInfoInd -
35958 Send WFD indication to FW
35959
35960 @param pWDICtx : wdi context
35961 pEventData : indication data
35962
35963 @see
35964 @return none
35965*/
35966WDI_Status
35967WDI_ProcessHighPriorityDataInfoInd
35968(
35969 WDI_ControlBlockType* pWDICtx,
35970 WDI_EventInfoType* pEventData
35971)
35972{
35973 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
35974 wpt_uint8* pSendBuffer = NULL;
35975 wpt_uint16 usSendSize = 0;
35976 wpt_uint16 usDataOffset = 0;
35977 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
35978 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35979
35980 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35981 "%s: %d",__func__, __LINE__);
35982
35983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35984 ( NULL == pEventData->pEventData))
35985 {
35986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35987 "%s: Invalid parameters", __func__);
35988 WDI_ASSERT(0);
35989 return WDI_STATUS_E_FAILURE;
35990 }
35991
35992 pHighPriorityDataInfoIndParams =
35993 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
35994
35995 /*-----------------------------------------------------------------------
35996 Get message buffer
35997 -----------------------------------------------------------------------*/
35998 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35999 pWDICtx,
36000 WDI_HIGH_PRIORITY_DATA_INFO_IND,
36001 sizeof(tHalHighPriorityDataInfoInd),
36002 &pSendBuffer, &usDataOffset,
36003 &usSendSize))||
36004 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
36005 {
36006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070036007 "Unable to get send buffer in %s %pK %pK", __func__,
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053036008 pEventData, pHighPriorityDataInfoIndParams);
36009 WDI_ASSERT(0);
36010 return WDI_STATUS_E_FAILURE;
36011 }
36012 pHalHighPriorityDataInfoIndParams =
36013 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
36014
36015 pHalHighPriorityDataInfoIndParams->pause =
36016 pHighPriorityDataInfoIndParams->pause;
36017
36018 pWDICtx->pReqStatusUserData = NULL;
36019 pWDICtx->pfncRspCB = NULL;
36020
36021 /*-------------------------------------------------------------------------
36022 Send HIGH_PRIORITY_DATA_INFO Request to HAL
36023 -------------------------------------------------------------------------*/
36024 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36025 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36026}
36027
36028/**
Dino Mycle41bdc942014-06-10 11:30:24 +053036029 @brief Process Extended Scan Start Rsp function (called when a response
36030 is being received over the bus from HAL)
36031
36032 @param pWDICtx: pointer to the WLAN DAL context
36033 pEventData: pointer to the event information structure
36034
36035 @see
36036 @return Result of the function call
36037*/
36038WDI_Status
36039WDI_ProcessEXTScanStartRsp
36040(
36041 WDI_ControlBlockType* pWDICtx,
36042 WDI_EventInfoType* pEventData
36043)
36044{
36045 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
36046
36047 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36048 "%s: %d",__func__, __LINE__);
36049 /*-------------------------------------------------------------------------
36050 Sanity check
36051 -------------------------------------------------------------------------*/
36052 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36053 ( NULL == pEventData->pEventData))
36054 {
36055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36056 "%s: Invalid parameters", __func__);
36057 WDI_ASSERT(0);
36058 return WDI_STATUS_E_FAILURE;
36059 }
36060
36061 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
36062 if ( NULL == wdiEXTScanStartRspCb)
36063 {
36064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36065 "%s: Callback function Invalid", __func__);
36066 WDI_ASSERT(0);
36067 return WDI_STATUS_E_FAILURE;
36068 }
36069
36070 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
36071
36072 return WDI_STATUS_SUCCESS;
36073}
36074
36075
36076/**
36077 @brief Process Extended Scan Stop Rsp function (called when a response
36078 is being received over the bus from HAL)
36079
36080 @param pWDICtx: pointer to the WLAN DAL context
36081 pEventData: pointer to the event information structure
36082
36083 @see
36084 @return Result of the function call
36085*/
36086WDI_Status
36087WDI_ProcessEXTScanStopRsp
36088(
36089 WDI_ControlBlockType* pWDICtx,
36090 WDI_EventInfoType* pEventData
36091)
36092{
36093 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
36094
36095 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36096 "%s: %d",__func__, __LINE__);
36097
36098
36099 /*-------------------------------------------------------------------------
36100 Sanity check
36101 -------------------------------------------------------------------------*/
36102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36103 ( NULL == pEventData->pEventData))
36104 {
36105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36106 "%s: Invalid parameters", __func__);
36107 WDI_ASSERT(0);
36108 return WDI_STATUS_E_FAILURE;
36109 }
36110
36111 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
36112 if ( NULL == wdiEXTScanStopRspCb)
36113 {
36114 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36115 "%s: Callback function Invalid", __func__);
36116 WDI_ASSERT(0);
36117 return WDI_STATUS_E_FAILURE;
36118 }
36119
36120 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36121
36122 return WDI_STATUS_SUCCESS;
36123}
36124
36125/**
36126 @brief Process Extended Scan Get Cached Rsp function (called when a response
36127 is being received over the bus from HAL)
36128
36129 @param pWDICtx: pointer to the WLAN DAL context
36130 pEventData: pointer to the event information structure
36131
36132 @see
36133 @return Result of the function call
36134*/
36135WDI_Status
36136WDI_ProcessEXTScanGetCachedResultsRsp
36137(
36138 WDI_ControlBlockType* pWDICtx,
36139 WDI_EventInfoType* pEventData
36140)
36141{
36142 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
36143
36144 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36145 "%s: %d Enter",__func__, __LINE__);
36146
36147
36148 /*-------------------------------------------------------------------------
36149 Sanity check
36150 -------------------------------------------------------------------------*/
36151 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36152 ( NULL == pEventData->pEventData))
36153 {
36154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36155 "%s: Invalid parameters", __func__);
36156 WDI_ASSERT(0);
36157 return WDI_STATUS_E_FAILURE;
36158 }
36159
36160 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
36161 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
36162 {
36163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36164 "%s: Callback function Invalid", __func__);
36165 WDI_ASSERT(0);
36166 return WDI_STATUS_E_FAILURE;
36167 }
36168
36169 wdiEXTScanGetCachedResultsRspCb(
36170 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36171
36172 return WDI_STATUS_SUCCESS;
36173}
36174
36175/**
36176 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
36177 is being received over the bus from HAL)
36178
36179 @param pWDICtx: pointer to the WLAN DAL context
36180 pEventData: pointer to the event information structure
36181
36182 @see
36183 @return Result of the function call
36184*/
36185WDI_Status
36186WDI_ProcessEXTScanGetCapabilitiesRsp
36187(
36188 WDI_ControlBlockType* pWDICtx,
36189 WDI_EventInfoType* pEventData
36190)
36191{
36192 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
36193
36194 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36195 "%s: %d ",__func__, __LINE__);
36196
36197
36198 /*-------------------------------------------------------------------------
36199 Sanity check
36200 -------------------------------------------------------------------------*/
36201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36202 ( NULL == pEventData->pEventData))
36203 {
36204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36205 "%s: Invalid parameters", __func__);
36206 WDI_ASSERT(0);
36207 return WDI_STATUS_E_FAILURE;
36208 }
36209
36210 wdiEXTScanGetCapabilitiesRspCb =
36211 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
36212 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
36213 {
36214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36215 "%s: Callback function Invalid", __func__);
36216 WDI_ASSERT(0);
36217 return WDI_STATUS_E_FAILURE;
36218 }
36219
36220 wdiEXTScanGetCapabilitiesRspCb(
36221 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36222
36223 return WDI_STATUS_SUCCESS;
36224}
36225
36226/**
36227 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
36228 response is being received over the bus from HAL)
36229
36230 @param pWDICtx: pointer to the WLAN DAL context
36231 pEventData: pointer to the event information structure
36232
36233 @see
36234 @return Result of the function call
36235*/
36236WDI_Status
36237WDI_ProcessEXTScanSetHotlistBSSIDRsp
36238(
36239 WDI_ControlBlockType* pWDICtx,
36240 WDI_EventInfoType* pEventData
36241)
36242{
36243 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
36244
36245 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36246 "%s: %d ",__func__, __LINE__);
36247
36248
36249 /*-------------------------------------------------------------------------
36250 Sanity check
36251 -------------------------------------------------------------------------*/
36252 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36253 ( NULL == pEventData->pEventData))
36254 {
36255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36256 "%s: Invalid parameters", __func__);
36257 WDI_ASSERT(0);
36258 return WDI_STATUS_E_FAILURE;
36259 }
36260
36261 wdiEXTScanSetBSSIDHotlistRspCb =
36262 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
36263 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
36264 {
36265 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36266 "%s: Callback function Invalid", __func__);
36267 WDI_ASSERT(0);
36268 return WDI_STATUS_E_FAILURE;
36269 }
36270
36271 wdiEXTScanSetBSSIDHotlistRspCb(
36272 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36273
36274 return WDI_STATUS_SUCCESS;
36275}
36276
36277/**
36278 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
36279 when a response is being received over the bus from HAL)
36280
36281 @param pWDICtx: pointer to the WLAN DAL context
36282 pEventData: pointer to the event information structure
36283
36284 @see
36285 @return Result of the function call
36286*/
36287WDI_Status
36288WDI_ProcessEXTScanResetHotlistBSSIDRsp
36289(
36290 WDI_ControlBlockType* pWDICtx,
36291 WDI_EventInfoType* pEventData
36292)
36293{
36294 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
36295
36296 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36297 "%s: %d ",__func__, __LINE__);
36298
36299
36300 /*-------------------------------------------------------------------------
36301 Sanity check
36302 -------------------------------------------------------------------------*/
36303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36304 ( NULL == pEventData->pEventData))
36305 {
36306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36307 "%s: Invalid parameters", __func__);
36308 WDI_ASSERT(0);
36309 return WDI_STATUS_E_FAILURE;
36310 }
36311
36312 wdiEXTScanResetBSSIDHotlistRspCb =
36313 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
36314 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
36315 {
36316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36317 "%s: Callback function Invalid", __func__);
36318 WDI_ASSERT(0);
36319 return WDI_STATUS_E_FAILURE;
36320 }
36321
36322 wdiEXTScanResetBSSIDHotlistRspCb(
36323 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
36324
36325 return WDI_STATUS_SUCCESS;
36326}
Dino Mycle41bdc942014-06-10 11:30:24 +053036327#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053036328
36329/**
36330 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
36331
36332 @param None
36333
36334 @see
36335
36336 @return Status of the request
36337*/
36338WDI_Status
36339WDI_SetSpoofMacAddrReq
36340(
36341 WDI_SpoofMacAddrInfoType* pWdiReq,
36342 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
36343 void* pUserData)
36344{
36345 WDI_EventInfoType wdiEventData;
36346
36347 /*-------------------------------------------------------------------------
36348 Sanity Check
36349 ------------------------------------------------------------------------*/
36350 if (eWLAN_PAL_FALSE == gWDIInitialized)
36351 {
36352 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36353 "WDI API call before module is initialized - Fail request!");
36354
36355 return WDI_STATUS_E_NOT_ALLOWED;
36356 }
36357
36358 /*-------------------------------------------------------------------------
36359 Fill in Event data and post to the Main FSM
36360 ------------------------------------------------------------------------*/
36361 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
36362 wdiEventData.pEventData = pWdiReq;
36363 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
36364 wdiEventData.pCBfnc = spoofMacAddrRspCb;
36365 wdiEventData.pUserData = pUserData;
36366
36367 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36368}
36369
36370/**
36371 @brief Process SpoofMacAddr Request
36372
36373 @param pWDICtx: pointer to the WLAN DAL context
36374 pEventData: pointer to the event information structure
36375
36376 @see
36377 @return Result of the function call
36378*/
36379WDI_Status
36380WDI_ProcessSpoofMacAddrReq
36381(
36382 WDI_ControlBlockType* pWDICtx,
36383 WDI_EventInfoType* pEventData
36384)
36385{
36386 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
36387 wpt_uint8* pSendBuffer = NULL;
36388 wpt_uint16 usDataOffset = 0;
36389 wpt_uint16 usSendSize = 0;
36390 WDI_Status wdiStatus;
36391 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
36392 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
36393
36394
36395 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36396 "%s: %d Enter",__func__, __LINE__);
36397
36398 /*-------------------------------------------------------------------------
36399 Sanity check
36400 -------------------------------------------------------------------------*/
36401 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36402 ( NULL == pEventData->pEventData))
36403 {
36404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36405 "%s: Invalid parameters", __func__);
36406 WDI_ASSERT(0);
36407 return WDI_STATUS_E_FAILURE;
36408 }
36409 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
36410
36411 /*-----------------------------------------------------------------------
36412 Get message buffer
36413 -----------------------------------------------------------------------*/
36414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36415 WDI_SPOOF_MAC_ADDR_REQ,
36416 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
36417 &pSendBuffer, &usDataOffset, &usSendSize))||
36418 (usSendSize < (usDataOffset +
36419 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
36420 {
36421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36422 "Unable to get send buffer in Process Spoof Mac Addr Req");
36423 WDI_ASSERT(0);
36424 return WDI_STATUS_E_FAILURE;
36425 }
36426
36427 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
36428 wdiSpoofMacAddr->macAddr,
36429 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
36430
36431 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
36432
36433 wpalMemoryCopy( pSendBuffer+usDataOffset,
36434 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
36435 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
36436
36437 /*-------------------------------------------------------------------------
36438 Send Suspend Request to HAL
36439 -------------------------------------------------------------------------*/
36440 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36441 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
36442
36443 return wdiStatus;
36444}
36445
36446/**
36447 @brief Process Spoof Mac Address Rsp function
36448 (called when a response is being received over the bus from HAL)
36449
36450 @param pWDICtx: pointer to the WLAN DAL context
36451 pEventData: pointer to the event information structure
36452
36453 @see
36454 @return Result of the function call
36455*/
36456WDI_Status
36457WDI_ProcessSpoofMacAddrRsp
36458(
36459 WDI_ControlBlockType* pWDICtx,
36460 WDI_EventInfoType* pEventData
36461)
36462{
36463 tMacSpoofedScanResp halRsp;
36464 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
36465 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
36466
36467 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36468 "%s: %d Enter",__func__, __LINE__);
36469
36470 /*-------------------------------------------------------------------------
36471 Sanity check
36472 -------------------------------------------------------------------------*/
36473 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36474 ( NULL == pEventData->pEventData))
36475 {
36476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36477 "%s: Invalid parameters", __func__);
36478 WDI_ASSERT(0);
36479 return WDI_STATUS_E_FAILURE;
36480 }
36481 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
36482
36483 /*-------------------------------------------------------------------------
36484 Extract response and send it to UMAC
36485 -------------------------------------------------------------------------*/
36486 wpalMemoryCopy( &halRsp,
36487 pEventData->pEventData, sizeof(halRsp));
36488
36489 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36490
36491 /*Notify UMAC*/
36492 wdiSpoofMacAddrRspCb(
36493 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
36494
36495 return WDI_STATUS_SUCCESS;
36496}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053036497
36498/**
Siddharth Bhal64246172015-02-27 01:04:37 +053036499 @brief Process Get Frame Log Rsp function
36500 (called when a response is being received over the bus from HAL)
36501
36502 @param pWDICtx: pointer to the WLAN DAL context
36503 pEventData: pointer to the event information structure
36504
36505 @see
36506 @return Result of the function call
36507*/
36508WDI_Status
36509WDI_ProcessGetFrameLogRsp
36510(
36511 WDI_ControlBlockType* pWDICtx,
36512 WDI_EventInfoType* pEventData
36513)
36514{
36515 tGetFrameLogResp halRsp;
36516 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
36517 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
36518
36519 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36520 "%s: %d Enter",__func__, __LINE__);
36521
36522 /*-------------------------------------------------------------------------
36523 Sanity check
36524 -------------------------------------------------------------------------*/
36525 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36526 ( NULL == pEventData->pEventData))
36527 {
36528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36529 "%s: Invalid parameters", __func__);
36530 WDI_ASSERT(0);
36531 return WDI_STATUS_E_FAILURE;
36532 }
36533
36534 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
36535
36536 /*-------------------------------------------------------------------------
36537 Extract response and send it to UMAC
36538 -------------------------------------------------------------------------*/
36539 wpalMemoryCopy( &halRsp,
36540 pEventData->pEventData, sizeof(halRsp));
36541
36542 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36543
36544 /*Notify UMAC*/
36545 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
36546
36547 return WDI_STATUS_SUCCESS;
36548}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036549
36550/**
36551 @brief Process RssiMonitorStartReq Request
36552
36553 @param pWDICtx: pointer to the WLAN DAL context
36554 pEventData: pointer to the event information structure
36555
36556 @see
36557 @return Result of the function call
36558*/
36559WDI_Status
36560WDI_ProcessRssiMonitorStartReq
36561(
36562 WDI_ControlBlockType* pWDICtx,
36563 WDI_EventInfoType* pEventData
36564)
36565{
36566 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
36567 wpt_uint8* pSendBuffer = NULL;
36568 wpt_uint16 usDataOffset = 0;
36569 wpt_uint16 usSendSize = 0;
36570 WDI_Status wdiStatus;
36571 tHalStartRssimonitoringReq halStartRssiMonitorReq;
36572 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
36573
36574
36575 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36576 "%s: %d Enter",__func__, __LINE__);
36577
36578 /*-------------------------------------------------------------------------
36579 Sanity check
36580 ------------------------------------------------------------------------*/
36581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36582 ( NULL == pEventData->pEventData))
36583 {
36584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36585 "%s: Invalid parameters", __func__);
36586 WDI_ASSERT(0);
36587 return WDI_STATUS_E_FAILURE;
36588 }
36589
36590 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
36591
36592 /*-----------------------------------------------------------------------
36593 Get message buffer
36594 -----------------------------------------------------------------------*/
36595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36596 WDI_START_RSSI_MONITOR_REQ,
36597 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
36598 &pSendBuffer, &usDataOffset, &usSendSize))||
36599 (usSendSize < (usDataOffset +
36600 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
36601 {
36602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36603 "Unable to get send buffer in GetFrameLog Req");
36604 WDI_ASSERT(0);
36605 return WDI_STATUS_E_FAILURE;
36606 }
36607
36608 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
36609 wdiRssiMonitorStartReq->requestId;
36610
36611 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
36612 wdiRssiMonitorStartReq->minRssi;
36613
36614 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
36615 wdiRssiMonitorStartReq->maxRssi;
36616 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
36617 &(wdiRssiMonitorStartReq->currentBssId),
36618 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
36619
36620 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
36621
36622 wpalMemoryCopy(pSendBuffer+usDataOffset,
36623 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
36624 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
36625
36626 /*-------------------------------------------------------------------------
36627 Send Suspend Request to HAL
36628 ------------------------------------------------------------------------*/
36629 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36630 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
36631
36632 return wdiStatus;
36633}
36634
36635
36636/**
36637 @brief Process FWLoggingInit Request
36638
36639 @param pWDICtx: pointer to the WLAN DAL context
36640 pEventData: pointer to the event information structure
36641
36642 @see
36643 @return Result of the function call
36644*/
36645WDI_Status
36646WDI_ProcessRssiMonitorStopReq
36647(
36648 WDI_ControlBlockType* pWDICtx,
36649 WDI_EventInfoType* pEventData
36650)
36651{
36652 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
36653 wpt_uint8* pSendBuffer = NULL;
36654 wpt_uint16 usDataOffset = 0;
36655 wpt_uint16 usSendSize = 0;
36656 WDI_Status wdiStatus;
36657 tHalStopRssimonitoringReq halStopRssiMonitorReq;
36658 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
36659
36660
36661 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36662 "%s: %d Enter",__func__, __LINE__);
36663
36664 /*-------------------------------------------------------------------------
36665 Sanity check
36666 ------------------------------------------------------------------------*/
36667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36668 ( NULL == pEventData->pEventData))
36669 {
36670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36671 "%s: Invalid parameters", __func__);
36672 WDI_ASSERT(0);
36673 return WDI_STATUS_E_FAILURE;
36674 }
36675 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
36676
36677 /*-----------------------------------------------------------------------
36678 Get message buffer
36679 -----------------------------------------------------------------------*/
36680 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36681 WDI_STOP_RSSI_MONITOR_REQ,
36682 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
36683 &pSendBuffer, &usDataOffset, &usSendSize))||
36684 (usSendSize < (usDataOffset +
36685 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
36686 {
36687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36688 "Unable to get send buffer in GetFrameLog Req");
36689 WDI_ASSERT(0);
36690 return WDI_STATUS_E_FAILURE;
36691 }
36692
36693 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
36694 wdiRssiMonitorStopReq->requestId;
36695
36696 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
36697 &(wdiRssiMonitorStopReq->currentBssId),
36698 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
36699
36700 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
36701
36702 wpalMemoryCopy(pSendBuffer+usDataOffset,
36703 &halStopRssiMonitorReq.stopRssiMonitoringParams,
36704 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
36705
36706 /*-------------------------------------------------------------------------
36707 Send Suspend Request to HAL
36708 ------------------------------------------------------------------------*/
36709 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36710 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
36711
36712 return wdiStatus;
36713}
36714
36715/**
36716 @brief Process MgmtFrame Logging Init Rsp function
36717 (called when a response is being received over the bus from HAL)
36718
36719 @param pWDICtx: pointer to the WLAN DAL context
36720 pEventData: pointer to the event information structure
36721
36722 @see
36723 @return Result of the function call
36724*/
36725WDI_Status
36726WDI_ProcessRssiMonitorStopRsp
36727(
36728 WDI_ControlBlockType* pWDICtx,
36729 WDI_EventInfoType* pEventData
36730)
36731{
36732 tHalStopRssimonitoringRspParams halRsp;
36733 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
36734 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
36735
36736 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36737 "%s: %d Enter",__func__, __LINE__);
36738
36739 /*-------------------------------------------------------------------------
36740 Sanity check
36741 -------------------------------------------------------------------------*/
36742 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36743 ( NULL == pEventData->pEventData))
36744 {
36745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36746 "%s: Invalid parameters", __func__);
36747 WDI_ASSERT(0);
36748 return WDI_STATUS_E_FAILURE;
36749 }
36750 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
36751
36752 /*-------------------------------------------------------------------------
36753 Extract response and send it to UMAC
36754 -------------------------------------------------------------------------*/
36755 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36756
36757 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36758
36759 /*Notify UMAC*/
36760 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
36761
36762 return WDI_STATUS_SUCCESS;
36763}
36764
36765
36766/**
36767 @brief Process MgmtFrame Logging Init Rsp function
36768 (called when a response is being received over the bus from HAL)
36769
36770 @param pWDICtx: pointer to the WLAN DAL context
36771 pEventData: pointer to the event information structure
36772
36773 @see
36774 @return Result of the function call
36775*/
36776WDI_Status
36777WDI_ProcessRssiMonitorStartRsp
36778(
36779 WDI_ControlBlockType* pWDICtx,
36780 WDI_EventInfoType* pEventData
36781)
36782{
36783 tHalStartRssimonitoringRspParams halRsp;
36784 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
36785 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
36786
36787 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36788 "%s: %d Enter",__func__, __LINE__);
36789
36790 /*-------------------------------------------------------------------------
36791 Sanity check
36792 -------------------------------------------------------------------------*/
36793 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36794 ( NULL == pEventData->pEventData))
36795 {
36796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36797 "%s: Invalid parameters", __func__);
36798 WDI_ASSERT(0);
36799 return WDI_STATUS_E_FAILURE;
36800 }
36801 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
36802
36803 /*-------------------------------------------------------------------------
36804 Extract response and send it to UMAC
36805 -------------------------------------------------------------------------*/
36806 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36807
36808 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36809
36810 /*Notify UMAC*/
36811 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
36812
36813 return WDI_STATUS_SUCCESS;
36814}
36815
Siddharth Bhal64246172015-02-27 01:04:37 +053036816/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036817 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053036818
36819 @param pWDICtx: pointer to the WLAN DAL context
36820 pEventData: pointer to the event information structure
36821
36822 @see
36823 @return Result of the function call
36824*/
36825WDI_Status
36826WDI_ProcessGetFrameLogReq
36827(
36828 WDI_ControlBlockType* pWDICtx,
36829 WDI_EventInfoType* pEventData
36830)
36831{
36832 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
36833 wpt_uint8* pSendBuffer = NULL;
36834 wpt_uint16 usDataOffset = 0;
36835 wpt_uint16 usSendSize = 0;
36836 WDI_Status wdiStatus;
36837 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036838 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053036839
36840
36841 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36842 "%s: %d Enter",__func__, __LINE__);
36843
36844 /*-------------------------------------------------------------------------
36845 Sanity check
36846 ------------------------------------------------------------------------*/
36847 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36848 ( NULL == pEventData->pEventData))
36849 {
36850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36851 "%s: Invalid parameters", __func__);
36852 WDI_ASSERT(0);
36853 return WDI_STATUS_E_FAILURE;
36854 }
36855
36856 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
36857
36858 /*-----------------------------------------------------------------------
36859 Get message buffer
36860 -----------------------------------------------------------------------*/
36861 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36862 WDI_GET_FRAME_LOG_REQ,
36863 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
36864 &pSendBuffer, &usDataOffset, &usSendSize))||
36865 (usSendSize < (usDataOffset +
36866 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
36867 {
36868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36869 "Unable to get send buffer in GetFrameLog Req");
36870 WDI_ASSERT(0);
36871 return WDI_STATUS_E_FAILURE;
36872 }
36873
36874 halGetFrameLogReq.tGetFrameLogReqParams.flags =
36875 wdiGetFrameLogReq->flags;
36876
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036877 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053036878
36879 wpalMemoryCopy( pSendBuffer+usDataOffset,
36880 &halGetFrameLogReq.tGetFrameLogReqParams,
36881 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
36882
36883 /*-------------------------------------------------------------------------
36884 Send Suspend Request to HAL
36885 ------------------------------------------------------------------------*/
36886 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36887 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
36888
36889 return wdiStatus;
36890}
36891/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036892 @brief Process MgmtFrame Logging Init Rsp function
36893 (called when a response is being received over the bus from HAL)
36894
36895 @param pWDICtx: pointer to the WLAN DAL context
36896 pEventData: pointer to the event information structure
36897
36898 @see
36899 @return Result of the function call
36900*/
36901WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036902WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036903(
36904 WDI_ControlBlockType* pWDICtx,
36905 WDI_EventInfoType* pEventData
36906)
36907{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036908 tFWLoggingInitResp halRsp;
36909 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
36910 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036911
36912 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36913 "%s: %d Enter",__func__, __LINE__);
36914
36915 /*-------------------------------------------------------------------------
36916 Sanity check
36917 -------------------------------------------------------------------------*/
36918 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36919 ( NULL == pEventData->pEventData))
36920 {
36921 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36922 "%s: Invalid parameters", __func__);
36923 WDI_ASSERT(0);
36924 return WDI_STATUS_E_FAILURE;
36925 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036926 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036927
36928 /*-------------------------------------------------------------------------
36929 Extract response and send it to UMAC
36930 -------------------------------------------------------------------------*/
36931 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36932
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036933 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053036934 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036935
36936 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036937 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036938
36939 return WDI_STATUS_SUCCESS;
36940}
36941
c_manjeecfd1efb2015-09-25 19:32:34 +053036942/**
36943 @brief Process Fwr Mem Dump Rsp function
36944 (called when a response is being received over the bus from HAL)
36945
36946 @param pWDICtx: pointer to the WLAN DAL context
36947 pEventData: pointer to the event information structure
36948
36949 @see
36950 @return Result of the function call
36951*/
36952WDI_Status
36953 WDI_ProcessFwrMemDumpRsp
36954
36955(
36956 WDI_ControlBlockType* pWDICtx,
36957 WDI_EventInfoType* pEventData
36958)
36959{
36960 tHalFwMemoryDumpRespMsg halRsp;
36961 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
36962 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
36963
36964 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36965 "%s: %d Enter",__func__, __LINE__);
36966
36967 /*-------------------------------------------------------------------------
36968 Sanity check
36969 -------------------------------------------------------------------------*/
36970 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36971 ( NULL == pEventData->pEventData))
36972 {
36973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36974 "%s: Invalid parameters", __func__);
36975 WDI_ASSERT(0);
36976 return WDI_STATUS_E_FAILURE;
36977 }
36978 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
36979
36980 /*-------------------------------------------------------------------------
36981 Extract response and send it to UMAC
36982 -------------------------------------------------------------------------*/
c_manjee107ae7a2015-11-13 22:28:50 +053036983 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp.tFwMemoryDumpResp));
c_manjeecfd1efb2015-09-25 19:32:34 +053036984
36985 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
36986
36987 /*Notify UMAC*/
36988 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
36989
36990 return WDI_STATUS_SUCCESS;
36991}
36992
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036993WDI_Status
36994WDI_ProcessFWLoggingDXEdoneInd
36995(
36996 WDI_ControlBlockType* pWDICtx,
36997 WDI_EventInfoType* pEventData
36998)
36999{
37000 wpt_uint8* pSendBuffer = NULL;
37001 wpt_uint16 usDataOffset = 0;
37002 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037003 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053037004 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037005 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053037006 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037007
37008
37009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37010
37011 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37012 "%s", __func__);
37013
37014 /*-------------------------------------------------------------------------
37015 Sanity check
37016 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053037017 if (NULL == pEventData ||
37018 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037019 {
37020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37021 "%s: Invalid parameters", __func__);
37022 WDI_ASSERT(0);
37023 return WDI_STATUS_E_FAILURE;
37024 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053037025 pLogType = (wpt_uint32 *)pEventData->pEventData;
37026
Mihir Shete5affadc2015-05-29 20:54:57 +053037027 pLoggingSession = (WDI_DS_LoggingSessionType *)
37028 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
37029 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037030 /*-----------------------------------------------------------------------
37031 Get message buffer
37032 -----------------------------------------------------------------------*/
37033
37034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37035 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053037036 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037037 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053037038 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037039 {
37040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070037041 "Unable to get send buffer in RTS CTS ind %pK ",
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037042 pEventData);
37043 WDI_ASSERT(0);
37044 return WDI_STATUS_E_FAILURE;
37045 }
37046 FWLoggingDxeDoneIndParams =
37047 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
37048
37049 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053037050 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037051 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053037052
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053037053 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053037054 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053037055
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037056 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053037057 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037058 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
37059
37060 pWDICtx->pReqStatusUserData = NULL;
37061 pWDICtx->pfncRspCB = NULL;
37062 /*-------------------------------------------------------------------------
37063 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
37064 -------------------------------------------------------------------------*/
37065 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
37066 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
37067}
37068
Sachin Ahuja715aafc2015-07-21 23:35:10 +053037069
37070/**
37071 @brief Process Fatal Event Logs Rsp function
37072 (called when a response is being received over the bus from HAL)
37073
37074 @param pWDICtx: pointer to the WLAN DAL context
37075 pEventData: pointer to the event information structure
37076
37077 @see
37078 @return Result of the function call
37079*/
37080WDI_Status
37081WDI_ProcessFatalEventLogsRsp
37082(
37083 WDI_ControlBlockType* pWDICtx,
37084 WDI_EventInfoType* pEventData
37085)
37086{
37087 tHalFatalEventLoggingRspParams halRsp;
37088 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
37089 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
37090
37091 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37092 "%s: %d Enter",__func__, __LINE__);
37093
37094 /*-------------------------------------------------------------------------
37095 Sanity check
37096 -------------------------------------------------------------------------*/
37097 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37098 ( NULL == pEventData->pEventData))
37099 {
37100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37101 "%s: Invalid parameters", __func__);
37102 WDI_ASSERT(0);
37103 return WDI_STATUS_E_FAILURE;
37104 }
37105 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
37106
37107 /*-------------------------------------------------------------------------
37108 Extract response and send it to UMAC
37109 -------------------------------------------------------------------------*/
37110 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
37111
37112 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
37113
37114 /*Notify UMAC*/
37115 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
37116 pWDICtx->pRspCBUserData);
37117
37118 return WDI_STATUS_SUCCESS;
37119}
37120
37121/**
37122 @brief Process FatalEventLogs Request
37123
37124 @param pWDICtx: pointer to the WLAN DAL context
37125 pEventData: pointer to the event information structure
37126
37127 @see
37128 @return Result of the function call
37129*/
37130
37131WDI_Status
37132WDI_ProcessFatalEventLogsReq
37133
37134(
37135 WDI_ControlBlockType* pWDICtx,
37136 WDI_EventInfoType* pEventData
37137)
37138{
37139 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
37140 wpt_uint8* pSendBuffer = NULL;
37141 wpt_uint16 usDataOffset = 0;
37142 wpt_uint16 usSendSize = 0;
37143 WDI_Status wdiStatus;
37144 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
37145 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
37146
37147
37148 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37149 "%s: %d Enter",__func__, __LINE__);
37150
37151 /*-------------------------------------------------------------------------
37152 Sanity check
37153 ------------------------------------------------------------------------*/
37154 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37155 ( NULL == pEventData->pEventData))
37156 {
37157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37158 "%s: Invalid parameters", __func__);
37159 WDI_ASSERT(0);
37160 return WDI_STATUS_E_FAILURE;
37161 }
37162 wdiFatalEventLogsReq =
37163 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
37164
37165 /*-----------------------------------------------------------------------
37166 Get message buffer
37167 -----------------------------------------------------------------------*/
37168 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37169 WDI_FATAL_EVENT_LOGGING_REQ,
37170 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
37171 &pSendBuffer, &usDataOffset, &usSendSize))||
37172 (usSendSize < (usDataOffset +
37173 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
37174 {
37175 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37176 "Unable to get send buffer in Fatal Event Req");
37177 WDI_ASSERT(0);
37178 return WDI_STATUS_E_FAILURE;
37179 }
37180 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
37181 wdiFatalEventLogsReq->reason_code;
37182
37183 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
37184
37185 wpalMemoryCopy( pSendBuffer+usDataOffset,
37186 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
37187 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
37188
37189 /*-------------------------------------------------------------------------
37190 Send Mgmt Logging Init Request to HAL
37191 ------------------------------------------------------------------------*/
37192 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
37193 wdiFatalEventLogsRspCb, pEventData->pUserData,
37194 WDI_FATAL_EVENT_LOGGING_RSP);
37195
37196 return wdiStatus;
37197
37198
37199}
37200
Anurag Chouhan83026002016-12-13 22:46:21 +053037201#ifdef DHCP_SERVER_OFFLOAD
37202/**
37203 * wdi_dhcp_server_offload_req() - wdi api for dhcp server offload
37204 * @wdi_ctx: pointer to wdi context
37205 * @event_data: pointer to event data
37206 *
37207 * Return: WDI_Status
37208 * WDI_STATUS_SUCCESS - success or else failure status
37209 */
37210WDI_Status
37211wdi_dhcp_server_offload_req
37212(
37213 WDI_ControlBlockType *wdi_ctx,
37214 WDI_EventInfoType *event_data
37215)
37216{
37217 wdi_set_dhcp_server_offload_t *wdi_dhcp_server_info;
37218 wpt_uint8 *buff = NULL;
37219 wpt_uint16 data_offset = 0;
37220 wpt_uint16 size = 0;
37221 WDI_Status wdi_status;
37222 hal_dhcp_srv_offload_req_msg_t dhcp_srv_offload_req;
37223 wdi_dhcp_srv_offload_rsp_cb wdi_dhcp_srv_offload_rsp_callback;
37224
37225 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37226 "%s: %d Enter",__func__, __LINE__);
37227
37228 /*------------------------------------------------------------------
37229 Sanity check
37230 ------------------------------------------------------------------*/
37231 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37232 (NULL == event_data->pEventData))
37233 {
37234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37235 "%s: Invalid parameters", __func__);
37236 WDI_ASSERT(0);
37237 return WDI_STATUS_E_FAILURE;
37238 }
37239
37240 wdi_dhcp_server_info = (wdi_set_dhcp_server_offload_t *)
37241 event_data->pEventData;
37242
37243 /*-------------------------------------------------------------------
37244 Get message buffer
37245 -----------------------------------------------------------------*/
37246 if (( WDI_STATUS_SUCCESS !=
37247 WDI_GetMessageBuffer(wdi_ctx,
37248 WDI_DHCP_SERVER_OFFLOAD_REQ,
37249 sizeof(dhcp_srv_offload_req.
37250 dhcp_srv_offload_req_params),
37251 &buff, &data_offset, &size))||
37252 (size < (data_offset +
37253 sizeof(dhcp_srv_offload_req.dhcp_srv_offload_req_params))))
37254 {
37255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37256 "Unable to get send buffer in GetFrameLog Req");
37257 WDI_ASSERT(0);
37258 return WDI_STATUS_E_FAILURE;
37259 }
37260
37261 dhcp_srv_offload_req.dhcp_srv_offload_req_params.bss_idx =
37262 wdi_dhcp_server_info->bssidx;
37263 dhcp_srv_offload_req.dhcp_srv_offload_req_params.enable =
37264 wdi_dhcp_server_info->enable;
37265 dhcp_srv_offload_req.dhcp_srv_offload_req_params.srv_ipv4 =
37266 wdi_dhcp_server_info->srv_ipv4;
37267 dhcp_srv_offload_req.dhcp_srv_offload_req_params.start_lsb =
37268 wdi_dhcp_server_info->start_lsb;
37269 dhcp_srv_offload_req.dhcp_srv_offload_req_params.num_client =
37270 wdi_dhcp_server_info->num_client;
37271
37272 wdi_dhcp_srv_offload_rsp_callback = (wdi_dhcp_srv_offload_rsp_cb)
37273 event_data->pCBfnc;
37274
37275 wpalMemoryCopy(buff+data_offset,
37276 &dhcp_srv_offload_req.dhcp_srv_offload_req_params,
37277 sizeof(dhcp_srv_offload_req.
37278 dhcp_srv_offload_req_params));
37279
37280 /*-------------------------------------------------------------------
37281 Send Suspend Request to HAL
37282 -----------------------------------------------------------------*/
37283 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37284 wdi_dhcp_srv_offload_rsp_callback,
37285 event_data->pUserData,
37286 WDI_DHCP_SERVER_OFFLOAD_RSP);
37287 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37288 "%s: %d Exit",__func__, __LINE__);
37289 return wdi_status;
37290}
37291#endif /* DHCP_SERVER_OFFLOAD */
37292
Anurag Chouhan0b29de02016-12-16 13:18:40 +053037293#ifdef MDNS_OFFLOAD
37294/**
37295 * wdi_mdns_enable_offload_req() - wdi api for dhcp server offload
37296 * @wdi_ctx: pointer to wdi context
37297 * @event_data: pointer to event data
37298 *
37299 * Return: WDI_Status
37300 * WDI_STATUS_SUCCESS - success or else failure status
37301 */
37302WDI_Status
37303wdi_mdns_enable_offload_req
37304(
37305 WDI_ControlBlockType *wdi_ctx,
37306 WDI_EventInfoType *event_data
37307 )
37308{
37309 wdi_mdns_enable_offload_cmd_req *wdi_mdns_enable_info;
37310 wpt_uint8 *buff = NULL;
37311 wpt_uint16 data_offset = 0;
37312 wpt_uint16 size = 0;
37313 WDI_Status wdi_status;
37314 hal_mdns_enable_offload_req_msg_t mdns_enable_req;
37315 wdi_mdns_enable_rsp_cb wdi_mdns_enable_rsp_callback;;
37316
37317 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37318 "%s: %d Enter",__func__, __LINE__);
37319
37320 /*------------------------------------------------------------------
37321 Sanity check
37322 ------------------------------------------------------------------*/
37323 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37324 (NULL == event_data->pEventData))
37325 {
37326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37327 "%s: Invalid parameters", __func__);
37328 WDI_ASSERT(0);
37329 return WDI_STATUS_E_FAILURE;
37330 }
37331
37332 wdi_mdns_enable_info = (wdi_mdns_enable_offload_cmd_req *)
37333 event_data->pEventData;
37334
37335 /*-------------------------------------------------------------------
37336 Get message buffer
37337 -----------------------------------------------------------------*/
37338 if (( WDI_STATUS_SUCCESS !=
37339 WDI_GetMessageBuffer(wdi_ctx,
37340 WDI_MDNS_ENABLE_OFFLOAD_REQ,
37341 sizeof(mdns_enable_req.
37342 mdns_enable_req_params),
37343 &buff, &data_offset, &size))||
37344 (size < (data_offset +
37345 sizeof(mdns_enable_req.mdns_enable_req_params))))
37346 {
37347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37348 "Unable to get send buffer in GetFrameLog Req");
37349 WDI_ASSERT(0);
37350 return WDI_STATUS_E_FAILURE;
37351 }
37352
37353 mdns_enable_req.mdns_enable_req_params.bss_idx =
37354 wdi_mdns_enable_info->bss_idx;
37355 mdns_enable_req.mdns_enable_req_params.enable =
37356 wdi_mdns_enable_info->enable;
37357
37358 wdi_mdns_enable_rsp_callback = (wdi_mdns_enable_rsp_cb)
37359 event_data->pCBfnc;
37360
37361 wpalMemoryCopy(buff+data_offset,
37362 &mdns_enable_req.mdns_enable_req_params,
37363 sizeof(mdns_enable_req.
37364 mdns_enable_req_params));
37365
37366 /*-------------------------------------------------------------------
37367 Send Suspend Request to HAL
37368 -----------------------------------------------------------------*/
37369 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37370 wdi_mdns_enable_rsp_callback,
37371 event_data->pUserData,
37372 WDI_MDNS_ENABLE_OFFLOAD_RSP);
37373 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37374 "%s: %d Exit",__func__, __LINE__);
37375 return wdi_status;
37376}
37377
37378/**
37379 * wdi_mdns_fqdn_offload_req() - wdi api for mdns fqdn offload
37380 * @wdi_ctx: pointer to wdi context
37381 * @event_data: pointer to event data
37382 *
37383 * Return: WDI_Status
37384 * WDI_STATUS_SUCCESS - success or else failure status
37385 */
37386WDI_Status
37387wdi_mdns_fqdn_offload_req
37388(
37389 WDI_ControlBlockType *wdi_ctx,
37390 WDI_EventInfoType *event_data
37391 )
37392{
37393 wdi_mdns_set_fqdn_cmd_req *wdi_mdns_fqdn_info;
37394 wpt_uint8 *buff = NULL;
37395 wpt_uint16 buf_size, data_offset = 0;
37396 wpt_uint16 temp_size, size = 0;
37397 WDI_Status wdi_status;
37398 hal_mdns_fqdn_offload_req_param_t mdns_fqdn;
37399 wdi_mdns_fqdn_rsp_cb wdi_mdns_fqdn_rsp_callback;;
37400
37401 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37402 "%s: %d Enter",__func__, __LINE__);
37403
37404 /*------------------------------------------------------------------
37405 Sanity check
37406 ------------------------------------------------------------------*/
37407 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37408 (NULL == event_data->pEventData))
37409 {
37410 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37411 "%s: Invalid parameters", __func__);
37412 WDI_ASSERT(0);
37413 return WDI_STATUS_E_FAILURE;
37414 }
37415
37416 wdi_mdns_fqdn_info = (wdi_mdns_set_fqdn_cmd_req *)
37417 event_data->pEventData;
37418
37419 mdns_fqdn.bss_idx = wdi_mdns_fqdn_info->bss_idx;
37420 mdns_fqdn.type = wdi_mdns_fqdn_info->type;
37421 mdns_fqdn.fqdn_len = wdi_mdns_fqdn_info->fqdn_len;
37422
37423 buf_size = sizeof(mdns_fqdn) + mdns_fqdn.fqdn_len -
37424 sizeof(mdns_fqdn.fqdn_data[1]);
37425
37426 /*-------------------------------------------------------------------
37427 Get message buffer
37428 -----------------------------------------------------------------*/
37429 if (( WDI_STATUS_SUCCESS !=
37430 WDI_GetMessageBuffer(wdi_ctx,
37431 WDI_MDNS_FQDN_OFFLOAD_REQ,
37432 buf_size,
37433 &buff, &data_offset, &size))||
37434 (size < (data_offset + buf_size)))
37435 {
37436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37437 "Unable to get send buffer in GetFrameLog Req");
37438 WDI_ASSERT(0);
37439 return WDI_STATUS_E_FAILURE;
37440 }
37441
37442 wdi_mdns_fqdn_rsp_callback = (wdi_mdns_fqdn_rsp_cb)
37443 event_data->pCBfnc;
37444
37445 temp_size = 0;
37446 wpalMemoryCopy(buff+data_offset+temp_size,
37447 &mdns_fqdn.bss_idx,
37448 sizeof(mdns_fqdn.bss_idx));
37449 temp_size += sizeof(mdns_fqdn.bss_idx);
37450 wpalMemoryCopy(buff+data_offset+temp_size,
37451 &mdns_fqdn.type,
37452 sizeof(mdns_fqdn.type));
37453 temp_size += sizeof(mdns_fqdn.type);
37454 wpalMemoryCopy(buff+data_offset+temp_size,
37455 &mdns_fqdn.fqdn_len,
37456 sizeof(mdns_fqdn.fqdn_len));
37457 temp_size += sizeof(mdns_fqdn.fqdn_len);
37458 wpalMemoryCopy(buff+data_offset+temp_size,
37459 wdi_mdns_fqdn_info->fqdn_data,
37460 wdi_mdns_fqdn_info->fqdn_len);
37461
37462 /*-------------------------------------------------------------------
37463 Send Suspend Request to HAL
37464 -----------------------------------------------------------------*/
37465 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37466 wdi_mdns_fqdn_rsp_callback,
37467 event_data->pUserData,
37468 WDI_MDNS_FQDN_OFFLOAD_RSP);
37469 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37470 "%s: %d Exit",__func__, __LINE__);
37471 return wdi_status;
37472}
37473
37474/**
37475 * wdi_mdns_resp_offload_req() - wdi api for mdns response offload
37476 * @wdi_ctx: pointer to wdi context
37477 * @event_data: pointer to event data
37478 *
37479 * Return: WDI_Status
37480 * WDI_STATUS_SUCCESS - success or else failure status
37481 */
37482WDI_Status
37483wdi_mdns_resp_offload_req
37484(
37485 WDI_ControlBlockType *wdi_ctx,
37486 WDI_EventInfoType *event_data
37487 )
37488{
37489 wdi_mdns_set_resp_req *wdi_mdns_resp_info;
37490 wpt_uint8 *buff = NULL;
37491 wpt_uint16 buf_size, data_offset = 0;
37492 wpt_uint16 temp_size, size = 0;
37493 WDI_Status wdi_status;
37494 hal_mdns_resp_offload_req_param_t mdns_resp;
37495 wdi_mdns_resp_rsp_cb wdi_mdns_resp_rsp_callback;;
37496
37497 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37498 "%s: %d Enter",__func__, __LINE__);
37499
37500 /*------------------------------------------------------------------
37501 Sanity check
37502 ------------------------------------------------------------------*/
37503 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37504 (NULL == event_data->pEventData))
37505 {
37506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37507 "%s: Invalid parameters", __func__);
37508 WDI_ASSERT(0);
37509 return WDI_STATUS_E_FAILURE;
37510 }
37511
37512 wdi_mdns_resp_info = (wdi_mdns_set_resp_req *)
37513 event_data->pEventData;
37514
37515 mdns_resp.bss_idx = wdi_mdns_resp_info->bss_idx;
37516 mdns_resp.ar_count = wdi_mdns_resp_info->ar_count;
37517 mdns_resp.resp_len = wdi_mdns_resp_info->resp_len;
37518
37519 buf_size = sizeof(mdns_resp) + mdns_resp.resp_len -
37520 sizeof(mdns_resp.resp_data[1]);
37521
37522 /*-------------------------------------------------------------------
37523 Get message buffer
37524 -----------------------------------------------------------------*/
37525 if (( WDI_STATUS_SUCCESS !=
37526 WDI_GetMessageBuffer(wdi_ctx,
37527 WDI_MDNS_RESP_OFFLOAD_REQ,
37528 buf_size,
37529 &buff, &data_offset, &size))||
37530 (size < (data_offset + buf_size)))
37531 {
37532 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37533 "Unable to get send buffer in GetFrameLog Req");
37534 WDI_ASSERT(0);
37535 return WDI_STATUS_E_FAILURE;
37536 }
37537
37538 wdi_mdns_resp_rsp_callback = (wdi_mdns_resp_rsp_cb)
37539 event_data->pCBfnc;
37540
37541 temp_size = 0;
37542 wpalMemoryCopy(buff+data_offset+temp_size,
37543 &mdns_resp.bss_idx,
37544 sizeof(mdns_resp.bss_idx));
37545 temp_size += sizeof(mdns_resp.bss_idx);
37546 wpalMemoryCopy(buff+data_offset+temp_size,
37547 &mdns_resp.ar_count,
37548 sizeof(mdns_resp.ar_count));
37549 temp_size += sizeof(mdns_resp.ar_count);
37550 wpalMemoryCopy(buff+data_offset+temp_size,
37551 &mdns_resp.resp_len,
37552 sizeof(mdns_resp.resp_len));
37553 temp_size += sizeof(mdns_resp.resp_len);
37554 wpalMemoryCopy(buff+data_offset+temp_size,
37555 &wdi_mdns_resp_info->resp_data,
37556 wdi_mdns_resp_info->resp_len);
37557
37558 /*-------------------------------------------------------------------
37559 Send Suspend Request to HAL
37560 -----------------------------------------------------------------*/
37561 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37562 wdi_mdns_resp_rsp_callback,
37563 event_data->pUserData,
37564 WDI_MDNS_RESP_OFFLOAD_RSP);
37565 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37566 "%s: %d Exit",__func__, __LINE__);
37567 return wdi_status;
37568}
37569
37570/**
37571 * wdi_get_mdns_stats_offload_req() - wdi api for mdns stats offload
37572 * @wdi_ctx: pointer to wdi context
37573 * @event_data: pointer to event data
37574 *
37575 * Return: WDI_Status
37576 * WDI_STATUS_SUCCESS - success or else failure status
37577 */
37578WDI_Status
37579wdi_get_mdns_stats_offload_req
37580(
37581 WDI_ControlBlockType *wdi_ctx,
37582 WDI_EventInfoType *event_data
37583 )
37584{
37585 wdi_mdns_get_stats_req *wdi_mdns_stats_info;
37586 wpt_uint8 *buff = NULL;
37587 wpt_uint16 data_offset = 0;
37588 wpt_uint16 size = 0;
37589 WDI_Status wdi_status;
37590 hal_mdns_stats_offload_req_msg_t mdns_stats_req;
37591 wdi_get_stats_rsp_cb wdi_mdns_stats_rsp_callback;;
37592
37593 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37594 "%s: %d Enter",__func__, __LINE__);
37595
37596 /*------------------------------------------------------------------
37597 Sanity check
37598 ------------------------------------------------------------------*/
37599 if ((NULL == wdi_ctx) || (NULL == event_data) ||
37600 (NULL == event_data->pEventData))
37601 {
37602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37603 "%s: Invalid parameters", __func__);
37604 WDI_ASSERT(0);
37605 return WDI_STATUS_E_FAILURE;
37606 }
37607
37608 wdi_mdns_stats_info = (wdi_mdns_get_stats_req *)
37609 event_data->pEventData;
37610
37611 /*-------------------------------------------------------------------
37612 Get message buffer
37613 -----------------------------------------------------------------*/
37614 if (( WDI_STATUS_SUCCESS !=
37615 WDI_GetMessageBuffer(wdi_ctx,
37616 WDI_MDNS_STATS_OFFLOAD_REQ,
37617 sizeof(mdns_stats_req.
37618 mdns_stats_req_params),
37619 &buff, &data_offset, &size))||
37620 (size < (data_offset +
37621 sizeof(mdns_stats_req.mdns_stats_req_params))))
37622 {
37623 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37624 "Unable to get send buffer in GetFrameLog Req");
37625 WDI_ASSERT(0);
37626 return WDI_STATUS_E_FAILURE;
37627 }
37628
37629 mdns_stats_req.mdns_stats_req_params.bss_idx =
37630 wdi_mdns_stats_info->bss_idx;
37631
37632 wdi_mdns_stats_rsp_callback = (wdi_get_stats_rsp_cb)
37633 event_data->pCBfnc;
37634
37635 wpalMemoryCopy(buff+data_offset,
37636 &mdns_stats_req.mdns_stats_req_params,
37637 sizeof(mdns_stats_req.
37638 mdns_stats_req_params));
37639
37640 /*-------------------------------------------------------------------
37641 Send Suspend Request to HAL
37642 -----------------------------------------------------------------*/
37643 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
37644 wdi_mdns_stats_rsp_callback,
37645 event_data->pUserData,
37646 WDI_MDNS_STATS_OFFLOAD_RSP);
37647 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37648 "%s: %d Exit",__func__, __LINE__);
37649 return wdi_status;
37650}
37651#endif /* MDNS_OFFLOAD */
Sachin Ahuja715aafc2015-07-21 23:35:10 +053037652
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037653/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037654 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037655
37656 @param pWDICtx: pointer to the WLAN DAL context
37657 pEventData: pointer to the event information structure
37658
37659 @see
37660 @return Result of the function call
37661*/
37662WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037663WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037664(
37665 WDI_ControlBlockType* pWDICtx,
37666 WDI_EventInfoType* pEventData
37667)
37668{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037669 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037670 wpt_uint8* pSendBuffer = NULL;
37671 wpt_uint16 usDataOffset = 0;
37672 wpt_uint16 usSendSize = 0;
37673 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037674 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
37675 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037676
37677
37678 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37679 "%s: %d Enter",__func__, __LINE__);
37680
37681 /*-------------------------------------------------------------------------
37682 Sanity check
37683 ------------------------------------------------------------------------*/
37684 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37685 ( NULL == pEventData->pEventData))
37686 {
37687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37688 "%s: Invalid parameters", __func__);
37689 WDI_ASSERT(0);
37690 return WDI_STATUS_E_FAILURE;
37691 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037692 wdiFWLoggingInitReq =
37693 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037694
37695 /*-----------------------------------------------------------------------
37696 Get message buffer
37697 -----------------------------------------------------------------------*/
37698 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037699 WDI_FW_LOGGING_INIT_REQ,
37700 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037701 &pSendBuffer, &usDataOffset, &usSendSize))||
37702 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037703 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037704 {
37705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37706 "Unable to get send buffer in Process Mgmt Logging Init Req");
37707 WDI_ASSERT(0);
37708 return WDI_STATUS_E_FAILURE;
37709 }
37710
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037711 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
37712 wdiFWLoggingInitReq->enableFlag;
37713 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
37714 wdiFWLoggingInitReq->frameSize;
37715 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
37716 wdiFWLoggingInitReq->frameType;
37717 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
37718 wdiFWLoggingInitReq->bufferMode;
37719 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
37720 wdiFWLoggingInitReq->continuousFrameLogging;
37721 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
37722 wdiFWLoggingInitReq->minLogBufferSize;
37723 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
37724 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053037725 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
37726 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
37727 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
37728 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037729
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037730 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037731
37732 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037733 &halFWLoggingInitReq.tFWLoggingInitReqParams,
37734 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037735
37736 /*-------------------------------------------------------------------------
37737 Send Mgmt Logging Init Request to HAL
37738 ------------------------------------------------------------------------*/
37739 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053037740 wdiFWLoggingInitRspCb, pEventData->pUserData,
37741 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053037742
37743 return wdiStatus;
37744}
37745
37746/**
c_manjeecfd1efb2015-09-25 19:32:34 +053037747 @brief Process FwrMemDumpReq Request
37748
37749 @param pWDICtx: pointer to the WLAN DAL context
37750 pEventData: pointer to the event information structure
37751
37752 @see
37753 @return Result of the function call
37754*/
37755WDI_Status
37756 WDI_ProcessFwrMemDumpReq
37757
37758(
37759 WDI_ControlBlockType* pWDICtx,
37760 WDI_EventInfoType* pEventData
37761)
37762{
37763 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
37764 wpt_uint8* pSendBuffer = NULL;
37765 wpt_uint16 usDataOffset = 0;
37766 wpt_uint16 usSendSize = 0;
37767 WDI_Status wdiStatus;
37768 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
37769 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
37770
37771 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37772 "%s: %d Enter",__func__, __LINE__);
37773
37774 /*-------------------------------------------------------------------------
37775 Sanity check
37776 ------------------------------------------------------------------------*/
37777 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37778 ( NULL == pEventData->pEventData))
37779 {
37780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37781 "%s: Invalid parameters", __func__);
37782 WDI_ASSERT(0);
37783 return WDI_STATUS_E_FAILURE;
37784 }
37785
37786 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
37787
37788 /*-----------------------------------------------------------------------
37789 Get message buffer
37790 -----------------------------------------------------------------------*/
37791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37792 WDI_FWR_MEM_DUMP_REQ,
37793 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
37794 &pSendBuffer, &usDataOffset, &usSendSize))||
37795 (usSendSize < (usDataOffset +
37796 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
37797 {
37798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37799 "Unable to get send buffer in Process Fwr Mem Dump Req");
37800 WDI_ASSERT(0);
37801 return WDI_STATUS_E_FAILURE;
37802 }
37803
37804 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
37805 wpalMemoryCopy( pSendBuffer+usDataOffset,
37806 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
37807 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
37808
37809 /*-------------------------------------------------------------------------
37810 Send Fwr Mem Dump Request to HAL
37811 ------------------------------------------------------------------------*/
37812 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
37813 wdiFwrMemDumpRspCb, pEventData->pUserData,
37814 WDI_FWR_MEM_DUMP_RSP);
37815 return wdiStatus;
37816}
37817
37818/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053037819 @brief WDI_EncryptMsgReq
37820
37821 @param pwdiEncryptMsgParams: Req parameter for the FW
37822 wdiEncryptMsgCbRsp: callback for passing back the response
37823 of the Req operation received from the device
37824 pUserData: user data will be passed back with the callback
37825
37826 @return SUCCESS or FAIL
37827*/
37828WDI_Status
37829WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
37830 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
37831 void* pUserData)
37832{
37833 WDI_EventInfoType wdiEventData;
37834
37835 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37836 "%s: %d Enter" ,__func__, __LINE__);
37837 /*------------------------------------------------------------------------
37838 Sanity Check
37839 ------------------------------------------------------------------------*/
37840 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37841 {
37842 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
37843 "WDI API call before module is initialized - Fail request");
37844
37845 return WDI_STATUS_E_NOT_ALLOWED;
37846 }
37847
37848 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
37849 wdiEventData.pEventData = pwdiEncryptMsgParams;
37850 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
37851 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
37852 wdiEventData.pUserData = pUserData;
37853
37854 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37855}
37856
37857/*
37858 * FUNCTION: WDI_ProcessEncryptMsgReq
37859 * Request to WDI to encrypt the given message.
37860 *
37861 * @param pWDICtx: pointer to the WLAN DAL context
37862 * pEventData: pointer to the event information structure
37863 *
37864 * @return Result of the function call
37865 */
37866
37867WDI_Status
37868WDI_ProcessEncryptMsgReq
37869(
37870 WDI_ControlBlockType* pWDICtx,
37871 WDI_EventInfoType* pEventData
37872)
37873{
37874 wpt_uint8* pSendBuffer = NULL;
37875 wpt_uint16 usDataOffset = 0;
37876 wpt_uint16 usSendSize = 0;
37877 WDI_EncryptMsgRspCb* wdiEncMsgCb;
37878 tSetEncryptedDataParams *pHalEncryptDataReq;
37879 wpt_pkt80211 *pkt = NULL;
37880
37881 /*-------------------------------------------------------------------------
37882 Sanity check
37883 -------------------------------------------------------------------------*/
37884 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
37885 ( NULL == pEventData->pCBfnc ) )
37886 {
37887 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37888 "%s: Invalid parameters", __func__);
37889 WDI_ASSERT(0);
37890 return WDI_STATUS_E_FAILURE;
37891 }
37892
37893 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
37894
37895 /*-----------------------------------------------------------------------
37896 Get message buffer
37897 -----------------------------------------------------------------------*/
37898 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
37899 pWDICtx, WDI_ENCRYPT_MSG_REQ,
37900 sizeof(tSetEncryptedDataReqMsg),
37901 &pSendBuffer, &usDataOffset, &usSendSize)) ||
37902 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
37903 {
37904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070037905 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %pK",
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053037906 pEventData);
37907 WDI_ASSERT(0);
37908 return WDI_STATUS_E_FAILURE;
37909 }
37910
37911 pWDICtx->wdiReqStatusCB = NULL;
37912 pWDICtx->pReqStatusUserData = pEventData->pUserData;
37913 pkt = (wpt_pkt80211 *)pEventData->pEventData;
37914
37915 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
37916 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
37917
37918 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
37919
37920 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
37921 pkt->encParams.keyParams.key[0].keyId;
37922
37923 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
37924 &pkt->encParams.keyParams.key[0].key[0], 16);
37925
37926 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
37927
37928 pHalEncryptDataReq->data.length = pkt->data.length;
37929 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
37930
37931 /*-------------------------------------------------------------------------
37932 Send Get STA Request to HAL
37933 -------------------------------------------------------------------------*/
37934 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
37935 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
37936}
37937
37938/*
37939 * FUNCTION: WDI_ProcessEncryptMsgRsp
37940 * Receives the encrypted message from the firmware
37941 * @param pWDICtx: pointer to the WLAN DAL context
37942 * pEventData: pointer to the event information structure
37943 *
37944 * @return Result of the function call
37945 */
37946WDI_Status
37947WDI_ProcessEncryptMsgRsp
37948(
37949 WDI_ControlBlockType* pWDICtx,
37950 WDI_EventInfoType* pEventData
37951)
37952{
37953 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
37954 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
37955
37956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37957 "In %s",__func__);
37958
37959 /*-------------------------------------------------------------------------
37960 Sanity check
37961 -------------------------------------------------------------------------*/
37962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37963 ( NULL == pEventData->pEventData))
37964 {
37965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37966 "%s: Invalid parameters", __func__);
37967 WDI_ASSERT(0);
37968 return WDI_STATUS_E_FAILURE;
37969 }
37970
37971 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
37972
37973 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
37974
37975 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
37976 pEventData->pEventData,
37977 pWDICtx->pRspCBUserData);
37978 return WDI_STATUS_SUCCESS;
37979}
Srinivas Dasari32a79262015-02-19 13:04:49 +053037980
37981WDI_Status
37982WDI_NanRequest
37983(
37984 WDI_NanRequestType *pwdiNanRequest,
37985 void *usrData
37986)
37987{
37988 WDI_EventInfoType wdiEventData;
37989
37990 /*------------------------------------------------------------------------
37991 Sanity Check
37992 ------------------------------------------------------------------------*/
37993 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37994 {
37995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37996 "WDI API call before module is initialized - Fail request");
37997
37998 return WDI_STATUS_E_NOT_ALLOWED;
37999 }
38000
38001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38002 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
38003 pwdiNanRequest->request_data_len);
38004
38005 /*------------------------------------------------------------------------
38006 Fill in Event data and post to the Main FSM
38007 ------------------------------------------------------------------------*/
38008 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
38009 wdiEventData.pEventData = pwdiNanRequest;
38010 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
38011 + pwdiNanRequest->request_data_len;
38012 wdiEventData.pUserData = usrData;
38013 wdiEventData.pCBfnc = NULL;
38014
38015
38016 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38017}
38018
38019WDI_Status
38020WDI_ProcessNanRequest
38021(
38022 WDI_ControlBlockType* pWDICtx,
38023 WDI_EventInfoType* pEventData
38024)
38025{
38026 WDI_NanRequestType *pwdiNanRequest = NULL;
38027 wpt_uint8* pSendBuffer = NULL;
38028 wpt_uint16 usDataOffset = 0;
38029 wpt_uint16 usSendSize = 0;
38030
38031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38032 "WDI_ProcessNanRequest");
38033
38034 /*-------------------------------------------------------------------------
38035 Sanity check
38036 -------------------------------------------------------------------------*/
38037 if (( NULL == pEventData ) ||
38038 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
38039 {
38040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38041 "%s: Invalid parameters", __FUNCTION__);
38042 WDI_ASSERT(0);
38043 return WDI_STATUS_E_FAILURE;
38044 }
38045
38046 /*-----------------------------------------------------------------------
38047 Get message buffer
38048 -----------------------------------------------------------------------*/
38049 if (( WDI_STATUS_SUCCESS
38050 != WDI_GetMessageBuffer( pWDICtx,
38051 WDI_NAN_REQUEST,
38052 pwdiNanRequest->request_data_len,
38053 &pSendBuffer,
38054 &usDataOffset,
38055 &usSendSize))||
38056 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
38057 {
38058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038059 "Unable to get send buffer in NAN request %pK %pK",
Srinivas Dasari32a79262015-02-19 13:04:49 +053038060 pEventData, pwdiNanRequest);
38061 WDI_ASSERT(0);
38062 return WDI_STATUS_E_FAILURE;
38063 }
38064
38065 wpalMemoryCopy( pSendBuffer+usDataOffset,
38066 pwdiNanRequest->request_data,
38067 pwdiNanRequest->request_data_len);
38068
38069 pWDICtx->pReqStatusUserData = NULL;
38070 pWDICtx->pfncRspCB = NULL;
38071 vos_mem_free( pEventData->pUserData);
38072
38073 /*-------------------------------------------------------------------------
38074 Send NAN Request to HAL
38075 -------------------------------------------------------------------------*/
38076 return WDI_SendMsg( pWDICtx,
38077 pSendBuffer,
38078 usSendSize,
38079 NULL,
38080 NULL,
38081 WDI_NAN_RESPONSE);
38082}
38083
38084/**
38085 @brief Process NAN Response function (called when a
38086 response is being received over the bus from HAL)
38087
38088 @param pWDICtx: pointer to the WLAN DAL context
38089 pEventData: pointer to the event information structure
38090
38091 @see
38092 @return Result of the function call
38093*/
38094WDI_Status
38095WDI_ProcessNanResponse
38096(
38097 WDI_ControlBlockType* pWDICtx,
38098 WDI_EventInfoType* pEventData
38099)
38100{
38101 WDI_Status wdiStatus;
38102 eHalStatus halStatus;
38103
38104 /*-------------------------------------------------------------------------
38105 Sanity check
38106 -------------------------------------------------------------------------*/
38107 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38108 ( NULL == pEventData->pEventData))
38109 {
38110 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38111 "%s: Invalid parameters", __func__);
38112 WDI_ASSERT(0);
38113 return WDI_STATUS_E_FAILURE;
38114 }
38115
38116 halStatus = *((eHalStatus*)pEventData->pEventData);
38117 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
38118
38119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38120 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
38121
38122 return WDI_STATUS_SUCCESS;
38123}/*WDI_ProcessNanResponse*/
38124
38125
38126/**
38127 @brief Process NAN Event function (called when
38128 an indication is being received over the
38129 bus from HAL)
38130
38131 @param pWDICtx: pointer to the WLAN DAL context
38132 pEventData: pointer to the event information structure
38133
38134 @see
38135 @return Result of the function call
38136*/
38137WDI_Status
38138WDI_ProcessNanEvent
38139(
38140 WDI_ControlBlockType* pWDICtx,
38141 WDI_EventInfoType* pEventData
38142)
38143{
38144 WDI_LowLevelIndType wdiInd;
38145
38146 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38147
38148 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38149 ( NULL == pEventData->pEventData ))
38150 {
38151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38152 "%s: Invalid parameters", __func__);
38153 WDI_ASSERT( 0 );
38154 return WDI_STATUS_E_FAILURE;
38155 }
38156
38157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38158 "%s: Received NAN event", __func__);
38159 /*-------------------------------------------------------------------------
38160 Extract indication and send it to UMAC
38161 -------------------------------------------------------------------------*/
38162 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
38163 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
38164 pEventData->uEventDataSize;
38165 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
38166 pEventData->pEventData;
38167
38168 /*Notify UMAC*/
38169 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
38170
38171 return WDI_STATUS_SUCCESS;
38172}/*WDI_ProcessNanEvent*/
38173
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053038174
Gupta, Kapil7c34b322015-09-30 13:12:35 +053038175WDI_Status
38176WDI_Process_RssiBreachedInd
38177(
38178 WDI_ControlBlockType* pWDICtx,
38179 WDI_EventInfoType* pEventData
38180)
38181{
38182 WDI_LowLevelIndType wdiInd;
Abhishek Singhe3636482016-02-10 17:43:32 +053038183 tHalRssiMonitorIndParams *halRssiBreachedInd;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053038184 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38185
38186 /*-------------------------------------------------------------------------
38187 Sanity check
38188 -------------------------------------------------------------------------*/
38189 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38190 ( NULL == pEventData->pEventData))
38191 {
38192 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38193 "%s: Invalid parameters", __func__);
38194 WDI_ASSERT(0);
38195 return WDI_STATUS_E_FAILURE;
38196 }
38197
38198 /*-------------------------------------------------------------------------
38199 Extract indication and send it to UMAC
38200 -------------------------------------------------------------------------*/
Abhishek Singhe3636482016-02-10 17:43:32 +053038201 halRssiBreachedInd = pEventData->pEventData;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053038202
38203 /*Fill in the indication parameters*/
38204 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
Abhishek Singhe3636482016-02-10 17:43:32 +053038205 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id =
38206 halRssiBreachedInd->request_id;
38207 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId,
38208 halRssiBreachedInd->bssId,
38209 WDI_MAC_ADDR_LEN);
38210 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi =
38211 halRssiBreachedInd->rssi;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053038212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38213 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
38214 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
38215 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
38216 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
38217 /*Notify UMAC*/
38218 if (pWDICtx->wdiLowLevelIndCB)
38219 {
38220 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
38221 }
38222
38223 return WDI_STATUS_SUCCESS;
38224
38225}
38226
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053038227
38228WDI_Status
38229WDI_Process_LostLinkParamInd
38230(
38231 WDI_ControlBlockType* pWDICtx,
38232 WDI_EventInfoType* pEventData
38233)
38234{
38235 WDI_LowLevelIndType wdiInd;
38236 tHalLostLinkParametersIndParams halLostLinkParamInd;
38237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38238
38239 /*-------------------------------------------------------------------------
38240 Sanity check
38241 -------------------------------------------------------------------------*/
38242 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38243 ( NULL == pEventData->pEventData))
38244 {
38245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38246 "%s: Invalid parameters", __func__);
38247 WDI_ASSERT(0);
38248 return WDI_STATUS_E_FAILURE;
38249 }
38250
38251 /*-------------------------------------------------------------------------
38252 Extract indication and send it to UMAC
38253 -------------------------------------------------------------------------*/
38254 wpalMemoryCopy( (void *)&halLostLinkParamInd,
38255 pEventData->pEventData,
38256 sizeof(tHalLostLinkParametersIndParams));
38257
38258
38259 /*Fill in the indication parameters*/
38260 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
38261 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
38262 (void *)&halLostLinkParamInd,
38263 sizeof(WDI_LostLinkParamsIndType));
38264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38265 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
38266 "linkFlTx : %d,lastDataRate : %d", __func__,
38267 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
38268 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
38269 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
38270 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
38271 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
38272 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
38273 /*Notify UMAC*/
38274 if (pWDICtx->wdiLowLevelIndCB)
38275 {
38276 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
38277 }
38278
38279 return WDI_STATUS_SUCCESS;
38280
38281}
38282
Abhishek Singh41988ba2015-05-25 19:42:29 +053038283WDI_Status
38284WDI_ProcessSetRtsCtsHtvhtInd
38285(
38286 WDI_ControlBlockType* pWDICtx,
38287 WDI_EventInfoType* pEventData
38288)
38289{
38290 wpt_uint8* pSendBuffer = NULL;
38291 wpt_uint16 usDataOffset = 0;
38292 wpt_uint16 usSendSize = 0;
38293 wpt_uint32 *rtsCtsVal;
38294 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
38295 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38296
38297
38298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38299
38300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38301 "%s", __func__);
38302
38303 /*-------------------------------------------------------------------------
38304 Sanity check
38305 -------------------------------------------------------------------------*/
38306 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38307 {
38308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38309 "%s: Invalid parameters", __func__);
38310 WDI_ASSERT(0);
38311 return WDI_STATUS_E_FAILURE;
38312 }
38313 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
38314 /*-----------------------------------------------------------------------
38315 Get message buffer
38316 -----------------------------------------------------------------------*/
38317
38318 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38319 WDI_SET_RTS_CTS_HTVHT_IND,
38320 sizeof(tHalRtsCtsHtvhtIndParams),
38321 &pSendBuffer, &usDataOffset, &usSendSize))||
38322 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
38323 {
38324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038325 "Unable to get send buffer in RTS CTS ind %pK ",
Abhishek Singh41988ba2015-05-25 19:42:29 +053038326 pEventData);
38327 WDI_ASSERT(0);
38328 return WDI_STATUS_E_FAILURE;
38329 }
38330 rtsCtsHtvhtIndParams =
38331 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
38332 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
38333
38334 pWDICtx->pReqStatusUserData = NULL;
38335 pWDICtx->pfncRspCB = NULL;
38336 /*-------------------------------------------------------------------------
38337 Send SET_RTS_CTS_HTVHT Indication to HAL
38338 -------------------------------------------------------------------------*/
38339 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38340 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38341}
38342
38343WDI_Status
38344WDI_SetRtsCtsHTVhtInd
38345(
38346 wpt_uint32 rtsCtsVal
38347)
38348{
38349 WDI_EventInfoType wdiEventData;
38350 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38351
38352 /*------------------------------------------------------------------------
38353 Sanity Check
38354 ------------------------------------------------------------------------*/
38355 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38356 {
38357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38358 "WDI API call before module is initialized - Fail request");
38359 return WDI_STATUS_E_NOT_ALLOWED;
38360 }
38361
38362 /*------------------------------------------------------------------------
38363 Fill in Event data and post to the Main FSM
38364 ------------------------------------------------------------------------*/
38365 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
38366 wdiEventData.pEventData = (void *) &rtsCtsVal;
38367 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
38368 wdiEventData.pCBfnc = NULL;
38369 wdiEventData.pUserData = NULL;
38370
38371 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38372
38373}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053038374
38375WDI_Status
38376WDI_ProcessEnableDisableCAEventInd
38377(
38378 WDI_ControlBlockType* pWDICtx,
38379 WDI_EventInfoType* pEventData
38380)
38381{
38382 wpt_uint8* pSendBuffer = NULL;
38383 wpt_uint16 usDataOffset = 0;
38384 wpt_uint16 usSendSize = 0;
38385 wpt_uint32 *val;
38386 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
38387 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38388
38389
38390 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38391
38392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38393 "%s", __func__);
38394
38395 /*-------------------------------------------------------------------------
38396 Sanity check
38397 -------------------------------------------------------------------------*/
38398 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38399 {
38400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38401 "%s: Invalid parameters", __func__);
38402 WDI_ASSERT(0);
38403 return WDI_STATUS_E_FAILURE;
38404 }
38405 val = (wpt_uint32*)pEventData->pEventData;
38406 /*-----------------------------------------------------------------------
38407 Get message buffer
38408 -----------------------------------------------------------------------*/
38409
38410 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38411 WDI_SEND_FREQ_RANGE_CONTROL_IND,
38412 sizeof(tHalAvoidFreqRangeCtrlParam),
38413 &pSendBuffer, &usDataOffset, &usSendSize))||
38414 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
38415 {
38416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038417 "Unable to get send buffer in Channel Avoidance Ind %pK ",
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053038418 pEventData);
38419 WDI_ASSERT(0);
38420 return WDI_STATUS_E_FAILURE;
38421 }
38422 avoidFreqRangeCtrlParam =
38423 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
38424 avoidFreqRangeCtrlParam->status = *val;
38425
38426 pWDICtx->pReqStatusUserData = NULL;
38427 pWDICtx->pfncRspCB = NULL;
38428 /*-------------------------------------------------------------------------
38429 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
38430 -------------------------------------------------------------------------*/
38431 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38432 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38433}
38434
38435WDI_Status
38436WDI_EnableDisableCAEventInd
38437(
38438 wpt_uint32 val
38439)
38440{
38441 WDI_EventInfoType wdiEventData;
38442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38443
38444 /*------------------------------------------------------------------------
38445 Sanity Check
38446 ------------------------------------------------------------------------*/
38447 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38448 {
38449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38450 "WDI API call before module is initialized - Fail request");
38451 return WDI_STATUS_E_NOT_ALLOWED;
38452 }
38453
38454 /*------------------------------------------------------------------------
38455 Fill in Event data and post to the Main FSM
38456 ------------------------------------------------------------------------*/
38457 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
38458 wdiEventData.pEventData = (void *) &val;
38459 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
38460 wdiEventData.pCBfnc = NULL;
38461 wdiEventData.pUserData = NULL;
38462
38463 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38464
38465} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053038466
38467/**
38468 @brief WDI_WifiConfigSetReq
38469 This API is called to set WifiConfig params request in FW
38470
38471 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
38472 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
38473 usrData : Client context
38474 @see
38475 @return SUCCESS or FAIL
38476*/
38477WDI_Status
38478WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
38479 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
38480 void* pUserData)
38481{
38482 WDI_EventInfoType wdiEventData;
38483
38484 /*------------------------------------------------------------------------
38485 Sanity Check
38486 ------------------------------------------------------------------------*/
38487 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38488 {
38489 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
38490 "WDI API call before module is initialized - Fail request");
38491
38492 return WDI_STATUS_E_NOT_ALLOWED;
38493 }
38494
38495 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
38496 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
38497 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
38498 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
38499 wdiEventData.pUserData = pUserData;
38500
38501 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38502}
38503
38504/**
38505 @brief WDI_ProcessWifiConfigReq -
38506 Set WifiConfig request to FW
38507
38508 @param pWDICtx : wdi context
38509 pEventData : indication data
38510
38511 @see
38512 @return none
38513*/
38514 WDI_Status
38515 WDI_ProcessWifiConfigReq
38516 (
38517 WDI_ControlBlockType* pWDICtx,
38518 WDI_EventInfoType* pEventData
38519 )
38520 {
38521 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
38522 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
38523 wpt_uint8* pSendBuffer = NULL;
38524 wpt_uint16 usSendSize = 0;
38525 wpt_uint16 usDataOffset = 0;
38526 tSetWifiConfigParamsReq halWifiConfigSetParams;
38527
38528 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
38529 ( NULL == pEventData->pCBfnc ))
38530 {
38531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38532 "%s: Invalid parameters", __func__);
38533 WDI_ASSERT(0);
38534 return WDI_STATUS_E_FAILURE;
38535 }
38536 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
38537 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
38538
38539 /*-----------------------------------------------------------------------
38540 Get message buffer
38541 ! TO DO : proper conversion into the HAL Message Request Format
38542 -----------------------------------------------------------------------*/
38543 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
38544 pWDICtx,
38545 WDI_WIFI_CONFIG_SET_REQ,
38546 sizeof(halWifiConfigSetParams.wifiConfigParams),
38547 &pSendBuffer, &usDataOffset,
38548 &usSendSize))||
38549 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
38550 {
38551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038552 "Unable to get send buffer in %s %pK %pK %pK", __func__,
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053038553 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
38554 WDI_ASSERT(0);
38555 return WDI_STATUS_E_FAILURE;
38556 }
38557
38558 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
38559 halWifiConfigSetParams.wifiConfigParams.paramValue =
38560 pwdiWifiConfigSetReqParams->paramValue;
38561 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
38562 sizeof(tSirMacAddr));
38563
38564 wpalMemoryCopy(pSendBuffer+usDataOffset,
38565 &halWifiConfigSetParams.wifiConfigParams,
38566 sizeof(halWifiConfigSetParams.wifiConfigParams));
38567
38568 pWDICtx->pReqStatusUserData = pEventData->pUserData;
38569
38570 /*-------------------------------------------------------------------------
38571 Send Clear Link Layer Stats Request to HAL
38572 -------------------------------------------------------------------------*/
38573 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
38574 wdiWifiConfigSetRspCb, pEventData->pUserData,
38575 WDI_WIFI_CONFIG_SET_RSP);
38576 }
38577
38578WDI_Status
38579WDI_ProcessWificonfigSetRsp
38580( WDI_ControlBlockType* pWDICtx,
38581 WDI_EventInfoType* pEventData )
38582
38583{
38584 tHalSetWifiConfigRspParams halRsp;
38585 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
38586 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
38587
38588 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38589 "%s: %d Enter",__func__, __LINE__);
38590
38591 /*-------------------------------------------------------------------------
38592 Sanity check
38593 -------------------------------------------------------------------------*/
38594 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38595 ( NULL == pEventData->pEventData))
38596 {
38597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38598 "%s: Invalid parameters", __func__);
38599 WDI_ASSERT(0);
38600 return WDI_STATUS_E_FAILURE;
38601 }
38602 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
38603
38604 /*-------------------------------------------------------------------------
38605 Extract response and send it to UMAC
38606 -------------------------------------------------------------------------*/
38607 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
38608
38609 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
38610
38611 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38612 "WifiConfig RSP status = %d",
38613 wdiWifconfigSetRsp.wificonfigset_status);
38614 /*Notify UMAC*/
38615 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
38616
38617 return WDI_STATUS_SUCCESS;
38618}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038619
38620#ifdef FEATURE_OEM_DATA_SUPPORT
38621
38622/**
38623 @brief WDI_StartOemDataReqIndNew
38624
38625 @param pOemDataReqNewConfig: Req parameter for the FW
38626
38627 @return SUCCESS or FAIL
38628*/
38629WDI_Status
38630WDI_StartOemDataReqIndNew
38631(
38632 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
38633)
38634{
38635 WDI_EventInfoType wdiEventData;
38636
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038637 /*------------------------------------------------------------------------
38638 Sanity Check
38639 ------------------------------------------------------------------------*/
38640 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38641 {
38642 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
38643 "WDI API call before module is initialized - Fail request");
38644
38645 return WDI_STATUS_E_NOT_ALLOWED;
38646 }
38647
38648 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
38649 wdiEventData.pEventData = pOemDataReqNewConfig;
38650 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
38651 wdiEventData.pCBfnc = NULL;
38652 wdiEventData.pUserData = NULL;
38653
38654 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38655}
38656
38657/**
38658 @brief WDI_ProcessStartOemDataReqIndNew -
38659 Send OEM Data request new indication to FW
38660
38661 @param pWDICtx : wdi context
38662 pEventData : indication data
38663
38664 @see
38665 @return none
38666*/
38667WDI_Status
38668WDI_ProcessStartOemDataReqIndNew
38669(
38670 WDI_ControlBlockType* pWDICtx,
38671 WDI_EventInfoType* pEventData
38672)
38673{
38674 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
38675 wpt_uint8* pSendBuffer = NULL;
38676 wpt_uint16 usSendSize = 0;
38677 wpt_uint16 usDataOffset = 0;
38678 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
38679 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38680
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038681 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38682 ( NULL == pEventData->pEventData))
38683 {
38684 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38685 "%s: Invalid parameters", __func__);
38686 WDI_ASSERT(0);
38687 return WDI_STATUS_E_FAILURE;
38688 }
38689
38690 wdiOemDataReqNewConfig =
38691 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
38692
38693 /*-----------------------------------------------------------------------
38694 Get message buffer
38695 -----------------------------------------------------------------------*/
38696 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
38697 pWDICtx,
38698 WDI_START_OEM_DATA_REQ_IND_NEW,
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038699 sizeof(*pHalStartOemDataReqParamsNew),
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038700 &pSendBuffer, &usDataOffset,
38701 &usSendSize))||
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038702 ( usSendSize < (usDataOffset + sizeof(*pHalStartOemDataReqParamsNew) )))
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038703 {
38704 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038705 "Unable to get send buffer in %s %pK %pK", __func__,
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038706 pEventData, wdiOemDataReqNewConfig);
38707 WDI_ASSERT(0);
38708 return WDI_STATUS_E_FAILURE;
38709 }
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038710
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038711 pHalStartOemDataReqParamsNew =
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038712 (tpStartOemDataReqParamsNew) (pSendBuffer + usDataOffset);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038713
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038714 wpalMemoryCopy(pHalStartOemDataReqParamsNew,
38715 wdiOemDataReqNewConfig,
38716 sizeof(*pHalStartOemDataReqParamsNew));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038717
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053038718 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38719 "%s: selfMacAddr: " MAC_ADDRESS_STR" ", __func__,
38720 MAC_ADDR_ARRAY(pHalStartOemDataReqParamsNew->selfMacAddr));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038721
38722 pWDICtx->pReqStatusUserData = NULL;
38723 pWDICtx->pfncRspCB = NULL;
38724
38725 /*-------------------------------------------------------------------------
38726 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
38727 -------------------------------------------------------------------------*/
38728 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38729 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38730}
38731
38732/**
38733 @brief Process OemDataRsp New Indication indication from FW
38734
38735 @param pWDICtx: pointer to the WLAN DAL context
38736 pEventData: pointer to the event information structure
38737
38738 @see
38739 @return Result of the function call
38740*/
38741WDI_Status
38742WDI_ProcessStartOemDataRspIndNew
38743(
38744 WDI_ControlBlockType* pWDICtx,
38745 WDI_EventInfoType* pEventData
38746)
38747{
38748 WDI_LowLevelIndType wdiInd;
38749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38750
38751 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38752 "%s: ", __func__);
38753
38754 /* sanity check */
38755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38756 ( NULL == pEventData->pEventData))
38757 {
38758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38759 "%s: Invalid parameters", __func__);
38760 WDI_ASSERT(0);
38761 return WDI_STATUS_E_FAILURE;
38762 }
38763
38764 /* Fill in the indication parameters */
38765 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
38766
Padma, Santhosh Kumarf75c37b2016-01-25 10:36:08 +053038767 wdiInd.wdiIndicationData.wdiOemDataRspNew.pOemRspNewIndData =
38768 (void *)pEventData->pEventData;
38769 wdiInd.wdiIndicationData.wdiOemDataRspNew.OemRspNewLen =
38770 pEventData->uEventDataSize;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038771 /* Notify UMAC */
38772 if (pWDICtx->wdiLowLevelIndCB)
38773 {
38774 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
38775 }
38776 else
38777 {
38778 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
38779 "%s: WDILowLevelIndCb is null", __func__);
38780 WDI_ASSERT(0);
38781 return WDI_STATUS_E_FAILURE;
38782 }
38783 return WDI_STATUS_SUCCESS;
38784} /* End of WDI_ProcessEXTScanResultInd */
38785
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053038786/**
38787 @brief Process Current Antenna Index information from FW
38788
38789 @param pWDICtx: pointer to the WLAN DAL context
38790 pEventData: pointer to the event information structure
38791
38792 @see
38793 @return Result of the function call
38794*/
38795WDI_Status
38796WDI_ProcessGetCurrentAntennaIndexRsp
38797(
38798 WDI_ControlBlockType* pWDICtx,
38799 WDI_EventInfoType* pEventData
38800)
38801{
38802 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
38803 tHalAntennaDiversitySelectionRspParams *pHalAntDivSelRsp;
38804
38805 /*-------------------------------------------------------------------------
38806 Sanity check
38807 -------------------------------------------------------------------------*/
38808 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
38809 ( NULL == pEventData->pEventData))
38810 {
38811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
38812 "%s: Invalid parameters", __func__);
38813 WDI_ASSERT(0);
38814 return WDI_STATUS_E_FAILURE;
38815 }
38816 pHalAntDivSelRsp =
38817 (tHalAntennaDiversitySelectionRspParams*)pEventData->pEventData;
38818 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pWDICtx->pfncRspCB;
38819
38820 if (pHalAntDivSelRsp->status != 0)
38821 {
38822 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_E_FAILURE,
38823 (void *)pHalAntDivSelRsp, pWDICtx->pRspCBUserData);
38824 }
38825 else
38826 {
38827 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_SUCCESS,
38828 (void *)pHalAntDivSelRsp,
38829 pWDICtx->pRspCBUserData);
38830 }
38831
38832 return WDI_STATUS_SUCCESS;
38833}
38834
38835/**
38836 @brief Process Get Current Antenna Index request command
38837
38838 @param pWDICtx: pointer to the WLAN DAL context
38839 pEventData: pointer to the event information structure
38840
38841 @see
38842 @return Result of the function call
38843*/
38844WDI_Status
38845WDI_ProcessGetCurrentAntennaIndex
38846(
38847 WDI_ControlBlockType* pWDICtx,
38848 WDI_EventInfoType* pEventData
38849)
38850{
38851 wpt_uint8* pSendBuffer = NULL;
38852 wpt_uint16 usDataOffset = 0;
38853 wpt_uint16 usSendSize = 0;
38854 tHalAntennaDiversitySelectionReqParams halAntDivSelReq;
38855 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
38856
38857 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38858 "%s", __func__);
38859
38860 /*-------------------------------------------------------------------------
38861 Sanity check
38862 -------------------------------------------------------------------------*/
38863 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
38864 ( NULL == pEventData->pCBfnc ))
38865 {
38866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38867 "%s: Invalid parameters", __func__);
38868 WDI_ASSERT(0);
38869 return WDI_STATUS_E_FAILURE;
38870 }
38871 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pEventData->pCBfnc;
38872
38873 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38874 WDI_ANTENNA_DIVERSITY_SELECTION_REQ,
38875 sizeof(tHalAntennaDiversitySelectionReqParams),
38876 &pSendBuffer, &usDataOffset, &usSendSize))||
38877 ( usSendSize < (usDataOffset +
38878 sizeof(tHalAntennaDiversitySelectionReqParams) )))
38879 {
38880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038881 "Unable to get send buffer in GetCurrentAntennaIndex %pK",
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053038882 pEventData);
38883 WDI_ASSERT(0);
38884 return WDI_STATUS_E_FAILURE;
38885 }
38886 pWDICtx->wdiReqStatusCB = NULL;
38887 pWDICtx->pReqStatusUserData = pEventData->pEventData;
38888 halAntDivSelReq.reserved = *((wpt_uint32 *)(pEventData->pEventData));
38889 wpalMemoryCopy( pSendBuffer+usDataOffset,
38890 &halAntDivSelReq,
38891 sizeof(tHalAntennaDiversitySelectionReqParams));
38892
38893 /*-------------------------------------------------------------------------
38894 Send Get STA Request to HAL
38895 -------------------------------------------------------------------------*/
38896 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
38897 wdiGetCurrentAntennaIndexRspCb,
38898 pEventData->pUserData,
38899 WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
38900}
38901
38902/**
38903 @brief WDI_GetCurrentAntennaIndex
38904
38905 @param pOemDataReqNewConfig: Req parameter for the FW
38906
38907 @return SUCCESS or FAIL
38908*/
38909WDI_Status
38910WDI_GetCurrentAntennaIndex
38911(
38912 void *pUserData,
38913 WDI_AntennaDivSelRspCb wdiAntennaDivSelRspCb,
38914 wpt_uint32 reserved
38915)
38916{
38917 WDI_EventInfoType wdiEventData;
38918
38919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38920
38921 /*------------------------------------------------------------------------
38922 Sanity Check
38923 ------------------------------------------------------------------------*/
38924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38925 {
38926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38927 "WDI API call before module is initialized - Fail request");
38928 return WDI_STATUS_E_NOT_ALLOWED;
38929 }
38930 /*------------------------------------------------------------------------
38931 Fill in Event data and post to the Main FSM
38932 ------------------------------------------------------------------------*/
38933 wdiEventData.wdiRequest = WDI_ANTENNA_DIVERSITY_SELECTION_REQ;
38934 wdiEventData.pEventData = (void *)&reserved;
38935 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
38936 wdiEventData.pCBfnc = wdiAntennaDivSelRspCb;
38937 wdiEventData.pUserData = pUserData;
38938
38939 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38940}
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053038941
38942/**
38943 @brief Process Set beacon miss penalty count command
38944
38945 @param pWDICtx: pointer to the WLAN DAL context
38946 pEventData: pointer to the event information structure
38947
38948 @see
38949 @return Result of the function call
38950*/
38951WDI_Status
38952WDI_ProcessBcnMissPenaltyCount
38953(
38954 WDI_ControlBlockType* pWDICtx,
38955 WDI_EventInfoType* pEventData
38956)
38957{
38958 wpt_uint8* pSendBuffer = NULL;
38959 wpt_uint16 usDataOffset = 0;
38960 wpt_uint16 usSendSize = 0;
38961 tHalModifyRoamParamsIndParams halModifyRoamParams;
38962 WDI_ModifyRoamParamsReqType *modifyRoamParams;
38963 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38964
38965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38966
38967 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38968 "%s", __func__);
38969 /*-------------------------------------------------------------------------
38970 Sanity check
38971 -------------------------------------------------------------------------*/
38972 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38973 {
38974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38975 "%s: Invalid parameters", __func__);
38976 WDI_ASSERT(0);
38977 return WDI_STATUS_E_FAILURE;
38978 }
38979
38980 /*-----------------------------------------------------------------------
38981 Get message buffer
38982 -----------------------------------------------------------------------*/
38983
38984 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38985 WDI_MODIFY_ROAM_PARAMS_IND,
38986 sizeof(tHalModifyRoamParamsIndParams),
38987 &pSendBuffer, &usDataOffset, &usSendSize))||
38988 ( usSendSize < (usDataOffset + sizeof(tHalModifyRoamParamsIndParams) )))
38989 {
38990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070038991 "Unable to get send buffer for Modify roam req params %pK ",
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053038992 pEventData);
38993 WDI_ASSERT(0);
38994 return WDI_STATUS_E_FAILURE;
38995 }
38996
38997 modifyRoamParams = (WDI_ModifyRoamParamsReqType *)pEventData->pEventData;
38998 halModifyRoamParams.param = modifyRoamParams->param;
38999 halModifyRoamParams.value = modifyRoamParams->value;
39000 wpalMemoryCopy( pSendBuffer+usDataOffset, &halModifyRoamParams,
39001 sizeof(halModifyRoamParams));
39002 pWDICtx->pReqStatusUserData = NULL;
39003 pWDICtx->pfncRspCB = NULL;
39004
39005 /*-------------------------------------------------------------------------
39006 Send WDI_MODIFY_ROAM_PARAMS_IND to HAL
39007 -------------------------------------------------------------------------*/
39008 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
39009 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
39010
39011}
39012
39013/**
39014 @brief WDI_SetBcnMissPenaltyCount
39015
39016 @param params: Req parameter for the FW
39017
39018 @return SUCCESS or FAIL
39019*/
39020
39021WDI_Status
39022WDI_SetBcnMissPenaltyCount
39023(
39024 WDI_ModifyRoamParamsReqType *params
39025)
39026{
39027 WDI_EventInfoType wdiEventData;
39028
39029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39030
39031 /*------------------------------------------------------------------------
39032 Sanity Check
39033 ------------------------------------------------------------------------*/
39034 if ( eWLAN_PAL_FALSE == gWDIInitialized )
39035 {
39036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39037 "WDI API call before module is initialized - Fail request");
39038 return WDI_STATUS_E_NOT_ALLOWED;
39039 }
39040
39041 /*------------------------------------------------------------------------
39042 Fill in Event data and post to the Main FSM
39043 ------------------------------------------------------------------------*/
39044 wdiEventData.wdiRequest = WDI_MODIFY_ROAM_PARAMS_IND;
39045 wdiEventData.pEventData = (void *)params;
39046 wdiEventData.uEventDataSize = sizeof(*params);
39047 wdiEventData.pCBfnc = NULL;
39048 wdiEventData.pUserData = NULL;
39049
39050 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39051
39052} /* WDI_SetBcnMissPenaltyCount */
39053
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053039054#endif
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053039055
Kapil Gupta3d923fb2016-12-20 18:59:27 +053039056#ifdef WLAN_FEATURE_APFIND
39057WDI_Status WDI_ProcessApFindInd(WDI_ControlBlockType *pWDICtx,
39058 WDI_EventInfoType *pEventData)
39059{
39060 wpt_uint8* pSendBuffer = NULL;
39061 wpt_uint16 usDataOffset = 0;
39062 wpt_uint16 usSendSize = 0;
39063 struct WDI_APFind_cmd *pwdiapFindRequestInd;
39064 tQRFPrefNetwListParams *phalAPFindRequestParam;
39065 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
39066 wpt_uint16 buffer_len = 0;
39067
39068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39069
39070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39071 "%s", __func__);
39072
39073 /*-------------------------------------------------------------------------
39074 Sanity check
39075 ------------------------------------------------------------------------*/
39076 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
39077 {
39078 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39079 "%s: Invalid parameters", __func__);
39080 WDI_ASSERT(0);
39081 return WDI_STATUS_E_FAILURE;
39082 }
39083 pwdiapFindRequestInd = (struct WDI_APFind_cmd *)pEventData->pEventData;
39084 if (pwdiapFindRequestInd->data_len)
39085 buffer_len = sizeof(tQRFPrefNetwListParams);
39086 /*-----------------------------------------------------------------------
39087 Get message buffer
39088 -----------------------------------------------------------------------*/
39089 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
39090 WDI_SET_AP_FIND_IND,
39091 buffer_len,
39092 &pSendBuffer, &usDataOffset, &usSendSize))||
39093 ( usSendSize < (usDataOffset + sizeof(tQRFPrefNetwListParams) )))
39094 {
39095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039096 "Unable to get send buffer in QRF command %pK ",
Kapil Gupta3d923fb2016-12-20 18:59:27 +053039097 pEventData);
39098 WDI_ASSERT(0);
39099 return WDI_STATUS_E_FAILURE;
39100 }
39101 phalAPFindRequestParam =
39102 (tQRFPrefNetwListParams *)(pSendBuffer + usDataOffset);
39103
39104 wpalMemoryCopy(phalAPFindRequestParam,
39105 &pwdiapFindRequestInd->data[0],
39106 pwdiapFindRequestInd->data_len);
39107
39108 pWDICtx->pReqStatusUserData = NULL;
39109 pWDICtx->pfncRspCB = NULL;
39110 /*-------------------------------------------------------------------------
39111 Send WDI_SET_AP_FIND_IND Indication to HAL
39112 -------------------------------------------------------------------------*/
39113
39114 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
39115
39116 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
39117
39118}
39119
39120WDI_Status WDI_process_ap_find_cmd(struct WDI_APFind_cmd *params)
39121{
39122 WDI_EventInfoType wdiEventData;
39123
39124 if (eWLAN_PAL_FALSE == gWDIInitialized)
39125 {
39126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39127 "WDI API call before module is initialized - Fail req");
39128 return WDI_STATUS_E_NOT_ALLOWED;
39129 }
39130
39131 wdiEventData.wdiRequest = WDI_SET_AP_FIND_IND;
39132 wdiEventData.pEventData = params;
39133 wdiEventData.uEventDataSize = sizeof(*params);
39134 wdiEventData.pCBfnc = NULL;
39135 wdiEventData.pUserData = NULL;
39136
39137 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39138
39139}
39140#endif
39141
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053039142/**
39143 * WDI_ProcessSetAllowedActionFramesInd() - Process Allowed action frames
39144 * Indication message and post it to HAL
39145 *
39146 * @pWDICtx: pointer to the WLAN DAL context
39147 * @pEventData: pointer to the event information structure
39148 *
39149 * Return: WDI_Status enumeration
39150 */
39151WDI_Status WDI_ProcessSetAllowedActionFramesInd(WDI_ControlBlockType *pWDICtx,
39152 WDI_EventInfoType *pEventData)
39153{
39154 wpt_uint8 *pSendBuffer;
39155 wpt_uint16 usDataOffset;
39156 wpt_uint16 usSendSize;
39157 wpt_uint16 usLen;
39158 struct WDI_AllowedActionFramesInd* pwdiAllowedActionFramesInd;
39159 tHalAllowedActionFrames* pAllowedActionFrames;
39160 WDI_Status wdiStatus;
39161
39162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
39163 "%s", __func__);
39164
39165 if ((!pEventData) || (!pEventData->pEventData))
39166 {
39167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39168 "%s: Invalid parameters", __func__);
39169 WDI_ASSERT(0);
39170 return WDI_STATUS_E_FAILURE;
39171 }
Abhinav Kumar7c9c3502018-02-26 15:41:14 +053039172 /*-----------------------------------------------------------------------
39173 Get message buffer
39174 -----------------------------------------------------------------------*/
39175 usLen = sizeof(tHalAllowedActionFrames);
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053039176
39177 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
39178 WDI_SET_ALLOWED_ACTION_FRAMES_IND,
39179 sizeof(tHalAllowedActionFrames),
39180 &pSendBuffer, &usDataOffset,
39181 &usSendSize))||
39182 (usSendSize < (usDataOffset + usLen)))
39183 {
39184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039185 "Unable to get send buffer in Allowed Action Frames req %pK",
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053039186 pEventData);
39187 return WDI_STATUS_E_FAILURE;
39188 }
39189
39190 pwdiAllowedActionFramesInd =
39191 (struct WDI_AllowedActionFramesInd*)pEventData->pEventData;
39192 pAllowedActionFrames =
39193 (tHalAllowedActionFrames*)(pSendBuffer+usDataOffset);
39194 pAllowedActionFrames->actionFramesBitMask =
39195 pwdiAllowedActionFramesInd->bitmask;
39196 pAllowedActionFrames->reserved = pwdiAllowedActionFramesInd->reserved;
39197
39198 pWDICtx->pReqStatusUserData = NULL;
39199 pWDICtx->pfncRspCB = NULL;
39200
39201 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
39202 return (wdiStatus != WDI_STATUS_SUCCESS) ?
39203 wdiStatus:WDI_STATUS_SUCCESS_SYNC;
39204}/*WDI_ProcessSetAllowedActionFramesInd*/
39205
39206/**
39207 * WDI_SetAllowedActionFramesInd() - Post Allowed Action Frames Indication to
39208 * WDI Main Event Handler
39209 * @params: pointer to the WDI_AllowedActionFramesInd structure
39210 *
39211 * Return: WDI_Status enumeration
39212 */
39213WDI_Status WDI_SetAllowedActionFramesInd(
39214 struct WDI_AllowedActionFramesInd *params)
39215{
39216 WDI_EventInfoType wdiEventData;
39217
39218 if (eWLAN_PAL_FALSE == gWDIInitialized)
39219 {
39220 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39221 "WDI API call before module is initialized - Fail req");
39222 return WDI_STATUS_E_NOT_ALLOWED;
39223 }
39224
39225 wdiEventData.wdiRequest = WDI_SET_ALLOWED_ACTION_FRAMES_IND;
39226 wdiEventData.pEventData = params;
39227 wdiEventData.uEventDataSize = sizeof(*params);
39228 wdiEventData.pCBfnc = NULL;
39229 wdiEventData.pUserData = NULL;
39230
39231 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39232}
Anurag Chouhan6ee81542017-02-09 18:09:27 +053039233
39234/**
39235 * WDI_ProcessSetArpStatsReq() - WDI api to process arp stats request
39236 * @pWDICtx: wdi context
39237 * @pEventData: event data
39238 *
39239 * Return: WDI_Status
39240 */
39241WDI_Status
39242WDI_ProcessSetArpStatsReq
39243(
39244 WDI_ControlBlockType* pWDICtx,
39245 WDI_EventInfoType* pEventData
39246)
39247{
39248 WDI_SetARPStatsParamsInfoType *pSetARPStatsReqParams;
39249 WDI_SetARPStatsRspCb wdiSetARPStatsRspCb;
39250 wpt_uint8* pSendBuffer;
39251 wpt_uint16 usDataOffset;
39252 wpt_uint16 usSendSize;
39253 WDI_Status wdi_status;
39254 tHalStatsArpReqMsg statsReqParams;
39255
39256 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39257 "%s: %d Enter",__func__, __LINE__);
39258
39259 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
39260 ( NULL == pWDICtx ) )
39261 {
39262 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39263 "%s: Invalid parameters", __func__);
39264 WDI_ASSERT(0);
39265 return WDI_STATUS_E_FAILURE;
39266 }
39267
39268 pSetARPStatsReqParams =
39269 (WDI_SetARPStatsParamsInfoType *)pEventData->pEventData;
39270 wdiSetARPStatsRspCb = (WDI_SetARPStatsRspCb)pEventData->pCBfnc;
39271
39272 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx, WDI_FW_ARP_STATS_REQ,
39273 sizeof(statsReqParams.statsArpReqParams),
39274 &pSendBuffer, &usDataOffset, &usSendSize))||
39275 ( usSendSize < (usDataOffset + sizeof(statsReqParams.statsArpReqParams))))
39276 {
39277 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039278 "Unable to get send buffer in set bss key req %pK %pK %pK",
Anurag Chouhan6ee81542017-02-09 18:09:27 +053039279 pEventData, pSetARPStatsReqParams, wdiSetARPStatsRspCb);
39280 WDI_ASSERT(0);
39281 return WDI_STATUS_E_FAILURE;
39282 }
39283
39284 statsReqParams.statsArpReqParams.set_clr = pSetARPStatsReqParams->flag;
39285 statsReqParams.statsArpReqParams.pkt_type =
39286 pSetARPStatsReqParams->pkt_type;
39287 statsReqParams.statsArpReqParams.ip_addr = pSetARPStatsReqParams->ip_addr;
39288
39289 wpalMemoryCopy( pSendBuffer+usDataOffset,
39290 &statsReqParams.statsArpReqParams,
39291 sizeof(statsReqParams.statsArpReqParams));
39292
39293 wdi_status = WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
39294 wdiSetARPStatsRspCb, pEventData->pUserData,
39295 WDI_FW_ARP_STATS_RSP);
39296
39297 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39298 "%s: %d Exit",__func__, __LINE__);
39299 return wdi_status;
39300}
39301
39302/**
39303 * WDI_SetARPStatsReq() - WDI api to process set arp stats request
39304 * @pwdiSetStatsReqParams: pointer to set stats params
39305 * @wdiSetStatsRspCb: pointer to set response callback
39306 * @pUserData: user data
39307 *
39308 * Return: WDI_Status
39309 */
39310WDI_Status
39311WDI_SetARPStatsReq
39312(
39313 WDI_SetARPStatsParamsInfoType* pwdiSetStatsReqParams,
39314 WDI_SetARPStatsRspCb wdiSetStatsRspCb,
39315 void* pUserData
39316)
39317{
39318 WDI_EventInfoType wdiEventData;
39319
39320 if (eWLAN_PAL_FALSE == gWDIInitialized )
39321 {
39322 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39323 "WDI API call before module is initialized - Fail request");
39324
39325 return WDI_STATUS_E_NOT_ALLOWED;
39326 }
39327
39328 wdiEventData.wdiRequest = WDI_FW_ARP_STATS_REQ;
39329 wdiEventData.pEventData = pwdiSetStatsReqParams;
39330 wdiEventData.uEventDataSize = sizeof(*pwdiSetStatsReqParams);
39331 wdiEventData.pCBfnc = wdiSetStatsRspCb;
39332 wdiEventData.pUserData = pUserData;
39333
39334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39335
39336}/*WDI_GetARPStatsReq*/
39337
39338/**
39339 * WDI_ProcessGetArpStatsReq() - WDI api to process get arp stats request
39340 * @pWDICtx: wdi context
39341 * @pEventData: event data
39342 *
39343 * Return: WDI_Status
39344 */
39345WDI_Status
39346WDI_ProcessGetArpStatsReq
39347(
39348 WDI_ControlBlockType* pWDICtx,
39349 WDI_EventInfoType* pEventData
39350)
39351{
39352 WDI_GetARPStatsParamsInfoType *pGetARPStatsReqParams;
39353 WDI_GetARPStatsRspCb wdiGetARPStatsRspCb;
39354 wpt_uint8* pSendBuffer;
39355 wpt_uint16 usDataOffset;
39356 wpt_uint16 usSendSize;
39357 WDI_Status wdi_status;
39358 tHalStatsGetArpReqMsg statsReqParams;
39359
39360 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39361 "%s: %d Enter",__func__, __LINE__);
39362
39363 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
39364 ( NULL == pWDICtx ) )
39365 {
39366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39367 "%s: Invalid parameters", __func__);
39368 WDI_ASSERT(0);
39369 return WDI_STATUS_E_FAILURE;
39370 }
39371
39372 pGetARPStatsReqParams =
39373 (WDI_GetARPStatsParamsInfoType *)pEventData->pEventData;
39374 wdiGetARPStatsRspCb = (WDI_GetARPStatsRspCb)pEventData->pCBfnc;
39375
39376 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
39377 WDI_FW_GET_ARP_STATS_REQ,
39378 sizeof(statsReqParams.statsGetArpReqParams),
39379 &pSendBuffer, &usDataOffset, &usSendSize))||
39380 ( usSendSize < (usDataOffset +
39381 sizeof(statsReqParams.statsGetArpReqParams))))
39382 {
39383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039384 "Unable to get send buffer in set bss key req %pK %pK %pK",
Anurag Chouhan6ee81542017-02-09 18:09:27 +053039385 pEventData, pGetARPStatsReqParams, wdiGetARPStatsRspCb);
39386 WDI_ASSERT(0);
39387 return WDI_STATUS_E_FAILURE;
39388 }
39389
39390 statsReqParams.statsGetArpReqParams.pkt_type =
39391 pGetARPStatsReqParams->pkt_type;
39392
39393 wpalMemoryCopy( pSendBuffer+usDataOffset,
39394 &statsReqParams.statsGetArpReqParams,
39395 sizeof(statsReqParams.statsGetArpReqParams));
39396
39397 wdi_status = WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
39398 wdiGetARPStatsRspCb, pEventData->pUserData,
39399 WDI_FW_GET_ARP_STATS_RSP);
39400
39401 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39402 "%s: %d Exit",__func__, __LINE__);
39403 return wdi_status;
39404}
39405
39406/**
39407 * WDI_GetARPStatsReq() - WDI api to process get arp stats request
39408 * @pwdiGetStatsReqParams: pointer to get stats params
39409 * @wdiGetStatsRspCb: pointer to get response callback
39410 * @pUserData: user data
39411 *
39412 * Return: WDI_Status
39413 */
39414WDI_Status
39415WDI_GetARPStatsReq
39416(
39417 WDI_GetARPStatsParamsInfoType* pwdiGetStatsReqParams,
39418 WDI_GetARPStatsRspCb wdiGetStatsRspCb,
39419 void* pUserData
39420)
39421{
39422 WDI_EventInfoType wdiEventData;
39423
39424 if (eWLAN_PAL_FALSE == gWDIInitialized )
39425 {
39426 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39427 "WDI API call before module is initialized - Fail request");
39428
39429 return WDI_STATUS_E_NOT_ALLOWED;
39430 }
39431
39432 wdiEventData.wdiRequest = WDI_FW_GET_ARP_STATS_REQ;
39433 wdiEventData.pEventData = pwdiGetStatsReqParams;
39434 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
39435 wdiEventData.pCBfnc = wdiGetStatsRspCb;
39436 wdiEventData.pUserData = pUserData;
39437
39438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39439
39440}/*WDI_GetARPStatsReq*/
39441
39442
Agrawal Ashish17ef5082016-10-17 18:33:21 +053039443#ifdef SAP_AUTH_OFFLOAD
39444/**
39445 * WDI_ProcessSapAuthOffloadInd() - Process SAP AUTH ofload
39446 * Indication message and post it to HAL
39447 *
39448 * @pWDICtx: pointer to the WLAN DAL context
39449 * @pEventData: pointer to the event information structure
39450 *
39451 * Return: WDI_Status enumeration
39452 */
39453WDI_Status
39454WDI_ProcessSapAuthOffloadInd
39455(
39456 WDI_ControlBlockType* pWDICtx,
39457 WDI_EventInfoType* pEventData
39458 )
39459{
39460 wpt_uint8* pSendBuffer = NULL;
39461 wpt_uint16 usDataOffset = 0;
39462 wpt_uint16 usSendSize = 0;
39463 tSapOffloadEnableMsg *sapOffloadEnableIndParam;
39464 struct WDI_sap_ofl_enable_params *pwdiSapOflEnableParams;
39465 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
39466 int buffer_len = 0;
39467
39468 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
39469
39470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
39471 "%s", __func__);
39472
39473 /*-------------------------------------------------------------------------
39474 Sanity check
39475 -------------------------------------------------------------------------*/
39476 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
39477 {
39478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39479 "%s: Invalid parameters", __func__);
39480 WDI_ASSERT(0);
39481 return WDI_STATUS_E_FAILURE;
39482 }
39483 /*-----------------------------------------------------------------------
39484 Get message buffer
39485 -----------------------------------------------------------------------*/
39486 pwdiSapOflEnableParams =
39487 (struct WDI_sap_ofl_enable_params*)pEventData->pEventData;
39488
39489 if (pwdiSapOflEnableParams->psk_len)
39490 buffer_len = pwdiSapOflEnableParams->psk_len +
39491 sizeof(tSapOffloadEnableMsg) - sizeof(tANI_U8);
39492 else
39493 buffer_len = sizeof(tSapOffloadEnableMsg);
39494
39495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
39496 WDI_PROCESS_SAP_AUTH_OFFLOAD_IND,
39497 buffer_len,
39498 &pSendBuffer, &usDataOffset, &usSendSize))||
39499 ( usSendSize < (usDataOffset + sizeof(tSapOffloadEnableMsg) )))
39500 {
39501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonc63b4a22017-09-19 08:30:14 -070039502 "Unable to get send buffer in SAP Auth offload Ind %pK ",
Agrawal Ashish17ef5082016-10-17 18:33:21 +053039503 pEventData);
39504 WDI_ASSERT(0);
39505 return WDI_STATUS_E_FAILURE;
39506 }
39507 pwdiSapOflEnableParams =
39508 (struct WDI_sap_ofl_enable_params*)pEventData->pEventData;
39509 sapOffloadEnableIndParam =
39510 (tSapOffloadEnableMsg*)(pSendBuffer + usDataOffset);
39511 wpalMemoryCopy(&sapOffloadEnableIndParam->selfMacAddr,
39512 &pwdiSapOflEnableParams->macAddr, sizeof(wpt_macAddr));
39513
39514 sapOffloadEnableIndParam->enable = pwdiSapOflEnableParams->enable;
39515 sapOffloadEnableIndParam->rsn_authmode =
39516 pwdiSapOflEnableParams->rsn_authmode;
39517 sapOffloadEnableIndParam->rsn_ucastcipherset =
39518 pwdiSapOflEnableParams->rsn_ucastcipherset;
39519 sapOffloadEnableIndParam->rsn_mcastcipherset =
39520 pwdiSapOflEnableParams->rsn_mcastcipherset;
39521 sapOffloadEnableIndParam->psk_len = pwdiSapOflEnableParams->psk_len;
39522 wpalMemoryCopy(&sapOffloadEnableIndParam->psk, &pwdiSapOflEnableParams->key,
39523 pwdiSapOflEnableParams->psk_len);
39524 pWDICtx->pReqStatusUserData = NULL;
39525 pWDICtx->pfncRspCB = NULL;
39526 /*-------------------------------------------------------------------------
39527 Send SAP_AUTH_OFFLOAD_IND Indication to HAL
39528 -------------------------------------------------------------------------*/
39529 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
39530 return (wdiStatus != WDI_STATUS_SUCCESS) ?
39531 wdiStatus:WDI_STATUS_SUCCESS_SYNC;
39532
39533}
39534
39535/**
39536 * WDI_process_sap_auth_offload() - Process SAP AUTH offload
39537 * Indication message and post it to HAL
39538 *
39539 * @pWDICtx: pointer to the WLAN DAL context
39540 * @pEventData: pointer to the event information structure
39541 *
39542 * Return: WDI_Status enumeration
39543 */
39544WDI_Status WDI_process_sap_auth_offload(
39545 struct WDI_sap_ofl_enable_params *params)
39546{
39547 WDI_EventInfoType wdiEventData;
39548
39549 if (eWLAN_PAL_FALSE == gWDIInitialized)
39550 {
39551 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39552 "WDI API call before module is initialized - Fail req");
39553 return WDI_STATUS_E_NOT_ALLOWED;
39554 }
39555
39556 wdiEventData.wdiRequest = WDI_PROCESS_SAP_AUTH_OFFLOAD_IND;
39557 wdiEventData.pEventData = params;
39558 wdiEventData.uEventDataSize = sizeof(*params);
39559 wdiEventData.pCBfnc = NULL;
39560 wdiEventData.pUserData = NULL;
39561
39562 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39563}
Manjeet Singh3ed79242017-01-11 19:04:32 +053039564
39565/**
39566 * wdi_process_cap_tsf_req() - Send Capture tsf request to FW.
39567 *
39568 * @pWDICtx: pointer to the WLAN DAL context
39569 * @pEventData: pointer to the event information structure
39570 *
39571 * Return: WDI_Status enumeration
39572 */
39573WDI_Status wdi_process_cap_tsf_req(wdi_cap_tsf_params_t *wdi_cap_tsf_req,
39574 wdi_tsf_rsp_cb wdi_cap_tsf_rsp_callback,
39575 void *user_data)
39576{
39577 WDI_EventInfoType wdiEventData;
39578
39579 if (eWLAN_PAL_FALSE == gWDIInitialized)
39580 {
39581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39582 "WDI API call before module is initialized - Fail req");
39583 return WDI_STATUS_E_NOT_ALLOWED;
39584 }
39585
39586 wdiEventData.wdiRequest = WDI_CAP_TSF_REQ;
39587 wdiEventData.pEventData = wdi_cap_tsf_req;
39588 wdiEventData.uEventDataSize = sizeof(*wdi_cap_tsf_req);
39589 wdiEventData.pCBfnc = wdi_cap_tsf_rsp_callback;
39590 wdiEventData.pUserData = user_data;
39591
39592 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39593}
39594/**
39595 * wdi_process_get_tsf_req() - Send Get tsf request to FW.
39596 *
39597 * @pWDICtx: pointer to the WLAN DAL context
39598 * @pEventData: pointer to the event information structure
39599 *
39600 * Return: WDI_Status enumeration
39601 */
39602WDI_Status wdi_process_get_tsf_req(wdi_cap_tsf_params_t *wdi_get_tsf_req,
39603 wdi_tsf_rsp_cb wdi_tsf_rsp_callback,
39604 void *user_data)
39605{
39606 WDI_EventInfoType wdiEventData;
39607
39608 if (eWLAN_PAL_FALSE == gWDIInitialized)
39609 {
39610 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
39611 "WDI API call before module is initialized - Fail req");
39612 return WDI_STATUS_E_NOT_ALLOWED;
39613 }
39614
39615 wdiEventData.wdiRequest = WDI_GET_TSF_REQ;
39616 wdiEventData.pEventData = wdi_get_tsf_req;
39617 wdiEventData.uEventDataSize = sizeof(*wdi_get_tsf_req);
39618 wdiEventData.pCBfnc = wdi_tsf_rsp_callback;
39619 wdiEventData.pUserData = user_data;
39620
39621 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
39622}
39623
39624/**
39625 * wdi_cap_tsf_req() - wdi api for capture tsf request
39626 * @wdi_ctx: pointer to wdi context
39627 * @event_data: pointer to event data
39628 *
39629 * Return: WDI_Status
39630 * WDI_STATUS_SUCCESS - success or else failure status
39631 */
39632WDI_Status wdi_cap_tsf_req (WDI_ControlBlockType *wdi_ctx,
39633 WDI_EventInfoType *event_data)
39634{
39635
39636 wdi_cap_tsf_params_t *wdi_cap_tsf_req_info;
39637 wpt_uint8 *buff = NULL;
39638 wpt_uint16 data_offset = 0;
39639 wpt_uint16 size = 0;
39640 WDI_Status wdi_status;
39641 tHalCapTSFgetReqInd hal_cap_tsf_req;
39642 wdi_tsf_rsp_cb wdi_tsf_rsp_callback;
39643
39644 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39645 "%s: Enter",__func__ );
39646 /* Sanity check */
39647 if ((NULL == wdi_ctx) || (NULL == event_data) ||
39648 (NULL == event_data->pEventData)) {
39649
39650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39651 "%s: Invalid parameters", __func__);
39652 WDI_ASSERT(0);
39653 return WDI_STATUS_E_FAILURE;
39654 }
39655
39656 wdi_cap_tsf_req_info = (wdi_cap_tsf_params_t *)
39657 event_data->pEventData;
39658
39659 /* Get message buffer */
39660 if (( WDI_STATUS_SUCCESS !=
39661 WDI_GetMessageBuffer(wdi_ctx,
39662 WDI_CAP_TSF_REQ,
39663 sizeof(hal_cap_tsf_req.
39664 capTSFget),
39665 &buff, &data_offset, &size))||
39666 (size < (data_offset +
39667 sizeof(hal_cap_tsf_req.capTSFget))))
39668 {
39669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39670 "Unable to get send buffer in GetTsfFrame Req");
39671 WDI_ASSERT(0);
39672 return WDI_STATUS_E_FAILURE;
39673 }
39674 hal_cap_tsf_req.capTSFget.uBssIdx = wdi_cap_tsf_req_info->bss_idx;
39675 hal_cap_tsf_req.capTSFget.capTSFget = wdi_cap_tsf_req_info->capTSFget;
39676
39677 wdi_tsf_rsp_callback = (wdi_tsf_rsp_cb)event_data->pCBfnc;
39678
39679 wpalMemoryCopy(buff+data_offset,
39680 &hal_cap_tsf_req.capTSFget,
39681 sizeof(hal_cap_tsf_req.capTSFget));
39682
39683 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
39684 wdi_tsf_rsp_callback,
39685 event_data->pUserData,
39686 WDI_CAPTURE_GET_TSF_TSTAMP_RSP);
39687
39688 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39689 "%s: Exit",__func__);
39690
39691 return wdi_status;
39692}
39693
39694/**
39695 * wdi_get_tsf_req() - wdi api for get tsf request
39696 * @wdi_ctx: pointer to wdi context
39697 * @event_data: pointer to event data
39698 *
39699 * Return: WDI_Status
39700 * WDI_STATUS_SUCCESS - success or else failure status
39701 */
39702WDI_Status wdi_get_tsf_req (WDI_ControlBlockType *wdi_ctx,
39703 WDI_EventInfoType *event_data)
39704{
39705
39706 wdi_cap_tsf_params_t *wdi_cap_tsf_req_info;
39707 wpt_uint8 *buff = NULL;
39708 wpt_uint16 data_offset = 0;
39709 wpt_uint16 size = 0;
39710 WDI_Status wdi_status;
39711 tHalCapTSFgetReqInd hal_cap_tsf_req;
39712 wdi_tsf_rsp_cb wdi_tsf_rsp_callback;
39713
39714 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39715 "%s: Enter",__func__ );
39716 /* Sanity check */
39717 if ((NULL == wdi_ctx) || (NULL == event_data) ||
39718 (NULL == event_data->pEventData)) {
39719
39720 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39721 "%s: Invalid parameters", __func__);
39722 WDI_ASSERT(0);
39723 return WDI_STATUS_E_FAILURE;
39724 }
39725
39726 wdi_cap_tsf_req_info = (wdi_cap_tsf_params_t *)
39727 event_data->pEventData;
39728
39729 /* Get message buffer */
39730 if (( WDI_STATUS_SUCCESS !=
39731 WDI_GetMessageBuffer(wdi_ctx,
39732 WDI_CAP_TSF_REQ,
39733 sizeof(hal_cap_tsf_req.
39734 capTSFget),
39735 &buff, &data_offset, &size))||
39736 (size < (data_offset +
39737 sizeof(hal_cap_tsf_req.capTSFget))))
39738 {
39739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
39740 "Unable to get send buffer in GetTsfFrame Req");
39741 WDI_ASSERT(0);
39742 return WDI_STATUS_E_FAILURE;
39743 }
39744 hal_cap_tsf_req.capTSFget.uBssIdx = wdi_cap_tsf_req_info->bss_idx;
39745 hal_cap_tsf_req.capTSFget.capTSFget = wdi_cap_tsf_req_info->capTSFget;
39746
39747 wdi_tsf_rsp_callback = (wdi_tsf_rsp_cb)event_data->pCBfnc;
39748
39749 wpalMemoryCopy(buff+data_offset,
39750 &hal_cap_tsf_req.capTSFget,
39751 sizeof(hal_cap_tsf_req.capTSFget));
39752
39753 wdi_status = WDI_SendMsg(wdi_ctx, buff, size,
39754 wdi_tsf_rsp_callback,
39755 event_data->pUserData,
39756 WDI_CAPTURE_GET_TSF_TSTAMP_RSP);
39757
39758 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
39759 "%s: Exit",__func__);
39760
39761 return wdi_status;
39762}
39763
39764/**
39765 * wdi_get_tsf_rsp() - wdi api for the get tsf response
39766 * @wdi_ctx: pointer to the wdi context
39767 * @event_data: pointer to the event data
39768 *
39769 * Return: WDI_Status
39770 * WDI_STATUS_SUCCESS - success or else failure status
39771 */
39772WDI_Status
39773wdi_get_tsf_rsp
39774(
39775 WDI_ControlBlockType *wdi_ctx,
39776 WDI_EventInfoType *event_data
39777)
39778{
39779 wdi_tsf_rsp_cb wdi_tsf_rsp_callback;
39780
39781 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
39782 "%s: Enter ", __func__);
39783 /*-------------------------------------------------------------------
39784 Sanity check
39785 -----------------------------------------------------------------*/
39786 if ((NULL == wdi_ctx) || (NULL == event_data) ||
39787 (NULL == event_data->pEventData))
39788 {
39789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
39790 "%s: Invalid parameters", __func__);
39791 WDI_ASSERT(0);
39792 return WDI_STATUS_E_FAILURE;
39793 }
39794
39795 wdi_tsf_rsp_callback =
39796 (wdi_tsf_rsp_cb)wdi_ctx->pfncRspCB;
39797
39798 if (wdi_tsf_rsp_callback)
39799 wdi_tsf_rsp_callback((void *) event_data->pEventData,
39800 wdi_ctx->pRspCBUserData);
39801 else {
39802 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
39803 "wdi_tsf_rsp_callback is NULL!");
39804 return WDI_STATUS_E_FAILURE;
39805 }
39806
39807 return WDI_STATUS_SUCCESS;
39808}
Agrawal Ashish17ef5082016-10-17 18:33:21 +053039809#endif