blob: 189f4e4f202ff23c6838e7e31bd1667e168d1959 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +05302 * Copyright (c) 2012-2016 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"
Jeff Johnson295189b2012-06-20 16:38:30 -070093
Girish Gowli55caa852015-01-19 16:09:49 +053094#include "vos_api.h"
Girish Gowli55caa852015-01-19 16:09:49 +053095
Jeff Johnson295189b2012-06-20 16:38:30 -070096/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070097 WLAN DAL Control Path Internal Data Definitions and Declarations
Jeff Johnson295189b2012-06-20 16:38:30 -070098 ===========================================================================*/
99#define WDI_WCTS_ACTION_TIMEOUT 2000 /* in msec a very high upper limit */
100
Jeff Johnsone7245742012-09-05 17:12:55 -0700101#define MAC_ADDR_ARRAY(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
102#define MAC_ADDRESS_STR "%02x:%02x:%02x:%02x:%02x:%02x"
103
Yue Mad8cac142013-03-28 11:33:46 -0700104#define FEATURE_NOT_SUPPORTED 127
Sachin Ahuja69bfa982015-04-24 17:02:57 +0530105#define MAX_FW_HOST_CAP_SIZE 1024
Jeff Johnson295189b2012-06-20 16:38:30 -0700106#ifdef FEATURE_WLAN_SCAN_PNO
107#define WDI_PNO_VERSION_MASK 0x8000
108#endif
109
110/* host capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700111static tWlanFeatCaps *gpHostWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700112/* FW capability bitmap global */
Madan Mohan Koyyalamudidfd6aa82012-10-18 20:18:43 -0700113static tWlanFeatCaps *gpFwWlanFeatCaps;
Jeff Johnson295189b2012-06-20 16:38:30 -0700114/* array of features supported. Need to add a new feature
115 * and other two places - wlan_hal_msg.h and halMsg.c (FW file)
116 */
117static placeHolderInCapBitmap supportEnabledFeatures[] =
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800118 {MCC, P2P, DOT11AC, SLM_SESSIONIZATION, DOT11AC_OPMODE
Yathish9f22e662012-12-10 14:21:35 -0800119#ifdef WLAN_SOFTAP_VSTA_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700120 ,SAP32STA //5
Yathish9f22e662012-12-10 14:21:35 -0800121#else
122 ,FEATURE_NOT_SUPPORTED
123#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800124#ifdef FEATURE_WLAN_TDLS
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700125 ,TDLS //6
Yathish9f22e662012-12-10 14:21:35 -0800126#else
127 ,FEATURE_NOT_SUPPORTED
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800128#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700129 ,P2P_GO_NOA_DECOUPLE_INIT_SCAN //7
Yathish9f22e662012-12-10 14:21:35 -0800130#ifdef WLAN_ACTIVEMODE_OFFLOAD_FEATURE
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700131 ,WLANACTIVE_OFFLOAD //8
Yathish9f22e662012-12-10 14:21:35 -0800132#else
133 ,FEATURE_NOT_SUPPORTED
134#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700135 ,FEATURE_NOT_SUPPORTED //9
136 ,FEATURE_NOT_SUPPORTED //10
137 ,FEATURE_NOT_SUPPORTED //11
138 ,FEATURE_NOT_SUPPORTED //12
139 ,FEATURE_NOT_SUPPORTED //13
140 ,FEATURE_NOT_SUPPORTED //14
141 ,FEATURE_NOT_SUPPORTED //15
142 ,FEATURE_NOT_SUPPORTED //16
143 ,FEATURE_NOT_SUPPORTED //17
144 ,FEATURE_NOT_SUPPORTED //18
145 ,FEATURE_NOT_SUPPORTED //19
146 ,FEATURE_NOT_SUPPORTED //20
147 ,FEATURE_NOT_SUPPORTED //21
Yue Ma55855df2013-08-26 10:59:03 -0700148 ,WOW //22
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700149#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Yue Ma55855df2013-08-26 10:59:03 -0700150 ,WLAN_ROAM_SCAN_OFFLOAD //23
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700151#else
152 ,FEATURE_NOT_SUPPORTED
153#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700154 ,FEATURE_NOT_SUPPORTED //24
155 ,FEATURE_NOT_SUPPORTED //25
156 ,IBSS_HEARTBEAT_OFFLOAD //26
Yue Ma55855df2013-08-26 10:59:03 -0700157 ,FEATURE_NOT_SUPPORTED //27
158 ,WLAN_PERIODIC_TX_PTRN //28
Madan Mohan Koyyalamudice419872013-09-13 19:36:52 +0530159#ifdef FEATURE_WLAN_TDLS
160 ,ADVANCE_TDLS //29
161#else
162 ,FEATURE_NOT_SUPPORTED //29
163#endif
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530164 ,FEATURE_NOT_SUPPORTED //30
165 ,FW_IN_TX_PATH //31
Sandeep Puligilla60342762014-01-30 21:05:37 +0530166 ,EXTENDED_NSOFFLOAD_SLOT //32
167 ,CH_SWITCH_V1 //33
168 ,HT40_OBSS_SCAN //34
169 ,UPDATE_CHANNEL_LIST //35
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +0530170 ,FEATURE_NOT_SUPPORTED //36
171 ,FEATURE_NOT_SUPPORTED //37
172 ,FEATURE_NOT_SUPPORTED //38
173#ifdef FEATURE_WLAN_TDLS
174 ,TDLS_SCAN_COEXISTENCE //39
175#else
176 ,FEATURE_NOT_SUPPORTED //39
177#endif
Dino Mycledf0a5d92014-07-04 09:41:55 +0530178#ifdef WLAN_FEATURE_LINK_LAYER_STATS
179 ,LINK_LAYER_STATS_MEAS //40
180#else
181 ,FEATURE_NOT_SUPPORTED //40
182#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +0530183 ,MU_MIMO //41
Dino Myclee8843b32014-07-04 14:21:45 +0530184#ifdef WLAN_FEATURE_EXTSCAN
185 ,EXTENDED_SCAN //42
186#else
187 ,FEATURE_NOT_SUPPORTED //42
188#endif
Mihir Shetec34258c2014-07-30 17:50:27 +0530189 ,DYNAMIC_WMM_PS //43
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800190
Siddharth Bhal171788a2014-09-29 21:02:40 +0530191 ,MAC_SPOOFED_SCAN //44
Sravan Kumar Kairam50b3d752016-02-03 16:01:03 +0530192 ,BMU_ERROR_GENERIC_RECOVERY //45
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530193 ,DISA //46
Abhishek Singh85b74712014-10-08 11:38:19 +0530194 ,FW_STATS //47
Sachin Ahuja825082e2014-11-25 17:34:36 +0530195 ,WPS_PRBRSP_TMPL //48
Abhishek Singh5fef4042014-11-25 18:33:00 +0530196 ,BCN_IE_FLT_DELTA //49
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +0530197 ,FEATURE_NOT_SUPPORTED //50
198#ifdef FEATURE_WLAN_TDLS
199 ,TDLS_OFF_CHANNEL //51
200#else
201 ,FEATURE_NOT_SUPPORTED //51
202#endif
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +0530203 ,RTT3 //52
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530204 ,MGMT_FRAME_LOGGING //53
Ganesh Kondabattinib18b3292015-03-16 16:59:26 +0530205 ,ENHANCED_TXBD_COMPLETION //54
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530206 ,LOGGING_ENHANCEMENT //55
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +0530207#ifdef WLAN_FEATURE_EXTSCAN
208 ,EXT_SCAN_ENHANCED //56
209#else
210 ,FEATURE_NOT_SUPPORTED //56
211#endif
c_manjeecfd1efb2015-09-25 19:32:34 +0530212 ,MEMORY_DUMP_SUPPORTED //57
Sushant Kaushik33200572015-08-05 16:46:20 +0530213 ,PER_PKT_STATS_SUPPORTED //58
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530214 ,FEATURE_NOT_SUPPORTED //59
Mukul Sharmaf1bd9322015-10-20 16:03:42 +0530215#ifdef FEATURE_EXT_LL_STAT
216 ,EXT_LL_STAT //60
217#else
218 ,FEATURE_NOT_SUPPORTED
219#endif
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530220 ,WIFI_CONFIG //61
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530221 ,ANTENNA_DIVERSITY_SELECTION //62
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530222};
Jeff Johnson295189b2012-06-20 16:38:30 -0700223
224/*--------------------------------------------------------------------------
225 WLAN DAL State Machine
226 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700227WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700228{
229 /*WDI_INIT_ST*/
230 {{
231 WDI_MainStart, /*WDI_START_EVENT*/
232 NULL, /*WDI_STOP_EVENT*/
233 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
234 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
235 WDI_MainClose, /*WDI_CLOSE_EVENT*/
236 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
237 }},
238
239 /*WDI_STARTED_ST*/
240 {{
241 WDI_MainStartStarted, /*WDI_START_EVENT*/
242 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
243 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
244 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
245 NULL, /*WDI_CLOSE_EVENT*/
246 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
247 }},
248
249 /*WDI_STOPPED_ST*/
250 {{
251 WDI_MainStart, /*WDI_START_EVENT*/
252 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
253 NULL, /*WDI_REQUEST_EVENT*/
254 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
255 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700256 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700257 }},
258
259 /*WDI_BUSY_ST*/
260 {{
261 WDI_MainStartBusy, /*WDI_START_EVENT*/
262 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
263 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
264 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
265 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
266 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
267 }}
268};
269
Jeff Johnsone7245742012-09-05 17:12:55 -0700270/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700271 DAL Request Processing Array - the functions in this table will only be
272 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700273 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700274 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700275WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700276{
277 /*INIT*/
278 WDI_ProcessStartReq, /* WDI_START_REQ */
279 WDI_ProcessStopReq, /* WDI_STOP_REQ */
280 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
281
282 /*SCAN*/
283 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
284 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
285 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
286 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
287
288 /*ASSOCIATION*/
289 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
290 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
291 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
292 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
293 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
294
295 /* Security */
296 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
297 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
298 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
299 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
300
301 /* QoS and BA APIs */
302 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
303 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
304 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
305 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
306 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
307
308 /* Miscellaneous Control APIs */
309 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
310 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
311 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
312 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
313 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
314
315 /*BA APIs*/
316 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
317 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
318
319 /*Beacon processing APIs*/
320 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
321 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
322
323 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
324 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
325 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
326 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700327 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700328 /* PowerSave APIs */
329 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
330 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
331 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
332 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
333 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
334 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
335 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
336 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
337 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
338 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
339 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
340 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
341 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
342 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
343 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
344 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
345 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
346 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
347 /*NV Download APIs*/
348 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
349 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
350 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
351#ifdef WLAN_FEATURE_VOWIFI_11R
352 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
353#else
354 NULL,
355#endif /* WLAN_FEATURE_VOWIFI_11R */
356 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
357 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700358 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700359
360#ifdef FEATURE_OEM_DATA_SUPPORT
361 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
362#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700363 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700364#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700365 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700366
367 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700368
369#ifdef FEATURE_WLAN_SCAN_PNO
370 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
371 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
372 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
373#else
374 NULL,
375 NULL,
376 NULL,
377#endif /* FEATURE_WLAN_SCAN_PNO */
378
379 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700380
Jeff Johnson295189b2012-06-20 16:38:30 -0700381#ifdef WLAN_FEATURE_PACKET_FILTERING
382 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700383 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700384 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700385 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700386 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700387 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700388 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700389 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700390#else
391 NULL,
392 NULL,
393 NULL,
394 NULL,
395#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700396 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700397 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
398 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
399
400 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800401#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700402 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
403#else
404 NULL,
405#endif
406
407#ifdef WLAN_FEATURE_GTK_OFFLOAD
408 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
409 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
410#else
411 NULL,
412 NULL,
413#endif // WLAN_FEATURE_GTK_OFFLOAD
414
415 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
416 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700417#ifdef WLAN_FEATURE_11AC
418 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800419#else
420 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700421#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800422#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800423 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
424#else
schang86c22c42013-03-13 18:41:24 -0700425 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800426#endif
schang86c22c42013-03-13 18:41:24 -0700427 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700428#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700429 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700430#else
431 NULL,
432#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530433#ifdef FEATURE_WLAN_TDLS
434 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
435#else
436 NULL,
437#endif
Leo Chang9056f462013-08-01 19:21:11 -0700438#ifdef FEATURE_WLAN_LPHB
439 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
440#else
441 NULL,
442#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530443
444#ifdef FEATURE_WLAN_BATCH_SCAN
445 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
446#else
447 NULL,
448#endif /* FEATURE_WLAN_BATCH_SCAN */
449
Arif Hussaina5ebce02013-08-09 15:09:58 -0700450 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800451
452 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530453
454 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530455
456#ifdef WLAN_FEATURE_LINK_LAYER_STATS
457 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
458 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
459 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
460#else
461 NULL,
462 NULL,
463 NULL,
464#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530465#ifdef WLAN_FEATURE_EXTSCAN
466 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
467 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
468 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
469 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
470 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
471 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530472 WDI_ProcessEXTScanSetSSIDHotlistReq, /* WDI_EXTSCAN_SET_SSID_HOTLIST_REQ */
473 WDI_ProcessEXTScanResetSSIDHotlistReq, /* WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ */
Dino Mycle41bdc942014-06-10 11:30:24 +0530474#else
475 NULL,
476 NULL,
477 NULL,
478 NULL,
479 NULL,
480 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530481 NULL,
482 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530483#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530484 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530485
486 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530487
488 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530489
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530490 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530491 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530492
493 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
494
Katya Nigamf0511f62015-05-05 16:40:57 +0530495 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
496 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530497 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530498 WDI_ProcessFwrMemDumpReq, /* WDI_FWR_MEM_DUMP_REQ*/
499
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530500 WDI_ProcessRssiMonitorStartReq, /* WDI_START_RSSI_MONITOR_REQ */
501 WDI_ProcessRssiMonitorStopReq, /* WDI_STOP_RSSI_MONITOR_REQ */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530502
503 WDI_ProcessWifiConfigReq, /*WDI_WIFI_CONFIG_SET_REQ*/
schang86c22c42013-03-13 18:41:24 -0700504 /*-------------------------------------------------------------------------
505 Indications
506 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700507 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800508 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530509 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
510 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700511#ifdef WLAN_FEATURE_11W
512 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
513#else
514 NULL,
515#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700516 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
517 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530518#ifdef FEATURE_WLAN_BATCH_SCAN
519 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
520 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
521#else
522 NULL,
523 NULL,
524#endif /* FEATURE_WLAN_BATCH_SCAN */
Chittajit Mitraf5413a42013-10-18 14:20:08 -0700525 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800526
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530527 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800528 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
529
530 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530531#ifdef FEATURE_WLAN_TDLS
532 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
533#else
534 NULL,
535#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530536 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530537 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +0530538 WDI_ProcessEnableDisableCAEventInd, /* WDI_SEND_FREQ_RANGE_CONTROL_IND */
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +0530539
540#ifdef WLAN_FEATURE_EXTSCAN
541 WDI_ProcessHighPriorityDataInfoInd, /* WDI_HIGH_PRIORITY_DATA_INFO_IND */
542#else
543 NULL,
544#endif /* WLAN_FEATURE_EXTSCAN */
545
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530546#ifdef FEATURE_OEM_DATA_SUPPORT
547 WDI_ProcessStartOemDataReqIndNew, /* WDI_START_OEM_DATA_REQ_IND_NEW */
548#else
549 NULL,
550#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530551 WDI_ProcessGetCurrentAntennaIndex, /* WDI_ANTENNA_DIVERSITY_SELECTION_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700552};
553
554
Jeff Johnsone7245742012-09-05 17:12:55 -0700555/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700556 DAL Request Processing Array - the functions in this table will only be
557 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700558 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700559 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700560WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700561{
562 /*INIT*/
563 WDI_ProcessStartRsp, /* WDI_START_RESP */
564 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
565 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
566
567 /*SCAN*/
568 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
569 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
570 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
571 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
572
573 /* ASSOCIATION*/
574 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
575 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
576 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
577 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
578 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
579
580 /* Security */
581 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
582 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
583 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
584 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
585
586 /* QoS and BA APIs */
587 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
588 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
589 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
590 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
591 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
592
593 /* Miscellaneous Control APIs */
594 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
595 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
596 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
597 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
598 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
599
600 /* BA APIs*/
601 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
602 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700603
Jeff Johnson295189b2012-06-20 16:38:30 -0700604 /* IBSS APIs*/
605 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
606 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
607
608 /*Soft AP APIs*/
609 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
610 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
611 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
612 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
613
614 /* PowerSave APIs */
615 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
616 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
617 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
618 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
619 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
620 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
621 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
622 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
623 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
624 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
625 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
626 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
627 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
628 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
629 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
630 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
631 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
632 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700633
Jeff Johnson295189b2012-06-20 16:38:30 -0700634
635 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
636
637 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
638 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
639#ifdef WLAN_FEATURE_VOWIFI_11R
640 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
641#else
642 NULL,
643#endif /* WLAN_FEATURE_VOWIFI_11R */
644 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
645 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700646#ifdef FEATURE_OEM_DATA_SUPPORT
647 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
648#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700649 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700650#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700651 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
652
Jeff Johnson295189b2012-06-20 16:38:30 -0700653 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700654
Jeff Johnson295189b2012-06-20 16:38:30 -0700655 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700656
Jeff Johnsone7245742012-09-05 17:12:55 -0700657 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
658
Jeff Johnson295189b2012-06-20 16:38:30 -0700659#ifdef FEATURE_WLAN_SCAN_PNO
660 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
661 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
662 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
663#else
664 NULL,
665 NULL,
666 NULL,
667#endif // FEATURE_WLAN_SCAN_PNO
668
669 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700670 /*---------------------------------------------------------------------
671 Indications
672 ---------------------------------------------------------------------*/
673#ifdef WLAN_FEATURE_PACKET_FILTERING
674 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700675 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700676 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700677 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700678 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700679 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700680 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700681 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700682#else
683 NULL,
684 NULL,
685 NULL,
686 NULL,
687#endif // WLAN_FEATURE_PACKET_FILTERING
688
689 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
690 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
691
692 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800693#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700694 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
695#else
696 NULL,
697#endif
698
699#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700700 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
701 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700702#else
703 NULL,
704 NULL,
705#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700706 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
707 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700708#ifdef WLAN_FEATURE_11AC
709 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700710#else
711 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700712#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800713#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800714 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
715#else
716 NULL,
717#endif
schang86c22c42013-03-13 18:41:24 -0700718 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700719#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700720 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700721#else
722 NULL,
723#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530724#ifdef FEATURE_WLAN_TDLS
725 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
726#else
727 NULL,
728#endif
Leo Chang9056f462013-08-01 19:21:11 -0700729#ifdef FEATURE_WLAN_LPHB
730 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
731#else
732 NULL,
733#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530734
735#ifdef FEATURE_WLAN_BATCH_SCAN
736 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
737#else
738 NULL,
739#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800740 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530741
c_hpothu92367912014-05-01 15:18:17 +0530742 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800743
c_hpothu92367912014-05-01 15:18:17 +0530744 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
745
746 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800747
Sunil Duttbd736ed2014-05-26 21:19:41 +0530748
749#ifdef WLAN_FEATURE_LINK_LAYER_STATS
750 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
751 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
752 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
753#else
754 NULL,
755 NULL,
756 NULL,
757#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530758#ifdef WLAN_FEATURE_EXTSCAN
759 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
760 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
761 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
762 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
763 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
764 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530765 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
766 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530767#else
768 NULL,
769 NULL,
770 NULL,
771 NULL,
772 NULL,
773 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530774 NULL,
775 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530776#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530777 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530778
779 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530780
781 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530782 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530783 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530784
Srinivas Dasari32a79262015-02-19 13:04:49 +0530785 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
786
Katya Nigamf0511f62015-05-05 16:40:57 +0530787 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
788 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530789 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530790 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530791 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
792 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530793
794 WDI_ProcessWificonfigSetRsp, /* /WDI_WIFI_CONFIG_SET_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700795 /*---------------------------------------------------------------------
796 Indications
797 ---------------------------------------------------------------------*/
798 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
799 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
800 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
801 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
802 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
803 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
804
805 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
806
807 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
808
Jeff Johnson295189b2012-06-20 16:38:30 -0700809 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700810
811#ifdef FEATURE_WLAN_SCAN_PNO
812 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
813#else
814 NULL,
815#endif // FEATURE_WLAN_SCAN_PNO
816
817#ifdef WLAN_WAKEUP_EVENTS
818 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
819#else // WLAN_WAKEUP_EVENTS
820 NULL,
821#endif // WLAN_WAKEUP_EVENTS
822
823 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800824
Viral Modid86bde22012-12-10 13:09:21 -0800825 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530826#ifdef FEATURE_WLAN_TDLS
827 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
828#else
829 NULL,
830#endif
Leo Chang9056f462013-08-01 19:21:11 -0700831
832#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700833 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700834#else
835 NULL,
836#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700837
838 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700839
840 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530841
842#ifdef FEATURE_WLAN_BATCH_SCAN
843 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
844#else
845 NULL,
846#endif
847
Leo Chang0b0e45a2013-12-15 15:18:55 -0800848#ifdef FEATURE_WLAN_CH_AVOID
849 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
850#else
851 NULL,
852#endif /* FEATURE_WLAN_CH_AVOID */
853
Sunil Duttbd736ed2014-05-26 21:19:41 +0530854 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
855#ifdef WLAN_FEATURE_LINK_LAYER_STATS
856 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
857#else
858 NULL,
859#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530860#ifdef WLAN_FEATURE_EXTSCAN
861 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
862 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
863 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
864 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530865 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530866#else
867 NULL,
868 NULL,
869 NULL,
870 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530871 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530872#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530873#ifdef FEATURE_WLAN_TDLS
874 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
875#else
876 NULL,
877#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530878 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530879 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530880 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530881 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530882#ifdef FEATURE_OEM_DATA_SUPPORT
883 WDI_ProcessStartOemDataRspIndNew, /* WDI_HAL_START_OEM_DATA_RSP_IND_NEW */
884#else
885 NULL,
886#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530887 WDI_ProcessGetCurrentAntennaIndexRsp, /* WDI_ANTENNA_DIVERSITY_SELECTION_RSP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700888};
889
890
Jeff Johnsone7245742012-09-05 17:12:55 -0700891/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700892 WLAN DAL Global Control Block
893 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700894WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700895static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
896
Jeff Johnsone7245742012-09-05 17:12:55 -0700897const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700898
899/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700900WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700901void* WDI_GET_PAL_CTX( void )
902{
Jeff Johnsone7245742012-09-05 17:12:55 -0700903 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700904}/*WDI_GET_PAL_CTX*/
905
Jeff Johnsone7245742012-09-05 17:12:55 -0700906/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700907 Helper inline converters
908 ============================================================================*/
909/*Convert WDI driver type into HAL driver type*/
910WPT_STATIC WPT_INLINE WDI_Status
911WDI_HAL_2_WDI_STATUS
912(
913 eHalStatus halStatus
914);
915
916/*Convert WDI request type into HAL request type*/
917WPT_STATIC WPT_INLINE tHalHostMsgType
918WDI_2_HAL_REQ_TYPE
919(
920 WDI_RequestEnumType wdiReqType
921);
922
923/*Convert WDI response type into HAL response type*/
924WPT_STATIC WPT_INLINE WDI_ResponseEnumType
925HAL_2_WDI_RSP_TYPE
926(
927 tHalHostMsgType halMsg
928);
929
930/*Convert WDI driver type into HAL driver type*/
931WPT_STATIC WPT_INLINE tDriverType
932WDI_2_HAL_DRV_TYPE
933(
934 WDI_DriverType wdiDriverType
935);
936
937/*Convert WDI stop reason into HAL stop reason*/
938WPT_STATIC WPT_INLINE tHalStopType
939WDI_2_HAL_STOP_REASON
940(
941 WDI_StopType wdiStopType
942);
943
944/*Convert WDI scan mode type into HAL scan mode type*/
945WPT_STATIC WPT_INLINE eHalSysMode
946WDI_2_HAL_SCAN_MODE
947(
948 WDI_ScanMode wdiScanMode
949);
950
951/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700952WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700953WDI_2_HAL_SEC_CH_OFFSET
954(
955 WDI_HTSecondaryChannelOffset wdiSecChOffset
956);
957
958/*Convert WDI BSS type into HAL BSS type*/
959WPT_STATIC WPT_INLINE tSirBssType
960WDI_2_HAL_BSS_TYPE
961(
962 WDI_BssType wdiBSSType
963);
964
965/*Convert WDI NW type into HAL NW type*/
966WPT_STATIC WPT_INLINE tSirNwType
967WDI_2_HAL_NW_TYPE
968(
969 WDI_NwType wdiNWType
970);
971
972/*Convert WDI chanel bonding type into HAL cb type*/
973WPT_STATIC WPT_INLINE ePhyChanBondState
974WDI_2_HAL_CB_STATE
975(
976 WDI_PhyChanBondState wdiCbState
977);
978
979/*Convert WDI chanel bonding type into HAL cb type*/
980WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
981WDI_2_HAL_HT_OPER_MODE
982(
983 WDI_HTOperatingMode wdiHTOperMode
984);
985
986/*Convert WDI mimo PS type into HAL mimo PS type*/
987WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
988WDI_2_HAL_MIMO_PS
989(
990 WDI_HTMIMOPowerSaveState wdiHTOperMode
991);
992
993/*Convert WDI ENC type into HAL ENC type*/
994WPT_STATIC WPT_INLINE tAniEdType
995WDI_2_HAL_ENC_TYPE
996(
997 WDI_EncryptType wdiEncType
998);
999
1000/*Convert WDI WEP type into HAL WEP type*/
1001WPT_STATIC WPT_INLINE tAniWepType
1002WDI_2_HAL_WEP_TYPE
1003(
1004 WDI_WepType wdiWEPType
1005);
1006
1007/*Convert WDI Link State into HAL Link State*/
1008WPT_STATIC WPT_INLINE tSirLinkState
1009WDI_2_HAL_LINK_STATE
1010(
1011 WDI_LinkStateType wdiLinkState
1012);
1013
Jeff Johnsone7245742012-09-05 17:12:55 -07001014/*Translate a STA Context from WDI into HAL*/
1015WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -07001016void
1017WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -07001018(
Jeff Johnson295189b2012-06-20 16:38:30 -07001019 tConfigStaParams* phalConfigSta,
1020 WDI_ConfigStaReqInfoType* pwdiConfigSta
1021);
Jeff Johnsone7245742012-09-05 17:12:55 -07001022
1023/*Translate a Rate set info from WDI into HAL*/
1024WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -07001025WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -07001026(
Jeff Johnson295189b2012-06-20 16:38:30 -07001027 tSirMacRateSet* pHalRateSet,
1028 WDI_RateSet* pwdiRateSet
1029);
1030
1031/*Translate an EDCA Parameter Record from WDI into HAL*/
1032WPT_STATIC WPT_INLINE void
1033WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -07001034(
Jeff Johnson295189b2012-06-20 16:38:30 -07001035 tSirMacEdcaParamRecord* phalEdcaParam,
1036 WDI_EdcaParamRecord* pWDIEdcaParam
1037);
1038
1039/*Copy a management frame header from WDI fmt into HAL fmt*/
1040WPT_STATIC WPT_INLINE void
1041WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1042(
1043 tSirMacMgmtHdr* pmacMgmtHdr,
1044 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1045);
1046
1047/*Copy config bss parameters from WDI fmt into HAL fmt*/
1048WPT_STATIC WPT_INLINE void
1049WDI_CopyWDIConfigBSSToHALConfigBSS
1050(
1051 tConfigBssParams* phalConfigBSS,
1052 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1053);
1054
Jeff Johnsone7245742012-09-05 17:12:55 -07001055/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001056 pointed to by user data */
1057WPT_STATIC WPT_INLINE void
1058WDI_ExtractRequestCBFromEvent
1059(
1060 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001061 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001062 void** ppUserData
1063);
1064
1065wpt_uint8
1066WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001067(
Jeff Johnson295189b2012-06-20 16:38:30 -07001068 WDI_ControlBlockType* pWDICtx,
1069 WDI_BSSSessionType** ppSession
1070);
1071
1072void
1073WDI_AddBcastSTAtoSTATable
1074(
1075 WDI_ControlBlockType* pWDICtx,
1076 WDI_AddStaParams * staParams,
1077 wpt_uint16 usBcastStaIdx
1078);
1079
1080WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001081(
Jeff Johnson295189b2012-06-20 16:38:30 -07001082 WDI_ControlBlockType* pWDICtx,
1083 WDI_EventInfoType* pEventData
1084);
1085
1086void
1087WDI_SetPowerStateCb
1088(
1089 wpt_status status,
1090 unsigned int dxePhyAddr,
1091 void *pContext
1092);
1093
Jeff Johnson295189b2012-06-20 16:38:30 -07001094/**
1095 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001096
1097 @param wdiReqMsgId: WDI Message request Id
1098
1099 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001100 @return Result of the function call
1101*/
1102static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1103{
1104 switch (wdiReqMsgId)
1105 {
1106 CASE_RETURN_STRING( WDI_START_REQ );
1107 CASE_RETURN_STRING( WDI_STOP_REQ );
1108 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1109 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1110 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1111 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1112 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1113 CASE_RETURN_STRING( WDI_JOIN_REQ );
1114 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1115 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1116 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1117 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1118 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1119 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1120 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1121 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1122 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1123 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1124 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1125 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1126 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1127 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001128 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001129 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1130 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1131 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1132 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1133 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1134 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1135 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1136 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1137 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1138 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1139 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1140 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001141 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001142 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301143#ifdef FEATURE_WLAN_TDLS
1144 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301145 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301146#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001147 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1148 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1149 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1150 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1151 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1152 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1153 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1154 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1155 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1156 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1157 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1158 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1159 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1160 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1161 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1162 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1163 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1164 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1165 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1166 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1167 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1168 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1169 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1170 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1171 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001172 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001173 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1174 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1175 #ifdef FEATURE_WLAN_SCAN_PNO
1176 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1177 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1178 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1179 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001180#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001181 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001182#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001183 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1184 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1185 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1186 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1187 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1188 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1189 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1190 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1191 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301192 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001193 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001194 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001195#ifdef WLAN_FEATURE_11W
1196 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1197#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301198#ifdef FEATURE_WLAN_BATCH_SCAN
1199 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1200 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1201 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1202#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301203 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1204 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001205 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301206#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1207 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1208 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1209 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1210#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301211#ifdef WLAN_FEATURE_EXTSCAN
1212 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1213 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1214 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1215 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1216 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1217 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301218 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1219 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +05301220 CASE_RETURN_STRING( WDI_HIGH_PRIORITY_DATA_INFO_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301221#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301222 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301223 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301224 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301225 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301226 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301227 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301228 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301229 CASE_RETURN_STRING( WDI_MON_START_REQ );
1230 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301231 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301232 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301233 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301234 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1235 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301236 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ_IND_NEW );
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301237 CASE_RETURN_STRING( WDI_ANTENNA_DIVERSITY_SELECTION_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001238 default:
1239 return "Unknown WDI MessageId";
1240 }
1241}
1242
1243
1244
1245/**
1246 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001247
1248 @param wdiRespMsgId: WDI Message response Id
1249
1250 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001251 @return Result of the function call
1252*/
1253static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1254{
1255 switch (wdiRespMsgId)
1256 {
1257 CASE_RETURN_STRING( WDI_START_RESP );
1258 CASE_RETURN_STRING( WDI_STOP_RESP );
1259 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1260 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1261 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1262 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1263 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1264 CASE_RETURN_STRING( WDI_JOIN_RESP );
1265 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1266 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1267 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1268 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1269 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1270 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1271 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1272 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1273 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1274 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1275 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1276 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1277 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1278 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1279 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1280 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1281 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1282 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1283 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1284 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1285 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1286 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1287 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1288 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1289 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1290 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1291 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301292#ifdef FEATURE_WLAN_TDLS
1293 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301294 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301295 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1296#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001297 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1298 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1299 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1300 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1301 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1302 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1303 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1304 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1305 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1306 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1307 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1308 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1309 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1310 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1311 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1312 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1313 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1314 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1315 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1316 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1317 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1318 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1319 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1320 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1321 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001322 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001323 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1324 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1325 #ifdef FEATURE_WLAN_SCAN_PNO
1326 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1327 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1328 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1329 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001330#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001331 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001332#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001333 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1334 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1335 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1336 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1337 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1338 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1339 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1340 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001341 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301342#ifdef FEATURE_WLAN_BATCH_SCAN
1343 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1344#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001345 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301346 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301347 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301348#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1349 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1350 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1351 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1352#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301353#ifdef WLAN_FEATURE_EXTSCAN
1354 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1355 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1356 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1357 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1358 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1359 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301360 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1361 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301362 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1363 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1364 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1365 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301366 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301367#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301368 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301369 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301370 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301371 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301372 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301373 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301374 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1375 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Arun Khandavalli7eeb1592015-10-19 21:36:57 +05301376 CASE_RETURN_STRING( WDI_WIFI_CONFIG_SET_RSP);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301377#ifdef FEATURE_OEM_DATA_SUPPORT
1378 CASE_RETURN_STRING (WDI_HAL_START_OEM_DATA_RSP_IND_NEW);
1379#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301380 CASE_RETURN_STRING (WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001381 default:
1382 return "Unknown WDI MessageId";
1383 }
1384}
1385
1386/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301387 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1388 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301389 @param capabilityBitmap - Base address of a 4 element Bitmap array
1390 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301391 @see
1392 @returns None
1393 */
1394void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1395{
Abhishek Singh08b60122014-02-04 18:05:23 +05301396 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301397 char *pTempCapStr = NULL;
1398 char *pCapStr = NULL;
1399 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1400 if (NULL == pTempCapStr)
1401 {
1402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1403 "Memory allocation failed for CapStr");
1404 return;
1405 }
1406
1407 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301408 for (j = 0; j < 4; j++) {
1409 for (i = 0; i < 32; i++) {
1410 if ((*(capabilityBitmap + j) & (1 << i))) {
1411 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301412 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1413 pCapStr += strlen("MCC");
1414 break;
1415 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1416 pCapStr += strlen("P2P");
1417 break;
1418 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1419 pCapStr += strlen("DOT11AC");
1420 break;
1421 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1422 pCapStr += strlen("SLM_SESSIONIZATION");
1423 break;
1424 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1425 pCapStr += strlen("DOT11AC_OPMODE");
1426 break;
1427 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1428 pCapStr += strlen("SAP32STA");
1429 break;
1430 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1431 pCapStr += strlen("TDLS");
1432 break;
1433 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1434 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1435 break;
1436 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1437 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1438 break;
1439 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1440 pCapStr += strlen("BEACON_OFFLOAD");
1441 break;
1442 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1443 pCapStr += strlen("SCAN_OFFLOAD");
1444 break;
1445 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1446 pCapStr += strlen("ROAM_OFFLOAD");
1447 break;
1448 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1449 pCapStr += strlen("BCN_MISS_OFFLOAD");
1450 break;
1451 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1452 pCapStr += strlen("STA_POWERSAVE");
1453 break;
1454 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1455 pCapStr += strlen("AP_UAPSD");
1456 break;
1457 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1458 pCapStr += strlen("AP_DFS");
1459 break;
1460 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1461 pCapStr += strlen("BLOCKACK");
1462 break;
1463 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1464 pCapStr += strlen("PHY_ERR");
1465 break;
1466 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1467 pCapStr += strlen("BCN_FILTER");
1468 break;
1469 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1470 pCapStr += strlen("RTT");
1471 break;
1472 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1473 pCapStr += strlen("RATECTRL");
1474 break;
1475 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1476 pCapStr += strlen("WOW");
1477 break;
1478 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1479 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1480 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301481 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1482 pCapStr += strlen("FW_IN_TX_PATH");
1483 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301484 case HT40_OBSS_SCAN:
1485 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1486 "%s", "HT40_OBSS_SCAN");
1487 pCapStr += strlen("HT40_OBSS_SCAN");
1488 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301489 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1490 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1491 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1492 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1493 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301494 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1495 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1496 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301497 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1498 pCapStr += strlen("CH_SWITCH_V1");
1499 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301500#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1501 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1502 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1503 break;
1504#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301505#ifdef WLAN_FEATURE_EXTSCAN
1506 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1507 pCapStr += strlen("EXTENDED_SCAN");
1508 break;
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +05301509 case EXT_SCAN_ENHANCED: snprintf(pCapStr, sizeof("EXT_SCAN_ENHANCED"), "%s", "EXT_SCAN_ENHANCED");
1510 pCapStr += strlen("EXT_SCAN_ENHANCED");
1511 break;
Dino Myclee8843b32014-07-04 14:21:45 +05301512#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301513 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1514 pCapStr += strlen("MU_MIMO");
1515 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301516
Mihir Shetec34258c2014-07-30 17:50:27 +05301517 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1518 pCapStr += strlen("DYNAMIC_WMM_PS");
1519 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301520 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1521 pCapStr += strlen("FW_STATS");
1522 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301523 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1524 pCapStr += strlen("MAC_SPOOFED_SCAN");
1525 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301526 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1527 pCapStr += strlen("WPS_PRBRSP_TMPL");
1528 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301529 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1530 pCapStr += strlen("BCN_IE_FLT_DELTA");
1531 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301532 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1533 pCapStr += strlen("MGMT_FRAME_LOGGING");
1534 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301535 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1536 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1537 break;
1538
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301539 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1540 pCapStr += strlen("DISA");
1541 break;
1542
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301543 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1544 pCapStr += strlen("TDLS_OFF_CHANNEL");
1545 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301546 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1547 pCapStr += strlen("LOGGING_ENHANCEMENT");
1548 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301549 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1550 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1551 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301552 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1553 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1554 break;
Mukul Sharmaf1bd9322015-10-20 16:03:42 +05301555 case EXT_LL_STAT: snprintf(pCapStr, sizeof("EXT_LL_STAT"), "%s", "EXT_LL_STAT");
1556 pCapStr += strlen("EXT_LL_STAT");
1557 break;
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +05301558 case RTT3: snprintf(pCapStr, sizeof("RTT3"), "%s", "RTT3");
1559 pCapStr += strlen("RTT3");
1560 break;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301561 case ANTENNA_DIVERSITY_SELECTION:
1562 snprintf(pCapStr,
1563 sizeof("ANTENNA_DIVERSITY_SELECTION"), "%s",
1564 "ANTENNA_DIVERSITY_SELECTION");
1565 pCapStr += strlen("ANTENNA_DIVERSITY_SELECTION");
1566 break;
Abhishek Singh08b60122014-02-04 18:05:23 +05301567 }
1568 *pCapStr++ = ',';
1569 *pCapStr++ = ' ';
1570 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301571 }
1572 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301573 pCapStr -= 2;
1574 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301576 if (pTempCapStr)
1577 {
1578 vos_mem_free(pTempCapStr);
1579 pTempCapStr = NULL;
1580 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301581}
1582
1583/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001584 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001585
1586 @param halStatusId: HAL status Id
1587
1588 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001589 @return Result of the function call
1590*/
1591static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1592{
1593 switch (halStatusId)
1594 {
1595 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1596 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1597 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1598 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1599 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1600 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1601 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1602 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1603 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1604 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1605 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1606 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1607 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1608 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1609 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1610 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1611 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1612 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1613 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1614 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1615 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1616 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1617 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1618 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1619 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1620 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1621 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1622 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1623 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1624 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1625 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1626 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1627 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1628 default:
1629 return "Unknown HAL status";
1630 }
1631}
1632
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301633/**
1634 * wdi_state_info_dump() - prints state information of wdi layer
1635 */
1636static void wdi_state_info_dump(void)
1637{
1638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1639 "%s pending commands: %d", __func__,
1640 gWDICb.wptPendingQueue.count);
1641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1642 "uGlobalState %d wdiExpectedResponse: %d",
1643 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1644}
1645
1646
1647/**
1648 * wdi_register_debug_callback() - registration function for wdi layer
1649 * to print WDI state information
1650 */
1651static void wdi_register_debug_callback(void)
1652{
1653 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1654}
1655
1656
Jeff Johnsone7245742012-09-05 17:12:55 -07001657/*========================================================================
1658
Jeff Johnson295189b2012-06-20 16:38:30 -07001659 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001660
Jeff Johnson295189b2012-06-20 16:38:30 -07001661==========================================================================*/
1662
1663/**
1664 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001665
Jeff Johnson295189b2012-06-20 16:38:30 -07001666 DAL will allocate all the resources it needs. It will open PAL, it will also
1667 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001668 DXE/SMD or any other drivers that they need.
1669
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301670 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001671 ppWDIGlobalCtx: output pointer of Global Context
1672 pWdiDevCapability: output pointer of device capability
1673
1674 @return Result of the function call
1675*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001676WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001677WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001678(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301679 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001680 void** ppWDIGlobalCtx,
1681 WDI_DeviceCapabilityType* pWdiDevCapability,
1682 unsigned int driverType
1683)
1684{
1685 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001686 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001687 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001688 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1690
1691 /*---------------------------------------------------------------------
1692 Sanity check
1693 ---------------------------------------------------------------------*/
1694 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1695 {
1696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1697 "Invalid input parameters in WDI_Init");
1698
Jeff Johnsone7245742012-09-05 17:12:55 -07001699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001700 }
1701
1702 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001703 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001704 ---------------------------------------------------------------------*/
1705 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1706 {
1707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1708 "WDI module already initialized - return");
1709
Jeff Johnsone7245742012-09-05 17:12:55 -07001710 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001711 }
1712
1713 /*Module is now initialized - this flag is to ensure the fact that multiple
1714 init will not happen on WDI
1715 !! - potential race does exist because read and set are not atomic,
1716 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001717 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001718
1719 /*Setup the control block */
1720 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301721 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001722
1723 /*Setup the STA Table*/
1724 wdiStatus = WDI_STATableInit(&gWDICb);
1725 if ( WDI_STATUS_SUCCESS != wdiStatus )
1726 {
1727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1728 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001729 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001730 goto fail_STATableInit;
1731 }
1732
1733 /*------------------------------------------------------------------------
1734 Open the PAL
1735 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301736 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001737 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1738 {
1739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1740 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001741 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001742 goto fail_wpalOpen;
1743 }
1744
1745 /*Initialize main synchro mutex - it will be used to ensure integrity of
1746 the main WDI Control Block*/
1747 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1748 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1749 {
1750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1751 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001752 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001753 goto fail_mutex;
1754 }
1755
1756 /*Initialize the response timer - it will be used to time all messages
1757 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001758 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1759 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 &gWDICb);
1761 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1762 {
1763 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1764 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001765 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001766 goto fail_timer;
1767 }
1768
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001769 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1770 WDI_SsrTimerCB,
1771 &gWDICb);
1772 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1773 {
1774 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1775 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001776 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001777 goto fail_timer2;
1778 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001779 /* Initialize the WDI Pending Request Queue*/
1780 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1781 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1782 {
1783 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1784 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001785 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001786 goto fail_pend_queue;
1787 }
1788
1789 /*Init WDI Pending Assoc Id Queue */
1790 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1791 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1792 {
1793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1794 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001795 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001796 goto fail_assoc_queue;
1797 }
1798
1799 /*Initialize the BSS sessions pending Queue */
1800 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1801 {
1802 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1803 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1804 {
1805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1806 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001807 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001808 goto fail_bss_queue;
1809 }
1810 }
1811
1812 /*Indicate the control block is sufficiently initialized for callbacks*/
1813 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1814
1815 /*------------------------------------------------------------------------
1816 Initialize the Data Path Utility Module
1817 ------------------------------------------------------------------------*/
1818 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1819 if ( WDI_STATUS_SUCCESS != wdiStatus )
1820 {
1821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1822 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001823 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001824 goto fail_dp_util_init;
1825 }
1826
1827 /* Init Set power state event */
1828 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001829 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001830 {
1831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1832 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001833 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001834 goto fail_power_event;
1835 }
1836
1837 /* Init WCTS action event */
1838 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001839 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001840 {
1841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1842 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001843 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001844 goto fail_wcts_event;
1845 }
1846
1847 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001848 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001849 ------------------------------------------------------------------------*/
1850 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1851 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001852 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001853 wctsCBs.wctsRxMsgCBData = &gWDICb;
1854
Jeff Johnsone7245742012-09-05 17:12:55 -07001855 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001856 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001857 WDI_CT_CHANNEL_SIZE,
1858 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001859
1860 if ( NULL == gWDICb.wctsHandle )
1861 {
1862 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001863 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001864 goto fail_wcts_open;
1865 }
1866
1867 gWDICb.driverMode = (tDriverType)driverType;
1868 /* FTM mode not need to open Transport Driver */
1869 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001870 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001871 /*------------------------------------------------------------------------
1872 Open the Data Transport
1873 ------------------------------------------------------------------------*/
1874 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1875 {
1876 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001877 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001878 goto fail_wdts_open;
1879 }
1880 }
1881
1882 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001883 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301884 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 /*Send the context as a ptr to the global WDI Control Block*/
1886 *ppWDIGlobalCtx = &gWDICb;
1887
1888 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001889 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001890 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1891 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301892
1893 wdi_register_debug_callback();
1894
Jeff Johnson295189b2012-06-20 16:38:30 -07001895 return WDI_STATUS_SUCCESS;
1896
1897 /* ERROR handlers
1898 Undo everything that completed successfully */
1899
1900 fail_wdts_open:
1901 {
1902 wpt_status eventStatus;
1903
1904 /* Closing WCTS in this scenario is tricky since it has to close
1905 the SMD channel and then we get notified asynchronously when
1906 the channel has been closed. So we take some of the logic from
1907 the "normal" close procedure in WDI_Close()
1908 */
1909
1910 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001911 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001912 {
1913 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001914 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001915 }
1916
1917 WCTS_CloseTransport(gWDICb.wctsHandle);
1918
1919 /* Wait for WCTS to close the control transport. If we were able
1920 to reset the event flag, then we'll wait for the event,
1921 otherwise we'll wait for a maximum amount of time required for
1922 the channel to be closed */
1923 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1924 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001925 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001926 WDI_WCTS_ACTION_TIMEOUT);
1927 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1928 {
1929 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001930 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001931 }
1932 }
1933 else
1934 {
1935 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1936 }
1937 }
1938 fail_wcts_open:
1939 wpalEventDelete(&gWDICb.wctsActionEvent);
1940 fail_wcts_event:
1941 wpalEventDelete(&gWDICb.setPowerStateEvent);
1942 fail_power_event:
1943 WDI_DP_UtilsExit(&gWDICb);
1944 fail_dp_util_init:
1945 gWDICb.magic = 0;
1946 fail_bss_queue:
1947 /* entries 0 thru i-1 were successfully initialized */
1948 while (0 < i)
1949 {
1950 i--;
1951 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1952 }
1953 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1954 fail_assoc_queue:
1955 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1956 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001957 wpalTimerDelete(&gWDICb.ssrTimer);
1958 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001959 wpalTimerDelete(&gWDICb.wptResponseTimer);
1960 fail_timer:
1961 wpalMutexDelete(&gWDICb.wptMutex);
1962 fail_mutex:
1963 wpalClose(gWDICb.pPALContext);
1964 fail_wpalOpen:
1965 WDI_STATableClose(&gWDICb);
1966 fail_STATableInit:
1967 gWDIInitialized = eWLAN_PAL_FALSE;
1968
1969 return WDI_STATUS_E_FAILURE;
1970
1971}/*WDI_Init*/;
1972
1973/**
1974 @brief WDI_Start will be called when the upper MAC is ready to
1975 commence operation with the WLAN Device. Upon the call
1976 of this API the WLAN DAL will pack and send a HAL Start
1977 message to the lower RIVA sub-system if the SMD channel
1978 has been fully opened and the RIVA subsystem is up.
1979
1980 If the RIVA sub-system is not yet up and running DAL
1981 will queue the request for Open and will wait for the
1982 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001983 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001984
1985 WDI_Init must have been called.
1986
Jeff Johnsone7245742012-09-05 17:12:55 -07001987 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001988 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001989
Jeff Johnson295189b2012-06-20 16:38:30 -07001990 wdiStartRspCb: callback for passing back the response of
1991 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001992
Jeff Johnson295189b2012-06-20 16:38:30 -07001993 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001994 callback
1995
Jeff Johnson295189b2012-06-20 16:38:30 -07001996 @see WDI_Start
1997 @return Result of the function call
1998*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001999WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002000WDI_Start
2001(
2002 WDI_StartReqParamsType* pwdiStartParams,
2003 WDI_StartRspCb wdiStartRspCb,
2004 void* pUserData
2005)
2006{
2007 WDI_EventInfoType wdiEventData;
2008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2009
2010 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002011 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002012 ------------------------------------------------------------------------*/
2013 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2014 {
2015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2016 "WDI API call before module is initialized - Fail request");
2017
Jeff Johnsone7245742012-09-05 17:12:55 -07002018 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002019 }
2020
2021 /*------------------------------------------------------------------------
2022 Fill in Event data and post to the Main FSM
2023 ------------------------------------------------------------------------*/
2024 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002025 wdiEventData.pEventData = pwdiStartParams;
2026 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
2027 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002028 wdiEventData.pUserData = pUserData;
2029
2030 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2031
2032}/*WDI_Start*/
2033
2034/**
2035 @brief WDI_Stop will be called when the upper MAC is ready to
2036 stop any operation with the WLAN Device. Upon the call
2037 of this API the WLAN DAL will pack and send a HAL Stop
2038 message to the lower RIVA sub-system if the DAL Core is
2039 in started state.
2040
2041 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07002042
2043 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002044
2045 WDI_Start must have been called.
2046
Jeff Johnsone7245742012-09-05 17:12:55 -07002047 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002049
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 wdiStopRspCb: callback for passing back the response of
2051 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002052
Jeff Johnson295189b2012-06-20 16:38:30 -07002053 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002054 callback
2055
Jeff Johnson295189b2012-06-20 16:38:30 -07002056 @see WDI_Start
2057 @return Result of the function call
2058*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002059WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002060WDI_Stop
2061(
2062 WDI_StopReqParamsType* pwdiStopParams,
2063 WDI_StopRspCb wdiStopRspCb,
2064 void* pUserData
2065)
2066{
2067 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002068 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2070
2071 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002073 ------------------------------------------------------------------------*/
2074 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2075 {
2076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2077 "WDI API call before module is initialized - Fail request");
2078
Jeff Johnsone7245742012-09-05 17:12:55 -07002079 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002080 }
2081
Jeff Johnson43971f52012-07-17 12:26:56 -07002082 /*Access to the global state must be locked before cleaning */
2083 wpalMutexAcquire(&pWDICtx->wptMutex);
2084
2085 /*Clear all pending request*/
2086 WDI_ClearPendingRequests(pWDICtx);
2087
2088 /*We have completed cleaning unlock now*/
2089 wpalMutexRelease(&pWDICtx->wptMutex);
2090
Jeff Johnson295189b2012-06-20 16:38:30 -07002091 /* Free the global variables */
2092 wpalMemoryFree(gpHostWlanFeatCaps);
2093 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002094 gpHostWlanFeatCaps = NULL;
2095 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002096
2097 /*------------------------------------------------------------------------
2098 Fill in Event data and post to the Main FSM
2099 ------------------------------------------------------------------------*/
2100 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002101 wdiEventData.pEventData = pwdiStopParams;
2102 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2103 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002104 wdiEventData.pUserData = pUserData;
2105
2106 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2107
2108}/*WDI_Stop*/
2109
2110
2111
2112/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002113 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002114 needs to interact with DAL. DAL will free its control
2115 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002116
2117 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002118
2119 WDI_Stop must have been called.
2120
2121 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002122
Jeff Johnson295189b2012-06-20 16:38:30 -07002123 @see WDI_Stop
2124 @return Result of the function call
2125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002127WDI_Close
2128(
2129 void
2130)
2131{
2132 wpt_uint8 i;
2133 WDI_EventInfoType wdiEventData;
2134 wpt_status wptStatus;
2135 wpt_status eventStatus;
2136 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2137
2138 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002139 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002140 ------------------------------------------------------------------------*/
2141 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2142 {
2143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2144 "WDI API call before module is initialized - Fail request");
2145
Jeff Johnsone7245742012-09-05 17:12:55 -07002146 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002147 }
2148
2149 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2150 (the control transport will be closed by the FSM and we'll want
2151 to wait until that completes)*/
2152 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002153 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002154 {
2155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002156 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002157 /* fall through and try to finish closing via the FSM */
2158 }
2159
2160 /*------------------------------------------------------------------------
2161 Fill in Event data and post to the Main FSM
2162 ------------------------------------------------------------------------*/
2163 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002164 wdiEventData.pEventData = NULL;
2165 wdiEventData.uEventDataSize = 0;
2166 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002167 wdiEventData.pUserData = NULL;
2168
2169 gWDIInitialized = eWLAN_PAL_FALSE;
2170
2171 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2172
2173 /*Wait for WCTS to close the control transport
2174 (but only if we were able to reset the event flag*/
2175 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2176 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002177 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002178 WDI_WCTS_ACTION_TIMEOUT);
2179 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2180 {
2181 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002182 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002183 }
2184 }
2185
2186 /* Destroy the WCTS action event */
2187 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2188 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2189 {
2190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2191 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002192 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 }
2194
2195 /* Destroy the Set Power State event */
2196 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2197 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2198 {
2199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2200 "WDI Close failed to destroy an event");
2201
Jeff Johnsone7245742012-09-05 17:12:55 -07002202 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002203 }
2204
2205 /*------------------------------------------------------------------------
2206 Closes the Data Path Utility Module
2207 ------------------------------------------------------------------------*/
2208 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2209 {
2210 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2211 "WDI Init failed to close the DP Util Module");
2212
Jeff Johnsone7245742012-09-05 17:12:55 -07002213 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002214 }
2215
2216 /*destroy the BSS sessions pending Queue */
2217 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2218 {
2219 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2220 }
2221
2222 /* destroy the WDI Pending Assoc Id Request Queue*/
2223 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2224
2225 /* destroy the WDI Pending Request Queue*/
2226 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002227
Jeff Johnson295189b2012-06-20 16:38:30 -07002228 /*destroy the response timer */
2229 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2230
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002231 /*destroy the SSR timer */
2232 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2233
Jeff Johnson295189b2012-06-20 16:38:30 -07002234 /*invalidate the main synchro mutex */
2235 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2236 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2237 {
2238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2239 "Failed to delete mutex %d", wptStatus);
2240 WDI_ASSERT(0);
2241 }
2242
2243 /*Clear control block. note that this will clear the "magic"
2244 which will inhibit all asynchronous callbacks*/
2245 WDI_CleanCB(&gWDICb);
2246
2247 return wptStatus;
2248
2249}/*WDI_Close*/
2250
2251/**
2252 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2253 This will do most of the WDI stop & close
2254 operations without doing any handshake with Riva
2255
2256 This will also make sure that the control transport
2257 will NOT be closed.
2258
2259 This request will not be queued.
2260
2261
2262 WDI_Start must have been called.
2263
2264 @param closeTransport: Close control channel if this is set
2265
2266 @return Result of the function call
2267*/
2268WDI_Status
2269WDI_Shutdown
2270(
2271 wpt_boolean closeTransport
2272)
2273{
2274 WDI_EventInfoType wdiEventData;
2275 wpt_status wptStatus;
2276 int i = 0;
2277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2278
2279 /*------------------------------------------------------------------------
2280 Sanity Check
2281 ------------------------------------------------------------------------*/
2282 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2283 {
2284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2285 "WDI API call before module is initialized - Fail request");
2286
2287 return WDI_STATUS_E_NOT_ALLOWED;
2288 }
2289
2290 /*------------------------------------------------------------------------
2291 Fill in Event data and post to the Main FSM
2292 ------------------------------------------------------------------------*/
2293 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2294 wdiEventData.pEventData = NULL;
2295 wdiEventData.uEventDataSize = 0;
2296
2297 /* Shutdown will not be queued, if the state is busy timer will be
2298 * stopped & this message will be processed.*/
2299 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2300 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2301 {
2302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002303 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002304 }
2305 /* Destroy the Set Power State event */
2306 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2307 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2308 {
2309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2310 "WDI Close failed to destroy an event");
2311
2312 WDI_ASSERT(0);
2313 }
2314 /*------------------------------------------------------------------------
2315 Closes the Data Path Utility Module
2316 ------------------------------------------------------------------------*/
2317 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2318 {
2319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2320 "WDI Init failed to close the DP Util Module");
2321
2322 WDI_ASSERT(0);
2323 }
2324 if ( closeTransport )
2325 {
2326 /* Close control transport, called from module unload */
2327 WCTS_CloseTransport(gWDICb.wctsHandle);
2328 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002329 else
2330 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002331 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002332 the pending messages in the transport queue */
2333 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2334 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002335 /*destroy the BSS sessions pending Queue */
2336 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2337 {
2338 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2339 }
2340
2341 /* destroy the WDI Pending Assoc Id Request Queue*/
2342 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2343 /* destroy the WDI Pending Request Queue*/
2344 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2345 /*destroy the response timer */
2346 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002347 /*destroy the SSR timer */
2348 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002349
2350 /*invalidate the main synchro mutex */
2351 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2352 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2353 {
2354 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002355 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002356 WDI_ASSERT(0);
2357 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002358 /* Free the global variables */
2359 wpalMemoryFree(gpHostWlanFeatCaps);
2360 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002361 gpHostWlanFeatCaps = NULL;
2362 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002363 /*Clear control block. note that this will clear the "magic"
2364 which will inhibit all asynchronous callbacks*/
2365 WDI_CleanCB(&gWDICb);
2366 return wptStatus;
2367
2368}/*WDI_Shutdown*/
2369
2370
Jeff Johnsone7245742012-09-05 17:12:55 -07002371/*========================================================================
2372
Jeff Johnson295189b2012-06-20 16:38:30 -07002373 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002374
Jeff Johnson295189b2012-06-20 16:38:30 -07002375==========================================================================*/
2376
2377/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002378 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002379 the WLAN Device to get ready for a scan procedure. Upon
2380 the call of this API the WLAN DAL will pack and send a
2381 HAL Init Scan request message to the lower RIVA
2382 sub-system if DAL is in state STARTED.
2383
2384 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002385 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002386
2387 WDI_Start must have been called.
2388
2389 @param wdiInitScanParams: the init scan parameters as specified
2390 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002391
Jeff Johnson295189b2012-06-20 16:38:30 -07002392 wdiInitScanRspCb: callback for passing back the response
2393 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002394
Jeff Johnson295189b2012-06-20 16:38:30 -07002395 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002396 callback
2397
Jeff Johnson295189b2012-06-20 16:38:30 -07002398 @see WDI_Start
2399 @return Result of the function call
2400*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002401WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002402WDI_InitScanReq
2403(
2404 WDI_InitScanReqParamsType* pwdiInitScanParams,
2405 WDI_InitScanRspCb wdiInitScanRspCb,
2406 void* pUserData
2407)
2408{
2409 WDI_EventInfoType wdiEventData;
2410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2411
2412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002413 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002414 ------------------------------------------------------------------------*/
2415 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2416 {
2417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2418 "WDI API call before module is initialized - Fail request");
2419
Jeff Johnsone7245742012-09-05 17:12:55 -07002420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002421 }
2422
2423 /*------------------------------------------------------------------------
2424 Fill in Event data and post to the Main FSM
2425 ------------------------------------------------------------------------*/
2426 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002427 wdiEventData.pEventData = pwdiInitScanParams;
2428 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2429 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002430 wdiEventData.pUserData = pUserData;
2431
2432 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2433
2434}/*WDI_InitScanReq*/
2435
2436/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002437 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002438 wishes to change the Scan channel on the WLAN Device.
2439 Upon the call of this API the WLAN DAL will pack and
2440 send a HAL Start Scan request message to the lower RIVA
2441 sub-system if DAL is in state STARTED.
2442
2443 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002444 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002445
2446 WDI_InitScanReq must have been called.
2447
Jeff Johnsone7245742012-09-05 17:12:55 -07002448 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002449 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002450
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 wdiStartScanRspCb: callback for passing back the
2452 response of the start scan operation received from the
2453 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002454
Jeff Johnson295189b2012-06-20 16:38:30 -07002455 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002456 callback
2457
Jeff Johnson295189b2012-06-20 16:38:30 -07002458 @see WDI_InitScanReq
2459 @return Result of the function call
2460*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002461WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002462WDI_StartScanReq
2463(
2464 WDI_StartScanReqParamsType* pwdiStartScanParams,
2465 WDI_StartScanRspCb wdiStartScanRspCb,
2466 void* pUserData
2467)
2468{
2469 WDI_EventInfoType wdiEventData;
2470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2471
2472 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002473 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002474 ------------------------------------------------------------------------*/
2475 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2476 {
2477 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2478 "WDI API call before module is initialized - Fail request");
2479
Jeff Johnsone7245742012-09-05 17:12:55 -07002480 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 }
2482
2483 /*------------------------------------------------------------------------
2484 Fill in Event data and post to the Main FSM
2485 ------------------------------------------------------------------------*/
2486 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002487 wdiEventData.pEventData = pwdiStartScanParams;
2488 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2489 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002490 wdiEventData.pUserData = pUserData;
2491
2492 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2493
2494}/*WDI_StartScanReq*/
2495
2496
2497/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002498 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002499 wants to end scanning for a particular channel that it
2500 had set before by calling Scan Start on the WLAN Device.
2501 Upon the call of this API the WLAN DAL will pack and
2502 send a HAL End Scan request message to the lower RIVA
2503 sub-system if DAL is in state STARTED.
2504
2505 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002506 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002507
2508 WDI_StartScanReq must have been called.
2509
Jeff Johnsone7245742012-09-05 17:12:55 -07002510 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002511 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002512
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 wdiEndScanRspCb: callback for passing back the response
2514 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002515
Jeff Johnson295189b2012-06-20 16:38:30 -07002516 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002517 callback
2518
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 @see WDI_StartScanReq
2520 @return Result of the function call
2521*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002522WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002523WDI_EndScanReq
2524(
2525 WDI_EndScanReqParamsType* pwdiEndScanParams,
2526 WDI_EndScanRspCb wdiEndScanRspCb,
2527 void* pUserData
2528)
2529{
2530 WDI_EventInfoType wdiEventData;
2531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2532
2533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002534 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002535 ------------------------------------------------------------------------*/
2536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2537 {
2538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2539 "WDI API call before module is initialized - Fail request");
2540
Jeff Johnsone7245742012-09-05 17:12:55 -07002541 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002542 }
2543
2544 /*------------------------------------------------------------------------
2545 Fill in Event data and post to the Main FSM
2546 ------------------------------------------------------------------------*/
2547 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002548 wdiEventData.pEventData = pwdiEndScanParams;
2549 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2550 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002551 wdiEventData.pUserData = pUserData;
2552
2553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2554
2555}/*WDI_EndScanReq*/
2556
2557
2558/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002559 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002560 completed the scan process on the WLAN Device. Upon the
2561 call of this API the WLAN DAL will pack and send a HAL
2562 Finish Scan Request request message to the lower RIVA
2563 sub-system if DAL is in state STARTED.
2564
2565 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002566 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002567
2568 WDI_InitScanReq must have been called.
2569
Jeff Johnsone7245742012-09-05 17:12:55 -07002570 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002571 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002572
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 wdiFinishScanRspCb: callback for passing back the
2574 response of the finish scan operation received from the
2575 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002576
Jeff Johnson295189b2012-06-20 16:38:30 -07002577 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002578 callback
2579
Jeff Johnson295189b2012-06-20 16:38:30 -07002580 @see WDI_InitScanReq
2581 @return Result of the function call
2582*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002583WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002584WDI_FinishScanReq
2585(
2586 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2587 WDI_FinishScanRspCb wdiFinishScanRspCb,
2588 void* pUserData
2589)
2590{
2591 WDI_EventInfoType wdiEventData;
2592 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2593
2594 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002595 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002596 ------------------------------------------------------------------------*/
2597 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2598 {
2599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2600 "WDI API call before module is initialized - Fail request");
2601
Jeff Johnsone7245742012-09-05 17:12:55 -07002602 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002603 }
2604
2605 /*------------------------------------------------------------------------
2606 Fill in Event data and post to the Main FSM
2607 ------------------------------------------------------------------------*/
2608 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002609 wdiEventData.pEventData = pwdiFinishScanParams;
2610 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2611 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002612 wdiEventData.pUserData = pUserData;
2613
2614 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2615
2616}/*WDI_FinishScanReq*/
2617
Jeff Johnsone7245742012-09-05 17:12:55 -07002618/*========================================================================
2619
Jeff Johnson295189b2012-06-20 16:38:30 -07002620 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002621
Jeff Johnson295189b2012-06-20 16:38:30 -07002622==========================================================================*/
2623
2624/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002625 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002626 to start an association procedure to a BSS. Upon the
2627 call of this API the WLAN DAL will pack and send a HAL
2628 Join request message to the lower RIVA sub-system if
2629 DAL is in state STARTED.
2630
2631 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002632 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002633
2634 WDI_Start must have been called.
2635
Jeff Johnsone7245742012-09-05 17:12:55 -07002636 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002637 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002638
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 wdiJoinRspCb: callback for passing back the response of
2640 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002641
Jeff Johnson295189b2012-06-20 16:38:30 -07002642 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002643 callback
2644
Jeff Johnson295189b2012-06-20 16:38:30 -07002645 @see WDI_Start
2646 @return Result of the function call
2647*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002648WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002649WDI_JoinReq
2650(
2651 WDI_JoinReqParamsType* pwdiJoinParams,
2652 WDI_JoinRspCb wdiJoinRspCb,
2653 void* pUserData
2654)
2655{
2656 WDI_EventInfoType wdiEventData;
2657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2658
2659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002660 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002661 ------------------------------------------------------------------------*/
2662 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2663 {
2664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2665 "WDI API call before module is initialized - Fail request");
2666
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002668 }
2669
2670 /*------------------------------------------------------------------------
2671 Fill in Event data and post to the Main FSM
2672 ------------------------------------------------------------------------*/
2673 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002674 wdiEventData.pEventData = pwdiJoinParams;
2675 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2676 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002677 wdiEventData.pUserData = pUserData;
2678
2679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2680
2681}/*WDI_JoinReq*/
2682
2683/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 wishes to configure the newly acquired or in process of
2686 being acquired BSS to the HW . Upon the call of this API
2687 the WLAN DAL will pack and send a HAL Config BSS request
2688 message to the lower RIVA sub-system if DAL is in state
2689 STARTED.
2690
2691 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002692 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002693
2694 WDI_JoinReq must have been called.
2695
Jeff Johnsone7245742012-09-05 17:12:55 -07002696 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002697 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002698
Jeff Johnson295189b2012-06-20 16:38:30 -07002699 wdiConfigBSSRspCb: callback for passing back the
2700 response of the config BSS operation received from the
2701 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002702
Jeff Johnson295189b2012-06-20 16:38:30 -07002703 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002704 callback
2705
Jeff Johnson295189b2012-06-20 16:38:30 -07002706 @see WDI_JoinReq
2707 @return Result of the function call
2708*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002709WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002710WDI_ConfigBSSReq
2711(
2712 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2713 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2714 void* pUserData
2715)
2716{
2717 WDI_EventInfoType wdiEventData;
2718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2719
2720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002722 ------------------------------------------------------------------------*/
2723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2724 {
2725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2726 "WDI API call before module is initialized - Fail request");
2727
Jeff Johnsone7245742012-09-05 17:12:55 -07002728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002729 }
2730
2731 /*------------------------------------------------------------------------
2732 Fill in Event data and post to the Main FSM
2733 ------------------------------------------------------------------------*/
2734 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002735 wdiEventData.pEventData = pwdiConfigBSSParams;
2736 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2737 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002738 wdiEventData.pUserData = pUserData;
2739
2740 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2741
2742}/*WDI_ConfigBSSReq*/
2743
2744/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002745 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002746 disassociating from the BSS and wishes to notify HW.
2747 Upon the call of this API the WLAN DAL will pack and
2748 send a HAL Del BSS request message to the lower RIVA
2749 sub-system if DAL is in state STARTED.
2750
2751 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002752 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002753
2754 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2755
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002758
Jeff Johnson295189b2012-06-20 16:38:30 -07002759 wdiDelBSSRspCb: callback for passing back the response
2760 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002761
Jeff Johnson295189b2012-06-20 16:38:30 -07002762 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 callback
2764
2765 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 @return Result of the function call
2767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002769WDI_DelBSSReq
2770(
2771 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2772 WDI_DelBSSRspCb wdiDelBSSRspCb,
2773 void* pUserData
2774)
2775{
2776 WDI_EventInfoType wdiEventData;
2777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2778
2779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002781 ------------------------------------------------------------------------*/
2782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2783 {
2784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2785 "WDI API call before module is initialized - Fail request");
2786
Jeff Johnsone7245742012-09-05 17:12:55 -07002787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002788 }
2789
2790 /*------------------------------------------------------------------------
2791 Fill in Event data and post to the Main FSM
2792 ------------------------------------------------------------------------*/
2793 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002794 wdiEventData.pEventData = pwdiDelBSSParams;
2795 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2796 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002797 wdiEventData.pUserData = pUserData;
2798
2799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2800
2801}/*WDI_DelBSSReq*/
2802
2803/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002804 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002805 associated to a BSS and wishes to configure HW for
2806 associated state. Upon the call of this API the WLAN DAL
2807 will pack and send a HAL Post Assoc request message to
2808 the lower RIVA sub-system if DAL is in state STARTED.
2809
2810 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002811 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002812
2813 WDI_JoinReq must have been called.
2814
2815 @param wdiPostAssocReqParams: the assoc parameters as specified
2816 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002817
Jeff Johnson295189b2012-06-20 16:38:30 -07002818 wdiPostAssocRspCb: callback for passing back the
2819 response of the post assoc operation received from the
2820 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002821
Jeff Johnson295189b2012-06-20 16:38:30 -07002822 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002823 callback
2824
Jeff Johnson295189b2012-06-20 16:38:30 -07002825 @see WDI_JoinReq
2826 @return Result of the function call
2827*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002828WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002829WDI_PostAssocReq
2830(
2831 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2832 WDI_PostAssocRspCb wdiPostAssocRspCb,
2833 void* pUserData
2834)
2835{
2836 WDI_EventInfoType wdiEventData;
2837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2838
2839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002840 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002841 ------------------------------------------------------------------------*/
2842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2843 {
2844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2845 "WDI API call before module is initialized - Fail request");
2846
Jeff Johnsone7245742012-09-05 17:12:55 -07002847 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 }
2849
2850 /*------------------------------------------------------------------------
2851 Fill in Event data and post to the Main FSM
2852 ------------------------------------------------------------------------*/
2853 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002854 wdiEventData.pEventData = pwdiPostAssocReqParams;
2855 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2856 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002857 wdiEventData.pUserData = pUserData;
2858
2859 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2860
2861}/*WDI_PostAssocReq*/
2862
2863/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002864 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002865 association with another STA has ended and the station
2866 must be deleted from HW. Upon the call of this API the
2867 WLAN DAL will pack and send a HAL Del STA request
2868 message to the lower RIVA sub-system if DAL is in state
2869 STARTED.
2870
2871 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002872 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002873
2874 WDI_PostAssocReq must have been called.
2875
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002877 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002878
Jeff Johnson295189b2012-06-20 16:38:30 -07002879 wdiDelSTARspCb: callback for passing back the response
2880 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002881
Jeff Johnson295189b2012-06-20 16:38:30 -07002882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002883 callback
2884
Jeff Johnson295189b2012-06-20 16:38:30 -07002885 @see WDI_PostAssocReq
2886 @return Result of the function call
2887*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002889WDI_DelSTAReq
2890(
2891 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2892 WDI_DelSTARspCb wdiDelSTARspCb,
2893 void* pUserData
2894)
2895{
2896 WDI_EventInfoType wdiEventData;
2897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2898
2899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002901 ------------------------------------------------------------------------*/
2902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2903 {
2904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2905 "WDI API call before module is initialized - Fail request");
2906
Jeff Johnsone7245742012-09-05 17:12:55 -07002907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002908 }
2909
2910 /*------------------------------------------------------------------------
2911 Fill in Event data and post to the Main FSM
2912 ------------------------------------------------------------------------*/
2913 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002914 wdiEventData.pEventData = pwdiDelSTAParams;
2915 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2916 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002917 wdiEventData.pUserData = pUserData;
2918
2919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2920
2921}/*WDI_DelSTAReq*/
2922
Jeff Johnsone7245742012-09-05 17:12:55 -07002923/*========================================================================
2924
Jeff Johnson295189b2012-06-20 16:38:30 -07002925 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002926
Jeff Johnson295189b2012-06-20 16:38:30 -07002927==========================================================================*/
2928
2929/**
2930 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2931 install a BSS encryption key on the HW. Upon the call of this
2932 API the WLAN DAL will pack and send a Set BSS Key request
2933 message to the lower RIVA sub-system if DAL is in state
2934 STARTED.
2935
2936 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002937 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002938
2939 WDI_PostAssocReq must have been called.
2940
Jeff Johnsone7245742012-09-05 17:12:55 -07002941 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002942 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002943
Jeff Johnson295189b2012-06-20 16:38:30 -07002944 wdiSetBSSKeyRspCb: callback for passing back the
2945 response of the set BSS Key operation received from the
2946 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002947
Jeff Johnson295189b2012-06-20 16:38:30 -07002948 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002949 callback
2950
Jeff Johnson295189b2012-06-20 16:38:30 -07002951 @see WDI_PostAssocReq
2952 @return Result of the function call
2953*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002954WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002955WDI_SetBSSKeyReq
2956(
2957 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2958 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2959 void* pUserData
2960)
2961{
2962 WDI_EventInfoType wdiEventData;
2963 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2964
2965 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002966 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002967 ------------------------------------------------------------------------*/
2968 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2969 {
2970 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2971 "WDI API call before module is initialized - Fail request");
2972
Jeff Johnsone7245742012-09-05 17:12:55 -07002973 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 }
2975
2976 /*------------------------------------------------------------------------
2977 Fill in Event data and post to the Main FSM
2978 ------------------------------------------------------------------------*/
2979 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002980 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2981 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2982 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002983 wdiEventData.pUserData = pUserData;
2984
2985 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2986
2987}/*WDI_SetBSSKeyReq*/
2988
2989/**
2990 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2991 uninstall a BSS key from HW. Upon the call of this API the
2992 WLAN DAL will pack and send a HAL Remove BSS Key request
2993 message to the lower RIVA sub-system if DAL is in state
2994 STARTED.
2995
2996 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002997 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002998
2999 WDI_SetBSSKeyReq must have been called.
3000
Jeff Johnsone7245742012-09-05 17:12:55 -07003001 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003002 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003003
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 wdiRemoveBSSKeyRspCb: callback for passing back the
3005 response of the remove BSS key operation received from
3006 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003007
Jeff Johnson295189b2012-06-20 16:38:30 -07003008 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003009 callback
3010
Jeff Johnson295189b2012-06-20 16:38:30 -07003011 @see WDI_SetBSSKeyReq
3012 @return Result of the function call
3013*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003014WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003015WDI_RemoveBSSKeyReq
3016(
3017 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
3018 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
3019 void* pUserData
3020)
3021{
3022 WDI_EventInfoType wdiEventData;
3023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3024
3025 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003027 ------------------------------------------------------------------------*/
3028 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3029 {
3030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3031 "WDI API call before module is initialized - Fail request");
3032
Jeff Johnsone7245742012-09-05 17:12:55 -07003033 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003034 }
3035
3036 /*------------------------------------------------------------------------
3037 Fill in Event data and post to the Main FSM
3038 ------------------------------------------------------------------------*/
3039 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003040 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
3041 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
3042 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003043 wdiEventData.pUserData = pUserData;
3044
3045 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3046
3047}/*WDI_RemoveBSSKeyReq*/
3048
3049
3050/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003051 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003052 ready to install a STA(ast) encryption key in HW. Upon
3053 the call of this API the WLAN DAL will pack and send a
3054 HAL Set STA Key request message to the lower RIVA
3055 sub-system if DAL is in state STARTED.
3056
3057 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003058 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003059
3060 WDI_PostAssocReq must have been called.
3061
Jeff Johnsone7245742012-09-05 17:12:55 -07003062 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003064
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 wdiSetSTAKeyRspCb: callback for passing back the
3066 response of the set STA key operation received from the
3067 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003068
Jeff Johnson295189b2012-06-20 16:38:30 -07003069 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003070 callback
3071
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 @see WDI_PostAssocReq
3073 @return Result of the function call
3074*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003076WDI_SetSTAKeyReq
3077(
3078 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3079 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3080 void* pUserData
3081)
3082{
3083 WDI_EventInfoType wdiEventData;
3084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3085
3086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003088 ------------------------------------------------------------------------*/
3089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3090 {
3091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3092 "WDI API call before module is initialized - Fail request");
3093
Jeff Johnsone7245742012-09-05 17:12:55 -07003094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003095 }
3096
3097 /*------------------------------------------------------------------------
3098 Fill in Event data and post to the Main FSM
3099 ------------------------------------------------------------------------*/
3100 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003101 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3102 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3103 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003104 wdiEventData.pUserData = pUserData;
3105
3106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3107
3108}/*WDI_SetSTAKeyReq*/
3109
3110
3111/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003112 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003113 wants to uninstall a previously set STA key in HW. Upon
3114 the call of this API the WLAN DAL will pack and send a
3115 HAL Remove STA Key request message to the lower RIVA
3116 sub-system if DAL is in state STARTED.
3117
3118 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003119 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003120
3121 WDI_SetSTAKeyReq must have been called.
3122
Jeff Johnsone7245742012-09-05 17:12:55 -07003123 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003124 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003125
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 wdiRemoveSTAKeyRspCb: callback for passing back the
3127 response of the remove STA key operation received from
3128 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003129
Jeff Johnson295189b2012-06-20 16:38:30 -07003130 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003131 callback
3132
Jeff Johnson295189b2012-06-20 16:38:30 -07003133 @see WDI_SetSTAKeyReq
3134 @return Result of the function call
3135*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003136WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003137WDI_RemoveSTAKeyReq
3138(
3139 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3140 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3141 void* pUserData
3142)
3143{
3144 WDI_EventInfoType wdiEventData;
3145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3146
3147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003149 ------------------------------------------------------------------------*/
3150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3151 {
3152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3153 "WDI API call before module is initialized - Fail request");
3154
Jeff Johnsone7245742012-09-05 17:12:55 -07003155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003156 }
3157
3158 /*------------------------------------------------------------------------
3159 Fill in Event data and post to the Main FSM
3160 ------------------------------------------------------------------------*/
3161 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003162 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3163 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3164 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003165 wdiEventData.pUserData = pUserData;
3166
3167 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3168
3169}/*WDI_RemoveSTAKeyReq*/
3170
3171
3172/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003173 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003174 wants to install a STA Bcast encryption key on the HW.
3175 Upon the call of this API the WLAN DAL will pack and
3176 send a HAL Start request message to the lower RIVA
3177 sub-system if DAL is in state STARTED.
3178
3179 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003180 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003181
3182 WDI_PostAssocReq must have been called.
3183
Jeff Johnsone7245742012-09-05 17:12:55 -07003184 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003185 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003186
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 wdiSetSTABcastKeyRspCb: callback for passing back the
3188 response of the set BSS Key operation received from the
3189 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003190
Jeff Johnson295189b2012-06-20 16:38:30 -07003191 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003192 callback
3193
Jeff Johnson295189b2012-06-20 16:38:30 -07003194 @see WDI_PostAssocReq
3195 @return Result of the function call
3196*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003197WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003198WDI_SetSTABcastKeyReq
3199(
3200 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3201 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3202 void* pUserData
3203)
3204
3205{
3206 WDI_EventInfoType wdiEventData;
3207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3208
3209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003211 ------------------------------------------------------------------------*/
3212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3213 {
3214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3215 "WDI API call before module is initialized - Fail request");
3216
Jeff Johnsone7245742012-09-05 17:12:55 -07003217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003218 }
3219
3220 /*------------------------------------------------------------------------
3221 Fill in Event data and post to the Main FSM
3222 ------------------------------------------------------------------------*/
3223 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003224 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3225 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3226 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003227 wdiEventData.pUserData = pUserData;
3228
3229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3230
3231}/*WDI_SetSTABcastKeyReq*/
3232
3233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003234 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003235 MAC wants to uninstall a STA Bcast key from HW. Upon the
3236 call of this API the WLAN DAL will pack and send a HAL
3237 Remove STA Bcast Key request message to the lower RIVA
3238 sub-system if DAL is in state STARTED.
3239
3240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003242
3243 WDI_SetSTABcastKeyReq must have been called.
3244
Jeff Johnsone7245742012-09-05 17:12:55 -07003245 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003246 parameters as specified by the Device
3247 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003248
Jeff Johnson295189b2012-06-20 16:38:30 -07003249 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3250 response of the remove STA Bcast key operation received
3251 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003252
Jeff Johnson295189b2012-06-20 16:38:30 -07003253 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003254 callback
3255
Jeff Johnson295189b2012-06-20 16:38:30 -07003256 @see WDI_SetSTABcastKeyReq
3257 @return Result of the function call
3258*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003259WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003260WDI_RemoveSTABcastKeyReq
3261(
3262 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3263 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3264 void* pUserData
3265)
3266{
3267 WDI_EventInfoType wdiEventData;
3268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3269
3270 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003271 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003272 ------------------------------------------------------------------------*/
3273 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3274 {
3275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3276 "WDI API call before module is initialized - Fail request");
3277
Jeff Johnsone7245742012-09-05 17:12:55 -07003278 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003279 }
3280
3281 /*------------------------------------------------------------------------
3282 Fill in Event data and post to the Main FSM
3283 ------------------------------------------------------------------------*/
3284 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003285 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3286 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3287 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003288 wdiEventData.pUserData = pUserData;
3289
3290 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3291
3292}/*WDI_RemoveSTABcastKeyReq*/
3293
3294/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003295 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003296 MAC wants to set Max Tx Power to HW. Upon the
3297 call of this API the WLAN DAL will pack and send a HAL
3298 Remove STA Bcast Key request message to the lower RIVA
3299 sub-system if DAL is in state STARTED.
3300
3301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003303
3304 WDI_SetSTABcastKeyReq must have been called.
3305
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 parameters as specified by the Device
3308 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003309
Jeff Johnson295189b2012-06-20 16:38:30 -07003310 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3311 response of the remove STA Bcast key operation received
3312 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003313
Jeff Johnson295189b2012-06-20 16:38:30 -07003314 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003315 callback
3316
Jeff Johnson295189b2012-06-20 16:38:30 -07003317 @see WDI_SetMaxTxPowerReq
3318 @return Result of the function call
3319*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003320WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003321WDI_SetMaxTxPowerReq
3322(
3323 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3324 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3325 void* pUserData
3326)
3327{
3328 WDI_EventInfoType wdiEventData;
3329 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3330
3331 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003332 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003333 ------------------------------------------------------------------------*/
3334 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3335 {
3336 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3337 "WDI API call before module is initialized - Fail request");
3338
Jeff Johnsone7245742012-09-05 17:12:55 -07003339 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003340 }
3341
3342 /*------------------------------------------------------------------------
3343 Fill in Event data and post to the Main FSM
3344 ------------------------------------------------------------------------*/
3345 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003346 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3347 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3348 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003349 wdiEventData.pUserData = pUserData;
3350
3351 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3352}
3353
schang86c22c42013-03-13 18:41:24 -07003354/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003355 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3356 MAC wants to set Max Tx Power to HW for specific band.
3357
3358 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3359
3360 wdiReqStatusCb: callback for passing back the
3361 response msg from the device
3362
3363 pUserData: user data will be passed back with the
3364 callback
3365
3366 @see WDI_SetMaxTxPowerPerBandReq
3367 @return Result of the function call
3368*/
3369WDI_Status
3370WDI_SetMaxTxPowerPerBandReq
3371(
3372 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3373 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3374 void* pUserData
3375)
3376{
3377 WDI_EventInfoType wdiEventData;
3378 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3379
3380 /*------------------------------------------------------------------------
3381 Sanity Check
3382 ------------------------------------------------------------------------*/
3383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3384 {
3385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3386 "WDI API call before module is initialized - Fail request");
3387
3388 return WDI_STATUS_E_NOT_ALLOWED;
3389 }
3390
3391 /*------------------------------------------------------------------------
3392 Fill in Event data and post to the Main FSM
3393 ------------------------------------------------------------------------*/
3394 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3395 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3396 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3397 wdiEventData.pCBfnc = wdiReqStatusCb;
3398 wdiEventData.pUserData = pUserData;
3399
3400 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3401}
3402
3403/**
schang86c22c42013-03-13 18:41:24 -07003404 @brief WDI_SetTxPowerReq will be called when the upper
3405 MAC wants to set Tx Power to HW.
3406 In state BUSY this request will be queued. Request won't
3407 be allowed in any other state.
3408
3409
3410 @param pwdiSetTxPowerParams: set TS Power parameters
3411 BSSID and target TX Power with dbm included
3412
3413 wdiReqStatusCb: callback for passing back the response
3414
3415 pUserData: user data will be passed back with the
3416 callback
3417
3418 @return Result of the function call
3419*/
3420WDI_Status
3421WDI_SetTxPowerReq
3422(
3423 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3424 WDA_SetTxPowerRspCb wdiReqStatusCb,
3425 void* pUserData
3426)
3427{
3428 WDI_EventInfoType wdiEventData;
3429 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3430
3431 /*------------------------------------------------------------------------
3432 Sanity Check
3433 ------------------------------------------------------------------------*/
3434 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3435 {
3436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3437 "WDI API call before module is initialized - Fail request");
3438
3439 return WDI_STATUS_E_NOT_ALLOWED;
3440 }
3441
3442 /*------------------------------------------------------------------------
3443 Fill in Event data and post to the Main FSM
3444 ------------------------------------------------------------------------*/
3445 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3446 wdiEventData.pEventData = pwdiSetTxPowerParams;
3447 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3448 wdiEventData.pCBfnc = wdiReqStatusCb;
3449 wdiEventData.pUserData = pUserData;
3450
3451 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3452}
3453
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003454#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003455WDI_Status
3456WDI_TSMStatsReq
3457(
3458 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3459 WDI_TsmRspCb wdiReqStatusCb,
3460 void* pUserData
3461)
3462{
3463 WDI_EventInfoType wdiEventData;
3464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003465 /*------------------------------------------------------------------------
3466 Sanity Check
3467 ------------------------------------------------------------------------*/
3468 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3469 {
3470 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3471 "WDI API call before module is initialized - Fail request");
3472
3473 return WDI_STATUS_E_NOT_ALLOWED;
3474 }
3475
3476 /*------------------------------------------------------------------------
3477 Fill in Event data and post to the Main FSM
3478 ------------------------------------------------------------------------*/
3479 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3480 wdiEventData.pEventData = pwdiTsmReqParams;
3481 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3482 wdiEventData.pCBfnc = wdiReqStatusCb;
3483 wdiEventData.pUserData = pUserData;
3484
3485 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3486
3487}
3488#endif
3489
3490/*========================================================================
3491
3492 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003493
Jeff Johnson295189b2012-06-20 16:38:30 -07003494==========================================================================*/
3495
3496/**
3497 @brief WDI_AddTSReq will be called when the upper MAC to inform
3498 the device of a successful add TSpec negotiation. HW
3499 needs to receive the TSpec Info from the UMAC in order
3500 to configure properly the QoS data traffic. Upon the
3501 call of this API the WLAN DAL will pack and send a HAL
3502 Add TS request message to the lower RIVA sub-system if
3503 DAL is in state STARTED.
3504
3505 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003506 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003507
3508 WDI_PostAssocReq must have been called.
3509
3510 @param wdiAddTsReqParams: the add TS parameters as specified by
3511 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003512
Jeff Johnson295189b2012-06-20 16:38:30 -07003513 wdiAddTsRspCb: callback for passing back the response of
3514 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003515
Jeff Johnson295189b2012-06-20 16:38:30 -07003516 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003517 callback
3518
Jeff Johnson295189b2012-06-20 16:38:30 -07003519 @see WDI_PostAssocReq
3520 @return Result of the function call
3521*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003522WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003523WDI_AddTSReq
3524(
3525 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3526 WDI_AddTsRspCb wdiAddTsRspCb,
3527 void* pUserData
3528)
3529{
3530 WDI_EventInfoType wdiEventData;
3531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3532
3533 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003534 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003535 ------------------------------------------------------------------------*/
3536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3537 {
3538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3539 "WDI API call before module is initialized - Fail request");
3540
Jeff Johnsone7245742012-09-05 17:12:55 -07003541 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003542 }
3543
3544 /*------------------------------------------------------------------------
3545 Fill in Event data and post to the Main FSM
3546 ------------------------------------------------------------------------*/
3547 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003548 wdiEventData.pEventData = pwdiAddTsReqParams;
3549 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3550 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003551 wdiEventData.pUserData = pUserData;
3552
3553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3554
3555}/*WDI_AddTSReq*/
3556
3557
3558
3559/**
3560 @brief WDI_DelTSReq will be called when the upper MAC has ended
3561 admission on a specific AC. This is to inform HW that
3562 QoS traffic parameters must be rest. Upon the call of
3563 this API the WLAN DAL will pack and send a HAL Del TS
3564 request message to the lower RIVA sub-system if DAL is
3565 in state STARTED.
3566
3567 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003568 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003569
3570 WDI_AddTSReq must have been called.
3571
3572 @param wdiDelTsReqParams: the del TS parameters as specified by
3573 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003574
Jeff Johnson295189b2012-06-20 16:38:30 -07003575 wdiDelTsRspCb: callback for passing back the response of
3576 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003577
Jeff Johnson295189b2012-06-20 16:38:30 -07003578 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003579 callback
3580
Jeff Johnson295189b2012-06-20 16:38:30 -07003581 @see WDI_AddTSReq
3582 @return Result of the function call
3583*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003584WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003585WDI_DelTSReq
3586(
3587 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3588 WDI_DelTsRspCb wdiDelTsRspCb,
3589 void* pUserData
3590)
3591{
3592 WDI_EventInfoType wdiEventData;
3593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3594
3595 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003596 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003597 ------------------------------------------------------------------------*/
3598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3599 {
3600 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3601 "WDI API call before module is initialized - Fail request");
3602
Jeff Johnsone7245742012-09-05 17:12:55 -07003603 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003604 }
3605
3606 /*------------------------------------------------------------------------
3607 Fill in Event data and post to the Main FSM
3608 ------------------------------------------------------------------------*/
3609 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003610 wdiEventData.pEventData = pwdiDelTsReqParams;
3611 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3612 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003613 wdiEventData.pUserData = pUserData;
3614
3615 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3616
3617}/*WDI_DelTSReq*/
3618
3619
3620
3621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003622 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003623 wishes to update the EDCA parameters used by HW for QoS
3624 data traffic. Upon the call of this API the WLAN DAL
3625 will pack and send a HAL Update EDCA Params request
3626 message to the lower RIVA sub-system if DAL is in state
3627 STARTED.
3628
3629 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003630 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003631
3632 WDI_PostAssocReq must have been called.
3633
Jeff Johnsone7245742012-09-05 17:12:55 -07003634 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003635 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003636
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 wdiUpdateEDCAParamsRspCb: callback for passing back the
3638 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003639
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003641 callback
3642
Jeff Johnson295189b2012-06-20 16:38:30 -07003643 @see WDI_PostAssocReq
3644 @return Result of the function call
3645*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003646WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003647WDI_UpdateEDCAParams
3648(
3649 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3650 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3651 void* pUserData
3652)
3653{
3654 WDI_EventInfoType wdiEventData;
3655 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3656
3657 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003658 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003659 ------------------------------------------------------------------------*/
3660 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3661 {
3662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3663 "WDI API call before module is initialized - Fail request");
3664
Jeff Johnsone7245742012-09-05 17:12:55 -07003665 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003666 }
3667
3668 /*------------------------------------------------------------------------
3669 Fill in Event data and post to the Main FSM
3670 ------------------------------------------------------------------------*/
3671 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003672 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3673 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3674 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003675 wdiEventData.pUserData = pUserData;
3676
3677 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3678
3679}/*WDI_UpdateEDCAParams*/
3680
3681
3682/**
3683 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3684 successfully a BA session and needs to notify the HW for
3685 the appropriate settings to take place. Upon the call of
3686 this API the WLAN DAL will pack and send a HAL Add BA
3687 request message to the lower RIVA sub-system if DAL is
3688 in state STARTED.
3689
3690 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003691 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003692
3693 WDI_PostAssocReq must have been called.
3694
3695 @param wdiAddBAReqParams: the add BA parameters as specified by
3696 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003697
Jeff Johnson295189b2012-06-20 16:38:30 -07003698 wdiAddBARspCb: callback for passing back the response of
3699 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003700
Jeff Johnson295189b2012-06-20 16:38:30 -07003701 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003702 callback
3703
Jeff Johnson295189b2012-06-20 16:38:30 -07003704 @see WDI_PostAssocReq
3705 @return Result of the function call
3706*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003707WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003708WDI_AddBASessionReq
3709(
3710 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3711 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3712 void* pUserData
3713)
3714{
3715 WDI_EventInfoType wdiEventData;
3716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3717
3718 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003719 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003720 ------------------------------------------------------------------------*/
3721 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3722 {
3723 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3724 "WDI API call before module is initialized - Fail request");
3725
Jeff Johnsone7245742012-09-05 17:12:55 -07003726 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003727 }
3728
3729 /*------------------------------------------------------------------------
3730 Fill in Event data and post to the Main FSM
3731 ------------------------------------------------------------------------*/
3732 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003733 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3734 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3735 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003736 wdiEventData.pUserData = pUserData;
3737
3738 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3739
3740}/*WDI_AddBASessionReq*/
3741
3742/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003743 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003744 inform HW that it has deleted a previously created BA
3745 session. Upon the call of this API the WLAN DAL will
3746 pack and send a HAL Del BA request message to the lower
3747 RIVA sub-system if DAL is in state STARTED.
3748
3749 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003750 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003751
3752 WDI_AddBAReq must have been called.
3753
3754 @param wdiDelBAReqParams: the del BA parameters as specified by
3755 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003756
Jeff Johnson295189b2012-06-20 16:38:30 -07003757 wdiDelBARspCb: callback for passing back the response of
3758 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003759
Jeff Johnson295189b2012-06-20 16:38:30 -07003760 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003761 callback
3762
Jeff Johnson295189b2012-06-20 16:38:30 -07003763 @see WDI_AddBAReq
3764 @return Result of the function call
3765*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003766WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003767WDI_DelBAReq
3768(
3769 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3770 WDI_DelBARspCb wdiDelBARspCb,
3771 void* pUserData
3772)
3773{
3774 WDI_EventInfoType wdiEventData;
3775 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3776
3777 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003778 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003779 ------------------------------------------------------------------------*/
3780 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3781 {
3782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3783 "WDI API call before module is initialized - Fail request");
3784
Jeff Johnsone7245742012-09-05 17:12:55 -07003785 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003786 }
3787
3788 /*------------------------------------------------------------------------
3789 Fill in Event data and post to the Main FSM
3790 ------------------------------------------------------------------------*/
3791 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003792 wdiEventData.pEventData = pwdiDelBAReqParams;
3793 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3794 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003795 wdiEventData.pUserData = pUserData;
3796
3797 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3798
3799}/*WDI_DelBAReq*/
3800
Jeff Johnsone7245742012-09-05 17:12:55 -07003801/*========================================================================
3802
Jeff Johnson295189b2012-06-20 16:38:30 -07003803 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003804
Jeff Johnson295189b2012-06-20 16:38:30 -07003805==========================================================================*/
3806
3807/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 wants to set the power save related configurations of
3810 the WLAN Device. Upon the call of this API the WLAN DAL
3811 will pack and send a HAL Update CFG request message to
3812 the lower RIVA sub-system if DAL is in state STARTED.
3813
3814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003816
3817 WDI_Start must have been called.
3818
Jeff Johnsone7245742012-09-05 17:12:55 -07003819 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003820 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003821
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 wdiSetPwrSaveCfgCb: callback for passing back the
3823 response of the set power save cfg operation received
3824 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003825
Jeff Johnson295189b2012-06-20 16:38:30 -07003826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003827 callback
3828
Jeff Johnson295189b2012-06-20 16:38:30 -07003829 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003830 @return Result of the function call
3831*/
3832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003833WDI_SetPwrSaveCfgReq
3834(
3835 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3836 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3837 void* pUserData
3838)
3839{
3840 WDI_EventInfoType wdiEventData;
3841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3842
3843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003845 ------------------------------------------------------------------------*/
3846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3847 {
3848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3849 "WDI API call before module is initialized - Fail request");
3850
Jeff Johnsone7245742012-09-05 17:12:55 -07003851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 }
3853
3854 /*------------------------------------------------------------------------
3855 Fill in Event data and post to the Main FSM
3856 ------------------------------------------------------------------------*/
3857 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003858 wdiEventData.pEventData = pwdiPowerSaveCfg;
3859 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3860 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003861 wdiEventData.pUserData = pUserData;
3862
3863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3864
3865}/*WDI_SetPwrSaveCfgReq*/
3866
3867/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003868 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003869 request the device to get into IMPS power state. Upon
3870 the call of this API the WLAN DAL will send a HAL Enter
3871 IMPS request message to the lower RIVA sub-system if DAL
3872 is in state STARTED.
3873
3874 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003875 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003876
Jeff Johnsone7245742012-09-05 17:12:55 -07003877
3878 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003879 response of the Enter IMPS operation received from the
3880 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003881
Jeff Johnson295189b2012-06-20 16:38:30 -07003882 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003883 callback
3884
Jeff Johnson295189b2012-06-20 16:38:30 -07003885 @see WDI_Start
3886 @return Result of the function call
3887*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003888WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003889WDI_EnterImpsReq
3890(
Mihir Shetea4306052014-03-25 00:02:54 +05303891 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3893 void* pUserData
3894)
3895{
3896 WDI_EventInfoType wdiEventData;
3897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3898
3899 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003900 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003901 ------------------------------------------------------------------------*/
3902 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3903 {
3904 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3905 "WDI API call before module is initialized - Fail request");
3906
Jeff Johnsone7245742012-09-05 17:12:55 -07003907 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003908 }
3909
3910 /*------------------------------------------------------------------------
3911 Fill in Event data and post to the Main FSM
3912 ------------------------------------------------------------------------*/
3913 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303914 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3915 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003916 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003917 wdiEventData.pUserData = pUserData;
3918
3919 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3920
3921}/*WDI_EnterImpsReq*/
3922
3923/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003924 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003925 request the device to get out of IMPS power state. Upon
3926 the call of this API the WLAN DAL will send a HAL Exit
3927 IMPS request message to the lower RIVA sub-system if DAL
3928 is in state STARTED.
3929
3930 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003931 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003932
Jeff Johnson295189b2012-06-20 16:38:30 -07003933
Jeff Johnsone7245742012-09-05 17:12:55 -07003934
3935 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003936 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003937
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003939 callback
3940
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 @see WDI_Start
3942 @return Result of the function call
3943*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003944WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003945WDI_ExitImpsReq
3946(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303947 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003948 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3949 void* pUserData
3950)
3951{
3952 WDI_EventInfoType wdiEventData;
3953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3954
3955 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003956 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003957 ------------------------------------------------------------------------*/
3958 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3959 {
3960 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3961 "WDI API call before module is initialized - Fail request");
3962
Jeff Johnsone7245742012-09-05 17:12:55 -07003963 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003964 }
3965
3966 /*------------------------------------------------------------------------
3967 Fill in Event data and post to the Main FSM
3968 ------------------------------------------------------------------------*/
3969 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303970 wdiEventData.pEventData = pwdiExitImpsReqParams;
3971 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003972 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003973 wdiEventData.pUserData = pUserData;
3974
3975 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3976
3977}/*WDI_ExitImpsReq*/
3978
3979/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003980 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 request the device to get into BMPS power state. Upon
3982 the call of this API the WLAN DAL will pack and send a
3983 HAL Enter BMPS request message to the lower RIVA
3984 sub-system if DAL is in state STARTED.
3985
3986 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003987 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003988
3989 WDI_PostAssocReq must have been called.
3990
Jeff Johnsone7245742012-09-05 17:12:55 -07003991 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003992 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003993
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 wdiEnterBmpsRspCb: callback for passing back the
3995 response of the Enter BMPS operation received from the
3996 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003997
Jeff Johnson295189b2012-06-20 16:38:30 -07003998 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003999 callback
4000
Jeff Johnson295189b2012-06-20 16:38:30 -07004001 @see WDI_PostAssocReq
4002 @return Result of the function call
4003*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004004WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004005WDI_EnterBmpsReq
4006(
4007 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
4008 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
4009 void* pUserData
4010)
4011{
4012 WDI_EventInfoType wdiEventData;
4013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4014
4015 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004016 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004017 ------------------------------------------------------------------------*/
4018 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4019 {
4020 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4021 "WDI API call before module is initialized - Fail request");
4022
Jeff Johnsone7245742012-09-05 17:12:55 -07004023 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004024 }
4025
4026 /*------------------------------------------------------------------------
4027 Fill in Event data and post to the Main FSM
4028 ------------------------------------------------------------------------*/
4029 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004030 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
4031 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
4032 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004033 wdiEventData.pUserData = pUserData;
4034
4035 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4036
4037}/*WDI_EnterBmpsReq*/
4038
4039/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004040 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004041 request the device to get out of BMPS power state. Upon
4042 the call of this API the WLAN DAL will pack and send a
4043 HAL Exit BMPS request message to the lower RIVA
4044 sub-system if DAL is in state STARTED.
4045
4046 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004047 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004048
4049 WDI_PostAssocReq must have been called.
4050
Jeff Johnsone7245742012-09-05 17:12:55 -07004051 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004052 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004053
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 wdiExitBmpsRspCb: callback for passing back the response
4055 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004056
Jeff Johnson295189b2012-06-20 16:38:30 -07004057 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004058 callback
4059
Jeff Johnson295189b2012-06-20 16:38:30 -07004060 @see WDI_PostAssocReq
4061 @return Result of the function call
4062*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004063WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004064WDI_ExitBmpsReq
4065(
4066 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4067 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4068 void* pUserData
4069)
4070{
4071 WDI_EventInfoType wdiEventData;
4072 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4073
4074 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004075 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004076 ------------------------------------------------------------------------*/
4077 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4078 {
4079 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4080 "WDI API call before module is initialized - Fail request");
4081
Jeff Johnsone7245742012-09-05 17:12:55 -07004082 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004083 }
4084
4085 /*------------------------------------------------------------------------
4086 Fill in Event data and post to the Main FSM
4087 ------------------------------------------------------------------------*/
4088 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004089 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4090 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4091 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004092 wdiEventData.pUserData = pUserData;
4093
4094 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4095
4096}/*WDI_ExitBmpsReq*/
4097
4098/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004099 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004100 request the device to get into UAPSD power state. Upon
4101 the call of this API the WLAN DAL will pack and send a
4102 HAL Enter UAPSD request message to the lower RIVA
4103 sub-system if DAL is in state STARTED.
4104
4105 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004106 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004107
4108 WDI_PostAssocReq must have been called.
4109 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004110
4111 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004112 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004113
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 wdiEnterUapsdRspCb: callback for passing back the
4115 response of the Enter UAPSD operation received from the
4116 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004117
Jeff Johnson295189b2012-06-20 16:38:30 -07004118 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 callback
4120
Jeff Johnson295189b2012-06-20 16:38:30 -07004121 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4122 @return Result of the function call
4123*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004124WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004125WDI_EnterUapsdReq
4126(
4127 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4128 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4129 void* pUserData
4130)
4131{
4132 WDI_EventInfoType wdiEventData;
4133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4134
4135 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004136 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004137 ------------------------------------------------------------------------*/
4138 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4139 {
4140 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4141 "WDI API call before module is initialized - Fail request");
4142
Jeff Johnsone7245742012-09-05 17:12:55 -07004143 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004144 }
4145
4146 /*------------------------------------------------------------------------
4147 Fill in Event data and post to the Main FSM
4148 ------------------------------------------------------------------------*/
4149 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004150 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4151 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4152 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004153 wdiEventData.pUserData = pUserData;
4154
4155 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4156
4157}/*WDI_EnterUapsdReq*/
4158
4159/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004160 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004161 request the device to get out of UAPSD power state. Upon
4162 the call of this API the WLAN DAL will send a HAL Exit
4163 UAPSD request message to the lower RIVA sub-system if
4164 DAL is in state STARTED.
4165
4166 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004167 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004168
4169 WDI_PostAssocReq must have been called.
4170
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 response of the Exit UAPSD operation received from the
4173 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004174
Jeff Johnson295189b2012-06-20 16:38:30 -07004175 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004176 callback
4177
Jeff Johnson295189b2012-06-20 16:38:30 -07004178 @see WDI_PostAssocReq
4179 @return Result of the function call
4180*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004181WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004182WDI_ExitUapsdReq
4183(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004184 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004185 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4186 void* pUserData
4187)
4188{
4189 WDI_EventInfoType wdiEventData;
4190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4191
4192 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004193 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004194 ------------------------------------------------------------------------*/
4195 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4196 {
4197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4198 "WDI API call before module is initialized - Fail request");
4199
Jeff Johnsone7245742012-09-05 17:12:55 -07004200 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 }
4202
4203 /*------------------------------------------------------------------------
4204 Fill in Event data and post to the Main FSM
4205 ------------------------------------------------------------------------*/
4206 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004207 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4208 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004209 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004210 wdiEventData.pUserData = pUserData;
4211
4212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4213
4214}/*WDI_ExitUapsdReq*/
4215
4216/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004217 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004218 MAC wants to set the UAPSD related configurations
4219 of an associated STA (while acting as an AP) to the WLAN
4220 Device. Upon the call of this API the WLAN DAL will pack
4221 and send a HAL Update UAPSD params request message to
4222 the lower RIVA sub-system if DAL is in state STARTED.
4223
4224 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004225 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004226
4227 WDI_ConfigBSSReq must have been called.
4228
Jeff Johnsone7245742012-09-05 17:12:55 -07004229 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004230 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004231
Jeff Johnson295189b2012-06-20 16:38:30 -07004232 wdiUpdateUapsdParamsCb: callback for passing back the
4233 response of the update UAPSD params operation received
4234 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004235
Jeff Johnson295189b2012-06-20 16:38:30 -07004236 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004237 callback
4238
Jeff Johnson295189b2012-06-20 16:38:30 -07004239 @see WDI_ConfigBSSReq
4240 @return Result of the function call
4241*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004242WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004243WDI_UpdateUapsdParamsReq
4244(
4245 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4246 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4247 void* pUserData
4248)
4249{
4250 WDI_EventInfoType wdiEventData;
4251 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4252
4253 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004254 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004255 ------------------------------------------------------------------------*/
4256 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4257 {
4258 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4259 "WDI API call before module is initialized - Fail request");
4260
Jeff Johnsone7245742012-09-05 17:12:55 -07004261 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004262 }
4263
4264 /*------------------------------------------------------------------------
4265 Fill in Event data and post to the Main FSM
4266 ------------------------------------------------------------------------*/
4267 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004268 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004269 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004270 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004271 wdiEventData.pUserData = pUserData;
4272
4273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4274
4275}/*WDI_UpdateUapsdParamsReq*/
4276
4277/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004278 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004279 MAC wants to set the UAPSD related configurations before
4280 requesting for enter UAPSD power state to the WLAN
4281 Device. Upon the call of this API the WLAN DAL will pack
4282 and send a HAL Set UAPSD params request message to
4283 the lower RIVA sub-system if DAL is in state STARTED.
4284
4285 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004286 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004287
4288 WDI_PostAssocReq must have been called.
4289
4290 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4291 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004292
Jeff Johnson295189b2012-06-20 16:38:30 -07004293 wdiSetUapsdAcParamsCb: callback for passing back the
4294 response of the set UAPSD params operation received from
4295 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004296
Jeff Johnson295189b2012-06-20 16:38:30 -07004297 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004298 callback
4299
Jeff Johnson295189b2012-06-20 16:38:30 -07004300 @see WDI_PostAssocReq
4301 @return Result of the function call
4302*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004303WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004304WDI_SetUapsdAcParamsReq
4305(
4306 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4307 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4308 void* pUserData
4309)
4310{
4311 WDI_EventInfoType wdiEventData;
4312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4313
4314 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004315 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004316 ------------------------------------------------------------------------*/
4317 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4318 {
4319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4320 "WDI API call before module is initialized - Fail request");
4321
Jeff Johnsone7245742012-09-05 17:12:55 -07004322 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004323 }
4324
4325 /*------------------------------------------------------------------------
4326 Fill in Event data and post to the Main FSM
4327 ------------------------------------------------------------------------*/
4328 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004329 wdiEventData.pEventData = pwdiUapsdInfo;
4330 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4331 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004332 wdiEventData.pUserData = pUserData;
4333
4334 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4335
4336}/*WDI_SetUapsdAcParamsReq*/
4337
4338/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304339 @brief WDI_FWLoggingDXEdoneInd
4340
4341 FW Logging DXE done Indication from the upper layer will be sent
4342 down to HAL
4343
4344 @param WDI_FWLoggingDXEdoneIndInfoType
4345
4346 @see
4347
4348 @return Status of the request
4349*/
4350WDI_Status
4351WDI_FWLoggingDXEdoneInd
4352(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304353 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304354)
4355{
4356
4357 WDI_EventInfoType wdiEventData;
4358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4359
4360 /*------------------------------------------------------------------------
4361 Sanity Check
4362 ------------------------------------------------------------------------*/
4363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4364 {
4365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4366 "WDI API call before module is initialized - Fail request");
4367
4368 return WDI_STATUS_E_NOT_ALLOWED;
4369 }
4370
4371 /*------------------------------------------------------------------------
4372 Fill in Event data and post to the Main FSM
4373 ------------------------------------------------------------------------*/
4374 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304375 wdiEventData.pEventData = (void *)&data;
4376 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304377 wdiEventData.pCBfnc = NULL;
4378 wdiEventData.pUserData = NULL;
4379
4380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4381
4382}/*WDI_FWLoggingDXEdoneInd*/
4383
4384/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304385 @brief WDI_GetFrameLogReq will be called when the upper
4386 MAC wants to initialize frame logging. Upon the call of
4387 this API the WLAN DAL will pack and send a HAL
4388 Frame logging init request message to
4389 the lower RIVA sub-system.
4390
4391 In state BUSY this request will be queued. Request won't
4392 be allowed in any other state.
4393
4394
4395 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4396 as specified by the Device Interface
4397
4398 wdiGetFrameLogRspCb: callback for passing back the
4399 response of the frame logging init operation received
4400 from the device
4401
4402 pUserData: user data will be passed back with the
4403 callback
4404
4405 @return Result of the function call
4406*/
4407WDI_Status
4408WDI_GetFrameLogReq
4409(
4410 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4411 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4412 void* pUserData
4413)
4414{
4415 WDI_EventInfoType wdiEventData;
4416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4417
4418 /*------------------------------------------------------------------------
4419 Sanity Check
4420 ------------------------------------------------------------------------*/
4421 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4422 {
4423 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4424 "WDI API call before module is initialized - Fail request");
4425
4426 return WDI_STATUS_E_NOT_ALLOWED;
4427 }
4428
4429 /*------------------------------------------------------------------------
4430 Fill in Event data and post to the Main FSM
4431 ------------------------------------------------------------------------*/
4432 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4433 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4434 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4435 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4436 wdiEventData.pUserData = pUserData;
4437
4438 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4439}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304440
4441
4442/**
4443 @brief WDI_FatalEventLogsReq will be called when the upper
4444 MAC wants to send the flush command. Upon the call of
4445 this API the WLAN DAL will pack and send a HAL
4446 Fatal Event Req message to the lower RIVA sub-system.
4447
4448 In state BUSY this request will be queued. Request won't
4449 be allowed in any other state.
4450
4451
4452 @param pwdiFlushLogsReqInfo: the Flush Logs params
4453 as specified by the Device Interface
4454
4455 wdiFlushLogsRspCb: callback for passing back the
4456 response of the Flush Logs operation received
4457 from the device
4458
4459 pUserData: user data will be passed back with the
4460 callback
4461
4462 @return Result of the function call
4463*/
4464
4465WDI_Status
4466WDI_FatalEventLogsReq
4467(
4468 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4469 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4470 void* pUserData
4471)
4472{
4473 WDI_EventInfoType wdiEventData;
4474
4475 /*------------------------------------------------------------------------
4476 Sanity Check
4477 ------------------------------------------------------------------------*/
4478 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4479 {
4480 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4481 "WDI API call before module is initialized - Fail request");
4482
4483 return WDI_STATUS_E_NOT_ALLOWED;
4484 }
4485
4486 /*------------------------------------------------------------------------
4487 Fill in Event data and post to the Main FSM
4488 ------------------------------------------------------------------------*/
4489 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4490 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4491 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4492 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4493 wdiEventData.pUserData = pUserData;
4494
4495 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4496
4497}
4498
4499
Siddharth Bhal64246172015-02-27 01:04:37 +05304500/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304501 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304502 MAC wants to initialize frame logging. Upon the call of
4503 this API the WLAN DAL will pack and send a HAL
4504 Frame logging init request message to
4505 the lower RIVA sub-system.
4506
4507 In state BUSY this request will be queued. Request won't
4508 be allowed in any other state.
4509
4510
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304511 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304512 as specified by the Device Interface
4513
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304514 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304515 response of the frame logging init operation received
4516 from the device
4517
4518 pUserData: user data will be passed back with the
4519 callback
4520
4521 @return Result of the function call
4522*/
4523WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304524WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304525(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304526 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4527 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304528 void* pUserData
4529)
4530{
4531 WDI_EventInfoType wdiEventData;
4532
4533 /*------------------------------------------------------------------------
4534 Sanity Check
4535 ------------------------------------------------------------------------*/
4536 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4537 {
4538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4539 "WDI API call before module is initialized - Fail request");
4540
4541 return WDI_STATUS_E_NOT_ALLOWED;
4542 }
4543
4544 /*------------------------------------------------------------------------
4545 Fill in Event data and post to the Main FSM
4546 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304547 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4548 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4549 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4550 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304551 wdiEventData.pUserData = pUserData;
4552
4553 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4554}
4555
c_manjeecfd1efb2015-09-25 19:32:34 +05304556
4557/**
4558 @brief WDI_FwrMemDumpReq will be called when the upper
4559 MAC wants to get fwr mem dump. Upon the call of
4560 this API the WLAN DAL will pack and send a HAL
4561 Frame logging init request message to
4562 the lower RIVA sub-system.
4563
4564 In state BUSY this request will be queued. Request won't
4565 be allowed in any other state.
4566
4567
4568 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4569 as specified by the Device Interface
4570
4571 wdiFWLoggingInitReqCb: callback for passing back the
4572 response of the frame logging init operation received
4573 from the device
4574
4575 pUserData: user data will be passed back with the
4576 callback
4577
4578 @return Result of the function call
4579*/
4580
4581WDI_Status
4582WDI_FwrMemDumpReq
4583
4584(
4585 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4586 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4587 void* pUserData
4588)
4589{
4590 WDI_EventInfoType wdiEventData;
4591
4592 /*------------------------------------------------------------------------
4593 Sanity Check
4594 ------------------------------------------------------------------------*/
4595 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4596 {
4597 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4598 "WDI API call before module is initialized - Fail request");
4599
4600 return WDI_STATUS_E_NOT_ALLOWED;
4601 }
4602
4603 /*------------------------------------------------------------------------
4604 Fill in Event data and post to the Main FSM
4605 ------------------------------------------------------------------------*/
4606 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4607 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4608 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4609 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4610 wdiEventData.pUserData = pUserData;
4611
4612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4613}
4614
4615
4616
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304617/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304618 @brief WDI_StartRssiMonitorReq will be called when the upper
4619 MAC wants to initialize Rssi Monitor on a bssid.
4620 Upon the call of this API the WLAN DAL will pack and
4621 send a HAL Rssi Monitor init request message to
4622 the lower RIVA sub-system.
4623
4624 In state BUSY this request will be queued. Request won't
4625 be allowed in any other state.
4626
4627
4628 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4629 as specified by the Device Interface
4630
4631 wdiRssiMonitorStartRspCb: callback for passing back the
4632 response of the rssi monitor operation received
4633 from the device
4634
4635 pUserData: user data will be passed back with the
4636 callback
4637
4638 @return Result of the function call
4639*/
4640WDI_Status
4641WDI_StartRssiMonitorReq
4642(
4643 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4644 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4645 void* pUserData
4646)
4647{
4648 WDI_EventInfoType wdiEventData;
4649
4650 /*------------------------------------------------------------------------
4651 Sanity Check
4652 ------------------------------------------------------------------------*/
4653 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4654 {
4655 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4656 "WDI API call before module is initialized - Fail request");
4657
4658 return WDI_STATUS_E_NOT_ALLOWED;
4659 }
4660
4661 /*------------------------------------------------------------------------
4662 Fill in Event data and post to the Main FSM
4663 ------------------------------------------------------------------------*/
4664 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4665 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4666 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4667 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4668 wdiEventData.pUserData = pUserData;
4669
4670 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4671}
4672
4673/**
4674 @brief WDI_StopRssiMonitorReq will be called when the upper
4675 MAC wants to stop Rssi Monitor on a bssid.
4676 Upon the call of this API the WLAN DAL will pack and
4677 send a HAL Rssi Monitor stop request message to
4678 the lower RIVA sub-system.
4679
4680 In state BUSY this request will be queued. Request won't
4681 be allowed in any other state.
4682
4683
4684 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4685 as specified by the Device Interface
4686
4687 wdiRssiMonitorStopRspCb: callback for passing back the
4688 response of the rssi monitor operation received
4689 from the device
4690
4691 pUserData: user data will be passed back with the
4692 callback
4693
4694 @return Result of the function call
4695*/
4696WDI_Status
4697WDI_StopRssiMonitorReq
4698(
4699 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4700 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4701 void* pUserData
4702)
4703{
4704 WDI_EventInfoType wdiEventData;
4705
4706 /*------------------------------------------------------------------------
4707 Sanity Check
4708 ------------------------------------------------------------------------*/
4709 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4710 {
4711 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4712 "WDI API call before module is initialized - Fail request");
4713
4714 return WDI_STATUS_E_NOT_ALLOWED;
4715 }
4716
4717 /*------------------------------------------------------------------------
4718 Fill in Event data and post to the Main FSM
4719 ------------------------------------------------------------------------*/
4720 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4721 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4722 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4723 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4724 wdiEventData.pUserData = pUserData;
4725
4726 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4727}
4728
4729
4730/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004731 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004732 MAC wants to set/reset the RXP filters for received pkts
4733 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4734 and send a HAL configure RXP filter request message to
4735 the lower RIVA sub-system.
4736
4737 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004738 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004739
Jeff Johnsone7245742012-09-05 17:12:55 -07004740
4741 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004742 filter as specified by the Device
4743 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004744
Jeff Johnson295189b2012-06-20 16:38:30 -07004745 wdiConfigureRxpFilterCb: callback for passing back the
4746 response of the configure RXP filter operation received
4747 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004748
Jeff Johnson295189b2012-06-20 16:38:30 -07004749 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004750 callback
4751
Jeff Johnson295189b2012-06-20 16:38:30 -07004752 @return Result of the function call
4753*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004754WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004755WDI_ConfigureRxpFilterReq
4756(
4757 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4758 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4759 void* pUserData
4760)
4761{
4762 WDI_EventInfoType wdiEventData;
4763 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4764
4765 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004766 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004767 ------------------------------------------------------------------------*/
4768 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4769 {
4770 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4771 "WDI API call before module is initialized - Fail request");
4772
Jeff Johnsone7245742012-09-05 17:12:55 -07004773 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004774 }
4775
4776 /*------------------------------------------------------------------------
4777 Fill in Event data and post to the Main FSM
4778 ------------------------------------------------------------------------*/
4779 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004780 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4781 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4782 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004783 wdiEventData.pUserData = pUserData;
4784
4785 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4786}/*WDI_ConfigureRxpFilterReq*/
4787
4788/**
4789 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4790 wants to set the beacon filters while in power save.
4791 Upon the call of this API the WLAN DAL will pack and
4792 send a Beacon filter request message to the
4793 lower RIVA sub-system.
4794
4795 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004796 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004797
Jeff Johnsone7245742012-09-05 17:12:55 -07004798
4799 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004800 filter as specified by the Device
4801 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004802
Jeff Johnson295189b2012-06-20 16:38:30 -07004803 wdiBeaconFilterCb: callback for passing back the
4804 response of the set beacon filter operation received
4805 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004806
Jeff Johnson295189b2012-06-20 16:38:30 -07004807 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004808 callback
4809
Jeff Johnson295189b2012-06-20 16:38:30 -07004810 @return Result of the function call
4811*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004812WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004813WDI_SetBeaconFilterReq
4814(
4815 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4816 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4817 void* pUserData
4818)
4819{
4820 WDI_EventInfoType wdiEventData;
4821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4822
4823 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004824 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004825 ------------------------------------------------------------------------*/
4826 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4827 {
4828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4829 "WDI API call before module is initialized - Fail request");
4830
Jeff Johnsone7245742012-09-05 17:12:55 -07004831 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004832 }
4833
4834 /*------------------------------------------------------------------------
4835 Fill in Event data and post to the Main FSM
4836 ------------------------------------------------------------------------*/
4837 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004838 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004839 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004840 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 wdiEventData.pUserData = pUserData;
4842
4843 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4844}/*WDI_SetBeaconFilterReq*/
4845
4846/**
4847 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4848 wants to remove the beacon filter for particular IE
4849 while in power save. Upon the call of this API the WLAN
4850 DAL will pack and send a remove Beacon filter request
4851 message to the lower RIVA sub-system.
4852
4853 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004854 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004855
Jeff Johnsone7245742012-09-05 17:12:55 -07004856
4857 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004858 filter as specified by the Device
4859 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004860
Jeff Johnson295189b2012-06-20 16:38:30 -07004861 wdiBeaconFilterCb: callback for passing back the
4862 response of the remove beacon filter operation received
4863 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004864
Jeff Johnson295189b2012-06-20 16:38:30 -07004865 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004866 callback
4867
Jeff Johnson295189b2012-06-20 16:38:30 -07004868 @return Result of the function call
4869*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004870WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004871WDI_RemBeaconFilterReq
4872(
4873 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4874 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4875 void* pUserData
4876)
4877{
4878 WDI_EventInfoType wdiEventData;
4879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4880
4881 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004882 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004883 ------------------------------------------------------------------------*/
4884 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4885 {
4886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4887 "WDI API call before module is initialized - Fail request");
4888
Jeff Johnsone7245742012-09-05 17:12:55 -07004889 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004890 }
4891
4892 /*------------------------------------------------------------------------
4893 Fill in Event data and post to the Main FSM
4894 ------------------------------------------------------------------------*/
4895 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004896 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004897 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004898 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004899 wdiEventData.pUserData = pUserData;
4900
4901 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4902}/*WDI_RemBeaconFilterReq*/
4903
4904/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004905 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004906 MAC wants to set the RSSI thresholds related
4907 configurations while in power save. Upon the call of
4908 this API the WLAN DAL will pack and send a HAL Set RSSI
4909 thresholds request message to the lower RIVA
4910 sub-system if DAL is in state STARTED.
4911
4912 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004913 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004914
4915 WDI_PostAssocReq must have been called.
4916
4917 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4918 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004919
Jeff Johnson295189b2012-06-20 16:38:30 -07004920 wdiSetUapsdAcParamsCb: callback for passing back the
4921 response of the set UAPSD params operation received from
4922 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004923
Jeff Johnson295189b2012-06-20 16:38:30 -07004924 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004925 callback
4926
Jeff Johnson295189b2012-06-20 16:38:30 -07004927 @see WDI_PostAssocReq
4928 @return Result of the function call
4929*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004930WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004931WDI_SetRSSIThresholdsReq
4932(
4933 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4934 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4935 void* pUserData
4936)
4937{
4938 WDI_EventInfoType wdiEventData;
4939 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4940
4941 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004942 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004943 ------------------------------------------------------------------------*/
4944 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4945 {
4946 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4947 "WDI API call before module is initialized - Fail request");
4948
Jeff Johnsone7245742012-09-05 17:12:55 -07004949 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 }
4951
4952 /*------------------------------------------------------------------------
4953 Fill in Event data and post to the Main FSM
4954 ------------------------------------------------------------------------*/
4955 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004956 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004957 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004958 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004959 wdiEventData.pUserData = pUserData;
4960
4961 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4962}/* WDI_SetRSSIThresholdsReq*/
4963
4964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004965 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004966 wants to set the filter to minimize unnecessary host
4967 wakeup due to broadcast traffic while in power save.
4968 Upon the call of this API the WLAN DAL will pack and
4969 send a HAL host offload request message to the
4970 lower RIVA sub-system if DAL is in state STARTED.
4971
4972 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004973 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004974
4975 WDI_PostAssocReq must have been called.
4976
Jeff Johnsone7245742012-09-05 17:12:55 -07004977 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004978 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004979
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 wdiHostOffloadCb: callback for passing back the response
4981 of the host offload operation received from the
4982 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004983
Jeff Johnson295189b2012-06-20 16:38:30 -07004984 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004985 callback
4986
Jeff Johnson295189b2012-06-20 16:38:30 -07004987 @see WDI_PostAssocReq
4988 @return Result of the function call
4989*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004990WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004991WDI_HostOffloadReq
4992(
4993 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4994 WDI_HostOffloadCb wdiHostOffloadCb,
4995 void* pUserData
4996)
4997{
4998 WDI_EventInfoType wdiEventData;
4999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5000
5001 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005002 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005003 ------------------------------------------------------------------------*/
5004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5005 {
5006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5007 "WDI API call before module is initialized - Fail request");
5008
Jeff Johnsone7245742012-09-05 17:12:55 -07005009 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005010 }
5011
5012 /*------------------------------------------------------------------------
5013 Fill in Event data and post to the Main FSM
5014 ------------------------------------------------------------------------*/
5015 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005016 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005017 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005019 wdiEventData.pUserData = pUserData;
5020
5021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5022}/*WDI_HostOffloadReq*/
5023
5024/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005025 @brief WDI_KeepAliveReq will be called when the upper MAC
5026 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07005027 and minimize unnecessary host wakeups due to while in power save.
5028 Upon the call of this API the WLAN DAL will pack and
5029 send a HAL Keep Alive request message to the
5030 lower RIVA sub-system if DAL is in state STARTED.
5031
5032 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005033 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005034
5035 WDI_PostAssocReq must have been called.
5036
Jeff Johnsone7245742012-09-05 17:12:55 -07005037 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005038 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005039
Jeff Johnson295189b2012-06-20 16:38:30 -07005040 wdiKeepAliveCb: callback for passing back the response
5041 of the Keep Alive operation received from the
5042 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005043
Jeff Johnson295189b2012-06-20 16:38:30 -07005044 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 callback
5046
Jeff Johnson295189b2012-06-20 16:38:30 -07005047 @see WDI_PostAssocReq
5048 @return Result of the function call
5049*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005050WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005051WDI_KeepAliveReq
5052(
5053 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5054 WDI_KeepAliveCb wdiKeepAliveCb,
5055 void* pUserData
5056)
5057{
5058 WDI_EventInfoType wdiEventData;
5059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5060
5061 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005063 ------------------------------------------------------------------------*/
5064 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5065 {
5066 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5067 "WDI_KeepAliveReq: WDI API call before module "
5068 "is initialized - Fail request");
5069
Jeff Johnsone7245742012-09-05 17:12:55 -07005070 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005071 }
5072
5073 /*------------------------------------------------------------------------
5074 Fill in Event data and post to the Main FSM
5075 ------------------------------------------------------------------------*/
5076 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005077 wdiEventData.pEventData = pwdiKeepAliveParams;
5078 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5079 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005080 wdiEventData.pUserData = pUserData;
5081
5082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5083}/*WDI_KeepAliveReq*/
5084
5085/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005086 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005087 wants to set the Wowl Bcast ptrn to minimize unnecessary
5088 host wakeup due to broadcast traffic while in power
5089 save. Upon the call of this API the WLAN DAL will pack
5090 and send a HAL Wowl Bcast ptrn request message to the
5091 lower RIVA sub-system if DAL is in state STARTED.
5092
5093 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005094 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005095
5096 WDI_PostAssocReq must have been called.
5097
Jeff Johnsone7245742012-09-05 17:12:55 -07005098 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005100
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 wdiWowlAddBcPtrnCb: callback for passing back the
5102 response of the add Wowl bcast ptrn operation received
5103 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005104
Jeff Johnson295189b2012-06-20 16:38:30 -07005105 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005106 callback
5107
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 @see WDI_PostAssocReq
5109 @return Result of the function call
5110*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005111WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005112WDI_WowlAddBcPtrnReq
5113(
5114 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5115 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5116 void* pUserData
5117)
5118{
5119 WDI_EventInfoType wdiEventData;
5120 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5121
5122 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005123 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005124 ------------------------------------------------------------------------*/
5125 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5126 {
5127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5128 "WDI API call before module is initialized - Fail request");
5129
Jeff Johnsone7245742012-09-05 17:12:55 -07005130 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005131 }
5132
5133 /*------------------------------------------------------------------------
5134 Fill in Event data and post to the Main FSM
5135 ------------------------------------------------------------------------*/
5136 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005137 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005138 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005139 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005140 wdiEventData.pUserData = pUserData;
5141
5142 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5143}/*WDI_WowlAddBcPtrnReq*/
5144
5145/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005146 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005147 wants to clear the Wowl Bcast ptrn. Upon the call of
5148 this API the WLAN DAL will pack and send a HAL delete
5149 Wowl Bcast ptrn request message to the lower RIVA
5150 sub-system if DAL is in state STARTED.
5151
5152 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005153 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005154
5155 WDI_WowlAddBcPtrnReq must have been called.
5156
Jeff Johnsone7245742012-09-05 17:12:55 -07005157 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005158 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005159
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 wdiWowlDelBcPtrnCb: callback for passing back the
5161 response of the del Wowl bcast ptrn operation received
5162 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005163
Jeff Johnson295189b2012-06-20 16:38:30 -07005164 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005165 callback
5166
Jeff Johnson295189b2012-06-20 16:38:30 -07005167 @see WDI_WowlAddBcPtrnReq
5168 @return Result of the function call
5169*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005170WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005171WDI_WowlDelBcPtrnReq
5172(
5173 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5174 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5175 void* pUserData
5176)
5177{
5178 WDI_EventInfoType wdiEventData;
5179 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5180
5181 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005182 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005183 ------------------------------------------------------------------------*/
5184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5185 {
5186 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5187 "WDI API call before module is initialized - Fail request");
5188
Jeff Johnsone7245742012-09-05 17:12:55 -07005189 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 }
5191
5192 /*------------------------------------------------------------------------
5193 Fill in Event data and post to the Main FSM
5194 ------------------------------------------------------------------------*/
5195 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005196 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005197 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005199 wdiEventData.pUserData = pUserData;
5200
5201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5202}/*WDI_WowlDelBcPtrnReq*/
5203
5204/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005205 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005206 wants to enter the Wowl state to minimize unnecessary
5207 host wakeup while in power save. Upon the call of this
5208 API the WLAN DAL will pack and send a HAL Wowl enter
5209 request message to the lower RIVA sub-system if DAL is
5210 in state STARTED.
5211
5212 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005213 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005214
5215 WDI_PostAssocReq must have been called.
5216
Jeff Johnsone7245742012-09-05 17:12:55 -07005217 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005218 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005219
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 wdiWowlEnterReqCb: callback for passing back the
5221 response of the enter Wowl operation received from the
5222 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005223
Jeff Johnson295189b2012-06-20 16:38:30 -07005224 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005225 callback
5226
Jeff Johnson295189b2012-06-20 16:38:30 -07005227 @see WDI_PostAssocReq
5228 @return Result of the function call
5229*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005230WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005231WDI_WowlEnterReq
5232(
5233 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5234 WDI_WowlEnterReqCb wdiWowlEnterCb,
5235 void* pUserData
5236)
5237{
5238 WDI_EventInfoType wdiEventData;
5239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5240
5241 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005242 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005243 ------------------------------------------------------------------------*/
5244 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5245 {
5246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5247 "WDI API call before module is initialized - Fail request");
5248
Jeff Johnsone7245742012-09-05 17:12:55 -07005249 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005250 }
5251
5252 /*------------------------------------------------------------------------
5253 Fill in Event data and post to the Main FSM
5254 ------------------------------------------------------------------------*/
5255 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005256 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005257 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005259 wdiEventData.pUserData = pUserData;
5260
5261 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5262}/*WDI_WowlEnterReq*/
5263
5264/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005265 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005266 wants to exit the Wowl state. Upon the call of this API
5267 the WLAN DAL will pack and send a HAL Wowl exit request
5268 message to the lower RIVA sub-system if DAL is in state
5269 STARTED.
5270
5271 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005272 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005273
5274 WDI_WowlEnterReq must have been called.
5275
Jeff Johnsone7245742012-09-05 17:12:55 -07005276 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005277 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005278
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 wdiWowlExitReqCb: callback for passing back the response
5280 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005281
Jeff Johnson295189b2012-06-20 16:38:30 -07005282 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005283 callback
5284
Jeff Johnson295189b2012-06-20 16:38:30 -07005285 @see WDI_WowlEnterReq
5286 @return Result of the function call
5287*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005288WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005289WDI_WowlExitReq
5290(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005291 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005292 WDI_WowlExitReqCb wdiWowlExitCb,
5293 void* pUserData
5294)
5295{
5296 WDI_EventInfoType wdiEventData;
5297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5298
5299 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005300 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005301 ------------------------------------------------------------------------*/
5302 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5303 {
5304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5305 "WDI API call before module is initialized - Fail request");
5306
Jeff Johnsone7245742012-09-05 17:12:55 -07005307 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005308 }
5309
5310 /*------------------------------------------------------------------------
5311 Fill in Event data and post to the Main FSM
5312 ------------------------------------------------------------------------*/
5313 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005314 wdiEventData.pEventData = pwdiWowlExitParams;
5315 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005316 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005317 wdiEventData.pUserData = pUserData;
5318
5319 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5320}/*WDI_WowlExitReq*/
5321
5322/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005323 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005324 the upper MAC wants to dynamically adjusts the listen
5325 interval based on the WLAN/MSM activity. Upon the call
5326 of this API the WLAN DAL will pack and send a HAL
5327 configure Apps Cpu Wakeup State request message to the
5328 lower RIVA sub-system.
5329
5330 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005331 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005332
Jeff Johnsone7245742012-09-05 17:12:55 -07005333
5334 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005335 Apps Cpu Wakeup State as specified by the
5336 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005337
Jeff Johnson295189b2012-06-20 16:38:30 -07005338 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5339 back the response of the configure Apps Cpu Wakeup State
5340 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005341
Jeff Johnson295189b2012-06-20 16:38:30 -07005342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005343 callback
5344
Jeff Johnson295189b2012-06-20 16:38:30 -07005345 @return Result of the function call
5346*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005347WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005348WDI_ConfigureAppsCpuWakeupStateReq
5349(
5350 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5351 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5352 void* pUserData
5353)
5354{
5355 WDI_EventInfoType wdiEventData;
5356 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5357
5358 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005359 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005360 ------------------------------------------------------------------------*/
5361 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5362 {
5363 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5364 "WDI API call before module is initialized - Fail request");
5365
Jeff Johnsone7245742012-09-05 17:12:55 -07005366 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005367 }
5368
5369 /*------------------------------------------------------------------------
5370 Fill in Event data and post to the Main FSM
5371 ------------------------------------------------------------------------*/
5372 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005373 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5374 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5375 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005376 wdiEventData.pUserData = pUserData;
5377
5378 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5379}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5380/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005381 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005382 to to perform a flush operation on a given AC. Upon the
5383 call of this API the WLAN DAL will pack and send a HAL
5384 Flush AC request message to the lower RIVA sub-system if
5385 DAL is in state STARTED.
5386
5387 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005388 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005389
5390 WDI_AddBAReq must have been called.
5391
Jeff Johnsone7245742012-09-05 17:12:55 -07005392 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005393 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005394
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 wdiFlushAcRspCb: callback for passing back the response
5396 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005397
Jeff Johnson295189b2012-06-20 16:38:30 -07005398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005399 callback
5400
Jeff Johnson295189b2012-06-20 16:38:30 -07005401 @see WDI_AddBAReq
5402 @return Result of the function call
5403*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005404WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005405WDI_FlushAcReq
5406(
5407 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5408 WDI_FlushAcRspCb wdiFlushAcRspCb,
5409 void* pUserData
5410)
5411{
5412 WDI_EventInfoType wdiEventData;
5413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5414
5415 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005416 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005417 ------------------------------------------------------------------------*/
5418 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5419 {
5420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5421 "WDI API call before module is initialized - Fail request");
5422
Jeff Johnsone7245742012-09-05 17:12:55 -07005423 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 }
5425
5426 /*------------------------------------------------------------------------
5427 Fill in Event data and post to the Main FSM
5428 ------------------------------------------------------------------------*/
5429 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005430 wdiEventData.pEventData = pwdiFlushAcReqParams;
5431 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5432 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005433 wdiEventData.pUserData = pUserData;
5434
5435 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5436
5437}/*WDI_FlushAcReq*/
5438
5439/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005440 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005441 wants to notify the lower mac on a BT AMP event. This is
5442 to inform BTC-SLM that some BT AMP event occurred. Upon
5443 the call of this API the WLAN DAL will pack and send a
5444 HAL BT AMP event request message to the lower RIVA
5445 sub-system if DAL is in state STARTED.
5446
5447 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005449
Jeff Johnsone7245742012-09-05 17:12:55 -07005450
5451 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005452 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005453
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 wdiBtAmpEventRspCb: callback for passing back the
5455 response of the BT AMP event operation received from the
5456 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005457
Jeff Johnson295189b2012-06-20 16:38:30 -07005458 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005459 callback
5460
Jeff Johnson295189b2012-06-20 16:38:30 -07005461 @return Result of the function call
5462*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005463WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005464WDI_BtAmpEventReq
5465(
5466 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5467 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5468 void* pUserData
5469)
5470{
5471 WDI_EventInfoType wdiEventData;
5472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5473
5474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005475 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005476 ------------------------------------------------------------------------*/
5477 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5478 {
5479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5480 "WDI API call before module is initialized - Fail request");
5481
Jeff Johnsone7245742012-09-05 17:12:55 -07005482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005483 }
5484
5485 /*------------------------------------------------------------------------
5486 Fill in Event data and post to the Main FSM
5487 ------------------------------------------------------------------------*/
5488 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005489 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5490 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5491 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005492 wdiEventData.pUserData = pUserData;
5493
5494 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5495
5496}/*WDI_BtAmpEventReq*/
5497
Jeff Johnsone7245742012-09-05 17:12:55 -07005498#ifdef FEATURE_OEM_DATA_SUPPORT
5499/**
5500 @brief WDI_Start Oem Data Req will be called when the upper MAC
5501 wants to notify the lower mac on a oem data Req event.Upon
5502 the call of this API the WLAN DAL will pack and send a
5503 HAL OEM Data Req event request message to the lower RIVA
5504 sub-system if DAL is in state STARTED.
5505
5506 In state BUSY this request will be queued. Request won't
5507 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005508
5509
Jeff Johnsone7245742012-09-05 17:12:55 -07005510
5511 @param pwdiOemDataReqParams: the Oem Data Req as
5512 specified by the Device Interface
5513
5514 wdiStartOemDataRspCb: callback for passing back the
5515 response of the Oem Data Req received from the
5516 device
5517
5518 pUserData: user data will be passed back with the
5519 callback
5520
5521 @return Result of the function call
5522*/
5523WDI_Status
5524WDI_StartOemDataReq
5525(
5526 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5527 WDI_oemDataRspCb wdiOemDataRspCb,
5528 void* pUserData
5529)
5530{
5531 WDI_EventInfoType wdiEventData;
5532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5533
5534 /*------------------------------------------------------------------------
5535 Sanity Check
5536 ------------------------------------------------------------------------*/
5537 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5538 {
5539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5540 "WDI API call before module is initialized - Fail request");
5541
5542 return WDI_STATUS_E_NOT_ALLOWED;
5543 }
5544
5545 /*------------------------------------------------------------------------
5546 Fill in Event data and post to the Main FSM
5547 ------------------------------------------------------------------------*/
5548 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5549 wdiEventData.pEventData = pwdiOemDataReqParams;
5550 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5551 wdiEventData.pCBfnc = wdiOemDataRspCb;
5552 wdiEventData.pUserData = pUserData;
5553
5554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5555
5556
5557}
5558
5559#endif
5560
5561
5562/*========================================================================
5563
Jeff Johnson295189b2012-06-20 16:38:30 -07005564 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566==========================================================================*/
5567/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005568 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005569 the WLAN HW to change the current channel of operation.
5570 Upon the call of this API the WLAN DAL will pack and
5571 send a HAL Start request message to the lower RIVA
5572 sub-system if DAL is in state STARTED.
5573
5574 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005575 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005576
5577 WDI_Start must have been called.
5578
Jeff Johnsone7245742012-09-05 17:12:55 -07005579 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005580 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005581
Jeff Johnson295189b2012-06-20 16:38:30 -07005582 wdiSwitchChRspCb: callback for passing back the response
5583 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005584
Jeff Johnson295189b2012-06-20 16:38:30 -07005585 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005586 callback
5587
Jeff Johnson295189b2012-06-20 16:38:30 -07005588 @see WDI_Start
5589 @return Result of the function call
5590*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005591WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005592WDI_SwitchChReq
5593(
5594 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5595 WDI_SwitchChRspCb wdiSwitchChRspCb,
5596 void* pUserData
5597)
5598{
5599 WDI_EventInfoType wdiEventData;
5600 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5601
5602 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005603 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005604 ------------------------------------------------------------------------*/
5605 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5606 {
5607 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5608 "WDI API call before module is initialized - Fail request");
5609
Jeff Johnsone7245742012-09-05 17:12:55 -07005610 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005611 }
5612
5613 /*------------------------------------------------------------------------
5614 Fill in Event data and post to the Main FSM
5615 ------------------------------------------------------------------------*/
5616 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005617 wdiEventData.pEventData = pwdiSwitchChReqParams;
5618 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5619 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005620 wdiEventData.pUserData = pUserData;
5621
5622 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5623
5624}/*WDI_SwitchChReq*/
5625
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005626/**
5627 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5628 the WLAN HW to change the current channel of operation.
5629 Upon the call of this API the WLAN DAL will pack and
5630 send a HAL Start request message to the lower RIVA
5631 sub-system if DAL is in state STARTED.
5632 This request message also includes source of channel switch,
5633 like CSA,
5634
5635 In state BUSY this request will be queued. Request won't
5636 be allowed in any other state.
5637
5638 WDI_Start must have been called.
5639
5640 @param wdiSwitchChReqParams: the switch ch parameters as
5641 specified by the Device Interface
5642
5643 wdiSwitchChRspCb: callback for passing back the response
5644 of the switch ch operation received from the device
5645
5646 pUserData: user data will be passed back with the
5647 callback
5648
5649 @see WDI_Start
5650 @return Result of the function call
5651*/
5652WDI_Status
5653WDI_SwitchChReq_V1
5654(
5655 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5656 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5657 void* pUserData
5658)
5659{
5660 WDI_EventInfoType wdiEventData;
5661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5662 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5663 "WDI API call WDI_SwitchChReq_V1");
5664 /*------------------------------------------------------------------------
5665 Sanity Check
5666 ------------------------------------------------------------------------*/
5667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5668 {
5669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5670 "WDI API call before module is initialized - Fail request");
5671
5672 return WDI_STATUS_E_NOT_ALLOWED;
5673 }
5674
5675 /*------------------------------------------------------------------------
5676 Fill in Event data and post to the Main FSM
5677 ------------------------------------------------------------------------*/
5678 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5679 wdiEventData.pEventData = pwdiSwitchChReqParams;
5680 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5681 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5682 wdiEventData.pUserData = pUserData;
5683
5684 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5685
5686}/*WDI_SwitchChReq_V1*/
5687
Jeff Johnson295189b2012-06-20 16:38:30 -07005688
5689/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005690 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005691 wishes to add or update a STA in HW. Upon the call of
5692 this API the WLAN DAL will pack and send a HAL Start
5693 message request message to the lower RIVA sub-system if
5694 DAL is in state STARTED.
5695
5696 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005697 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005698
5699 WDI_Start must have been called.
5700
Jeff Johnsone7245742012-09-05 17:12:55 -07005701 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005702 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005703
Jeff Johnson295189b2012-06-20 16:38:30 -07005704 wdiConfigSTARspCb: callback for passing back the
5705 response of the config STA operation received from the
5706 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005707
Jeff Johnson295189b2012-06-20 16:38:30 -07005708 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005709 callback
5710
Jeff Johnson295189b2012-06-20 16:38:30 -07005711 @see WDI_Start
5712 @return Result of the function call
5713*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005714WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005715WDI_ConfigSTAReq
5716(
5717 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5718 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5719 void* pUserData
5720)
5721{
5722 WDI_EventInfoType wdiEventData;
5723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5724
5725 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005726 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005727 ------------------------------------------------------------------------*/
5728 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5729 {
5730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5731 "WDI API call before module is initialized - Fail request");
5732
Jeff Johnsone7245742012-09-05 17:12:55 -07005733 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005734 }
5735
5736 /*------------------------------------------------------------------------
5737 Fill in Event data and post to the Main FSM
5738 ------------------------------------------------------------------------*/
5739 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005740 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5741 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5742 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005743 wdiEventData.pUserData = pUserData;
5744
5745 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5746
5747}/*WDI_ConfigSTAReq*/
5748
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005749 /**
5750 @brief WDI_UpdateChannelReq will be called when the upper MAC
5751 wants to update the channel list on change in country code.
5752
5753 In state BUSY this request will be queued. Request won't
5754 be allowed in any other state.
5755
5756 WDI_UpdateChannelReq must have been called.
5757
5758 @param wdiUpdateChannelReqParams: the updated channel parameters
5759 as specified by the Device Interface
5760
5761 wdiUpdateChannelRspCb: callback for passing back the
5762 response of the update channel operation received from
5763 the device
5764
5765 pUserData: user data will be passed back with the
5766 callback
5767
5768 @return Result of the function call
5769*/
5770WDI_Status
5771WDI_UpdateChannelReq
5772(
5773 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5774 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5775 void* pUserData
5776)
5777{
5778 WDI_EventInfoType wdiEventData = {{0}};
5779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5780
5781 /*------------------------------------------------------------------------
5782 Sanity Check
5783 ------------------------------------------------------------------------*/
5784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5785 {
5786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5787 "WDI API call before module is initialized - Fail request");
5788
5789 return WDI_STATUS_E_NOT_ALLOWED;
5790 }
5791
5792 /*------------------------------------------------------------------------
5793 Fill in Event data and post to the Main FSM
5794 ------------------------------------------------------------------------*/
5795 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5796 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5797 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5798 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5799 wdiEventData.pUserData = pUserData;
5800
5801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5802
5803}/*WDI_UpdateChannelReq*/
5804
Jeff Johnson295189b2012-06-20 16:38:30 -07005805/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005806 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005807 wants to change the state of an ongoing link. Upon the
5808 call of this API the WLAN DAL will pack and send a HAL
5809 Start message request message to the lower RIVA
5810 sub-system if DAL is in state STARTED.
5811
5812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005814
5815 WDI_JoinStartReq must have been called.
5816
Jeff Johnsone7245742012-09-05 17:12:55 -07005817 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005818 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005819
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 wdiSetLinkStateRspCb: callback for passing back the
5821 response of the set link state operation received from
5822 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005823
Jeff Johnson295189b2012-06-20 16:38:30 -07005824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005825 callback
5826
Jeff Johnson295189b2012-06-20 16:38:30 -07005827 @see WDI_JoinStartReq
5828 @return Result of the function call
5829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005831WDI_SetLinkStateReq
5832(
5833 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5834 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5835 void* pUserData
5836)
5837{
5838 WDI_EventInfoType wdiEventData;
5839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5840
5841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005843 ------------------------------------------------------------------------*/
5844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5845 {
5846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5847 "WDI API call before module is initialized - Fail request");
5848
Jeff Johnsone7245742012-09-05 17:12:55 -07005849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005850 }
5851
5852 /*------------------------------------------------------------------------
5853 Fill in Event data and post to the Main FSM
5854 ------------------------------------------------------------------------*/
5855 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005856 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5857 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5858 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005859 wdiEventData.pUserData = pUserData;
5860
5861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5862
5863}/*WDI_SetLinkStateReq*/
5864
5865
5866/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005867 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005868 to get statistics (MIB counters) from the device. Upon
5869 the call of this API the WLAN DAL will pack and send a
5870 HAL Start request message to the lower RIVA sub-system
5871 if DAL is in state STARTED.
5872
5873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005875
5876 WDI_Start must have been called.
5877
Jeff Johnsone7245742012-09-05 17:12:55 -07005878 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005879 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005880
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 wdiGetStatsRspCb: callback for passing back the response
5882 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005883
Jeff Johnson295189b2012-06-20 16:38:30 -07005884 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005885 callback
5886
Jeff Johnson295189b2012-06-20 16:38:30 -07005887 @see WDI_Start
5888 @return Result of the function call
5889*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005890WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005891WDI_GetStatsReq
5892(
5893 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5894 WDI_GetStatsRspCb wdiGetStatsRspCb,
5895 void* pUserData
5896)
5897{
5898 WDI_EventInfoType wdiEventData;
5899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5900
5901 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005903 ------------------------------------------------------------------------*/
5904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5905 {
5906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5907 "WDI API call before module is initialized - Fail request");
5908
Jeff Johnsone7245742012-09-05 17:12:55 -07005909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005910 }
5911
5912 /*------------------------------------------------------------------------
5913 Fill in Event data and post to the Main FSM
5914 ------------------------------------------------------------------------*/
5915 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005916 wdiEventData.pEventData = pwdiGetStatsReqParams;
5917 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5918 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005919 wdiEventData.pUserData = pUserData;
5920
5921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5922
5923}/*WDI_GetStatsReq*/
5924
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005925#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005926/**
5927 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5928 to get roam rssi from the device. Upon
5929 the call of this API the WLAN DAL will pack and send a
5930 HAL Start request message to the lower RIVA sub-system
5931 if DAL is in state STARTED.
5932
5933 In state BUSY this request will be queued. Request won't
5934 be allowed in any other state.
5935
5936 WDI_Start must have been called.
5937
5938 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5939 specified by the Device Interface
5940
5941 wdiGetRoamRssiRspCb: callback for passing back the response
5942 of the get stats operation received from the device
5943
5944 pUserData: user data will be passed back with the
5945 callback
5946
5947 @see WDI_Start
5948 @return Result of the function call
5949*/
5950WDI_Status
5951WDI_GetRoamRssiReq
5952(
5953 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5954 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5955 void* pUserData
5956)
5957{
5958 WDI_EventInfoType wdiEventData;
5959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5960
5961 /*------------------------------------------------------------------------
5962 Sanity Check
5963 ------------------------------------------------------------------------*/
5964 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5965 {
5966 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5967 "WDI API call before module is initialized - Fail request");
5968
5969 return WDI_STATUS_E_NOT_ALLOWED;
5970 }
5971 /*------------------------------------------------------------------------
5972 Fill in Event data and post to the Main FSM
5973 ------------------------------------------------------------------------*/
5974 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5975 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5976 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5977 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5978 wdiEventData.pUserData = pUserData;
5979
5980 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5981
5982}/*WDI_GetRoamRssiReq*/
5983#endif
5984
Jeff Johnson295189b2012-06-20 16:38:30 -07005985
5986/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005987 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005988 it wishes to change the configuration of the WLAN
5989 Device. Upon the call of this API the WLAN DAL will pack
5990 and send a HAL Update CFG request message to the lower
5991 RIVA sub-system if DAL is in state STARTED.
5992
5993 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005994 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005995
5996 WDI_Start must have been called.
5997
Jeff Johnsone7245742012-09-05 17:12:55 -07005998 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006000
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 wdiUpdateCfgsRspCb: callback for passing back the
6002 response of the update cfg operation received from the
6003 device
Jeff Johnsone7245742012-09-05 17:12:55 -07006004
Jeff Johnson295189b2012-06-20 16:38:30 -07006005 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006006 callback
6007
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 @see WDI_Start
6009 @return Result of the function call
6010*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006011WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006012WDI_UpdateCfgReq
6013(
6014 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
6015 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
6016 void* pUserData
6017)
6018{
6019 WDI_EventInfoType wdiEventData;
6020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6021
6022 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006023 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006024 ------------------------------------------------------------------------*/
6025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6026 {
6027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6028 "WDI API call before module is initialized - Fail request");
6029
Jeff Johnsone7245742012-09-05 17:12:55 -07006030 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006031 }
6032
6033 /*------------------------------------------------------------------------
6034 Fill in Event data and post to the Main FSM
6035 ------------------------------------------------------------------------*/
6036 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006037 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
6038 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
6039 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006040 wdiEventData.pUserData = pUserData;
6041
6042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6043
6044}/*WDI_UpdateCfgReq*/
6045
6046
6047
6048/**
6049 @brief WDI_AddBAReq will be called when the upper MAC has setup
6050 successfully a BA session and needs to notify the HW for
6051 the appropriate settings to take place. Upon the call of
6052 this API the WLAN DAL will pack and send a HAL Add BA
6053 request message to the lower RIVA sub-system if DAL is
6054 in state STARTED.
6055
6056 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006057 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006058
6059 WDI_PostAssocReq must have been called.
6060
6061 @param wdiAddBAReqParams: the add BA parameters as specified by
6062 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006063
Jeff Johnson295189b2012-06-20 16:38:30 -07006064 wdiAddBARspCb: callback for passing back the response of
6065 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006066
Jeff Johnson295189b2012-06-20 16:38:30 -07006067 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006068 callback
6069
Jeff Johnson295189b2012-06-20 16:38:30 -07006070 @see WDI_PostAssocReq
6071 @return Result of the function call
6072*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006073WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006074WDI_AddBAReq
6075(
6076 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6077 WDI_AddBARspCb wdiAddBARspCb,
6078 void* pUserData
6079)
6080{
6081 WDI_EventInfoType wdiEventData;
6082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6083
6084 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006085 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006086 ------------------------------------------------------------------------*/
6087 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6088 {
6089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6090 "WDI API call before module is initialized - Fail request");
6091
Jeff Johnsone7245742012-09-05 17:12:55 -07006092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006093 }
6094
6095 /*------------------------------------------------------------------------
6096 Fill in Event data and post to the Main FSM
6097 ------------------------------------------------------------------------*/
6098 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006099 wdiEventData.pEventData = pwdiAddBAReqParams;
6100 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6101 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006102 wdiEventData.pUserData = pUserData;
6103
6104 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6105
6106}/*WDI_AddBAReq*/
6107
6108
6109/**
6110 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6111 successfully a BA session and needs to notify the HW for
6112 the appropriate settings to take place. Upon the call of
6113 this API the WLAN DAL will pack and send a HAL Add BA
6114 request message to the lower RIVA sub-system if DAL is
6115 in state STARTED.
6116
6117 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006118 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006119
6120 WDI_PostAssocReq must have been called.
6121
6122 @param wdiAddBAReqParams: the add BA parameters as specified by
6123 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006124
Abhishek Singhe5066502016-02-05 18:07:41 +05306125 baReqParamUserDataSize: user data size of wdiAddBAReqParams
Jeff Johnson295189b2012-06-20 16:38:30 -07006126 wdiAddBARspCb: callback for passing back the response of
6127 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006128
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006130 callback
6131
Jeff Johnson295189b2012-06-20 16:38:30 -07006132 @see WDI_PostAssocReq
6133 @return Result of the function call
6134*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006135WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006136WDI_TriggerBAReq
6137(
6138 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
Abhishek Singhe5066502016-02-05 18:07:41 +05306139 wpt_uint8 baReqParamUserDataSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006140 WDI_TriggerBARspCb wdiTriggerBARspCb,
6141 void* pUserData
6142)
6143{
6144 WDI_EventInfoType wdiEventData;
6145 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6146
6147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006148 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006149 ------------------------------------------------------------------------*/
6150 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6151 {
6152 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6153 "WDI API call before module is initialized - Fail request");
6154
Jeff Johnsone7245742012-09-05 17:12:55 -07006155 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006156 }
6157
6158 /*------------------------------------------------------------------------
6159 Fill in Event data and post to the Main FSM
6160 ------------------------------------------------------------------------*/
6161 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006162 wdiEventData.pEventData = pwdiTriggerBAReqParams;
Abhishek Singhe5066502016-02-05 18:07:41 +05306163 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams)
6164 + baReqParamUserDataSize;
Jeff Johnsone7245742012-09-05 17:12:55 -07006165 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006166 wdiEventData.pUserData = pUserData;
6167
6168 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6169
6170}/*WDI_AddBAReq*/
6171
6172/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006173 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006174 wishes to update any of the Beacon parameters used by HW.
6175 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6176 message to the lower RIVA sub-system if DAL is in state
6177 STARTED.
6178
6179 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006180 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006181
6182 WDI_PostAssocReq must have been called.
6183
Jeff Johnsone7245742012-09-05 17:12:55 -07006184 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006185 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006186
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 wdiUpdateBeaconParamsRspCb: callback for passing back the
6188 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006189
Jeff Johnson295189b2012-06-20 16:38:30 -07006190 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006191 callback
6192
Jeff Johnson295189b2012-06-20 16:38:30 -07006193 @see WDI_PostAssocReq
6194 @return Result of the function call
6195*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006196WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006197WDI_UpdateBeaconParamsReq
6198(
6199 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6200 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6201 void* pUserData
6202)
6203{
6204 WDI_EventInfoType wdiEventData;
6205 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6206
6207 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006208 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006209 ------------------------------------------------------------------------*/
6210 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6211 {
6212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6213 "WDI API call before module is initialized - Fail request");
6214
Jeff Johnsone7245742012-09-05 17:12:55 -07006215 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006216 }
6217
6218 /*------------------------------------------------------------------------
6219 Fill in Event data and post to the Main FSM
6220 ------------------------------------------------------------------------*/
6221 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006222 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6223 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6224 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006225 wdiEventData.pUserData = pUserData;
6226
6227 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6228
6229}/*WDI_UpdateBeaconParamsReq*/
6230
6231/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006232 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006233 wishes to update the Beacon template used by HW.
6234 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6235 message to the lower RIVA sub-system if DAL is in state
6236 STARTED.
6237
6238 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006239 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006240
6241 WDI_PostAssocReq must have been called.
6242
Jeff Johnsone7245742012-09-05 17:12:55 -07006243 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006244 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006245
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 wdiSendBeaconParamsRspCb: callback for passing back the
6247 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006248
Jeff Johnson295189b2012-06-20 16:38:30 -07006249 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006250 callback
6251
Jeff Johnson295189b2012-06-20 16:38:30 -07006252 @see WDI_PostAssocReq
6253 @return Result of the function call
6254*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006255WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006256WDI_SendBeaconParamsReq
6257(
6258 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6259 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6260 void* pUserData
6261)
6262{
6263 WDI_EventInfoType wdiEventData;
6264 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6265
6266 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006267 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006268 ------------------------------------------------------------------------*/
6269 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6270 {
6271 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6272 "WDI API call before module is initialized - Fail request");
6273
Jeff Johnsone7245742012-09-05 17:12:55 -07006274 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006275 }
6276
6277 /*------------------------------------------------------------------------
6278 Fill in Event data and post to the Main FSM
6279 ------------------------------------------------------------------------*/
6280 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006281 wdiEventData.pEventData = pwdiSendBeaconParams;
6282 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6283 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006284 wdiEventData.pUserData = pUserData;
6285
6286 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6287
6288}/*WDI_SendBeaconParamsReq*/
6289
6290/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006291 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006292 upper MAC wants to update the probe response template to
6293 be transmitted as Soft AP
6294 Upon the call of this API the WLAN DAL will
6295 pack and send the probe rsp template message to the
6296 lower RIVA sub-system if DAL is in state STARTED.
6297
6298 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006299 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006300
6301
Jeff Johnsone7245742012-09-05 17:12:55 -07006302 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006303 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006304
Jeff Johnson295189b2012-06-20 16:38:30 -07006305 wdiSendBeaconParamsRspCb: callback for passing back the
6306 response of the Send Beacon Params operation received
6307 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006308
Jeff Johnson295189b2012-06-20 16:38:30 -07006309 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006310 callback
6311
Jeff Johnson295189b2012-06-20 16:38:30 -07006312 @see WDI_AddBAReq
6313 @return Result of the function call
6314*/
6315
Jeff Johnsone7245742012-09-05 17:12:55 -07006316WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006317WDI_UpdateProbeRspTemplateReq
6318(
6319 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6320 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6321 void* pUserData
6322)
6323{
6324 WDI_EventInfoType wdiEventData;
6325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6326
6327 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006329 ------------------------------------------------------------------------*/
6330 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6331 {
6332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6333 "WDI API call before module is initialized - Fail request");
6334
Jeff Johnsone7245742012-09-05 17:12:55 -07006335 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006336 }
6337
6338 /*------------------------------------------------------------------------
6339 Fill in Event data and post to the Main FSM
6340 ------------------------------------------------------------------------*/
6341 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006342 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6343 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6344 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006345 wdiEventData.pUserData = pUserData;
6346
6347 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6348
6349}/*WDI_UpdateProbeRspTemplateReq*/
6350
6351/**
6352 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6353 to the NV memory.
6354
6355
6356 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6357 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006358
Jeff Johnson295189b2012-06-20 16:38:30 -07006359 wdiNvDownloadRspCb: callback for passing back the response of
6360 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006361
Jeff Johnson295189b2012-06-20 16:38:30 -07006362 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006363 callback
6364
Jeff Johnson295189b2012-06-20 16:38:30 -07006365 @see WDI_PostAssocReq
6366 @return Result of the function call
6367*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006368WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006369WDI_NvDownloadReq
6370(
6371 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6372 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6373 void* pUserData
6374)
6375{
6376 WDI_EventInfoType wdiEventData;
6377
6378 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006379 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006380 ------------------------------------------------------------------------*/
6381 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6382 {
6383 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6384 "WDI API call before module is initialized - Fail request");
6385
Jeff Johnsone7245742012-09-05 17:12:55 -07006386 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006387 }
6388
6389 /*------------------------------------------------------------------------
6390 Fill in Event data and post to the Main FSM
6391 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006392 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6393 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6394 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6395 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006396 wdiEventData.pUserData = pUserData;
6397
6398 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6399
6400}/*WDI_NVDownloadReq*/
6401
Jeff Johnson295189b2012-06-20 16:38:30 -07006402/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006403 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006404 upper MAC wants to send Notice of Absence
6405 Upon the call of this API the WLAN DAL will
6406 pack and send the probe rsp template message to the
6407 lower RIVA sub-system if DAL is in state STARTED.
6408
6409 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006410 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006411
6412
Jeff Johnsone7245742012-09-05 17:12:55 -07006413 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006414 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006415
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 wdiSendBeaconParamsRspCb: callback for passing back the
6417 response of the Send Beacon Params operation received
6418 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006419
Jeff Johnson295189b2012-06-20 16:38:30 -07006420 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006421 callback
6422
Jeff Johnson295189b2012-06-20 16:38:30 -07006423 @see WDI_AddBAReq
6424 @return Result of the function call
6425*/
6426WDI_Status
6427WDI_SetP2PGONOAReq
6428(
6429 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6430 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6431 void* pUserData
6432)
6433{
6434 WDI_EventInfoType wdiEventData;
6435 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6436
6437 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006438 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006439 ------------------------------------------------------------------------*/
6440 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6441 {
6442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6443 "WDI API call before module is initialized - Fail request");
6444
Jeff Johnsone7245742012-09-05 17:12:55 -07006445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006446 }
6447
6448 /*------------------------------------------------------------------------
6449 Fill in Event data and post to the Main FSM
6450 ------------------------------------------------------------------------*/
6451 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6453 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6454 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006455 wdiEventData.pUserData = pUserData;
6456
6457 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6458
6459}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006460
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306461#ifdef FEATURE_WLAN_TDLS
6462/**
6463 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6464 upper MAC wants to send TDLS Link Establish Request Parameters
6465 Upon the call of this API the WLAN DAL will
6466 pack and send the TDLS Link Establish Request message to the
6467 lower RIVA sub-system if DAL is in state STARTED.
6468
6469 In state BUSY this request will be queued. Request won't
6470 be allowed in any other state.
6471
6472
6473 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6474 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6475
6476 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6477 response of the TDLS Link Establish request received
6478 from the device
6479
6480 pUserData: user data will be passed back with the
6481 callback
6482
6483 @see
6484 @return Result of the function call
6485*/
6486WDI_Status
6487WDI_SetTDLSLinkEstablishReq
6488(
6489 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6490 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6491 void* pUserData
6492)
6493{
6494 WDI_EventInfoType wdiEventData;
6495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6496
6497 /*------------------------------------------------------------------------
6498 Sanity Check
6499 ------------------------------------------------------------------------*/
6500 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6501 {
6502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6503 "WDI API call before module is initialized - Fail request");
6504
6505 return WDI_STATUS_E_NOT_ALLOWED;
6506 }
6507
6508 /*------------------------------------------------------------------------
6509 Fill in Event data and post to the Main FSM
6510 ------------------------------------------------------------------------*/
6511 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6512 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6513 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6514 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6515 wdiEventData.pUserData = pUserData;
6516
6517 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6518
6519}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306520
6521//tdlsoffchan
6522/**
6523 @brief WDI_SetTDLSChanSwitchReq will be called when the
6524 upper MAC wants to send TDLS Chan Switch Request Parameters
6525 Upon the call of this API the WLAN DAL will
6526 pack and send the TDLS Link Establish Request message to the
6527 lower RIVA sub-system if DAL is in state STARTED.
6528
6529 In state BUSY this request will be queued. Request won't
6530 be allowed in any other state.
6531
6532
6533 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6534 for Link Establishment (Used for TDLS Off Channel ...)
6535
6536 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6537 response of the TDLS Chan Switch request received
6538 from the device
6539
6540 pUserData: user data will be passed back with the
6541 callback
6542
6543 @see
6544 @return Result of the function call
6545*/
6546WDI_Status
6547WDI_SetTDLSChanSwitchReq
6548(
6549 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6550 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6551 void* pUserData
6552)
6553{
6554 WDI_EventInfoType wdiEventData;
6555 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6556
6557 /*------------------------------------------------------------------------
6558 Sanity Check
6559 ------------------------------------------------------------------------*/
6560 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6561 {
6562 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6563 "WDI API call before module is initialized - Fail request");
6564
6565 return WDI_STATUS_E_NOT_ALLOWED;
6566 }
6567
6568 /*------------------------------------------------------------------------
6569 Fill in Event data and post to the Main FSM
6570 ------------------------------------------------------------------------*/
6571 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6572 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6573 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6574 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6575 wdiEventData.pUserData = pUserData;
6576
6577 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6578
6579}/*WDI_SetTDLSChanSwitchReq*/
6580
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306581#endif
6582
Jeff Johnson295189b2012-06-20 16:38:30 -07006583/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006584 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006585 UMAC wanted to add STA self while opening any new session
6586 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006587 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006588
6589
Jeff Johnsone7245742012-09-05 17:12:55 -07006590 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006591 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006592
Jeff Johnson295189b2012-06-20 16:38:30 -07006593 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006594 callback
6595
6596 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006597 @return Result of the function call
6598*/
6599WDI_Status
6600WDI_AddSTASelfReq
6601(
6602 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6603 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6604 void* pUserData
6605)
6606{
6607 WDI_EventInfoType wdiEventData;
6608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6609
6610 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006611 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006612 ------------------------------------------------------------------------*/
6613 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6614 {
6615 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6616 "WDI API call before module is initialized - Fail request");
6617
Jeff Johnsone7245742012-09-05 17:12:55 -07006618 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006619 }
6620
6621 /*------------------------------------------------------------------------
6622 Fill in Event data and post to the Main FSM
6623 ------------------------------------------------------------------------*/
6624 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006625 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6626 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6627 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006628 wdiEventData.pUserData = pUserData;
6629
6630 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6631
6632}/*WDI_AddSTASelfReq*/
6633
6634
Jeff Johnsone7245742012-09-05 17:12:55 -07006635#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006636/**
6637 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6638 the device of a successful add TSpec negotiation. HW
6639 needs to receive the TSpec Info from the UMAC in order
6640 to configure properly the QoS data traffic. Upon the
6641 call of this API the WLAN DAL will pack and send a HAL
6642 Add TS request message to the lower RIVA sub-system if
6643 DAL is in state STARTED.
6644
6645 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006646 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006647
6648 WDI_PostAssocReq must have been called.
6649
6650 @param wdiAddTsReqParams: the add TS parameters as specified by
6651 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006652
Jeff Johnson295189b2012-06-20 16:38:30 -07006653 wdiAddTsRspCb: callback for passing back the response of
6654 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006655
Jeff Johnson295189b2012-06-20 16:38:30 -07006656 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006657 callback
6658
Jeff Johnson295189b2012-06-20 16:38:30 -07006659 @see WDI_PostAssocReq
6660 @return Result of the function call
6661*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006662WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006663WDI_AggrAddTSReq
6664(
6665 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6666 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6667 void* pUserData
6668)
6669{
6670 WDI_EventInfoType wdiEventData;
6671 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6672
6673 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006674 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006675 ------------------------------------------------------------------------*/
6676 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6677 {
6678 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6679 "WDI API call before module is initialized - Fail request");
6680
Jeff Johnsone7245742012-09-05 17:12:55 -07006681 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 }
6683
6684 /*------------------------------------------------------------------------
6685 Fill in Event data and post to the Main FSM
6686 ------------------------------------------------------------------------*/
6687 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006688 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6689 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6690 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006691 wdiEventData.pUserData = pUserData;
6692
6693 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6694
6695}/*WDI_AggrAddTSReq*/
6696
6697#endif /* WLAN_FEATURE_VOWIFI_11R */
6698
Jeff Johnson295189b2012-06-20 16:38:30 -07006699/**
6700 @brief WDI_FTMCommandReq
6701 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006702
6703 @param ftmCommandReq: FTM Command Body
6704 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006705 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006706
Jeff Johnson295189b2012-06-20 16:38:30 -07006707 @see
6708 @return Result of the function call
6709*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006710WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006711WDI_FTMCommandReq
6712(
6713 WDI_FTMCommandReqType *ftmCommandReq,
6714 WDI_FTMCommandRspCb ftmCommandRspCb,
6715 void *pUserData
6716)
6717{
6718 WDI_EventInfoType wdiEventData;
6719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6720
6721 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006722 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006723 ------------------------------------------------------------------------*/
6724 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6725 {
6726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6727 "WDI API call before module is initialized - Fail request");
6728
Jeff Johnsone7245742012-09-05 17:12:55 -07006729 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006730 }
6731
6732 /*------------------------------------------------------------------------
6733 Fill in Event data and post to the Main FSM
6734 ------------------------------------------------------------------------*/
6735 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6736 wdiEventData.pEventData = (void *)ftmCommandReq;
6737 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6738 wdiEventData.pCBfnc = ftmCommandRspCb;
6739 wdiEventData.pUserData = pUserData;
6740
6741 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6742}
Jeff Johnson295189b2012-06-20 16:38:30 -07006743/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006744 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006745
6746 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006747 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006748
6749
6750 @param pwdiResumeReqParams: as specified by
6751 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006752
Jeff Johnson295189b2012-06-20 16:38:30 -07006753 wdiResumeReqRspCb: callback for passing back the response of
6754 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006755
Jeff Johnson295189b2012-06-20 16:38:30 -07006756 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006757 callback
6758
6759 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006760 @return Result of the function call
6761*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006762WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006763WDI_HostResumeReq
6764(
6765 WDI_ResumeParamsType* pwdiResumeReqParams,
6766 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6767 void* pUserData
6768)
6769{
6770 WDI_EventInfoType wdiEventData;
6771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6772
6773 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006774 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006775 ------------------------------------------------------------------------*/
6776 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6777 {
6778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6779 "WDI API call before module is initialized - Fail request");
6780
Jeff Johnsone7245742012-09-05 17:12:55 -07006781 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006782 }
6783
6784 /*------------------------------------------------------------------------
6785 Fill in Event data and post to the Main FSM
6786 ------------------------------------------------------------------------*/
6787 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006788 wdiEventData.pEventData = pwdiResumeReqParams;
6789 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6790 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006791 wdiEventData.pUserData = pUserData;
6792
6793 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6794
6795}/*WDI_HostResumeReq*/
6796
6797/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006798 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006799
6800 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006801 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006802
6803
6804 @param pwdiDelStaSelfReqParams: as specified by
6805 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006806
Jeff Johnson295189b2012-06-20 16:38:30 -07006807 wdiDelStaSelfRspCb: callback for passing back the response of
6808 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006809
Jeff Johnson295189b2012-06-20 16:38:30 -07006810 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 callback
6812
Jeff Johnson295189b2012-06-20 16:38:30 -07006813 @see WDI_PostAssocReq
6814 @return Result of the function call
6815*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006816WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006817WDI_DelSTASelfReq
6818(
6819 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6820 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6821 void* pUserData
6822)
6823{
6824 WDI_EventInfoType wdiEventData;
6825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6826
6827 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006828 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006829 ------------------------------------------------------------------------*/
6830 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6831 {
6832 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6833 "WDI API call before module is initialized - Fail request");
6834
Jeff Johnsone7245742012-09-05 17:12:55 -07006835 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006836 }
6837
6838 /*------------------------------------------------------------------------
6839 Fill in Event data and post to the Main FSM
6840 ------------------------------------------------------------------------*/
6841 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006842 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6843 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6844 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006845 wdiEventData.pUserData = pUserData;
6846
6847 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6848
6849}/*WDI_AggrAddTSReq*/
6850
6851/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006852 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6853 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006854 Upon the call of this API the WLAN DAL will pack
6855 and send a HAL Set Tx Per Tracking request message to the
6856 lower RIVA sub-system if DAL is in state STARTED.
6857
6858 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006859 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006860
Jeff Johnsone7245742012-09-05 17:12:55 -07006861 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006862 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006863
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 pwdiSetTxPerTrackingRspCb: callback for passing back the
6865 response of the set Tx PER Tracking configurations operation received
6866 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006867
Jeff Johnson295189b2012-06-20 16:38:30 -07006868 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006869 callback
6870
Jeff Johnson295189b2012-06-20 16:38:30 -07006871 @return Result of the function call
6872*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006873WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006874WDI_SetTxPerTrackingReq
6875(
6876 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6877 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6878 void* pUserData
6879)
6880{
6881 WDI_EventInfoType wdiEventData;
6882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6883
6884 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006885 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006886 ------------------------------------------------------------------------*/
6887 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6888 {
6889 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6890 "WDI API call before module is initialized - Fail request");
6891
Jeff Johnsone7245742012-09-05 17:12:55 -07006892 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006893 }
6894
6895 /*------------------------------------------------------------------------
6896 Fill in Event data and post to the Main FSM
6897 ------------------------------------------------------------------------*/
6898 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006899 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006900 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006901 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 wdiEventData.pUserData = pUserData;
6903
6904 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6905
6906}/*WDI_SetTxPerTrackingReq*/
6907
6908/**
6909 @brief WDI_SetTmLevelReq
6910 If HW Thermal condition changed, driver should react based on new
6911 HW thermal condition.
6912
6913 @param pwdiSetTmLevelReq: New thermal condition information
6914
6915 pwdiSetTmLevelRspCb: callback
6916
6917 usrData: user data will be passed back with the
6918 callback
6919
6920 @return Result of the function call
6921*/
6922WDI_Status
6923WDI_SetTmLevelReq
6924(
6925 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6926 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6927 void *usrData
6928)
6929{
6930 WDI_EventInfoType wdiEventData;
6931 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6932
6933 /*------------------------------------------------------------------------
6934 Sanity Check
6935 ------------------------------------------------------------------------*/
6936 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6937 {
6938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6939 "WDI API call before module is initialized - Fail request");
6940
6941 return WDI_STATUS_E_NOT_ALLOWED;
6942 }
6943
6944 /*------------------------------------------------------------------------
6945 Fill in Event data and post to the Main FSM
6946 ------------------------------------------------------------------------*/
6947 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6948 wdiEventData.pEventData = pwdiSetTmLevelReq;
6949 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6950 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6951 wdiEventData.pUserData = usrData;
6952
6953 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6954}
6955
6956/**
6957 @brief WDI_HostSuspendInd
6958
6959 Suspend Indication from the upper layer will be sent
6960 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006961
Jeff Johnson295189b2012-06-20 16:38:30 -07006962 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006963
6964 @see
6965
Jeff Johnson295189b2012-06-20 16:38:30 -07006966 @return Status of the request
6967*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006968WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006969WDI_HostSuspendInd
6970(
6971 WDI_SuspendParamsType* pwdiSuspendIndParams
6972)
6973{
6974
6975 WDI_EventInfoType wdiEventData;
6976 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6977
6978 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006979 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006980 ------------------------------------------------------------------------*/
6981 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6982 {
6983 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6984 "WDI API call before module is initialized - Fail request");
6985
Jeff Johnsone7245742012-09-05 17:12:55 -07006986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006987 }
6988
6989 /*------------------------------------------------------------------------
6990 Fill in Event data and post to the Main FSM
6991 ------------------------------------------------------------------------*/
6992 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006993 wdiEventData.pEventData = pwdiSuspendIndParams;
6994 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6995 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006996 wdiEventData.pUserData = NULL;
6997
6998 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6999
7000}/*WDI_HostSuspendInd*/
7001
7002/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007003 @brief WDI_TrafficStatsInd
7004 Traffic Stats from the upper layer will be sent
7005 down to HAL
7006
7007 @param WDI_TrafficStatsIndType
7008
7009 @see
7010
7011 @return Status of the request
7012*/
7013WDI_Status
7014WDI_TrafficStatsInd
7015(
7016 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
7017)
7018{
7019
7020 WDI_EventInfoType wdiEventData;
7021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7022
7023 /*------------------------------------------------------------------------
7024 Sanity Check
7025 ------------------------------------------------------------------------*/
7026 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7027 {
7028 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7029 "WDI API call before module is initialized - Fail request");
7030
7031 return WDI_STATUS_E_NOT_ALLOWED;
7032 }
7033
7034 /*------------------------------------------------------------------------
7035 Fill in Event data and post to the Main FSM
7036 ------------------------------------------------------------------------*/
7037 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
7038 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
7039 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
7040 wdiEventData.pCBfnc = NULL;
7041 wdiEventData.pUserData = NULL;
7042
7043 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7044
7045}/*WDI_TrafficStatsInd*/
7046
Chet Lanctot186b5732013-03-18 10:26:30 -07007047#ifdef WLAN_FEATURE_11W
7048/**
7049 @brief WDI_ExcludeUnencryptedInd
7050 Register with HAL to receive/drop unencrypted frames
7051
7052 @param WDI_ExcludeUnencryptIndType
7053
7054 @see
7055
7056 @return Status of the request
7057*/
7058WDI_Status
7059WDI_ExcludeUnencryptedInd
7060(
7061 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7062)
7063{
7064
7065 WDI_EventInfoType wdiEventData;
7066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7067
7068 /*------------------------------------------------------------------------
7069 Sanity Check
7070 ------------------------------------------------------------------------*/
7071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7072 {
7073 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7074 "WDI API call before module is initialized - Fail request");
7075
7076 return WDI_STATUS_E_NOT_ALLOWED;
7077 }
7078
7079 /*------------------------------------------------------------------------
7080 Fill in Event data and post to the Main FSM
7081 ------------------------------------------------------------------------*/
7082 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7083 wdiEventData.pEventData = pWdiExcUnencParams;
7084 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7085 wdiEventData.pCBfnc = NULL;
7086 wdiEventData.pUserData = NULL;
7087
7088 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7089
7090}/*WDI_TrafficStatsInd*/
7091#endif
7092
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007093/**
Yue Mab9c86f42013-08-14 15:59:08 -07007094 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7095
7096 @param addPeriodicTxPtrnParams: Add Pattern parameters
7097
7098 @see
7099
7100 @return Status of the request
7101*/
7102WDI_Status
7103WDI_AddPeriodicTxPtrnInd
7104(
7105 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7106)
7107{
7108 WDI_EventInfoType wdiEventData;
7109
7110 /*-------------------------------------------------------------------------
7111 Sanity Check
7112 ------------------------------------------------------------------------*/
7113 if (eWLAN_PAL_FALSE == gWDIInitialized)
7114 {
7115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7116 "WDI API call before module is initialized - Fail request!");
7117
7118 return WDI_STATUS_E_NOT_ALLOWED;
7119 }
7120
7121 /*-------------------------------------------------------------------------
7122 Fill in Event data and post to the Main FSM
7123 ------------------------------------------------------------------------*/
7124 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7125 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7126 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7127 wdiEventData.pCBfnc = NULL;
7128 wdiEventData.pUserData = NULL;
7129
7130 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7131}
7132
7133/**
7134 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7135
7136 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7137
7138 @see
7139
7140 @return Status of the request
7141*/
7142WDI_Status
7143WDI_DelPeriodicTxPtrnInd
7144(
7145 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7146)
7147{
7148 WDI_EventInfoType wdiEventData;
7149
7150 /*-------------------------------------------------------------------------
7151 Sanity Check
7152 ------------------------------------------------------------------------*/
7153 if (eWLAN_PAL_FALSE == gWDIInitialized)
7154 {
7155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7156 "WDI API call before module is initialized - Fail request!");
7157
7158 return WDI_STATUS_E_NOT_ALLOWED;
7159 }
7160
7161 /*-------------------------------------------------------------------------
7162 Fill in Event data and post to the Main FSM
7163 ------------------------------------------------------------------------*/
7164 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7165 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7166 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7167 wdiEventData.pCBfnc = NULL;
7168 wdiEventData.pUserData = NULL;
7169
7170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7171}
7172
7173/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007174 @brief WDI_HALDumpCmdReq
7175 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007176
7177 @param halDumpCmdReqParams: Hal Dump Command Body
7178 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007179 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007180
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 @see
7182 @return Result of the function call
7183*/
7184WDI_Status WDI_HALDumpCmdReq
7185(
7186 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7187 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7188 void *pUserData
7189)
7190{
7191 WDI_EventInfoType wdiEventData;
7192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7193
7194 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007195 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007196 ------------------------------------------------------------------------*/
7197 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7198 {
7199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7200 "WDI API call before module is initialized - Fail request");
7201
Jeff Johnsone7245742012-09-05 17:12:55 -07007202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007203 }
7204
7205 /*------------------------------------------------------------------------
7206 Fill in Event data and post to the Main FSM
7207 ------------------------------------------------------------------------*/
7208 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7209 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7210 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7211 wdiEventData.pCBfnc = halDumpCmdRspCb;
7212 wdiEventData.pUserData = pUserData;
7213
7214 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7215}
7216
Jeff Johnsone7245742012-09-05 17:12:55 -07007217/*============================================================================
7218
Jeff Johnson295189b2012-06-20 16:38:30 -07007219 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007220
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 ============================================================================*/
7222
7223/**
7224 @brief Main FSM Start function for all states except BUSY
7225
Jeff Johnsone7245742012-09-05 17:12:55 -07007226
7227 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007228 wdiEV: event posted to the main DAL FSM
7229 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007230 structure
7231
Jeff Johnson295189b2012-06-20 16:38:30 -07007232 @see
7233 @return Result of the function call
7234*/
7235WDI_Status
7236WDI_PostMainEvent
7237(
Jeff Johnsone7245742012-09-05 17:12:55 -07007238 WDI_ControlBlockType* pWDICtx,
7239 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007240 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007241)
7242{
Jeff Johnsone7245742012-09-05 17:12:55 -07007243 WDI_Status wdiStatus;
7244 WDI_MainFuncType pfnWDIMainEvHdlr;
7245 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307246 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7248
7249 /*-------------------------------------------------------------------------
7250 Sanity check
7251 -------------------------------------------------------------------------*/
7252 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7253 ( wdiEV >= WDI_MAX_EVENT ))
7254 {
7255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7256 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7257 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007258 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007259 }
7260
7261 /*Access to the global state must be locked */
7262 wpalMutexAcquire(&pWDICtx->wptMutex);
7263
7264 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007265 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007266
7267 wdiOldState = pWDICtx->uGlobalState;
7268
7269 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007270 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7271 response comes from CCPU for the request sent by host:
7272 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 -07007273 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 -07007274 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007275 CCPU:
7276 don't change the state */
7277 if ( WDI_RESPONSE_EVENT != wdiEV)
7278 {
7279 /*Transition to BUSY State - the request is now being processed by the FSM,
7280 if the request fails we shall transition back to the old state, if not
7281 the request will manage its own state transition*/
7282 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7283 }
7284 /* If the state function associated with the EV is NULL it means that this
7285 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007286 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007287 {
7288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007289 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007290 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 }
7293 else
7294 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307295 if (!(failCnt & 0xF))
7296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007297 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007298 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307299 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007300 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007301 }
7302
7303 /* If a request handles itself well it will end up in a success or in a
7304 pending
7305 Success - means that the request was processed and the proper state
7306 transition already occurred or will occur when the resp is received
7307 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007308
Jeff Johnson295189b2012-06-20 16:38:30 -07007309 Pending - means the request could not be processed at this moment in time
7310 because the FSM was already busy so no state transition or dequeueing
7311 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007312
Jeff Johnson295189b2012-06-20 16:38:30 -07007313 Success for synchronous case means that the transition may occur and
7314 processing of pending requests may continue - so it should go through
7315 and restores the state and continue processing queued requests*/
7316 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7317 ( WDI_STATUS_PENDING != wdiStatus ))
7318 {
7319 if ( WDI_RESPONSE_EVENT != wdiEV)
7320 {
7321 /*The request has failed or could not be processed - transition back to
7322 the old state - check to see if anything was queued and try to execute
7323 The dequeue logic should post a message to a thread and return - no
7324 actual processing can occur */
7325 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7326 }
7327 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007328
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 }
7330
7331 /* we have completed processing the event */
7332 wpalMutexRelease(&pWDICtx->wptMutex);
7333
Jeff Johnsone7245742012-09-05 17:12:55 -07007334 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007335
7336}/*WDI_PostMainEvent*/
7337
7338
7339/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007340 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007341--------------------------------------------------------------------------*/
7342/**
7343 @brief Main FSM Start function for all states except BUSY
7344
Jeff Johnsone7245742012-09-05 17:12:55 -07007345
7346 @param pWDICtx: pointer to the WLAN DAL context
7347 pEventData: pointer to the event information structure
7348
Jeff Johnson295189b2012-06-20 16:38:30 -07007349 @see
7350 @return Result of the function call
7351*/
7352WDI_Status
7353WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007354(
Jeff Johnson295189b2012-06-20 16:38:30 -07007355 WDI_ControlBlockType* pWDICtx,
7356 WDI_EventInfoType* pEventData
7357)
7358{
7359
7360 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007361 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007362 ----------------------------------------------------------------------*/
7363 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7364 {
7365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007366 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007367 pWDICtx, pEventData);
7368 return WDI_STATUS_E_FAILURE;
7369 }
7370
7371 wpalMutexAcquire(&pWDICtx->wptMutex);
7372
7373 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007374 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007375 ----------------------------------------------------------------------*/
7376 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7377 {
7378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7379 "Control Transport not yet Open - queueing the request");
7380
7381 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007382 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007383
7384 wpalMutexRelease(&pWDICtx->wptMutex);
7385 return WDI_STATUS_PENDING;
7386 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007387
Jeff Johnson295189b2012-06-20 16:38:30 -07007388 wpalMutexRelease(&pWDICtx->wptMutex);
7389
7390 /*Return Success*/
7391 return WDI_ProcessRequest( pWDICtx, pEventData );
7392
7393}/*WDI_MainStart*/
7394
7395/**
7396 @brief Main FSM Response function for state INIT
7397
Jeff Johnsone7245742012-09-05 17:12:55 -07007398
7399 @param pWDICtx: pointer to the WLAN DAL context
7400 pEventData: pointer to the event information structure
7401
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 @see
7403 @return Result of the function call
7404*/
7405WDI_Status
7406WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007407(
Jeff Johnson295189b2012-06-20 16:38:30 -07007408 WDI_ControlBlockType* pWDICtx,
7409 WDI_EventInfoType* pEventData
7410)
7411{
7412 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007413 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007414 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007416
7417 /*Return Success*/
7418 return WDI_STATUS_E_NOT_ALLOWED;
7419}/* WDI_MainRspInit */
7420
7421/**
7422 @brief Main FSM Close function for all states except BUSY
7423
Jeff Johnsone7245742012-09-05 17:12:55 -07007424
7425 @param pWDICtx: pointer to the WLAN DAL context
7426 pEventData: pointer to the event information structure
7427
Jeff Johnson295189b2012-06-20 16:38:30 -07007428 @see
7429 @return Result of the function call
7430*/
7431WDI_Status
7432WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007433(
Jeff Johnson295189b2012-06-20 16:38:30 -07007434 WDI_ControlBlockType* pWDICtx,
7435 WDI_EventInfoType* pEventData
7436)
7437{
7438
7439 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007440 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007441 ----------------------------------------------------------------------*/
7442 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7443 {
7444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007445 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007446 pWDICtx, pEventData);
7447 return WDI_STATUS_E_FAILURE;
7448 }
7449
7450 /*Return Success*/
7451 return WDI_ProcessRequest( pWDICtx, pEventData );
7452
7453}/*WDI_MainClose*/
7454/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007455 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007456--------------------------------------------------------------------------*/
7457/**
7458 @brief Main FSM Start function for state STARTED
7459
Jeff Johnsone7245742012-09-05 17:12:55 -07007460
7461 @param pWDICtx: pointer to the WLAN DAL context
7462 pEventData: pointer to the event information structure
7463
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 @see
7465 @return Result of the function call
7466*/
7467WDI_Status
7468WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007469(
Jeff Johnson295189b2012-06-20 16:38:30 -07007470 WDI_ControlBlockType* pWDICtx,
7471 WDI_EventInfoType* pEventData
7472)
7473{
7474 WDI_StartRspCb wdiStartRspCb = NULL;
7475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7476
7477 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007478 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007479 ----------------------------------------------------------------------*/
7480 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7481 {
7482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007483 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007484 pWDICtx, pEventData);
7485 return WDI_STATUS_E_FAILURE;
7486 }
7487
7488 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007489 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007490 ----------------------------------------------------------------------*/
7491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007492 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007493
7494 wpalMutexAcquire(&pWDICtx->wptMutex);
7495
7496 /*Transition back to started because the post function transitioned us to
7497 busy*/
7498 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7499
7500 /*Check to see if any request is pending*/
7501 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007502
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 wpalMutexRelease(&pWDICtx->wptMutex);
7504
7505 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007506 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7507
Jeff Johnson295189b2012-06-20 16:38:30 -07007508 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307509 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007510
7511 /*Return Success*/
7512 return WDI_STATUS_SUCCESS;
7513
7514}/*WDI_MainStartStarted*/
7515
7516/**
7517 @brief Main FSM Stop function for state STARTED
7518
Jeff Johnsone7245742012-09-05 17:12:55 -07007519
7520 @param pWDICtx: pointer to the WLAN DAL context
7521 pEventData: pointer to the event information structure
7522
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 @see
7524 @return Result of the function call
7525*/
7526WDI_Status
7527WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007528(
Jeff Johnson295189b2012-06-20 16:38:30 -07007529 WDI_ControlBlockType* pWDICtx,
7530 WDI_EventInfoType* pEventData
7531)
7532{
7533 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007534 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 ----------------------------------------------------------------------*/
7536 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7537 {
7538 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007539 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007540 pWDICtx, pEventData);
7541 return WDI_STATUS_E_FAILURE;
7542 }
7543
7544 /*State at this point is BUSY - because we enter this state before posting
7545 an event to the FSM in order to prevent potential race conditions*/
7546
7547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7548 "Processing stop request in FSM");
7549
7550 /*Return Success*/
7551 return WDI_ProcessRequest( pWDICtx, pEventData );
7552
7553}/*WDI_MainStopStarted*/
7554/**
7555 @brief Main FSM Request function for state started
7556
Jeff Johnsone7245742012-09-05 17:12:55 -07007557
7558 @param pWDICtx: pointer to the WLAN DAL context
7559 pEventData: pointer to the event information structure
7560
Jeff Johnson295189b2012-06-20 16:38:30 -07007561 @see
7562 @return Result of the function call
7563*/
7564WDI_Status
7565WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007566(
Jeff Johnson295189b2012-06-20 16:38:30 -07007567 WDI_ControlBlockType* pWDICtx,
7568 WDI_EventInfoType* pEventData
7569)
7570{
7571
7572 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007573 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007574 ----------------------------------------------------------------------*/
7575 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7576 {
7577 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007578 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 pWDICtx, pEventData);
7580 return WDI_STATUS_E_FAILURE;
7581 }
7582
7583 /*State at this point is BUSY - because we enter this state before posting
7584 an event to the FSM in order to prevent potential race conditions*/
7585
7586 /*Return Success*/
7587 return WDI_ProcessRequest( pWDICtx, pEventData );
7588
7589}/*WDI_MainReqStarted*/
7590
7591/**
7592 @brief Main FSM Response function for all states except INIT
7593
Jeff Johnsone7245742012-09-05 17:12:55 -07007594
7595 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007596 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007597
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 @see
7599 @return Result of the function call
7600*/
7601WDI_Status
7602WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007603(
Jeff Johnson295189b2012-06-20 16:38:30 -07007604 WDI_ControlBlockType* pWDICtx,
7605 WDI_EventInfoType* pEventData
7606)
7607{
Jeff Johnsone7245742012-09-05 17:12:55 -07007608 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007609 wpt_boolean expectedResponse;
7610
7611 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007613 ----------------------------------------------------------------------*/
7614 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7615 {
7616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007617 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 pWDICtx, pEventData);
7619 return WDI_STATUS_E_FAILURE;
7620 }
7621
7622 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7623 {
7624 /* we received an expected response */
7625 expectedResponse = eWLAN_PAL_TRUE;
7626
7627 /*We expect that we will transition to started after this processing*/
7628 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7629
7630 /* we are no longer expecting a response */
7631 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7632 }
7633 else
7634 {
7635 /* we received an indication or unexpected response */
7636 expectedResponse = eWLAN_PAL_FALSE;
7637 /* for indications no need to update state from what it is right
7638 now, unless it explicitly does it in the indication handler (say
7639 for device failure ind) */
7640 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7641 }
7642
7643 /*Process the response and indication */
7644 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7645
7646 /*Lock the CB as we are about to do a state transition*/
7647 wpalMutexAcquire(&pWDICtx->wptMutex);
7648
7649 /*Transition to the expected state after the response processing
7650 - this should always be started state with the following exceptions:
7651 1. processing of a failed start response
7652 2. device failure detected while processing response
7653 3. stop response received*/
7654 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007655
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 /*Dequeue request that may have been queued while we were waiting for the
7657 response */
7658 if ( expectedResponse )
7659 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007660 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007661 }
7662
7663 wpalMutexRelease(&pWDICtx->wptMutex);
7664
7665 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007666 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007667
7668}/*WDI_MainRsp*/
7669
7670/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007671 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007672--------------------------------------------------------------------------*/
7673/**
7674 @brief Main FSM Stop function for state STOPPED
7675
Jeff Johnsone7245742012-09-05 17:12:55 -07007676
7677 @param pWDICtx: pointer to the WLAN DAL context
7678 pEventData: pointer to the event information structure
7679
Jeff Johnson295189b2012-06-20 16:38:30 -07007680 @see
7681 @return Result of the function call
7682*/
7683WDI_Status
7684WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007685(
Jeff Johnson295189b2012-06-20 16:38:30 -07007686 WDI_ControlBlockType* pWDICtx,
7687 WDI_EventInfoType* pEventData
7688)
7689{
7690 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007691 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007692 ----------------------------------------------------------------------*/
7693 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7694 {
7695 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007696 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007697 pWDICtx, pEventData);
7698 return WDI_STATUS_E_FAILURE;
7699 }
7700
7701 /*We should normally not get a STOP request if we are already stopped
7702 since we should normally be stopped by the UMAC. However in some
7703 error situations we put ourselves in the stopped state without the
7704 UMAC knowing, so when we get a STOP request in this state we still
7705 process it since we need to clean up the underlying state */
7706 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7707 "Processing stop request while stopped in FSM");
7708
7709 /*Return Success*/
7710 return WDI_ProcessRequest( pWDICtx, pEventData );
7711
7712}/*WDI_MainStopStopped*/
7713
7714/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007715 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007716--------------------------------------------------------------------------*/
7717/**
7718 @brief Main FSM Start function for state BUSY
7719
Jeff Johnsone7245742012-09-05 17:12:55 -07007720
7721 @param pWDICtx: pointer to the WLAN DAL context
7722 pEventData: pointer to the event information structure
7723
Jeff Johnson295189b2012-06-20 16:38:30 -07007724 @see
7725 @return Result of the function call
7726*/
7727WDI_Status
7728WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007729(
Jeff Johnson295189b2012-06-20 16:38:30 -07007730 WDI_ControlBlockType* pWDICtx,
7731 WDI_EventInfoType* pEventData
7732)
7733{
7734 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007735 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007736 ----------------------------------------------------------------------*/
7737 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7738 {
7739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007740 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007741 pWDICtx, pEventData);
7742 return WDI_STATUS_E_FAILURE;
7743 }
7744
7745 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007746 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007747 ----------------------------------------------------------------------*/
7748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7749 "WDI Busy state - queue start request");
7750
7751 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007752 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007753
7754 /*Return Success*/
7755 return WDI_STATUS_PENDING;
7756}/*WDI_MainStartBusy*/
7757
7758/**
7759 @brief Main FSM Stop function for state BUSY
7760
Jeff Johnsone7245742012-09-05 17:12:55 -07007761
7762 @param pWDICtx: pointer to the WLAN DAL context
7763 pEventData: pointer to the event information structure
7764
Jeff Johnson295189b2012-06-20 16:38:30 -07007765 @see
7766 @return Result of the function call
7767*/
7768WDI_Status
7769WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007770(
Jeff Johnson295189b2012-06-20 16:38:30 -07007771 WDI_ControlBlockType* pWDICtx,
7772 WDI_EventInfoType* pEventData
7773)
7774{
7775 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007776 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007777 ----------------------------------------------------------------------*/
7778 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7779 {
7780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007781 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007782 pWDICtx, pEventData);
7783 return WDI_STATUS_E_FAILURE;
7784 }
7785
7786 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007787 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007788 ----------------------------------------------------------------------*/
7789 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7790 "WDI Busy state - queue stop request");
7791
Jeff Johnsone7245742012-09-05 17:12:55 -07007792 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007793 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007794
Jeff Johnson295189b2012-06-20 16:38:30 -07007795}/*WDI_MainStopBusy*/
7796
7797/**
7798 @brief Main FSM Request function for state BUSY
7799
Jeff Johnsone7245742012-09-05 17:12:55 -07007800
7801 @param pWDICtx: pointer to the WLAN DAL context
7802 pEventData: pointer to the event information structure
7803
Jeff Johnson295189b2012-06-20 16:38:30 -07007804 @see
7805 @return Result of the function call
7806*/
7807WDI_Status
7808WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007809(
Jeff Johnson295189b2012-06-20 16:38:30 -07007810 WDI_ControlBlockType* pWDICtx,
7811 WDI_EventInfoType* pEventData
7812)
7813{
7814 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007815 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007816 ----------------------------------------------------------------------*/
7817 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7818 {
7819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007820 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007821 pWDICtx, pEventData);
7822 return WDI_STATUS_E_FAILURE;
7823 }
7824
7825 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007826 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007827 ----------------------------------------------------------------------*/
7828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7829 "WDI Busy state - queue request %d because waiting for response %d",
7830 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7831
Jeff Johnsone7245742012-09-05 17:12:55 -07007832 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007833 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007834
Jeff Johnson295189b2012-06-20 16:38:30 -07007835}/*WDI_MainReqBusy*/
7836/**
7837 @brief Main FSM Close function for state BUSY
7838
Jeff Johnsone7245742012-09-05 17:12:55 -07007839
7840 @param pWDICtx: pointer to the WLAN DAL context
7841 pEventData: pointer to the event information structure
7842
Jeff Johnson295189b2012-06-20 16:38:30 -07007843 @see
7844 @return Result of the function call
7845*/
7846WDI_Status
7847WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007848(
Jeff Johnson295189b2012-06-20 16:38:30 -07007849 WDI_ControlBlockType* pWDICtx,
7850 WDI_EventInfoType* pEventData
7851)
7852{
7853 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007854 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007855 ----------------------------------------------------------------------*/
7856 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7857 {
7858 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007859 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 pWDICtx, pEventData);
7861 return WDI_STATUS_E_FAILURE;
7862 }
7863
7864 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007865 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 ----------------------------------------------------------------------*/
7867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7868 "WDI Busy state - queue close request");
7869
Jeff Johnsone7245742012-09-05 17:12:55 -07007870 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007872
Jeff Johnson295189b2012-06-20 16:38:30 -07007873}/*WDI_MainCloseBusy*/
7874
7875/**
7876 @brief Main FSM Shutdown function for INIT & STARTED states
7877
7878
7879 @param pWDICtx: pointer to the WLAN DAL context
7880 pEventData: pointer to the event information structure
7881
7882 @see
7883 @return Result of the function call
7884*/
7885WDI_Status
7886WDI_MainShutdown
7887(
7888 WDI_ControlBlockType* pWDICtx,
7889 WDI_EventInfoType* pEventData
7890)
7891{
7892 /*--------------------------------------------------------------------
7893 Sanity Check
7894 ----------------------------------------------------------------------*/
7895 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7896 {
7897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007898 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 pWDICtx, pEventData);
7900 return WDI_STATUS_E_FAILURE;
7901 }
7902
7903 /*State at this point is BUSY - because we enter this state before posting
7904 an event to the FSM in order to prevent potential race conditions*/
7905
7906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7907 "Processing shutdown request in FSM");
7908
7909 /*Return Success*/
7910 return WDI_ProcessRequest( pWDICtx, pEventData );
7911
7912}/*WDI_MainShutdown*/
7913
7914/**
7915 @brief Main FSM Shutdown function for BUSY state
7916
7917
7918 @param pWDICtx: pointer to the WLAN DAL context
7919 pEventData: pointer to the event information structure
7920
7921 @see
7922 @return Result of the function call
7923*/
7924WDI_Status
7925WDI_MainShutdownBusy
7926(
7927 WDI_ControlBlockType* pWDICtx,
7928 WDI_EventInfoType* pEventData
7929)
7930{
7931 /*--------------------------------------------------------------------
7932 Sanity Check
7933 ----------------------------------------------------------------------*/
7934 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7935 {
7936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007937 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 pWDICtx, pEventData);
7939 return WDI_STATUS_E_FAILURE;
7940 }
7941
7942 /* If you are waiting for a HAL response at this stage, you are not
7943 * going to get it. Riva is already shutdown/crashed.
7944 */
7945 wpalTimerStop(&gWDICb.wptResponseTimer);
7946
7947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7948 "Processing shutdown request in FSM: Busy state ");
7949
7950 return WDI_ProcessRequest( pWDICtx, pEventData );
7951
7952}/*WDI_MainShutdownBusy*/
7953
7954
Jeff Johnsone7245742012-09-05 17:12:55 -07007955/*=======================================================================
7956
Jeff Johnson295189b2012-06-20 16:38:30 -07007957 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007958
Jeff Johnson295189b2012-06-20 16:38:30 -07007959*=======================================================================*/
7960
7961/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007962 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007963========================================================================*/
7964/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007965 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007966 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007967
7968 @param pWDICtx: pointer to the WLAN DAL context
7969 pEventData: pointer to the event information structure
7970
Jeff Johnson295189b2012-06-20 16:38:30 -07007971 @see
7972 @return Result of the function call
7973*/
7974WDI_Status
7975WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007976(
Jeff Johnson295189b2012-06-20 16:38:30 -07007977 WDI_ControlBlockType* pWDICtx,
7978 WDI_EventInfoType* pEventData
7979)
7980{
7981 WDI_StartReqParamsType* pwdiStartParams = NULL;
7982 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007983 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007984 wpt_uint16 usDataOffset = 0;
7985 wpt_uint16 usSendSize = 0;
7986
Jeff Johnsone7245742012-09-05 17:12:55 -07007987 tHalMacStartReqMsg halStartReq;
7988 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7990
7991 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007992 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007993 -------------------------------------------------------------------------*/
7994 if (( NULL == pEventData ) ||
7995 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7996 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7997 {
7998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07007999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 }
8003
8004 /*-----------------------------------------------------------------------
8005 Get message buffer
8006 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008007 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07008008 pwdiStartParams->usConfigBufferLen;
8009
Jeff Johnsone7245742012-09-05 17:12:55 -07008010 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008011 usLen,
8012 &pSendBuffer, &usDataOffset, &usSendSize))||
8013 ( usSendSize < (usDataOffset + usLen )))
8014 {
8015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008016 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008017 pEventData, pwdiStartParams, wdiStartRspCb);
8018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008020 }
8021
8022 /*-----------------------------------------------------------------------
8023 Fill in the message
8024 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008025 halStartReq.startReqParams.driverType =
8026 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07008027
Jeff Johnsone7245742012-09-05 17:12:55 -07008028 halStartReq.startReqParams.uConfigBufferLen =
8029 pwdiStartParams->usConfigBufferLen;
8030 wpalMemoryCopy( pSendBuffer+usDataOffset,
8031 &halStartReq.startReqParams,
8032 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008033
Jeff Johnsone7245742012-09-05 17:12:55 -07008034 usDataOffset += sizeof(halStartReq.startReqParams);
8035 wpalMemoryCopy( pSendBuffer+usDataOffset,
8036 pwdiStartParams->pConfigBuffer,
8037 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07008038
8039 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008040 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008041
8042 /*Save Low Level Ind CB and associated user data - it will be used further
8043 on when an indication is coming from the lower MAC*/
8044 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008045 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008046
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07008048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8053
Jeff Johnsone7245742012-09-05 17:12:55 -07008054
Jeff Johnson295189b2012-06-20 16:38:30 -07008055}/*WDI_ProcessStartReq*/
8056
8057/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008058 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008059 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008060
8061 @param pWDICtx: pointer to the WLAN DAL context
8062 pEventData: pointer to the event information structure
8063
Jeff Johnson295189b2012-06-20 16:38:30 -07008064 @see
8065 @return Result of the function call
8066*/
8067WDI_Status
8068WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008069(
Jeff Johnson295189b2012-06-20 16:38:30 -07008070 WDI_ControlBlockType* pWDICtx,
8071 WDI_EventInfoType* pEventData
8072)
8073{
8074 WDI_StopReqParamsType* pwdiStopParams = NULL;
8075 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008077 wpt_uint16 usDataOffset = 0;
8078 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008079 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008080 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8082
8083 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008084 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008085 -------------------------------------------------------------------------*/
8086 if (( NULL == pEventData ) ||
8087 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8088 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8089 {
8090 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008091 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008092 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008093 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 }
8095
8096 /*-----------------------------------------------------------------------
8097 Get message buffer
8098 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 sizeof(halStopReq.stopReqParams),
8101 &pSendBuffer, &usDataOffset, &usSendSize))||
8102 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8103 {
8104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008105 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 pEventData, pwdiStopParams, wdiStopRspCb);
8107 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008108 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 }
8110
8111 /*-----------------------------------------------------------------------
8112 Fill in the message
8113 -----------------------------------------------------------------------*/
8114 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8115 pwdiStopParams->wdiStopReason);
8116
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 wpalMemoryCopy( pSendBuffer+usDataOffset,
8118 &halStopReq.stopReqParams,
8119 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008120
8121 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008122 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008123
8124 /*! TO DO: stop the data services */
8125 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8126 {
8127 /*Stop the STA Table !UT- check this logic again
8128 It is safer to do it here than on the response - because a stop is imminent*/
8129 WDI_STATableStop(pWDICtx);
8130
8131 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008132 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8133 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008134 {
8135 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8136 "WDI Init failed to reset power state event");
8137
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008139 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008140 }
8141 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008142 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8143 if( eWLAN_PAL_STATUS_SUCCESS != status )
8144 {
8145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008146 "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 -08008147 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008148 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008149 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008150 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008151 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008153 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8154 WDI_SET_POWER_STATE_TIMEOUT);
8155 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008156 {
8157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8158 "WDI Init failed to wait on an event");
8159
Jeff Johnsone7245742012-09-05 17:12:55 -07008160 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008161 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008162 }
8163 }
8164
8165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008166 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8170
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008171fail:
8172 // Release the message buffer so we don't leak
8173 wpalMemoryFree(pSendBuffer);
8174
8175failRequest:
8176 //WDA should have failure check to avoid the memory leak
8177 return WDI_STATUS_E_FAILURE;
8178
Jeff Johnson295189b2012-06-20 16:38:30 -07008179}/*WDI_ProcessStopReq*/
8180
8181/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008182 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008184
8185 @param pWDICtx: pointer to the WLAN DAL context
8186 pEventData: pointer to the event information structure
8187
Jeff Johnson295189b2012-06-20 16:38:30 -07008188 @see
8189 @return Result of the function call
8190*/
8191WDI_Status
8192WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008193(
Jeff Johnson295189b2012-06-20 16:38:30 -07008194 WDI_ControlBlockType* pWDICtx,
8195 WDI_EventInfoType* pEventData
8196)
8197{
Jeff Johnsone7245742012-09-05 17:12:55 -07008198 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008199 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8200
8201 /*Lock control block for cleanup*/
8202 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008203
Jeff Johnson295189b2012-06-20 16:38:30 -07008204 /*Clear all pending request*/
8205 WDI_ClearPendingRequests(pWDICtx);
8206
8207 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008208 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008209
8210 /* Close Data transport*/
8211 /* FTM mode does not open Data Path */
8212 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8213 {
8214 WDTS_Close(pWDICtx);
8215 }
8216
8217 /*Close the STA Table !UT- check this logic again*/
8218 WDI_STATableClose(pWDICtx);
8219
8220 /*close the PAL */
8221 wptStatus = wpalClose(pWDICtx->pPALContext);
8222 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8223 {
8224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8225 "Failed to wpal Close %d", wptStatus);
8226 WDI_ASSERT(0);
8227 }
8228
8229 /*Transition back to init state*/
8230 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8231
8232 wpalMutexRelease(&pWDICtx->wptMutex);
8233
8234 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008235 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008236
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008238}/*WDI_ProcessCloseReq*/
8239
8240
8241/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008242 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008243===========================================================================*/
8244
8245/**
8246 @brief Process Init Scan Request function (called when Main FSM
8247 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008248
8249 @param pWDICtx: pointer to the WLAN DAL context
8250 pEventData: pointer to the event information structure
8251
Jeff Johnson295189b2012-06-20 16:38:30 -07008252 @see
8253 @return Result of the function call
8254*/
8255WDI_Status
8256WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008257(
Jeff Johnson295189b2012-06-20 16:38:30 -07008258 WDI_ControlBlockType* pWDICtx,
8259 WDI_EventInfoType* pEventData
8260)
8261{
8262 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8263 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008264 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008265 wpt_uint16 usDataOffset = 0;
8266 wpt_uint16 usSendSize = 0;
8267 wpt_uint8 i = 0;
8268
8269 tHalInitScanReqMsg halInitScanReqMsg;
8270
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 * It shold be removed once host and riva changes are in sync*/
8273 tHalInitScanConReqMsg halInitScanConReqMsg;
8274
8275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8276
8277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008279 -------------------------------------------------------------------------*/
8280 if (( NULL == pEventData ) ||
8281 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8282 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8283 {
8284 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008285 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008286 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 }
8289
8290#if 0
8291 wpalMutexAcquire(&pWDICtx->wptMutex);
8292 /*-----------------------------------------------------------------------
8293 Check to see if SCAN is already in progress - if so reject the req
8294 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008295 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008296 -----------------------------------------------------------------------*/
8297 if ( pWDICtx->bScanInProgress )
8298 {
8299 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8300 "Scan is already in progress - subsequent scan is not allowed"
8301 " until the first scan completes");
8302
8303 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008304 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008305 }
8306
Jeff Johnsone7245742012-09-05 17:12:55 -07008307 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8308 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008309
8310 wpalMutexRelease(&pWDICtx->wptMutex);
8311#endif
Viral Modid86bde22012-12-10 13:09:21 -08008312 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008313 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008314 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 * It shold be removed once host and riva changes are in sync*/
8316 /*-----------------------------------------------------------------------
8317 Get message buffer
8318 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008319 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008320 sizeof(halInitScanConReqMsg.initScanParams),
8321 &pSendBuffer, &usDataOffset, &usSendSize))||
8322 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8323 {
8324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008325 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008326 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8327 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008328 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008329 }
8330
8331
8332 /*-----------------------------------------------------------------------
8333 Fill in the message
8334 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008335 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008336 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8337
8338 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8339 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8340
Jeff Johnsone7245742012-09-05 17:12:55 -07008341 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008342 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8347
8348 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8349 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8350
Jeff Johnson295189b2012-06-20 16:38:30 -07008351 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8352 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008353
Jeff Johnsone7245742012-09-05 17:12:55 -07008354 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008355 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8356
8357 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8358 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008359 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008360 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8361 }
8362
Jeff Johnsone7245742012-09-05 17:12:55 -07008363 wpalMemoryCopy( pSendBuffer+usDataOffset,
8364 &halInitScanConReqMsg.initScanParams,
8365 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008366 }
8367 else
8368 {
8369 /*-----------------------------------------------------------------------
8370 Get message buffer
8371 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008372 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008373 sizeof(halInitScanReqMsg.initScanParams),
8374 &pSendBuffer, &usDataOffset, &usSendSize))||
8375 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8376 {
8377 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008378 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008379 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8380 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008381 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008382 }
8383
8384
8385 /*-----------------------------------------------------------------------
8386 Fill in the message
8387 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008388 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008389 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8390
8391 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8392 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8393
Jeff Johnsone7245742012-09-05 17:12:55 -07008394 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008395 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8400
8401 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8402 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8403
Jeff Johnsone7245742012-09-05 17:12:55 -07008404 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008405 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8406
8407 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8408 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008409 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008410 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8411 }
8412
Jeff Johnsone7245742012-09-05 17:12:55 -07008413 wpalMemoryCopy( pSendBuffer+usDataOffset,
8414 &halInitScanReqMsg.initScanParams,
8415 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008416 }
8417
8418 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008419 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008420
8421 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008422 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008423 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8426
8427}/*WDI_ProcessInitScanReq*/
8428
8429/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008432
8433 @param pWDICtx: pointer to the WLAN DAL context
8434 pEventData: pointer to the event information structure
8435
Jeff Johnson295189b2012-06-20 16:38:30 -07008436 @see
8437 @return Result of the function call
8438*/
8439WDI_Status
8440WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008441(
Jeff Johnson295189b2012-06-20 16:38:30 -07008442 WDI_ControlBlockType* pWDICtx,
8443 WDI_EventInfoType* pEventData
8444)
8445{
8446 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8447 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 wpt_uint16 usDataOffset = 0;
8450 wpt_uint16 usSendSize = 0;
8451
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008453 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8454
8455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008456 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008457 -------------------------------------------------------------------------*/
8458 if (( NULL == pEventData ) ||
8459 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8460 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8461 {
8462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008463 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008464 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008465 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 }
8467
8468#if 0
8469 wpalMutexAcquire(&pWDICtx->wptMutex);
8470 /*-----------------------------------------------------------------------
8471 Check to see if SCAN is already in progress - start scan is only
8472 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008473 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008474 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8477 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8478 {
8479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8480 "Scan start not allowed in this state %d %d",
8481 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008482
Jeff Johnson295189b2012-06-20 16:38:30 -07008483 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008484 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 }
8486
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008488
8489 wpalMutexRelease(&pWDICtx->wptMutex);
8490#endif
8491
8492 /*-----------------------------------------------------------------------
8493 Get message buffer
8494 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008495 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008496 sizeof(halStartScanReqMsg.startScanParams),
8497 &pSendBuffer, &usDataOffset, &usSendSize))||
8498 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8499 {
8500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008501 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008502 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 }
8506
Jeff Johnsone7245742012-09-05 17:12:55 -07008507 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008508 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 wpalMemoryCopy( pSendBuffer+usDataOffset,
8510 &halStartScanReqMsg.startScanParams,
8511 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008512
8513 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008514 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008515
8516 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008517 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008518 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8521}/*WDI_ProcessStartScanReq*/
8522
8523
8524/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008525 @brief Process End Scan 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_ProcessEndScanReq
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_EndScanReqParamsType* pwdiEndScanParams = NULL;
8542 WDI_EndScanRspCb wdiEndScanRspCb = 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;
8546
Jeff Johnsone7245742012-09-05 17:12:55 -07008547 tHalEndScanReqMsg halEndScanReqMsg;
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 == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8555 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)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);
Jeff Johnsone7245742012-09-05 17:12:55 -07008560 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 }
8562
Jeff Johnsone7245742012-09-05 17:12:55 -07008563 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8564 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 * forwarded to HAL and result in hang*/
8566#if 0
8567 wpalMutexAcquire(&pWDICtx->wptMutex);
8568 /*-----------------------------------------------------------------------
8569 Check to see if SCAN is already in progress - end scan is only
8570 allowed when a scan is ongoing and the state of the scan procedure
8571 is started
8572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8575 {
8576 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8577 "End start not allowed in this state %d %d",
8578 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008579
Jeff Johnson295189b2012-06-20 16:38:30 -07008580 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008581 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 }
8583
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008585
8586 wpalMutexRelease(&pWDICtx->wptMutex);
8587#endif
8588
8589 /*-----------------------------------------------------------------------
8590 Get message buffer
8591 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008592 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008593 sizeof(halEndScanReqMsg.endScanParams),
8594 &pSendBuffer, &usDataOffset, &usSendSize))||
8595 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8596 {
8597 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008598 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008599 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8600 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008602 }
8603
8604 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8605
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 wpalMemoryCopy( pSendBuffer+usDataOffset,
8607 &halEndScanReqMsg.endScanParams,
8608 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008609
8610 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008611 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008612
8613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8618}/*WDI_ProcessEndScanReq*/
8619
8620
8621/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008622 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008623 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008624
8625 @param pWDICtx: pointer to the WLAN DAL context
8626 pEventData: pointer to the event information structure
8627
Jeff Johnson295189b2012-06-20 16:38:30 -07008628 @see
8629 @return Result of the function call
8630*/
8631WDI_Status
8632WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008633(
Jeff Johnson295189b2012-06-20 16:38:30 -07008634 WDI_ControlBlockType* pWDICtx,
8635 WDI_EventInfoType* pEventData
8636)
8637{
8638 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8639 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 wpt_uint16 usDataOffset = 0;
8642 wpt_uint16 usSendSize = 0;
8643 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008644 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008645 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8647
8648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 -------------------------------------------------------------------------*/
8651 if (( NULL == pEventData ) ||
8652 ( NULL == pEventData->pEventData) ||
8653 ( NULL == pEventData->pCBfnc))
8654 {
8655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 }
8660
8661 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8662 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008663 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8664 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008665 * forwarded to HAL and result in hang*/
8666#if 0
8667 wpalMutexAcquire(&pWDICtx->wptMutex);
8668 /*-----------------------------------------------------------------------
8669 Check to see if SCAN is already in progress
8670 Finish scan gets invoked any scan states. ie. abort scan
8671 It should be allowed in any states.
8672 -----------------------------------------------------------------------*/
8673 if ( !pWDICtx->bScanInProgress )
8674 {
8675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8676 "Finish start not allowed in this state %d",
8677 pWDICtx->bScanInProgress );
8678
8679 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008681 }
8682
8683 /*-----------------------------------------------------------------------
8684 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008685 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008686 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8688 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008689 wpalMutexRelease(&pWDICtx->wptMutex);
8690#endif
8691
8692 if ( pWDICtx->bInBmps )
8693 {
8694 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008695 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8696 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8697 {
8698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008699 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008700 WDI_ASSERT(0);
8701 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008702 }
8703
8704 /*-----------------------------------------------------------------------
8705 Get message buffer
8706 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008707 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008708 sizeof(halFinishScanReqMsg.finishScanParams),
8709 &pSendBuffer, &usDataOffset, &usSendSize))||
8710 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8711 {
8712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008713 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008714 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 }
8718
Jeff Johnsone7245742012-09-05 17:12:55 -07008719 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008720 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8721
Jeff Johnsone7245742012-09-05 17:12:55 -07008722 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8724
Jeff Johnsone7245742012-09-05 17:12:55 -07008725 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008726 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8727
8728 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8729 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8730
Jeff Johnsone7245742012-09-05 17:12:55 -07008731 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008732 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8737
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8740
8741 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8742 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008743 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008744 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8745 }
8746
8747 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8748 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8749
Jeff Johnsone7245742012-09-05 17:12:55 -07008750 wpalMemoryCopy( pSendBuffer+usDataOffset,
8751 &halFinishScanReqMsg.finishScanParams,
8752 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008753
8754 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008755 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008756
8757 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008758 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008759 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8762}/*WDI_ProcessFinishScanReq*/
8763
8764
8765/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008766 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008767==========================================================================*/
8768/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008769 @brief Process BSS Join for a given Session
8770
8771 @param pWDICtx: pointer to the WLAN DAL context
8772 pEventData: pointer to the event information structure
8773
Jeff Johnson295189b2012-06-20 16:38:30 -07008774 @see
8775 @return Result of the function call
8776*/
8777WDI_Status
8778WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008779(
Jeff Johnson295189b2012-06-20 16:38:30 -07008780 WDI_ControlBlockType* pWDICtx,
8781 WDI_JoinReqParamsType* pwdiJoinParams,
8782 WDI_JoinRspCb wdiJoinRspCb,
8783 void* pUserData
8784)
8785{
8786 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008787 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008788 wpt_uint16 usDataOffset = 0;
8789 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008790 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008791
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008793 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8794
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008795 wpalMutexAcquire(&pWDICtx->wptMutex);
8796
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 /*------------------------------------------------------------------------
8798 Check to see if we have any session with this BSSID already stored, we
8799 should not
8800 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008801 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8802 pwdiJoinParams->wdiReqInfo.macBSSID,
8803 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008804
8805 if ( NULL != pBSSSes )
8806 {
8807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008808 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8809 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008810
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008811 /*reset the bAssociationInProgress otherwise the next
8812 *join request will be queued*/
8813 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8814 wpalMutexRelease(&pWDICtx->wptMutex);
8815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008816 }
8817
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008819 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 if ( NULL == pBSSSes )
8823 {
8824
8825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8826 "DAL has no free sessions - cannot run another join");
8827
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008828 /*reset the bAssociationInProgress otherwise the next
8829 *join request will be queued*/
8830 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008831 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 }
8834
8835 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008836 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8837 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008838 WDI_MAC_ADDR_LEN);
8839
8840 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008841 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008842 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008843
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 wpalMutexRelease(&pWDICtx->wptMutex);
8845
8846 /*-----------------------------------------------------------------------
8847 Get message buffer
8848 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 sizeof(halJoinReqMsg.joinReqParams),
8851 &pSendBuffer, &usDataOffset, &usSendSize))||
8852 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8853 {
8854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008855 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008856 pUserData, pwdiJoinParams, wdiJoinRspCb);
8857 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008859 }
8860
8861 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008862 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008863
8864 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008865 pwdiJoinParams->wdiReqInfo.macSTASelf,
8866 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008867
Jeff Johnsone7245742012-09-05 17:12:55 -07008868 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8870
8871 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8872
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008873#ifdef WLAN_FEATURE_VOWIFI
8874 halJoinReqMsg.joinReqParams.maxTxPower =
8875 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8876#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008877 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008878 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8879#endif
8880
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8883 wdiSecondaryChannelOffset);
8884
Jeff Johnsone7245742012-09-05 17:12:55 -07008885 wpalMemoryCopy( pSendBuffer+usDataOffset,
8886 &halJoinReqMsg.joinReqParams,
8887 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008888
8889 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008890 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008891
8892 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008893 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008894 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8896 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008897
8898}/*WDI_ProcessBSSSessionJoinReq*/
8899
8900/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008901 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008902 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008903
8904 @param pWDICtx: pointer to the WLAN DAL context
8905 pEventData: pointer to the event information structure
8906
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 @see
8908 @return Result of the function call
8909*/
8910WDI_Status
8911WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008912(
Jeff Johnson295189b2012-06-20 16:38:30 -07008913 WDI_ControlBlockType* pWDICtx,
8914 WDI_EventInfoType* pEventData
8915)
8916{
8917 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8918 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8919 WDI_JoinRspCb wdiJoinRspCb = NULL;
8920 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8921
8922 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008923 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008924 -------------------------------------------------------------------------*/
8925 if (( NULL == pEventData ) ||
8926 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8927 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8928 {
8929 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008930 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008934
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 /*-------------------------------------------------------------------------
8936 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008937 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008938 -------------------------------------------------------------------------*/
8939 wpalMutexAcquire(&pWDICtx->wptMutex);
8940
8941 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8942 {
8943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8944 "Association is currently in progress, queueing new join req");
8945
8946 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 pwdiJoinParams->wdiReqInfo.macBSSID);
8949
8950 wpalMutexRelease(&pWDICtx->wptMutex);
8951
Jeff Johnsone7245742012-09-05 17:12:55 -07008952 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008953 }
8954
8955 /*Starting a new association */
8956 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8957 wpalMutexRelease(&pWDICtx->wptMutex);
8958
8959 /*Process the Join Request*/
8960 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8961 wdiJoinRspCb,pEventData->pUserData);
8962
8963}/*WDI_ProcessJoinReq*/
8964
8965
8966/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008967 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008968 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008969
8970 @param pWDICtx: pointer to the WLAN DAL context
8971 pEventData: pointer to the event information structure
8972
Jeff Johnson295189b2012-06-20 16:38:30 -07008973 @see
8974 @return Result of the function call
8975*/
8976WDI_Status
8977WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008978(
Jeff Johnson295189b2012-06-20 16:38:30 -07008979 WDI_ControlBlockType* pWDICtx,
8980 WDI_EventInfoType* pEventData
8981)
8982{
8983 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8984 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008985 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008986 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 wpt_uint16 uMsgSize = 0;
8988 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008989 wpt_uint16 usDataOffset = 0;
8990 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008991 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008992
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8995
8996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008998 -------------------------------------------------------------------------*/
8999 if (( NULL == pEventData ) ||
9000 ( NULL == pEventData->pEventData ) ||
9001 ( NULL == pEventData->pCBfnc ))
9002 {
9003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 }
9008
Abhishek Singh6927fa02014-06-27 17:19:55 +05309009 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009010 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
9011 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
9012 /*-------------------------------------------------------------------------
9013 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009014 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009015 -------------------------------------------------------------------------*/
9016 wpalMutexAcquire(&pWDICtx->wptMutex);
9017
9018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009019 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9022 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
9023 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009024
Jeff Johnsone7245742012-09-05 17:12:55 -07009025 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009026 {
9027#ifdef WLAN_FEATURE_VOWIFI_11R
9028 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009029 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009030 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 if ( NULL == pBSSSes )
9033 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009034
Jeff Johnson295189b2012-06-20 16:38:30 -07009035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9036 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009037
Jeff Johnson295189b2012-06-20 16:38:30 -07009038 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009039 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009041
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009043 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9044 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009045 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009046
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009048 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9050#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009051 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009052 * Request in case of IBSS*/
9053 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9054 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9055 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9056 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9057 {
9058 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009059 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009060 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 if ( NULL == pBSSSes )
9063 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009064
Jeff Johnson295189b2012-06-20 16:38:30 -07009065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9066 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009067
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009069 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009071
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009073 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9074 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009076
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009078 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9080 }
9081 else
9082 {
9083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009084 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9085 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9086 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9087
Jeff Johnson295189b2012-06-20 16:38:30 -07009088 /* for IBSS testing */
9089 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009090 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009091 }
9092#endif
9093 }
9094
9095 /*------------------------------------------------------------------------
9096 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009097 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009098 ------------------------------------------------------------------------*/
9099 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9100 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9102 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9103 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9104 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009105
Jeff Johnsone7245742012-09-05 17:12:55 -07009106 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009107
9108 wpalMutexRelease(&pWDICtx->wptMutex);
9109
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009111 }
9112
9113 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9115 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009116 sizeof(pWDICtx->wdiCachedConfigBssReq));
9117
9118 wpalMutexRelease(&pWDICtx->wptMutex);
9119
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9121#ifdef WLAN_FEATURE_11AC
9122 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009123 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009124 else
9125#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009126 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009127
9128 /*-----------------------------------------------------------------------
9129 Get message buffer
9130 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009131 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009132 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9133 ( usSendSize < (usDataOffset + uMsgSize )))
9134 {
9135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009136 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009137 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9138 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009139 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009140 }
9141
9142 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009143#ifdef WLAN_FEATURE_11AC
9144 if (WDI_getFwWlanFeatCaps(DOT11AC))
9145 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9146 &pwdiConfigBSSParams->wdiReqInfo);
9147 else
9148#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009149 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009150 &pwdiConfigBSSParams->wdiReqInfo);
9151
9152 /* Need to fill in the STA Index to invalid, since at this point we have not
9153 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009154 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009155
9156 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009157 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9158
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009159#ifdef WLAN_FEATURE_11AC
9160 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9161 wpalMemoryCopy( pSendBuffer+usDataOffset,
9162 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9163 uMsgSize);
9164 }else
9165#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009166 {
9167 if ( uMsgSize <= sizeof(tConfigBssParams) )
9168 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009169 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009170 &halConfigBssReqMsg.uBssParams.configBssParams,
9171 uMsgSize);
9172 }
9173 else
9174 {
9175 return WDI_STATUS_E_FAILURE;
9176 }
9177 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009178
9179 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009180 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309181 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009182 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009183 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9186 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009187 WDI_CONFIG_BSS_RESP);
9188
9189}/*WDI_ProcessConfigBSSReq*/
9190
9191
9192/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009193 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009194 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009195
9196 @param pWDICtx: pointer to the WLAN DAL context
9197 pEventData: pointer to the event information structure
9198
Jeff Johnson295189b2012-06-20 16:38:30 -07009199 @see
9200 @return Result of the function call
9201*/
9202WDI_Status
9203WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009204(
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 WDI_ControlBlockType* pWDICtx,
9206 WDI_EventInfoType* pEventData
9207)
9208{
9209 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9210 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009211 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009212 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 wpt_uint16 usDataOffset = 0;
9215 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009216 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009217
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9220
9221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009223 -------------------------------------------------------------------------*/
9224 if (( NULL == pEventData ) ||
9225 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9226 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9227 {
9228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 }
9233
9234 /*-------------------------------------------------------------------------
9235 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009236 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009237 -------------------------------------------------------------------------*/
9238 wpalMutexAcquire(&pWDICtx->wptMutex);
9239
9240 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009241 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009242 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9244 pwdiDelBSSParams->ucBssIdx,
9245 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009246
Jeff Johnsone7245742012-09-05 17:12:55 -07009247 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009248 {
9249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009250 "%s: BSS does not yet exist. ucBssIdx %d",
9251 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009252
9253 wpalMutexRelease(&pWDICtx->wptMutex);
9254
9255 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009256 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009257
9258 /*------------------------------------------------------------------------
9259 Check if this BSS is being currently processed or queued,
9260 if queued - queue the new request as well
9261 ------------------------------------------------------------------------*/
9262 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009263 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9265 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9266 __func__, pwdiDelBSSParams->ucBssIdx);
9267
9268 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9269
9270 wpalMutexRelease(&pWDICtx->wptMutex);
9271
9272 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009274
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 /*-----------------------------------------------------------------------
9276 If we receive a Del BSS request for an association that is already in
9277 progress, it indicates that the assoc has failed => we no longer have
9278 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009279 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009280 -----------------------------------------------------------------------*/
9281 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9282 {
9283 /*We can switch to false here because even if a subsequent Join comes in
9284 it will only be processed when DAL transitions out of BUSY state which
9285 happens when the Del BSS request comes */
9286 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9287
9288 /*Former association is complete - prepare next pending assoc for
9289 processing */
9290 WDI_DequeueAssocRequest(pWDICtx);
9291 }
9292
9293 wpalMutexRelease(&pWDICtx->wptMutex);
9294 /*-----------------------------------------------------------------------
9295 Get message buffer
9296 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009297 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009298 sizeof(halBssReqMsg.deleteBssParams),
9299 &pSendBuffer, &usDataOffset, &usSendSize))||
9300 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9301 {
9302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009303 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009304 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
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
9309 /*Fill in the message request structure*/
9310
9311 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009312 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009313
Jeff Johnsone7245742012-09-05 17:12:55 -07009314 wpalMemoryCopy( pSendBuffer+usDataOffset,
9315 &halBssReqMsg.deleteBssParams,
9316 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009317
9318 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009319 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009320
Jeff Johnsone7245742012-09-05 17:12:55 -07009321
Jeff Johnson295189b2012-06-20 16:38:30 -07009322 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009323 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9327
Jeff Johnsone7245742012-09-05 17:12:55 -07009328
Jeff Johnson295189b2012-06-20 16:38:30 -07009329}/*WDI_ProcessDelBSSReq*/
9330
9331/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009333 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009334
9335 @param pWDICtx: pointer to the WLAN DAL context
9336 pEventData: pointer to the event information structure
9337
Jeff Johnson295189b2012-06-20 16:38:30 -07009338 @see
9339 @return Result of the function call
9340*/
9341WDI_Status
9342WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009343(
Jeff Johnson295189b2012-06-20 16:38:30 -07009344 WDI_ControlBlockType* pWDICtx,
9345 WDI_EventInfoType* pEventData
9346)
9347{
9348 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9349 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009350 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009351 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 wpt_uint16 usDataOffset = 0;
9354 wpt_uint16 usSendSize = 0;
9355 wpt_uint16 uMsgSize = 0;
9356 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009357 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009358
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9361
9362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009363 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 -------------------------------------------------------------------------*/
9365 if (( NULL == pEventData ) ||
9366 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9367 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9368 {
9369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 }
9374
9375 /*-------------------------------------------------------------------------
9376 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009377 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009378 -------------------------------------------------------------------------*/
9379 wpalMutexAcquire(&pWDICtx->wptMutex);
9380
9381 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009382 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009383 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9385 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9386 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009387
9388 if ( NULL == pBSSSes )
9389 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009390 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9391 "%s: Association sequence for this BSS does not yet exist - "
9392 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9393 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009394
9395 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009397 }
9398
9399 /*------------------------------------------------------------------------
9400 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009401 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009402 ------------------------------------------------------------------------*/
9403 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9404 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9406 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9407 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009408
Jeff Johnsone7245742012-09-05 17:12:55 -07009409 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009410
9411 wpalMutexRelease(&pWDICtx->wptMutex);
9412
Jeff Johnsone7245742012-09-05 17:12:55 -07009413 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009414 }
9415
9416 /*-----------------------------------------------------------------------
9417 If Post Assoc was not yet received - the current association must
9418 be in progress
9419 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009420 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009421 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9422 {
9423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9424 "Association sequence for this BSS association no longer in "
9425 "progress - not allowed");
9426
9427 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009429 }
9430
9431 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009432 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 -----------------------------------------------------------------------*/
9434 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9435 {
9436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9437 "Post Assoc not allowed before JOIN - failing request");
9438
9439 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009441 }
9442
9443 wpalMutexRelease(&pWDICtx->wptMutex);
9444
9445 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9446 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9447 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9452 ( usSendSize < (usDataOffset + uMsgSize )))
9453 {
9454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009455 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009456 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009459 }
9460
9461 /*Copy the STA parameters */
9462 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9463 &pwdiPostAssocParams->wdiSTAParams );
9464
9465 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 WDI_STATableFindStaidByAddr(pWDICtx,
9468 pwdiPostAssocParams->wdiSTAParams.macSTA,
9469 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9470 {
9471 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009472 MAC_ADDRESS_STR
9473 ": This station does not exist in the WDI Station Table",
9474 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009475 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009476 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009478 }
9479
9480 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009481 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009482 pBSSSes->ucBSSIdx;
9483
9484 /*Copy the BSS parameters */
9485 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9486 &pwdiPostAssocParams->wdiBSSParams);
9487
9488 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009489 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009490 WDI_STATableFindStaidByAddr(pWDICtx,
9491 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009492 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009493 {
9494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009495 MAC_ADDRESS_STR
9496 ": This station does not exist in the WDI Station Table",
9497 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009498 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009499 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009501 }
9502
9503 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009504 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009505 pBSSSes->ucBSSIdx;
9506
Jeff Johnsone7245742012-09-05 17:12:55 -07009507
9508 wpalMemoryCopy( pSendBuffer+usDataOffset,
9509 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9510 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009511
9512 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9513
Jeff Johnsone7245742012-09-05 17:12:55 -07009514 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9515 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9516 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009517
Jeff Johnsone7245742012-09-05 17:12:55 -07009518
Jeff Johnson295189b2012-06-20 16:38:30 -07009519 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009520 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009521
Jeff Johnsone7245742012-09-05 17:12:55 -07009522
9523 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009524 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009525 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009526
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309527 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009528 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9533
Jeff Johnsone7245742012-09-05 17:12:55 -07009534
Jeff Johnson295189b2012-06-20 16:38:30 -07009535}/*WDI_ProcessPostAssocReq*/
9536
9537/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009538 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009539 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009540
9541 @param pWDICtx: pointer to the WLAN DAL context
9542 pEventData: pointer to the event information structure
9543
Jeff Johnson295189b2012-06-20 16:38:30 -07009544 @see
9545 @return Result of the function call
9546*/
9547WDI_Status
9548WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009549(
Jeff Johnson295189b2012-06-20 16:38:30 -07009550 WDI_ControlBlockType* pWDICtx,
9551 WDI_EventInfoType* pEventData
9552)
9553{
9554 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9555 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009556 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009557 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 wpt_uint16 usDataOffset = 0;
9560 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009561 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009562 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9563
Jeff Johnsone7245742012-09-05 17:12:55 -07009564 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009565 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9566
9567 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009568 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009569 -------------------------------------------------------------------------*/
9570 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9571 ( NULL == pEventData->pCBfnc ))
9572 {
9573 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009574 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009575 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009576 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 }
9578
9579 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9580 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9581 /*-------------------------------------------------------------------------
9582 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009583 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009584 -------------------------------------------------------------------------*/
9585 wpalMutexAcquire(&pWDICtx->wptMutex);
9586
9587 /*------------------------------------------------------------------------
9588 Find the BSS for which the request is made and identify WDI session
9589 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009590 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9591 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009592 &macBSSID))
9593 {
9594 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009595 "This station does not exist in the WDI Station Table %d",
9596 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009597 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009599 }
9600
Jeff Johnsone7245742012-09-05 17:12:55 -07009601 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9602 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009603 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9605 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9606 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009607
9608 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009610 }
9611
9612 /*------------------------------------------------------------------------
9613 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009615 ------------------------------------------------------------------------*/
9616 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9617 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9619 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9620 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009621
Jeff Johnsone7245742012-09-05 17:12:55 -07009622 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 }
9626
9627 wpalMutexRelease(&pWDICtx->wptMutex);
9628 /*-----------------------------------------------------------------------
9629 Get message buffer
9630 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009631 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009632 sizeof(halDelStaReqMsg.delStaParams),
9633 &pSendBuffer, &usDataOffset, &usSendSize))||
9634 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9635 {
9636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009637 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009638 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9639 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009640 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009641 }
9642
Jeff Johnsone7245742012-09-05 17:12:55 -07009643 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9644 wpalMemoryCopy( pSendBuffer+usDataOffset,
9645 &halDelStaReqMsg.delStaParams,
9646 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009647
9648 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009649 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009650
9651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009652 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009653 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009654 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009655 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9656
9657}/*WDI_ProcessDelSTAReq*/
9658
9659
9660/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009661 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009662==========================================================================*/
9663/**
9664 @brief Process Set BSS Key Request function (called when Main FSM
9665 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009666
9667 @param pWDICtx: pointer to the WLAN DAL context
9668 pEventData: pointer to the event information structure
9669
Jeff Johnson295189b2012-06-20 16:38:30 -07009670 @see
9671 @return Result of the function call
9672*/
9673WDI_Status
9674WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009675(
Jeff Johnson295189b2012-06-20 16:38:30 -07009676 WDI_ControlBlockType* pWDICtx,
9677 WDI_EventInfoType* pEventData
9678)
9679{
9680 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9681 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009682 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009683 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 wpt_uint16 usDataOffset = 0;
9686 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9689 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309690 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009691
9692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9693
9694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009696 -------------------------------------------------------------------------*/
9697 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9698 ( NULL == pEventData->pCBfnc ))
9699 {
9700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 }
9705
9706 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9707 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9708 /*-------------------------------------------------------------------------
9709 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009710 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009711 -------------------------------------------------------------------------*/
9712 wpalMutexAcquire(&pWDICtx->wptMutex);
9713
9714 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009715 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009716 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9718 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9719 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009720
Jeff Johnsone7245742012-09-05 17:12:55 -07009721 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009722 {
9723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009724 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9725 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009726
9727 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009729 }
9730
9731 /*------------------------------------------------------------------------
9732 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009733 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009734 ------------------------------------------------------------------------*/
9735 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9736 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9738 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9739 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009740
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 }
9745
9746
9747 wpalMutexRelease(&pWDICtx->wptMutex);
9748 /*-----------------------------------------------------------------------
9749 Get message buffer
9750 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009751 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009752 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9753 &pSendBuffer, &usDataOffset, &usSendSize))||
9754 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9755 {
9756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009757 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009758 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9759 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009760 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009761 }
9762
9763 /*-----------------------------------------------------------------------
9764 Copy the Key parameters into the HAL message
9765 -----------------------------------------------------------------------*/
9766
Jeff Johnsone7245742012-09-05 17:12:55 -07009767 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009768
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009770 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9771
Jeff Johnsone7245742012-09-05 17:12:55 -07009772 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009773 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9774
9775 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9776 keyIndex++)
9777 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009778 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009779 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9780 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9781 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9782 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9783 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309784
9785 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9786 {
9787 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9788 {
9789 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9790 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9791 }
9792
9793 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9794 {
9795 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9796 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9797 }
9798
9799 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9800 "%s: Negated Keys", __func__);
9801 }
9802 else
9803 {
9804 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9805 "%s: No change in Keys", __func__);
9806 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009807 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009808 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309809 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9810 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9811 WDI_MAX_KEY_LENGTH);
9812 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009814 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309817 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009818
9819 wpalMemoryCopy( pSendBuffer+usDataOffset,
9820 &halSetBssKeyReqMsg.setBssKeyParams,
9821 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009822
9823 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009824 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009825
9826 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009827 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009828 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9830 wdiSetBSSKeyRspCb, pEventData->pUserData,
9831 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009832
9833}/*WDI_ProcessSetBssKeyReq*/
9834
9835/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009836 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009837 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009838
9839 @param pWDICtx: pointer to the WLAN DAL context
9840 pEventData: pointer to the event information structure
9841
Jeff Johnson295189b2012-06-20 16:38:30 -07009842 @see
9843 @return Result of the function call
9844*/
9845WDI_Status
9846WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009847(
Jeff Johnson295189b2012-06-20 16:38:30 -07009848 WDI_ControlBlockType* pWDICtx,
9849 WDI_EventInfoType* pEventData
9850)
9851{
9852 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9853 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009854 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009855 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009856 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009857 wpt_uint16 usDataOffset = 0;
9858 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009859 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009860 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9861 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9862
9863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009865 -------------------------------------------------------------------------*/
9866 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9867 ( NULL == pEventData->pCBfnc ))
9868 {
9869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 }
9874
9875 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9876 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9877 /*-------------------------------------------------------------------------
9878 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009879 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009880 -------------------------------------------------------------------------*/
9881 wpalMutexAcquire(&pWDICtx->wptMutex);
9882
9883 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009884 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009885 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9887 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9888 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009889
Jeff Johnsone7245742012-09-05 17:12:55 -07009890 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009891 {
9892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009893 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9894 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009895
9896 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009897 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009898 }
9899
9900 /*------------------------------------------------------------------------
9901 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 ------------------------------------------------------------------------*/
9904 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9905 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009906 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9907 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9908 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009909
Jeff Johnsone7245742012-09-05 17:12:55 -07009910 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009911 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 }
9914
9915
9916 wpalMutexRelease(&pWDICtx->wptMutex);
9917
9918 /*-----------------------------------------------------------------------
9919 Get message buffer
9920 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009921 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009922 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9923 &pSendBuffer, &usDataOffset, &usSendSize))||
9924 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9925 {
9926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009927 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009928 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9929 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009930 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 }
9932 /*-----------------------------------------------------------------------
9933 Copy the Key parameters into the HAL message
9934 -----------------------------------------------------------------------*/
9935 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9936
Jeff Johnsone7245742012-09-05 17:12:55 -07009937 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009938 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9939
9940 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9941
Jeff Johnsone7245742012-09-05 17:12:55 -07009942 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009943 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9944
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 wpalMemoryCopy( pSendBuffer+usDataOffset,
9946 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9947 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009948
9949 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009950 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009951
9952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009958}/*WDI_ProcessRemoveBssKeyReq*/
9959
9960/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009963
9964 @param pWDICtx: pointer to the WLAN DAL context
9965 pEventData: pointer to the event information structure
9966
Jeff Johnson295189b2012-06-20 16:38:30 -07009967 @see
9968 @return Result of the function call
9969*/
9970WDI_Status
9971WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009972(
Jeff Johnson295189b2012-06-20 16:38:30 -07009973 WDI_ControlBlockType* pWDICtx,
9974 WDI_EventInfoType* pEventData
9975)
9976{
9977 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9978 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9979 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009980 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009981 wpt_uint16 usDataOffset = 0;
9982 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009983 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009984 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9987 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309988 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009989
9990 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9991
9992 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009993 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009994 -------------------------------------------------------------------------*/
9995 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9996 ( NULL == pEventData->pCBfnc ))
9997 {
9998 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009999 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 }
10003
10004 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10005 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10006 /*-------------------------------------------------------------------------
10007 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010008 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010009 -------------------------------------------------------------------------*/
10010 wpalMutexAcquire(&pWDICtx->wptMutex);
10011
10012 /*------------------------------------------------------------------------
10013 Find the BSS for which the request is made and identify WDI session
10014 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010015 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10016 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 &macBSSID))
10018 {
10019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010020 "This station does not exist in the WDI Station Table %d",
10021 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010022 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 }
10025
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10027 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010028 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10030 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10031 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010032
10033 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010035 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010036
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 /*------------------------------------------------------------------------
10038 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010040 ------------------------------------------------------------------------*/
10041 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10042 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10044 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10045 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010046
Jeff Johnsone7245742012-09-05 17:12:55 -070010047 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010048 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 }
10051
10052
10053 wpalMutexRelease(&pWDICtx->wptMutex);
10054 /*-----------------------------------------------------------------------
10055 Get message buffer
10056 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010057 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010058 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10059 &pSendBuffer, &usDataOffset, &usSendSize))||
10060 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10061 {
10062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010063 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010064 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10065 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010066 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010067 }
10068 /*-----------------------------------------------------------------------
10069 Copy the STA Key parameters into the HAL message
10070 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010071 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010072 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10073
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10076
10077 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10078
10079 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10080
10081 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10082
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10084 keyIndex++)
10085 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010086 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010087 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10088 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10089 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10090 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10091 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010092
10093 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10094 {
10095 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10096 {
10097 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10098 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10099 }
10100
10101 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10102 {
10103 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10104 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10105 }
10106
10107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10108 "%s: Negated Keys", __func__);
10109 }
10110 else
10111 {
10112 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10113 "%s: No change in Keys", __func__);
10114 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010116 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010117 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10118 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10119 WDI_MAX_KEY_LENGTH);
10120 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010121 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010122 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010125 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010126
Jeff Johnsone7245742012-09-05 17:12:55 -070010127 wpalMemoryCopy( pSendBuffer+usDataOffset,
10128 &halSetStaKeyReqMsg.setStaKeyParams,
10129 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010130
10131 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010133 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010134 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010135 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10138 wdiSetSTAKeyRspCb, pEventData->pUserData,
10139 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010140
10141}/*WDI_ProcessSetSTAKeyReq*/
10142
10143/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010144 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010145 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010146
10147 @param pWDICtx: pointer to the WLAN DAL context
10148 pEventData: pointer to the event information structure
10149
Jeff Johnson295189b2012-06-20 16:38:30 -070010150 @see
10151 @return Result of the function call
10152*/
10153WDI_Status
10154WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010155(
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 WDI_ControlBlockType* pWDICtx,
10157 WDI_EventInfoType* pEventData
10158)
10159{
10160 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10161 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10162 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 wpt_uint16 usDataOffset = 0;
10165 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010166 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010167 wpt_macAddr macBSSID;
10168 wpt_uint8 ucCurrentBSSSesIdx;
10169 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10171
10172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010174 -------------------------------------------------------------------------*/
10175 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10176 ( NULL == pEventData->pCBfnc ))
10177 {
10178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 }
10183
10184 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10185 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10186 /*-------------------------------------------------------------------------
10187 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010188 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010189 -------------------------------------------------------------------------*/
10190 wpalMutexAcquire(&pWDICtx->wptMutex);
10191
10192 /*------------------------------------------------------------------------
10193 Find the BSS for which the request is made and identify WDI session
10194 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010195 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10196 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010197 &macBSSID))
10198 {
10199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010200 "This station does not exist in the WDI Station Table %d",
10201 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010202 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010203 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 }
10205
Jeff Johnsone7245742012-09-05 17:12:55 -070010206 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10207 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010208 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10210 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10211 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010212
10213 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010214 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010215 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010216
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 /*------------------------------------------------------------------------
10218 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010219 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010220 ------------------------------------------------------------------------*/
10221 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10222 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10224 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10225 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010226
Jeff Johnsone7245742012-09-05 17:12:55 -070010227 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010228 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 }
10231
10232
10233
10234 wpalMutexRelease(&pWDICtx->wptMutex);
10235 /*-----------------------------------------------------------------------
10236 Get message buffer
10237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010239 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10240 &pSendBuffer, &usDataOffset, &usSendSize))||
10241 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10242 {
10243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010244 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010248 }
10249
10250 /*-----------------------------------------------------------------------
10251 Copy the Key parameters into the HAL message
10252 -----------------------------------------------------------------------*/
10253
Jeff Johnsone7245742012-09-05 17:12:55 -070010254 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010255 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10256
Jeff Johnsone7245742012-09-05 17:12:55 -070010257 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010258 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10259
Jeff Johnsone7245742012-09-05 17:12:55 -070010260 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010261 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10262
Jeff Johnsone7245742012-09-05 17:12:55 -070010263 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010264 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10265
Jeff Johnsone7245742012-09-05 17:12:55 -070010266 wpalMemoryCopy( pSendBuffer+usDataOffset,
10267 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10268 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010269
10270 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010271 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010272
10273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010274 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010279
10280}/*WDI_ProcessRemoveSTAKeyReq*/
10281
10282/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010283 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010284 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010285
10286 @param pWDICtx: pointer to the WLAN DAL context
10287 pEventData: pointer to the event information structure
10288
Jeff Johnson295189b2012-06-20 16:38:30 -070010289 @see
10290 @return Result of the function call
10291*/
10292WDI_Status
10293WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010294(
Jeff Johnson295189b2012-06-20 16:38:30 -070010295 WDI_ControlBlockType* pWDICtx,
10296 WDI_EventInfoType* pEventData
10297)
10298{
10299 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10300 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10301 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010302 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010303 wpt_uint16 usDataOffset = 0;
10304 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010305 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10309 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010310 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010311
10312 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10313
10314 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010315 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010316 -------------------------------------------------------------------------*/
10317 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10318 ( NULL == pEventData->pCBfnc ))
10319 {
10320 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010321 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010322 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010323 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 }
10325
10326 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10327 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10328 /*-------------------------------------------------------------------------
10329 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010330 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010331 -------------------------------------------------------------------------*/
10332 wpalMutexAcquire(&pWDICtx->wptMutex);
10333
10334 /*------------------------------------------------------------------------
10335 Find the BSS for which the request is made and identify WDI session
10336 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010337 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10338 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010339 &macBSSID))
10340 {
10341 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010342 "This station does not exist in the WDI Station Table %d",
10343 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 }
10347
Jeff Johnsone7245742012-09-05 17:12:55 -070010348 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10349 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 {
10351 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010352 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010353 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010354
10355 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010356 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010357 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010358
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 /*------------------------------------------------------------------------
10360 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010361 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010362 ------------------------------------------------------------------------*/
10363 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10364 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10366 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10367 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010368
Jeff Johnsone7245742012-09-05 17:12:55 -070010369 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010370 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 }
10373
10374
10375 wpalMutexRelease(&pWDICtx->wptMutex);
10376 /*-----------------------------------------------------------------------
10377 Get message buffer
10378 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010379 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010380 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10381 &pSendBuffer, &usDataOffset, &usSendSize))||
10382 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10383 {
10384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010385 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010386 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010389 }
10390 /*-----------------------------------------------------------------------
10391 Copy the STA Key parameters into the HAL message
10392 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010393 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010394 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10395
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10398
10399 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10400
10401 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10402
10403 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10404
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10406 keyIndex++)
10407 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010408 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010409 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10410 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10411 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10412 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10413 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010414
10415 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10416 {
10417 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10418 {
10419 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10420 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10421 }
10422
10423 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10424 {
10425 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10426 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10427 }
10428
10429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10430 "%s: Negated Keys", __func__);
10431 }
10432 else
10433 {
10434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10435 "%s: No change in Keys", __func__);
10436 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010438 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010439 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10440 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10441 WDI_MAX_KEY_LENGTH);
10442 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010443 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010444 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010447 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010448 wpalMemoryCopy( pSendBuffer+usDataOffset,
10449 &halSetStaKeyReqMsg.setStaKeyParams,
10450 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010451
10452 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010453 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010454
10455 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010456 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010457 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10459 wdiSetSTAKeyRspCb, pEventData->pUserData,
10460 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010461
10462}/*WDI_ProcessSetSTABcastKeyReq*/
10463
10464/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010465 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010466 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010467
10468 @param pWDICtx: pointer to the WLAN DAL context
10469 pEventData: pointer to the event information structure
10470
Jeff Johnson295189b2012-06-20 16:38:30 -070010471 @see
10472 @return Result of the function call
10473*/
10474WDI_Status
10475WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010476(
Jeff Johnson295189b2012-06-20 16:38:30 -070010477 WDI_ControlBlockType* pWDICtx,
10478 WDI_EventInfoType* pEventData
10479)
10480{
10481 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10482 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10483 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010484 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010485 wpt_uint16 usDataOffset = 0;
10486 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010487 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010488 wpt_macAddr macBSSID;
10489 wpt_uint8 ucCurrentBSSSesIdx;
10490 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10492
10493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010495 -------------------------------------------------------------------------*/
10496 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10497 ( NULL == pEventData->pCBfnc ))
10498 {
10499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 }
10504
10505 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10506 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10507 /*-------------------------------------------------------------------------
10508 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010509 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010510 -------------------------------------------------------------------------*/
10511 wpalMutexAcquire(&pWDICtx->wptMutex);
10512
10513 /*------------------------------------------------------------------------
10514 Find the BSS for which the request is made and identify WDI session
10515 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010516 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10517 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010518 &macBSSID))
10519 {
10520 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010521 "This station does not exist in the WDI Station Table %d",
10522 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010523 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010524 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 }
10526
Jeff Johnsone7245742012-09-05 17:12:55 -070010527 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10528 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010529 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10531 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10532 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010533
10534 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010535 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010537
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 /*------------------------------------------------------------------------
10539 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010540 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010541 ------------------------------------------------------------------------*/
10542 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10543 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10545 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10546 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010547
Jeff Johnsone7245742012-09-05 17:12:55 -070010548 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010549 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 }
10552
10553
10554
10555 wpalMutexRelease(&pWDICtx->wptMutex);
10556 /*-----------------------------------------------------------------------
10557 Get message buffer
10558 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010559 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10561 &pSendBuffer, &usDataOffset, &usSendSize))||
10562 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10563 {
10564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010565 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10567 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010568 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010569 }
10570
10571 /*-----------------------------------------------------------------------
10572 Copy the Key parameters into the HAL message
10573 -----------------------------------------------------------------------*/
10574
Jeff Johnsone7245742012-09-05 17:12:55 -070010575 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010576 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10577
Jeff Johnsone7245742012-09-05 17:12:55 -070010578 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010579 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10580
Jeff Johnsone7245742012-09-05 17:12:55 -070010581 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010582 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10583
Jeff Johnsone7245742012-09-05 17:12:55 -070010584 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010585 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10586
Jeff Johnsone7245742012-09-05 17:12:55 -070010587 wpalMemoryCopy( pSendBuffer+usDataOffset,
10588 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10589 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010590
10591 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010592 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010593
10594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010595 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010596 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010599 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010600
10601}/*WDI_ProcessRemoveSTABcastKeyReq*/
10602
10603/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010604 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010605==========================================================================*/
10606/**
10607 @brief Process Add TSpec Request function (called when Main FSM
10608 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010609
10610 @param pWDICtx: pointer to the WLAN DAL context
10611 pEventData: pointer to the event information structure
10612
Jeff Johnson295189b2012-06-20 16:38:30 -070010613 @see
10614 @return Result of the function call
10615*/
10616WDI_Status
10617WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010618(
Jeff Johnson295189b2012-06-20 16:38:30 -070010619 WDI_ControlBlockType* pWDICtx,
10620 WDI_EventInfoType* pEventData
10621)
10622{
10623 WDI_AddTSReqParamsType* pwdiAddTSParams;
10624 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010625 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010626 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 wpt_uint16 usDataOffset = 0;
10629 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010630 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010631 wpt_macAddr macBSSID;
10632 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010633
Jeff Johnson295189b2012-06-20 16:38:30 -070010634 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10635
10636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 -------------------------------------------------------------------------*/
10639 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10640 ( NULL == pEventData->pCBfnc ))
10641 {
10642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010643 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010644 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010645 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 }
10647
10648 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10649 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10650 /*-------------------------------------------------------------------------
10651 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010652 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010653 -------------------------------------------------------------------------*/
10654 wpalMutexAcquire(&pWDICtx->wptMutex);
10655
10656 /*------------------------------------------------------------------------
10657 Find the BSS for which the request is made and identify WDI session
10658 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010659 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10660 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010661 &macBSSID))
10662 {
10663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010664 "This station does not exist in the WDI Station Table %d",
10665 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010666 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 }
10669
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10671 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010672 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10674 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10675 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010676
10677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010678 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010679 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010680
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 /*------------------------------------------------------------------------
10682 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010683 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010684 ------------------------------------------------------------------------*/
10685 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10686 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010687 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10688 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10689 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010690
Jeff Johnsone7245742012-09-05 17:12:55 -070010691 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010692 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 }
10695
10696 wpalMutexRelease(&pWDICtx->wptMutex);
10697 /*-----------------------------------------------------------------------
10698 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010699 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010700 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10702 sizeof(halAddTsParams),
10703 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010704 &usSendSize))||
10705 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10706 {
10707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010708 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010709 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10710 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010711 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010712 }
10713
10714 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10715 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10716
10717 //TSPEC IE
10718 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10719 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010720 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010721 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010736 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010737 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010743 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10750
10751 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010752 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010753 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010760 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010763 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010764 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10766
10767 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010768 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010769 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10772
Jeff Johnsone7245742012-09-05 17:12:55 -070010773 wpalMemoryCopy( pSendBuffer+usDataOffset,
10774 &halAddTsParams,
10775 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010776
10777 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010778 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010779
10780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010781 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010783 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010784 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010786}/*WDI_ProcessAddTSpecReq*/
10787
10788
10789/**
10790 @brief Process Del TSpec Request function (called when Main FSM
10791 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010792
10793 @param pWDICtx: pointer to the WLAN DAL context
10794 pEventData: pointer to the event information structure
10795
Jeff Johnson295189b2012-06-20 16:38:30 -070010796 @see
10797 @return Result of the function call
10798*/
10799WDI_Status
10800WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010801(
Jeff Johnson295189b2012-06-20 16:38:30 -070010802 WDI_ControlBlockType* pWDICtx,
10803 WDI_EventInfoType* pEventData
10804)
10805{
10806 WDI_DelTSReqParamsType* pwdiDelTSParams;
10807 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010808 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010809 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 wpt_uint16 usDataOffset = 0;
10812 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10815
10816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 -------------------------------------------------------------------------*/
10819 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10820 ( NULL == pEventData->pCBfnc ))
10821 {
10822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 }
10827
10828 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10829 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10830
10831 /*-------------------------------------------------------------------------
10832 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 -------------------------------------------------------------------------*/
10835 wpalMutexAcquire(&pWDICtx->wptMutex);
10836
10837 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010838 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010839 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10841 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10842 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010843
Jeff Johnsone7245742012-09-05 17:12:55 -070010844 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010845 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10847 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10848 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10849
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010852 }
10853
10854 /*------------------------------------------------------------------------
10855 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010856 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010857 ------------------------------------------------------------------------*/
10858 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10859 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10861 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10862 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010863
Jeff Johnsone7245742012-09-05 17:12:55 -070010864 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010865 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 }
10868
10869
10870 wpalMutexRelease(&pWDICtx->wptMutex);
10871 /*-----------------------------------------------------------------------
10872 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010873 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010874 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10877 &pSendBuffer, &usDataOffset, &usSendSize))||
10878 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10879 {
10880 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010881 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010882 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 }
10886
Jeff Johnsone7245742012-09-05 17:12:55 -070010887 wpalMemoryCopy( pSendBuffer+usDataOffset,
10888 &pwdiDelTSParams->wdiDelTSInfo,
10889 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010890
10891 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010892 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010893
10894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010895 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010896 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10898 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010899}/*WDI_ProcessDelTSpecReq*/
10900
10901/**
10902 @brief Process Update EDCA Params Request function (called when
10903 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010904
10905 @param pWDICtx: pointer to the WLAN DAL context
10906 pEventData: pointer to the event information structure
10907
Jeff Johnson295189b2012-06-20 16:38:30 -070010908 @see
10909 @return Result of the function call
10910*/
10911WDI_Status
10912WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010913(
Jeff Johnson295189b2012-06-20 16:38:30 -070010914 WDI_ControlBlockType* pWDICtx,
10915 WDI_EventInfoType* pEventData
10916)
10917{
10918 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10919 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010920 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010921 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 wpt_uint16 usDataOffset = 0;
10924 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010925 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10927
10928 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010930 -------------------------------------------------------------------------*/
10931 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10932 ( NULL == pEventData->pCBfnc ))
10933 {
10934 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010935 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010936 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010937 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 }
10939
10940 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10941 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10942 /*-------------------------------------------------------------------------
10943 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010944 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010945 -------------------------------------------------------------------------*/
10946 wpalMutexAcquire(&pWDICtx->wptMutex);
10947
10948 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010950 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10952 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10953 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010954
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 {
10957 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010958 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10959 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010960
10961 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 }
10964
10965 /*------------------------------------------------------------------------
10966 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010967 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010968 ------------------------------------------------------------------------*/
10969 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10970 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10972 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10973 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010974
Jeff Johnsone7245742012-09-05 17:12:55 -070010975 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010976 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 }
10979
10980
10981 wpalMutexRelease(&pWDICtx->wptMutex);
10982 /*-----------------------------------------------------------------------
10983 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010985 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10988 &pSendBuffer, &usDataOffset, &usSendSize))||
10989 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10990 {
10991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010992 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010993 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10994 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010995 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010996 }
10997
Jeff Johnsone7245742012-09-05 17:12:55 -070010998 wpalMemoryCopy( pSendBuffer+usDataOffset,
10999 &pwdiUpdateEDCAParams->wdiEDCAInfo,
11000 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011001
11002 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011003 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011004
11005 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011006 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011007 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11009 wdiUpdateEDCARspCb, pEventData->pUserData,
11010 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011011}/*WDI_ProcessUpdateEDCAParamsReq*/
11012
11013/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011016
11017 @param pWDICtx: pointer to the WLAN DAL context
11018 pEventData: pointer to the event information structure
11019
Jeff Johnson295189b2012-06-20 16:38:30 -070011020 @see
11021 @return Result of the function call
11022*/
11023WDI_Status
11024WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011025(
Jeff Johnson295189b2012-06-20 16:38:30 -070011026 WDI_ControlBlockType* pWDICtx,
11027 WDI_EventInfoType* pEventData
11028)
11029{
11030 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
11031 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011032 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011033 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011034 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011035 wpt_uint16 usDataOffset = 0;
11036 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011037 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011038 wpt_macAddr macBSSID;
11039
11040 tAddBASessionReqMsg halAddBASessionReq;
11041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11042
11043 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 -------------------------------------------------------------------------*/
11046 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11047 ( NULL == pEventData->pCBfnc ))
11048 {
11049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011050 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011051 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011052 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 }
11054
Jeff Johnsone7245742012-09-05 17:12:55 -070011055 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011056 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11059 /*-------------------------------------------------------------------------
11060 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011061 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011062 -------------------------------------------------------------------------*/
11063 wpalMutexAcquire(&pWDICtx->wptMutex);
11064
11065 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011066 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011067 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011068 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11069 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011070 &macBSSID))
11071 {
11072 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011073 "This station does not exist in the WDI Station Table %d",
11074 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011075 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011076 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 }
11078
11079
Jeff Johnsone7245742012-09-05 17:12:55 -070011080 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011081
Jeff Johnsone7245742012-09-05 17:12:55 -070011082 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011083 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011084 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11085 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11086 __func__, MAC_ADDR_ARRAY(macBSSID));
11087
Jeff Johnson295189b2012-06-20 16:38:30 -070011088 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011089 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 }
11091
11092 /*------------------------------------------------------------------------
11093 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011094 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011095 ------------------------------------------------------------------------*/
11096 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11097 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011098 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11099 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11100 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011101
Jeff Johnsone7245742012-09-05 17:12:55 -070011102 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011103 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011104 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 }
11106
11107
11108 wpalMutexRelease(&pWDICtx->wptMutex);
11109 /*-----------------------------------------------------------------------
11110 Get message buffer
11111 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011112 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11113 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011114 sizeof(halAddBASessionReq.addBASessionParams),
11115 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011116 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011117 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11118 {
11119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011120 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011121 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 }
11125
11126 halAddBASessionReq.addBASessionParams.staIdx =
11127 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11128 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11129 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11130 WDI_MAC_ADDR_LEN);
11131 halAddBASessionReq.addBASessionParams.baTID =
11132 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11133 halAddBASessionReq.addBASessionParams.baPolicy =
11134 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11135 halAddBASessionReq.addBASessionParams.baBufferSize =
11136 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11137 halAddBASessionReq.addBASessionParams.baTimeout =
11138 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11139 halAddBASessionReq.addBASessionParams.baSSN =
11140 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11141 halAddBASessionReq.addBASessionParams.baDirection =
11142 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11143
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 wpalMemoryCopy( pSendBuffer+usDataOffset,
11145 &halAddBASessionReq.addBASessionParams,
11146 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011147
11148 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011149 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011150
11151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011152 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011153 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011154 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11155 wdiAddBASessionRspCb, pEventData->pUserData,
11156 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011157}/*WDI_ProcessAddBASessionReq*/
11158
11159/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011160 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011161 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011162
11163 @param pWDICtx: pointer to the WLAN DAL context
11164 pEventData: pointer to the event information structure
11165
Jeff Johnson295189b2012-06-20 16:38:30 -070011166 @see
11167 @return Result of the function call
11168*/
11169WDI_Status
11170WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011171(
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 WDI_ControlBlockType* pWDICtx,
11173 WDI_EventInfoType* pEventData
11174)
11175{
11176 WDI_DelBAReqParamsType* pwdiDelBAParams;
11177 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011178 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011179 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011180 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011181 wpt_uint16 usDataOffset = 0;
11182 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011183 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 wpt_macAddr macBSSID;
11185 tDelBAParams halDelBAparam;
11186 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11187
11188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011189 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011190 -------------------------------------------------------------------------*/
11191 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11192 ( NULL == pEventData->pCBfnc ))
11193 {
11194 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011195 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 }
11199
11200 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11201 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11202 /*-------------------------------------------------------------------------
11203 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011204 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011205 -------------------------------------------------------------------------*/
11206 wpalMutexAcquire(&pWDICtx->wptMutex);
11207
11208 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011209 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11212 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 &macBSSID))
11214 {
11215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011216 "This station does not exist in the WDI Station Table %d",
11217 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011218 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011219 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 }
11221
Jeff Johnsone7245742012-09-05 17:12:55 -070011222 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011223
Jeff Johnsone7245742012-09-05 17:12:55 -070011224 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011225 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11227 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11228 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011229
11230 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011231 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011232 }
11233
11234 /*------------------------------------------------------------------------
11235 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011236 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011237 ------------------------------------------------------------------------*/
11238 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11239 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11241 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11242 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011243
Jeff Johnsone7245742012-09-05 17:12:55 -070011244 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011245 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 }
11248
11249 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011250 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011251 sizeof(halDelBAparam),
11252 &pSendBuffer, &usDataOffset, &usSendSize))||
11253 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11254 {
11255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011256 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011257 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11258 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011259 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011260 }
11261
11262 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11263 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11264 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11265
Jeff Johnsone7245742012-09-05 17:12:55 -070011266 wpalMemoryCopy( pSendBuffer+usDataOffset,
11267 &halDelBAparam,
11268 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011269
11270 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011271 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011272
11273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011274 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011275 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011276 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11277 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011278}/*WDI_ProcessDelBAReq*/
11279
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011280#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011281
11282WDI_Status
11283WDI_ProcessTSMStatsReq
11284(
11285 WDI_ControlBlockType* pWDICtx,
11286 WDI_EventInfoType* pEventData
11287)
11288{
11289 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11290 WDI_TsmRspCb wdiTSMRspCb;
11291 wpt_uint8 ucCurrentBSSSesIdx = 0;
11292 WDI_BSSSessionType* pBSSSes = NULL;
11293 wpt_uint8* pSendBuffer = NULL;
11294 wpt_uint16 usDataOffset = 0;
11295 wpt_uint16 usSendSize = 0;
11296 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11297 tTsmStatsParams halTsmStatsReqParams = {0};
11298
11299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11300
11301 /*-------------------------------------------------------------------------
11302 Sanity check
11303 -------------------------------------------------------------------------*/
11304 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11305 ( NULL == pEventData->pCBfnc ))
11306 {
11307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011308 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 WDI_ASSERT(0);
11310 return WDI_STATUS_E_FAILURE;
11311 }
11312
11313 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11314 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11315 /*-------------------------------------------------------------------------
11316 Check to see if we are in the middle of an association, if so queue, if
11317 not it means it is free to process request
11318 -------------------------------------------------------------------------*/
11319 wpalMutexAcquire(&pWDICtx->wptMutex);
11320
11321 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11322 if ( NULL == pBSSSes )
11323 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11325 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11326 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011327
11328 wpalMutexRelease(&pWDICtx->wptMutex);
11329 return WDI_STATUS_E_NOT_ALLOWED;
11330 }
11331
11332 /*------------------------------------------------------------------------
11333 Check if this BSS is being currently processed or queued,
11334 if queued - queue the new request as well
11335 ------------------------------------------------------------------------*/
11336 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11337 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011339 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011341
11342 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11343 wpalMutexRelease(&pWDICtx->wptMutex);
11344 return wdiStatus;
11345 }
11346
11347 wpalMutexRelease(&pWDICtx->wptMutex);
11348 /*-----------------------------------------------------------------------
11349 Get message buffer
11350 ! TO DO : proper conversion into the HAL Message Request Format
11351 -----------------------------------------------------------------------*/
11352 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11353 sizeof(halTsmStatsReqParams),
11354 &pSendBuffer, &usDataOffset, &usSendSize))||
11355 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11356 {
11357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011358 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011359 pEventData, pwdiTSMParams, wdiTSMRspCb);
11360 WDI_ASSERT(0);
11361 return WDI_STATUS_E_FAILURE;
11362 }
11363
11364 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11365 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11366 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11367 WDI_MAC_ADDR_LEN);
11368 wpalMemoryCopy( pSendBuffer+usDataOffset,
11369 &halTsmStatsReqParams,
11370 sizeof(halTsmStatsReqParams));
11371
11372 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11373 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11374
11375 /*-------------------------------------------------------------------------
11376 Send TSM Stats Request to HAL
11377 -------------------------------------------------------------------------*/
11378 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11379 wdiTSMRspCb, pEventData->pUserData,
11380 WDI_TSM_STATS_RESP);
11381}/*WDI_ProcessTSMStatsReq*/
11382
11383#endif
11384
11385
11386/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011387 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011388 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011389
11390 @param pWDICtx: pointer to the WLAN DAL context
11391 pEventData: pointer to the event information structure
11392
Jeff Johnson295189b2012-06-20 16:38:30 -070011393 @see
11394 @return Result of the function call
11395*/
11396WDI_Status
11397WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011398(
Jeff Johnson295189b2012-06-20 16:38:30 -070011399 WDI_ControlBlockType* pWDICtx,
11400 WDI_EventInfoType* pEventData
11401)
11402{
11403 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11404 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011405 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011406 wpt_uint16 usDataOffset = 0;
11407 wpt_uint16 usSendSize = 0;
11408 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11409
11410 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011411 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011412 -------------------------------------------------------------------------*/
11413 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11414 ( NULL == pEventData->pCBfnc ))
11415 {
11416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011417 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011418 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011419 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 }
11421
11422 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11423 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11424 /*-----------------------------------------------------------------------
11425 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011426 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011427 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11430 &pSendBuffer, &usDataOffset, &usSendSize))||
11431 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11432 {
11433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011434 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011435 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011438 }
11439
Jeff Johnsone7245742012-09-05 17:12:55 -070011440 wpalMemoryCopy( pSendBuffer+usDataOffset,
11441 &pwdiFlushAcParams->wdiFlushAcInfo,
11442 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011443
11444 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011445 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011446
11447 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011448 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011449 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11451 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011452}/*WDI_ProcessFlushAcReq*/
11453
11454/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011455 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011456 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011457
11458 @param pWDICtx: pointer to the WLAN DAL context
11459 pEventData: pointer to the event information structure
11460
Jeff Johnson295189b2012-06-20 16:38:30 -070011461 @see
11462 @return Result of the function call
11463*/
11464WDI_Status
11465WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011466(
Jeff Johnson295189b2012-06-20 16:38:30 -070011467 WDI_ControlBlockType* pWDICtx,
11468 WDI_EventInfoType* pEventData
11469)
11470{
11471 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11472 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011473 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011474 wpt_uint16 usDataOffset = 0;
11475 wpt_uint16 usSendSize = 0;
11476
11477 tBtAmpEventMsg haltBtAmpEventMsg;
11478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11479
11480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 -------------------------------------------------------------------------*/
11483 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11484 ( NULL == pEventData->pCBfnc ))
11485 {
11486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 }
11491
11492 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11493 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11494 /*-----------------------------------------------------------------------
11495 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011496 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011497 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011498 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11500 &pSendBuffer, &usDataOffset, &usSendSize))||
11501 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11502 {
11503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011504 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011505 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11506 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011507 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011508 }
11509
Jeff Johnsone7245742012-09-05 17:12:55 -070011510 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011511 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011512 wpalMemoryCopy( pSendBuffer+usDataOffset,
11513 &haltBtAmpEventMsg.btAmpEventParams,
11514 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011515
11516 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011518
11519 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011520 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011521 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11523 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011524}/*WDI_ProcessBtAmpEventReq*/
11525
11526/**
11527 @brief Process Add STA self Request function (called when Main FSM
11528 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011529
11530 @param pWDICtx: pointer to the WLAN DAL context
11531 pEventData: pointer to the event information structure
11532
Jeff Johnson295189b2012-06-20 16:38:30 -070011533 @see
11534 @return Result of the function call
11535*/
11536WDI_Status
11537WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011538(
Jeff Johnson295189b2012-06-20 16:38:30 -070011539 WDI_ControlBlockType* pWDICtx,
11540 WDI_EventInfoType* pEventData
11541)
11542{
11543 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11544 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011545 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011546 wpt_uint16 usDataOffset = 0;
11547 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011548 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011549 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11550
11551 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011552 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011553 -------------------------------------------------------------------------*/
11554 if (( NULL == pEventData ) ||
11555 ( NULL == pEventData->pEventData) ||
11556 ( NULL == pEventData->pCBfnc))
11557 {
11558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011559 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011560 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011561 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 }
11563
Jeff Johnsone7245742012-09-05 17:12:55 -070011564 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011565 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11568 /*-----------------------------------------------------------------------
11569 Get message buffer
11570 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011571 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11572 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011573 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011574 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011575 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 {
11577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011578 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011579 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11580 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011581 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011582 }
11583
11584 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11587
Jeff Johnsone7245742012-09-05 17:12:55 -070011588 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011589 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11590 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11591 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11592 {
11593 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11594 }
11595 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11596 VOS_P2P_CLIENT_MODE) ||
11597 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11598 VOS_P2P_DEVICE))
11599 {
11600 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11601 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011602 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011603 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011604
11605 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011607
11608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11612 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11613 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011614}/*WDI_ProcessAddSTASelfReq*/
11615
11616
11617
11618/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011619 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011620 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011621
11622 @param pWDICtx: pointer to the WLAN DAL context
11623 pEventData: pointer to the event information structure
11624
Jeff Johnson295189b2012-06-20 16:38:30 -070011625 @see
11626 @return Result of the function call
11627*/
11628WDI_Status
11629WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011630(
Jeff Johnson295189b2012-06-20 16:38:30 -070011631 WDI_ControlBlockType* pWDICtx,
11632 WDI_EventInfoType* pEventData
11633)
11634{
11635 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11636 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011637 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 wpt_uint16 usDataOffset = 0;
11639 wpt_uint16 usSendSize = 0;
11640 tDelStaSelfParams halSetDelSelfSTAParams;
11641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11642
11643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011645 -------------------------------------------------------------------------*/
11646 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11647 ( NULL == pEventData->pCBfnc ))
11648 {
11649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011653 }
11654
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11657 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11658
11659 /*-----------------------------------------------------------------------
11660 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011661 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011662 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011664 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11665 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011666 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011667 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11668 {
11669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011670 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11672 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011673 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011674 }
11675
Jeff Johnsone7245742012-09-05 17:12:55 -070011676 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011677 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11678
Jeff Johnsone7245742012-09-05 17:12:55 -070011679 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11680 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011681
11682 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011683 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011684
11685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011686 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011687 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011688 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11689 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011690 WDI_DEL_STA_SELF_RESP);
11691
11692}
11693
Jeff Johnsone7245742012-09-05 17:12:55 -070011694#ifdef FEATURE_OEM_DATA_SUPPORT
11695/**
11696 @brief Process Start Oem Data Request function (called when Main
11697 FSM allows it)
11698
11699 @param pWDICtx: pointer to the WLAN DAL context
11700 pEventData: pointer to the event information structure
11701
11702 @see
11703 @return Result of the function call
11704*/
11705WDI_Status
11706WDI_ProcessStartOemDataReq
11707(
11708 WDI_ControlBlockType* pWDICtx,
11709 WDI_EventInfoType* pEventData
11710)
11711{
11712 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11713 WDI_oemDataRspCb wdiOemDataRspCb;
11714 wpt_uint8* pSendBuffer = NULL;
11715 wpt_uint16 usDataOffset = 0;
11716 wpt_uint16 usSendSize = 0;
11717 wpt_uint16 reqLen;
11718 tStartOemDataReqParams* halStartOemDataReqParams;
11719
11720 /*-------------------------------------------------------------------------
11721 Sanity check
11722 -------------------------------------------------------------------------*/
11723 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11724 ( NULL == pEventData->pCBfnc ))
11725 {
11726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011727 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011728 WDI_ASSERT(0);
11729 return WDI_STATUS_E_FAILURE;
11730 }
11731
11732 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11733 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11734
11735 /*-----------------------------------------------------------------------
11736 Get message buffer
11737 -----------------------------------------------------------------------*/
11738
11739 reqLen = sizeof(tStartOemDataReqParams);
11740
11741 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11742 WDI_START_OEM_DATA_REQ, reqLen,
11743 &pSendBuffer, &usDataOffset, &usSendSize))||
11744 (usSendSize < (usDataOffset + reqLen)))
11745 {
11746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011747 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011748 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11749 WDI_ASSERT(0);
11750 return WDI_STATUS_E_FAILURE;
11751 }
11752
11753 //copying WDI OEM DATA REQ PARAMS to shared memory
11754 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11755
11756 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11757 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11758
11759 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11760 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11761
11762 /*-------------------------------------------------------------------------
11763 Send Start Request to HAL
11764 -------------------------------------------------------------------------*/
11765 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11766 wdiOemDataRspCb, pEventData->pUserData,
11767 WDI_START_OEM_DATA_RESP);
11768}/*WDI_ProcessStartOemDataReq*/
11769#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011770
11771/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011772 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011773 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011774
11775 @param pWDICtx: pointer to the WLAN DAL context
11776 pEventData: pointer to the event information structure
11777
Jeff Johnson295189b2012-06-20 16:38:30 -070011778 @see
11779 @return Result of the function call
11780*/
11781WDI_Status
11782WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011783(
Jeff Johnson295189b2012-06-20 16:38:30 -070011784 WDI_ControlBlockType* pWDICtx,
11785 WDI_EventInfoType* pEventData
11786)
11787{
11788 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11789 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011790 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011791 wpt_uint16 usDataOffset = 0;
11792 wpt_uint16 usSendSize = 0;
11793 tHalWlanHostResumeReqParam halResumeReqParams;
11794
11795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11796
11797 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011798 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011799 -------------------------------------------------------------------------*/
11800 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11801 ( NULL == pEventData->pCBfnc ))
11802 {
11803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011804 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011805 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011806 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 }
11808
11809 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11810 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11811
11812 /*-----------------------------------------------------------------------
11813 Get message buffer
11814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011816 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11817 &pSendBuffer, &usDataOffset, &usSendSize))||
11818 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11819 {
11820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011821 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011822 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011825 }
11826
Jeff Johnsone7245742012-09-05 17:12:55 -070011827 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011828 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011829
11830 wpalMemoryCopy( pSendBuffer+usDataOffset,
11831 &halResumeReqParams,
11832 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011833
11834 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011835 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011836
11837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011838 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011839 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11841 wdiHostResumeRspCb, pEventData->pUserData,
11842 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011843}/*WDI_ProcessHostResumeReq*/
11844
11845/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011846 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011847 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011848
11849 @param pWDICtx: pointer to the WLAN DAL context
11850 pEventData: pointer to the event information structure
11851
Jeff Johnson295189b2012-06-20 16:38:30 -070011852 @see
11853 @return Result of the function call
11854*/
11855WDI_Status
11856WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011857(
Jeff Johnson295189b2012-06-20 16:38:30 -070011858 WDI_ControlBlockType* pWDICtx,
11859 WDI_EventInfoType* pEventData
11860)
11861{
11862 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11863 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011865 wpt_uint16 usDataOffset = 0;
11866 wpt_uint16 usSendSize = 0;
11867 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11869
11870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011872 -------------------------------------------------------------------------*/
11873 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11874 ( NULL == pEventData->pCBfnc ))
11875 {
11876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011877 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011878 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011879 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 }
11881
11882 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11883 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011884
Jeff Johnson295189b2012-06-20 16:38:30 -070011885 /*-----------------------------------------------------------------------
11886 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011887 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011890 sizeof(halTxPerTrackingReqParam),
11891 &pSendBuffer, &usDataOffset, &usSendSize))||
11892 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11893 {
11894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011895 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011899 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011900
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11902 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11903 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11904 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011905
11906 wpalMemoryCopy( pSendBuffer+usDataOffset,
11907 &halTxPerTrackingReqParam,
11908 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011909
11910 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011911 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011912
11913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011914 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011915 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11917 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011918}/*WDI_ProcessSetTxPerTrackingReq*/
11919
11920/*=========================================================================
11921 Indications
11922=========================================================================*/
11923
11924/**
11925 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011926
11927 @param pWDICtx: pointer to the WLAN DAL context
11928 pEventData: pointer to the event information structure
11929
Jeff Johnson295189b2012-06-20 16:38:30 -070011930 @see
11931 @return Result of the function call
11932*/
11933WDI_Status
11934WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011935(
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 WDI_ControlBlockType* pWDICtx,
11937 WDI_EventInfoType* pEventData
11938)
11939{
11940 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011941 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011942 wpt_uint16 usDataOffset = 0;
11943 wpt_uint16 usSendSize = 0;
11944 WDI_Status wdiStatus;
11945 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11946 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11947
11948 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011949 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011950 -------------------------------------------------------------------------*/
11951 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11952 {
11953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011954 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 }
11958
11959 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11960
11961 /*-----------------------------------------------------------------------
11962 Get message buffer
11963 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011964 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11965 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011966 sizeof(halWlanSuspendIndparams),
11967 &pSendBuffer, &usDataOffset, &usSendSize))||
11968 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11969 {
11970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11971 "Unable to get send buffer in Suspend Ind ");
11972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011974 }
11975
11976 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11977 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11978
Jeff Johnsone7245742012-09-05 17:12:55 -070011979 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011980 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011981
Jeff Johnsone7245742012-09-05 17:12:55 -070011982 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11983 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011984
11985 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011986 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011987 -------------------------------------------------------------------------*/
11988 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011989 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011990
Jeff Johnsone7245742012-09-05 17:12:55 -070011991 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011992 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11993}/*WDI_ProcessHostSuspendInd*/
11994
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011995
11996
11997/**
11998 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
11999
12000 @param pWDICtx: pointer to the WLAN DAL context
12001 pEventData: pointer to the event information structure
12002
12003 @see
12004 @return Result of the function call
12005*/
12006WDI_Status
12007WDI_ProcessTrafficStatsInd
12008(
12009 WDI_ControlBlockType* pWDICtx,
12010 WDI_EventInfoType* pEventData
12011)
12012{
12013 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
12014 wpt_uint8* pSendBuffer = NULL;
12015 wpt_uint16 usDataOffset = 0;
12016 wpt_uint16 usSendSize = 0;
12017 WDI_Status wdiStatus;
12018 tStatsClassBIndParams* pStatsClassBIndParams;
12019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12020
12021 /*-------------------------------------------------------------------------
12022 Sanity check
12023 -------------------------------------------------------------------------*/
12024 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12025 {
12026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12027 "%s: Invalid parameters in Traffic Stats ind",__func__);
12028 WDI_ASSERT(0);
12029 return WDI_STATUS_E_FAILURE;
12030 }
12031
12032 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
12033
12034 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
12035 {
12036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12037 "%s: Invalid parameters in Traffic Stats ind",__func__);
12038 WDI_ASSERT(0);
12039 return WDI_STATUS_E_FAILURE;
12040 }
12041
12042 /*-----------------------------------------------------------------------
12043 Get message buffer
12044 -----------------------------------------------------------------------*/
12045 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12046 WDI_TRAFFIC_STATS_IND,
12047 sizeof(tStatsClassBIndParams),
12048 &pSendBuffer, &usDataOffset, &usSendSize))||
12049 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
12050 {
12051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12052 "Unable to get send buffer in Traffic Stats Ind ");
12053 WDI_ASSERT(0);
12054 return WDI_STATUS_E_FAILURE;
12055 }
12056
12057 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12058
12059 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12060
12061 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12062 pTrafficStatsIndParams->pTrafficStats,
12063 pTrafficStatsIndParams->length);
12064
12065 /*-------------------------------------------------------------------------
12066 Send Suspend Request to HAL
12067 -------------------------------------------------------------------------*/
12068 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12069 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12070
12071 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12072 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12073}/*WDI_ProcessTrafficStatsInd*/
12074
Chet Lanctot186b5732013-03-18 10:26:30 -070012075#ifdef WLAN_FEATURE_11W
12076/**
12077 @brief Process Exclude Unencrypted Indications function (called
12078 when Main FSM allows it)
12079
12080 @param pWDICtx: pointer to the WLAN DAL context
12081 pEventData: pointer to the event information structure
12082
12083 @see
12084 @return Result of the function call
12085*/
12086WDI_Status
12087WDI_ProcessExcludeUnencryptInd
12088(
12089 WDI_ControlBlockType* pWDICtx,
12090 WDI_EventInfoType* pEventData
12091)
12092{
12093 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12094 wpt_uint8* pSendBuffer = NULL;
12095 wpt_uint16 usDataOffset = 0;
12096 wpt_uint16 usSendSize = 0;
12097 WDI_Status wdiStatus;
12098 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12099 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12100
12101 /*-------------------------------------------------------------------------
12102 Sanity check
12103 -------------------------------------------------------------------------*/
12104 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12105 {
12106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12107 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12108 WDI_ASSERT(0);
12109 return WDI_STATUS_E_FAILURE;
12110 }
12111
12112 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12113
12114 /*-----------------------------------------------------------------------
12115 Get message buffer
12116 -----------------------------------------------------------------------*/
12117 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12118 WDI_EXCLUDE_UNENCRYPTED_IND,
12119 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12120 &pSendBuffer, &usDataOffset, &usSendSize))||
12121 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12122 {
12123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12124 "Unable to get send buffer in Exclude Unencrypted Ind ");
12125 WDI_ASSERT(0);
12126 return WDI_STATUS_E_FAILURE;
12127 }
12128
12129 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12130
12131 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12132
12133 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12134 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12135
12136 /*-------------------------------------------------------------------------
12137 Send Suspend Request to HAL
12138 -------------------------------------------------------------------------*/
12139 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12140 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12141
12142 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12143 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12144}/*WDI_ProcessExcludeUnencryptInd*/
12145#endif
12146
Yue Mab9c86f42013-08-14 15:59:08 -070012147/**
12148 @brief Process Add Periodic Tx Pattern Indication function (called when
12149 Main FSM allows it)
12150
12151 @param pWDICtx: pointer to the WLAN DAL context
12152 pEventData: pointer to the event information structure
12153
12154 @see
12155 @return Result of the function call
12156*/
12157WDI_Status
12158WDI_ProcessAddPeriodicTxPtrnInd
12159(
12160 WDI_ControlBlockType* pWDICtx,
12161 WDI_EventInfoType* pEventData
12162)
12163{
12164 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12165 wpt_uint8* pSendBuffer = NULL;
12166 wpt_uint16 usDataOffset = 0;
12167 wpt_uint16 usSendSize = 0;
12168 WDI_Status wdiStatus;
12169 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12170 wpt_uint8 selfStaIdx = 0;
12171
12172 /*-------------------------------------------------------------------------
12173 Sanity check
12174 -------------------------------------------------------------------------*/
12175 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12176 {
12177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12178 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12179 WDI_ASSERT(0);
12180 return WDI_STATUS_E_FAILURE;
12181 }
12182
12183 pAddPeriodicTxPtrnParams =
12184 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12185
12186 /*------------------------------------------------------------------------
12187 Get message buffer
12188 ------------------------------------------------------------------------*/
12189 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12190 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12191 &pSendBuffer, &usDataOffset, &usSendSize))||
12192 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12193 {
12194 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12195 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12196 __func__);
12197 WDI_ASSERT(0);
12198 return WDI_STATUS_E_FAILURE;
12199 }
12200
12201 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12202
12203 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12204 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12205 &selfStaIdx))
12206 {
12207 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12208 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012209 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012210
12211 return WDI_STATUS_E_FAILURE;
12212 }
12213
12214 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12215 halAddPeriodicTxPtrn->ucPtrnId =
12216 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12217 halAddPeriodicTxPtrn->usPtrnSize =
12218 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12219 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12220 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12221
12222 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12223 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12224 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12225
12226 /*-------------------------------------------------------------------------
12227 Send Indication to HAL
12228 -------------------------------------------------------------------------*/
12229 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12230 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12231
12232 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12233
12234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12235 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12236
12237 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12238} /* WDI_ProcessAddPeriodicTxPtrnInd */
12239
12240/**
12241 @brief Process Delete Periodic Tx Pattern Indication function (called when
12242 Main FSM allows it)
12243
12244 @param pWDICtx: pointer to the WLAN DAL context
12245 pEventData: pointer to the event information structure
12246
12247 @see
12248 @return Result of the function call
12249*/
12250WDI_Status
12251WDI_ProcessDelPeriodicTxPtrnInd
12252(
12253 WDI_ControlBlockType* pWDICtx,
12254 WDI_EventInfoType* pEventData
12255)
12256{
12257 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12258 wpt_uint8* pSendBuffer = NULL;
12259 wpt_uint16 usDataOffset = 0;
12260 wpt_uint16 usSendSize = 0;
12261 WDI_Status wdiStatus;
12262 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12263 wpt_uint8 selfStaIdx = 0;
12264
12265 /*-------------------------------------------------------------------------
12266 Sanity check
12267 -------------------------------------------------------------------------*/
12268 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12269 {
12270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12271 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12272 WDI_ASSERT(0);
12273 return WDI_STATUS_E_FAILURE;
12274 }
12275
12276 pDelPeriodicTxPtrnParams =
12277 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12278
12279 /*------------------------------------------------------------------------
12280 Get message buffer
12281 ------------------------------------------------------------------------*/
12282 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12283 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12284 &pSendBuffer, &usDataOffset, &usSendSize))||
12285 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12286 {
12287 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12288 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12289 __func__);
12290 WDI_ASSERT(0);
12291 return WDI_STATUS_E_FAILURE;
12292 }
12293
12294 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12295
12296 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12297 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12298 &selfStaIdx))
12299 {
12300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12301 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012302 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012303
12304 return WDI_STATUS_E_FAILURE;
12305 }
12306
12307 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12308 halDelPeriodicTxPtrn->uPatternIdBitmap =
12309 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12310
12311 /*-------------------------------------------------------------------------
12312 Send Indication to HAL
12313 -------------------------------------------------------------------------*/
12314 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12315 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12316
12317 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12318
12319 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12320 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12321
12322 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12323} /* WDI_ProcessDelPeriodicTxPtrnInd */
12324
Jeff Johnson295189b2012-06-20 16:38:30 -070012325/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012326 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012327==========================================================================*/
12328/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012329 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012330 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012331
12332 @param pWDICtx: pointer to the WLAN DAL context
12333 pEventData: pointer to the event information structure
12334
Jeff Johnson295189b2012-06-20 16:38:30 -070012335 @see
12336 @return Result of the function call
12337*/
12338WDI_Status
12339WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012340(
Jeff Johnson295189b2012-06-20 16:38:30 -070012341 WDI_ControlBlockType* pWDICtx,
12342 WDI_EventInfoType* pEventData
12343)
12344{
12345 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12346 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012347 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012348 wpt_uint16 usDataOffset = 0;
12349 wpt_uint16 usSendSize = 0;
12350 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12352
12353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012355 -------------------------------------------------------------------------*/
12356 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12357 ( NULL == pEventData->pCBfnc ))
12358 {
12359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 }
12364
12365 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12366 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12367 /*-----------------------------------------------------------------------
12368 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012369 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012370 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 sizeof(halSwitchChannelReq.switchChannelParams),
12373 &pSendBuffer, &usDataOffset, &usSendSize))||
12374 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12375 {
12376 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012377 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012378 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12379 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012380 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012381 }
12382
Jeff Johnsone7245742012-09-05 17:12:55 -070012383 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012384 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012385#ifndef WLAN_FEATURE_VOWIFI
12386 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012387 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12388#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012389 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012390 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12391
12392#ifdef WLAN_FEATURE_VOWIFI
12393 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012394 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012395 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12396 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12397 WDI_MAC_ADDR_LEN);
12398 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12399 pwdiSwitchChParams->wdiChInfo.macBSSId,
12400 WDI_MAC_ADDR_LEN);
12401#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012402 wpalMemoryCopy( pSendBuffer+usDataOffset,
12403 &halSwitchChannelReq.switchChannelParams,
12404 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012405
12406 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012407 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012408
12409 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012410 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12413 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012414}/*WDI_ProcessChannelSwitchReq*/
12415
12416/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012417 @brief Process Channel Switch Request function (called when
12418 Main FSM allows it)
12419
12420 @param pWDICtx: pointer to the WLAN DAL context
12421 pEventData: pointer to the event information structure
12422
12423 @see
12424 @return Result of the function call
12425*/
12426WDI_Status WDI_ProcessChannelSwitchReq_V1
12427(
12428 WDI_ControlBlockType* pWDICtx,
12429 WDI_EventInfoType* pEventData
12430)
12431{
12432 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12433 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12434 wpt_uint8* pSendBuffer = NULL;
12435 wpt_uint16 usDataOffset = 0;
12436 wpt_uint16 usSendSize = 0;
12437 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12439
12440 /*-------------------------------------------------------------------------
12441 Sanity check
12442 -------------------------------------------------------------------------*/
12443 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12444 ( NULL == pEventData->pCBfnc ))
12445 {
12446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12447 "%s: Invalid parameters", __func__);
12448 WDI_ASSERT(0);
12449 return WDI_STATUS_E_FAILURE;
12450 }
12451
12452 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12453 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12454 /*-----------------------------------------------------------------------
12455 Get message buffer
12456 ! TO DO : proper conversion into the HAL Message Request Format
12457 -----------------------------------------------------------------------*/
12458 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12459 WDI_CH_SWITCH_REQ_V1,
12460 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12461 &pSendBuffer, &usDataOffset, &usSendSize))||
12462 ( usSendSize < (usDataOffset +
12463 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12464 {
12465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12466 "Unable to get send buffer in channel switch req %p %p %p",
12467 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12468 WDI_ASSERT(0);
12469 return WDI_STATUS_E_FAILURE;
12470 }
12471
12472 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12473 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12474
12475 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12476 pwdiSwitchChParams->wdiChInfo.ucChannel;
12477#ifndef WLAN_FEATURE_VOWIFI
12478 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12479 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12480#endif
12481 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12482 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12483
12484#ifdef WLAN_FEATURE_VOWIFI
12485 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12486 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12487 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12488 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12489 WDI_MAC_ADDR_LEN);
12490 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12491 pwdiSwitchChParams->wdiChInfo.macBSSId,
12492 WDI_MAC_ADDR_LEN);
12493#endif
12494 wpalMemoryCopy( pSendBuffer+usDataOffset,
12495 &halSwitchChannelReq.switchChannelParams_V1,
12496 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12497
12498 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12499 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12500
12501 /*-------------------------------------------------------------------------
12502 Send Switch Channel Request to HAL
12503 -------------------------------------------------------------------------*/
12504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12505 wdiSwitchChRspCb, pEventData->pUserData,
12506 WDI_CH_SWITCH_RESP_V1);
12507}/*WDI_ProcessChannelSwitchReq_V1*/
12508
12509/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012510 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012511 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012512
12513 @param pWDICtx: pointer to the WLAN DAL context
12514 pEventData: pointer to the event information structure
12515
Jeff Johnson295189b2012-06-20 16:38:30 -070012516 @see
12517 @return Result of the function call
12518*/
12519WDI_Status
12520WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012521(
Jeff Johnson295189b2012-06-20 16:38:30 -070012522 WDI_ControlBlockType* pWDICtx,
12523 WDI_EventInfoType* pEventData
12524)
12525{
12526 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12527 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012528 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012529 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 wpt_uint16 usDataOffset = 0;
12532 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012533 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012534
Jeff Johnsone7245742012-09-05 17:12:55 -070012535 tConfigStaReqMsg halConfigStaReqMsg;
12536 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12538
12539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012541 -------------------------------------------------------------------------*/
12542 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12543 ( NULL == pEventData->pCBfnc ))
12544 {
12545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 }
12550
Abhishek Singh6927fa02014-06-27 17:19:55 +053012551 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012552 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12553 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12554 /*-------------------------------------------------------------------------
12555 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012556 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012557 -------------------------------------------------------------------------*/
12558 wpalMutexAcquire(&pWDICtx->wptMutex);
12559
12560 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012561 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012562 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12564 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12565 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012566
Jeff Johnsone7245742012-09-05 17:12:55 -070012567 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012568 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12570 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12571 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012572
12573 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012574 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012575 }
12576
12577 /*------------------------------------------------------------------------
12578 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012579 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012580 ------------------------------------------------------------------------*/
12581 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12582 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12584 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12585 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012586
Jeff Johnsone7245742012-09-05 17:12:55 -070012587 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012588 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 }
12591
12592 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012593
12594 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12595#ifdef WLAN_FEATURE_11AC
12596 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012597 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012598 else
12599#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012600 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012601
Jeff Johnson295189b2012-06-20 16:38:30 -070012602 /*-----------------------------------------------------------------------
12603 Get message buffer
12604 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012605 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12606 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012607 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012608 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012609 {
12610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012611 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012612 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012614 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012615 }
12616
12617 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012618 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012619 &pwdiConfigSTAParams->wdiReqInfo);
12620
12621 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12622 {
12623 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012624 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012625 WDI_STATableFindStaidByAddr(pWDICtx,
12626 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012627 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012628 {
12629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012630 MAC_ADDRESS_STR
12631 ": This station does not exist in the WDI Station Table",
12632 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012633 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012634 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012635 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 }
12637 }
12638 else
12639 {
12640 /* Need to fill in the STA Index to invalid, since at this point we have not
12641 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012642 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012643 }
12644
12645 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012646 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012647
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 wpalMemoryCopy( pSendBuffer+usDataOffset,
12649 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012650 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012651
12652 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012653 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012654
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12656 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 sizeof(pWDICtx->wdiCachedConfigStaReq));
12658
12659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012660 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012661 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12663 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012664}/*WDI_ProcessConfigStaReq*/
12665
12666
12667/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012670
12671 @param pWDICtx: pointer to the WLAN DAL context
12672 pEventData: pointer to the event information structure
12673
Jeff Johnson295189b2012-06-20 16:38:30 -070012674 @see
12675 @return Result of the function call
12676*/
12677WDI_Status
12678WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012679(
Jeff Johnson295189b2012-06-20 16:38:30 -070012680 WDI_ControlBlockType* pWDICtx,
12681 WDI_EventInfoType* pEventData
12682)
12683{
12684 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12685 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012686 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012687 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012688 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012689 wpt_uint16 usDataOffset = 0;
12690 wpt_uint16 usSendSize = 0;
12691 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012692 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012693 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12694
12695 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012696 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012697 -------------------------------------------------------------------------*/
12698 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12699 ( NULL == pEventData->pCBfnc ))
12700 {
12701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012703 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012704 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 }
12706
12707 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12708 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12709 /*-------------------------------------------------------------------------
12710 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012711 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012712 -------------------------------------------------------------------------*/
12713 wpalMutexAcquire(&pWDICtx->wptMutex);
12714
12715 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12719 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12720 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012721
Jeff Johnsone7245742012-09-05 17:12:55 -070012722 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012723 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012725 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12726 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012727 }
12728 else
12729 {
12730 /*------------------------------------------------------------------------
12731 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012732 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012733 ------------------------------------------------------------------------*/
12734 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12735 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12737 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12738 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12739
12740 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012741 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012743 }
12744 }
12745 /* If the link is set to enter IDLE - the Session allocated for this BSS
12746 will be deleted on the Set Link State response coming from HAL
12747 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012748 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012749 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12750
12751 wpalMutexRelease(&pWDICtx->wptMutex);
12752 /*-----------------------------------------------------------------------
12753 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012754 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012755 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012756
12757 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 sizeof(halLinkStateReqMsg),
12759 &pSendBuffer, &usDataOffset, &usSendSize))||
12760 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12761 {
12762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012763 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012764 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12765 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012766 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012767 }
12768
12769 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12770 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12771
12772 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12773 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12774
Jeff Johnsone7245742012-09-05 17:12:55 -070012775 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012776 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12777
Jeff Johnsone7245742012-09-05 17:12:55 -070012778 wpalMemoryCopy( pSendBuffer+usDataOffset,
12779 &halLinkStateReqMsg,
12780 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012781
12782 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012783 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012784
12785 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012786 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012787 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12789 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012790}/*WDI_ProcessSetLinkStateReq*/
12791
12792
12793/**
12794 @brief Process Get Stats Request function (called when Main FSM
12795 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012796
12797 @param pWDICtx: pointer to the WLAN DAL context
12798 pEventData: pointer to the event information structure
12799
Jeff Johnson295189b2012-06-20 16:38:30 -070012800 @see
12801 @return Result of the function call
12802*/
12803WDI_Status
12804WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012805(
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 WDI_ControlBlockType* pWDICtx,
12807 WDI_EventInfoType* pEventData
12808)
12809{
12810 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12811 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012812 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012813 wpt_uint16 usDataOffset = 0;
12814 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012815 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 WDI_BSSSessionType* pBSSSes = NULL;
12817 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012818 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012819 tHalStatsReqMsg halStatsReqMsg;
12820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12821
12822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012824 -------------------------------------------------------------------------*/
12825 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12826 ( NULL == pEventData->pCBfnc ) )
12827 {
12828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 }
12833
12834 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12835 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12836
12837 /*-------------------------------------------------------------------------
12838 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012839 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012840 -------------------------------------------------------------------------*/
12841 wpalMutexAcquire(&pWDICtx->wptMutex);
12842
12843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012844 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012845 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012846 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12847 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012848 &macBSSID))
12849 {
12850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012851 "This station does not exist in the WDI Station Table %d",
12852 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012854 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 }
12856
Jeff Johnsone7245742012-09-05 17:12:55 -070012857 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12858 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012859 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012860 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12861 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12862 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012863
12864 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012865 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012866 }
12867
12868 /*------------------------------------------------------------------------
12869 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012870 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012871 ------------------------------------------------------------------------*/
12872 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12873 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12875 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12876 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012877
Jeff Johnsone7245742012-09-05 17:12:55 -070012878 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012879 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 }
12882
12883
12884 wpalMutexRelease(&pWDICtx->wptMutex);
12885
12886 /*-----------------------------------------------------------------------
12887 Get message buffer
12888 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012889 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012890 sizeof(halStatsReqMsg.statsReqParams),
12891 &pSendBuffer, &usDataOffset, &usSendSize))||
12892 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12893 {
12894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012895 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012896 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12897 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012898 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012899 }
12900
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 wpalMemoryCopy( pSendBuffer+usDataOffset,
12906 &halStatsReqMsg.statsReqParams,
12907 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012908
12909 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012910 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012911
12912 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012913 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012914 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12916 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012917}/*WDI_ProcessGetStatsReq*/
12918
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012919#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012920/**
12921 @brief Process Get Roam Rssi Request function (called when Main FSM
12922 allows it)
12923
12924 @param pWDICtx: pointer to the WLAN DAL context
12925 pEventData: pointer to the event information structure
12926
12927 @see
12928 @return Result of the function call
12929*/
12930WDI_Status
12931WDI_ProcessGetRoamRssiReq
12932(
12933 WDI_ControlBlockType* pWDICtx,
12934 WDI_EventInfoType* pEventData
12935)
12936{
12937 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12938 WDI_GetStatsRspCb wdiGetStatsRspCb;
12939 wpt_uint8* pSendBuffer = NULL;
12940 wpt_uint16 usDataOffset = 0;
12941 wpt_uint16 usSendSize = 0;
12942 wpt_uint8 ucCurrentBSSSesIdx = 0;
12943 WDI_BSSSessionType* pBSSSes = NULL;
12944 wpt_macAddr macBSSID;
12945 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12946 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12948 /*-------------------------------------------------------------------------
12949 Sanity check
12950 -------------------------------------------------------------------------*/
12951 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12952 ( NULL == pEventData->pCBfnc ) )
12953 {
12954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12955 "%s: Invalid parameters", __func__);
12956 WDI_ASSERT(0);
12957 return WDI_STATUS_E_FAILURE;
12958 }
12959
12960 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12961 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12962
12963 /*-------------------------------------------------------------------------
12964 Check to see if we are in the middle of an association, if so queue, if
12965 not it means it is free to process request
12966 -------------------------------------------------------------------------*/
12967 wpalMutexAcquire(&pWDICtx->wptMutex);
12968
12969 /*------------------------------------------------------------------------
12970 Find the BSS for which the request is made
12971 ------------------------------------------------------------------------*/
12972 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12973 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12974 &macBSSID))
12975 {
12976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012977 "This station does not exist in the WDI Station Table %d",
12978 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012979 wpalMutexRelease(&pWDICtx->wptMutex);
12980 return WDI_STATUS_E_FAILURE;
12981 }
12982
12983 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12984 if ( NULL == pBSSSes )
12985 {
12986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12987 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12988 __func__, MAC_ADDR_ARRAY(macBSSID));
12989
12990 wpalMutexRelease(&pWDICtx->wptMutex);
12991 return WDI_STATUS_E_NOT_ALLOWED;
12992 }
12993
12994 /*------------------------------------------------------------------------
12995 Check if this BSS is being currently processed or queued,
12996 if queued - queue the new request as well
12997 ------------------------------------------------------------------------*/
12998 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12999 {
13000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13001 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13002 __func__, MAC_ADDR_ARRAY(macBSSID));
13003
13004 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
13005 wpalMutexRelease(&pWDICtx->wptMutex);
13006 return wdiStatus;
13007 }
13008
13009 wpalMutexRelease(&pWDICtx->wptMutex);
13010
13011 /*-----------------------------------------------------------------------
13012 Get message buffer
13013 -----------------------------------------------------------------------*/
13014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13015 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13016 &pSendBuffer, &usDataOffset, &usSendSize))||
13017 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13018 {
13019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013020 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013021 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13022 WDI_ASSERT(0);
13023 return WDI_STATUS_E_FAILURE;
13024 }
13025
13026 halRssiRoamReqMsg.roamRssiReqParams.staId =
13027 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13028 wpalMemoryCopy( pSendBuffer+usDataOffset,
13029 &halRssiRoamReqMsg.roamRssiReqParams,
13030 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13031
13032 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13033 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13034
13035 /*-------------------------------------------------------------------------
13036 Send Get STA Request to HAL
13037 -------------------------------------------------------------------------*/
13038 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13039 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13040}/*WDI_ProcessGetRoamRssiReq*/
13041#endif
13042
Jeff Johnson295189b2012-06-20 16:38:30 -070013043/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013044 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013045 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013046
13047 @param pWDICtx: pointer to the WLAN DAL context
13048 pEventData: pointer to the event information structure
13049
Jeff Johnson295189b2012-06-20 16:38:30 -070013050 @see
13051 @return Result of the function call
13052*/
13053WDI_Status
13054WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013055(
Jeff Johnson295189b2012-06-20 16:38:30 -070013056 WDI_ControlBlockType* pWDICtx,
13057 WDI_EventInfoType* pEventData
13058)
13059{
13060 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13061 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13062
Jeff Johnsone7245742012-09-05 17:12:55 -070013063 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013064 wpt_uint16 usDataOffset = 0;
13065 wpt_uint16 usSendSize = 0;
13066 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13067
13068 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013069 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013070 -------------------------------------------------------------------------*/
13071 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13072 ( NULL == pEventData->pCBfnc))
13073 {
13074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013075 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013076 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013077 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 }
13079
13080 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13081 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13082
13083 /*-----------------------------------------------------------------------
13084 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013085 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013086 -----------------------------------------------------------------------*/
13087
Jeff Johnsone7245742012-09-05 17:12:55 -070013088 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013089 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13090 &pSendBuffer, &usDataOffset, &usSendSize))||
13091 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13092 {
13093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013094 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013095 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13096 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013097 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013098 }
13099
Jeff Johnsone7245742012-09-05 17:12:55 -070013100 wpalMemoryCopy( pSendBuffer+usDataOffset,
13101 &pwdiUpdateCfgParams->uConfigBufferLen,
13102 sizeof(wpt_uint32));
13103 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13104 pwdiUpdateCfgParams->pConfigBuffer,
13105 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013106
13107 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013108 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013109
13110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013111 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013112 -------------------------------------------------------------------------*/
13113
Jeff Johnsone7245742012-09-05 17:12:55 -070013114 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13115 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013116
13117}/*WDI_ProcessUpdateCfgReq*/
13118
13119
13120/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013121 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013122 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013123
13124 @param pWDICtx: pointer to the WLAN DAL context
13125 pEventData: pointer to the event information structure
13126
Jeff Johnson295189b2012-06-20 16:38:30 -070013127 @see
13128 @return Result of the function call
13129*/
13130WDI_Status
13131WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013132(
Jeff Johnson295189b2012-06-20 16:38:30 -070013133 WDI_ControlBlockType* pWDICtx,
13134 WDI_EventInfoType* pEventData
13135)
13136{
13137 WDI_AddBAReqParamsType* pwdiAddBAParams;
13138 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013139 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013140 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 wpt_uint16 usDataOffset = 0;
13143 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013144 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 wpt_macAddr macBSSID;
13146
13147 tAddBAReqMsg halAddBAReq;
13148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13149
13150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013152 -------------------------------------------------------------------------*/
13153 if (( NULL == pEventData ) ||
13154 ( NULL == pEventData->pEventData) ||
13155 ( NULL == pEventData->pCBfnc ))
13156 {
13157 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013158 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013160 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 }
13162
13163 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13164 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13165
13166 /*-------------------------------------------------------------------------
13167 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013168 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013169 -------------------------------------------------------------------------*/
13170 wpalMutexAcquire(&pWDICtx->wptMutex);
13171
13172 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013173 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013174 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13176 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013177 &macBSSID))
13178 {
13179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013180 "This station does not exist in the WDI Station Table %d",
13181 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013182 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 }
13185
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13187 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013188 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13190 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13191 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013192
13193 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013194 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013195 }
13196
13197 /*------------------------------------------------------------------------
13198 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013199 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013200 ------------------------------------------------------------------------*/
13201 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13202 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13204 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13205 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013206
Jeff Johnsone7245742012-09-05 17:12:55 -070013207 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013208 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 }
13211
13212
13213 wpalMutexRelease(&pWDICtx->wptMutex);
13214 /*-----------------------------------------------------------------------
13215 Get message buffer
13216 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013217 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013218 sizeof(halAddBAReq.addBAParams),
13219 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013220 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013221 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13222 {
13223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013224 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013225 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13226 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013227 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013228 }
13229
Jeff Johnsone7245742012-09-05 17:12:55 -070013230 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13232 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13233#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013234 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013235 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13236#endif
13237
Jeff Johnsone7245742012-09-05 17:12:55 -070013238 wpalMemoryCopy( pSendBuffer+usDataOffset,
13239 &halAddBAReq.addBAParams,
13240 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013241
13242 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013243 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013244
13245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013246 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013247 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013248 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13249 wdiAddBARspCb, pEventData->pUserData,
13250 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013251}/*WDI_ProcessAddBAReq*/
13252
13253
13254
13255/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013256 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013257 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013258
13259 @param pWDICtx: pointer to the WLAN DAL context
13260 pEventData: pointer to the event information structure
13261
Jeff Johnson295189b2012-06-20 16:38:30 -070013262 @see
13263 @return Result of the function call
13264*/
13265WDI_Status
13266WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013267(
Jeff Johnson295189b2012-06-20 16:38:30 -070013268 WDI_ControlBlockType* pWDICtx,
13269 WDI_EventInfoType* pEventData
13270)
13271{
13272 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13273 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013274 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013275 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 wpt_uint16 usDataOffset = 0;
13278 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013279 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013280 wpt_uint16 index;
13281 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013282
Jeff Johnson295189b2012-06-20 16:38:30 -070013283 tTriggerBAReqMsg halTriggerBAReq;
13284 tTriggerBaReqCandidate* halTriggerBACandidate;
13285 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13287
13288 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013289 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013290 -------------------------------------------------------------------------*/
13291 if (( NULL == pEventData ) ||
13292 ( NULL == pEventData->pEventData ) ||
13293 ( NULL == pEventData->pCBfnc ))
13294 {
13295 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013296 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013297 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 }
13300
13301 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13302 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13303 /*-------------------------------------------------------------------------
13304 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013305 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013306 -------------------------------------------------------------------------*/
13307 wpalMutexAcquire(&pWDICtx->wptMutex);
13308
13309 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013310 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013311 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13313 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 &macBSSID))
13315 {
13316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013317 "This station does not exist in the WDI Station Table %d",
13318 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013319 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 }
13322
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13324 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013325 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13327 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13328 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013329
13330 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013331 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013332 }
13333
13334 /*------------------------------------------------------------------------
13335 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013336 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013337 ------------------------------------------------------------------------*/
13338 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13339 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13341 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13342 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013343
Jeff Johnsone7245742012-09-05 17:12:55 -070013344 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013345 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013346 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013347 }
13348
13349
13350 wpalMutexRelease(&pWDICtx->wptMutex);
13351 /*-----------------------------------------------------------------------
13352 Get message buffer
13353 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013354 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13355 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013356 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013357 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13359 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013360 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013361 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13364 {
13365 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013366 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013367 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13368 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013369 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013370 }
13371
Jeff Johnsone7245742012-09-05 17:12:55 -070013372 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013373 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13376
Jeff Johnsone7245742012-09-05 17:12:55 -070013377 wpalMemoryCopy( pSendBuffer+usDataOffset,
13378 &halTriggerBAReq.triggerBAParams,
13379 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013380
Jeff Johnsone7245742012-09-05 17:12:55 -070013381 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013382 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13383 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13384 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013385
13386 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013387 index++)
13388 {
13389 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13390 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13391 halTriggerBACandidate++;
13392 wdiTriggerBACandidate++;
13393 }
13394
13395 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013396 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013397
13398 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13402 wdiTriggerBARspCb, pEventData->pUserData,
13403 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013404}/*WDI_ProcessTriggerBAReq*/
13405
13406
13407
13408/**
13409 @brief Process Update Beacon Params Request function (called when Main FSM
13410 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013411
13412 @param pWDICtx: pointer to the WLAN DAL context
13413 pEventData: pointer to the event information structure
13414
Jeff Johnson295189b2012-06-20 16:38:30 -070013415 @see
13416 @return Result of the function call
13417*/
13418WDI_Status
13419WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013420(
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 WDI_ControlBlockType* pWDICtx,
13422 WDI_EventInfoType* pEventData
13423)
13424{
13425 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13426 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013427 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013428 wpt_uint16 usDataOffset = 0;
13429 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013430 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13432
13433 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013434 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013435 -------------------------------------------------------------------------*/
13436 if (( NULL == pEventData ) ||
13437 ( NULL == pEventData->pEventData) ||
13438 ( NULL == pEventData->pCBfnc))
13439 {
13440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013441 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013442 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 }
13445
13446 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13447 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13448 /*-----------------------------------------------------------------------
13449 Get message buffer
13450 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 sizeof(halUpdateBeaconParams),
13453 &pSendBuffer, &usDataOffset, &usSendSize))||
13454 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13455 {
13456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013457 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013458 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013461 }
13462
13463 /*BSS Index of the BSS*/
13464 halUpdateBeaconParams.bssIdx =
13465 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13466 /*shortPreamble mode. HAL should update all the STA rates when it
13467 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013468 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013469 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13470 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013471 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013472 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13473 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013474 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013475 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13476
13477 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013478 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013479 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13490 halUpdateBeaconParams.fRIFSMode =
13491 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013492 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013493 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13494
Jeff Johnsone7245742012-09-05 17:12:55 -070013495 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13496 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013497
13498 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013499 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013500
13501 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013502 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013503 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13505 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013506}/*WDI_ProcessUpdateBeaconParamsReq*/
13507
13508
13509
13510/**
13511 @brief Process Send Beacon template Request function (called when Main FSM
13512 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013513
13514 @param pWDICtx: pointer to the WLAN DAL context
13515 pEventData: pointer to the event information structure
13516
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 @see
13518 @return Result of the function call
13519*/
13520WDI_Status
13521WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013522(
Jeff Johnson295189b2012-06-20 16:38:30 -070013523 WDI_ControlBlockType* pWDICtx,
13524 WDI_EventInfoType* pEventData
13525)
13526{
13527 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13528 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013529 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013530 wpt_uint16 usDataOffset = 0;
13531 wpt_uint16 usSendSize = 0;
13532 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13533
13534 tSendBeaconReqMsg halSendBeaconReq;
13535 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013536 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013537 -------------------------------------------------------------------------*/
13538 if (( NULL == pEventData ) ||
13539 ( NULL == pEventData->pEventData ) ||
13540 ( NULL == pEventData->pCBfnc ))
13541 {
13542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 }
13547
13548 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13549 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13550 /*-----------------------------------------------------------------------
13551 Get message buffer
13552 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013553 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013554 sizeof(halSendBeaconReq.sendBeaconParam),
13555 &pSendBuffer, &usDataOffset, &usSendSize))||
13556 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13557 {
13558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013559 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013560 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013563 }
13564
13565 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13566 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13567 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013568 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013569 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13570 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13571 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13572 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013575 /* usP2PIeOffset should be atleast greater than timIeOffset */
13576 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13577 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13578 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13579 {
13580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13581 "Invalid usP2PIeOffset %hu",
13582 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13583 WDI_ASSERT(0);
13584 return WDI_STATUS_E_FAILURE;
13585 }
13586
Jeff Johnsone7245742012-09-05 17:12:55 -070013587 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013588 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013589
Jeff Johnsone7245742012-09-05 17:12:55 -070013590 wpalMemoryCopy( pSendBuffer+usDataOffset,
13591 &halSendBeaconReq.sendBeaconParam,
13592 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013593
13594 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013595 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013596
13597 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013598 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013599 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013600 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13601 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013602}/*WDI_ProcessSendBeaconParamsReq*/
13603
13604/**
13605 @brief Process Update Beacon Params Request function (called when Main FSM
13606 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013607
13608 @param pWDICtx: pointer to the WLAN DAL context
13609 pEventData: pointer to the event information structure
13610
Jeff Johnson295189b2012-06-20 16:38:30 -070013611 @see
13612 @return Result of the function call
13613*/
13614WDI_Status
13615WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013616(
Jeff Johnson295189b2012-06-20 16:38:30 -070013617 WDI_ControlBlockType* pWDICtx,
13618 WDI_EventInfoType* pEventData
13619)
13620{
13621 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13622 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013623 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013624 wpt_uint16 usDataOffset = 0;
13625 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013626 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013627 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13628
13629 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013630 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013631 -------------------------------------------------------------------------*/
13632 if (( NULL == pEventData ) ||
13633 ( NULL == pEventData->pEventData) ||
13634 ( NULL == pEventData->pCBfnc))
13635 {
13636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013637 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013638 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013639 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 }
13641
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13646 /*-----------------------------------------------------------------------
13647 Get message buffer
13648 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013649 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013650 sizeof(halUpdateProbeRspTmplParams),
13651 &pSendBuffer, &usDataOffset, &usSendSize))||
13652 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13653 {
13654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013655 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013656 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013659 }
13660
13661 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 WDI_MAC_ADDR_LEN);
13664
Jeff Johnsone7245742012-09-05 17:12:55 -070013665 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013666 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13667
13668 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13669 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013670 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013671
13672
13673 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13674 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13675 WDI_PROBE_REQ_BITMAP_IE_LEN);
13676
Jeff Johnsone7245742012-09-05 17:12:55 -070013677 wpalMemoryCopy( pSendBuffer+usDataOffset,
13678 &halUpdateProbeRspTmplParams,
13679 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013680
13681 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013682 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013683
13684 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013685 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013686 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13688 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13689 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013690}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13691
13692/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013693 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013694 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013695
13696 @param pWDICtx: pointer to the WLAN DAL context
13697 pEventData: pointer to the event information structure
13698
Jeff Johnson295189b2012-06-20 16:38:30 -070013699 @see
13700 @return Result of the function call
13701*/
13702WDI_Status
13703WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013704(
Jeff Johnson295189b2012-06-20 16:38:30 -070013705 WDI_ControlBlockType* pWDICtx,
13706 WDI_EventInfoType* pEventData
13707)
13708{
13709
13710 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13711 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13712
13713 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013714 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013715 -------------------------------------------------------------------------*/
13716 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013717 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013718 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13721 {
13722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 }
13727
13728 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013729 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013730 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13731
13732 /*cache the wdi nv request message here if the the first fragment
13733 * To issue the request to HAL for the next fragment */
13734 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13735 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013736 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13737 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013738 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13739
13740 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13741 pWDICtx->pRspCBUserData = pEventData->pUserData;
13742 }
13743
13744 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13745}
13746
13747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013748 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013749 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013750
13751 @param pWDICtx: pointer to the WLAN DAL context
13752 pEventData: pointer to the event information structure
13753
Jeff Johnson295189b2012-06-20 16:38:30 -070013754 @see
13755 @return Result of the function call
13756*/
13757WDI_Status WDI_ProcessSetMaxTxPowerReq
13758(
13759 WDI_ControlBlockType* pWDICtx,
13760 WDI_EventInfoType* pEventData
13761)
13762{
13763 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13764 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013765 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013766 wpt_uint16 usDataOffset = 0;
13767 wpt_uint16 usSendSize = 0;
13768 tSetMaxTxPwrReq halSetMaxTxPower;
13769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13770
13771 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013772 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013773 -------------------------------------------------------------------------*/
13774 if (( NULL == pEventData ) ||
13775 ( NULL == pEventData->pEventData ) ||
13776 ( NULL == pEventData->pCBfnc ))
13777 {
13778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013779 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013780 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013781 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13787
13788 /*-----------------------------------------------------------------------
13789 Get message buffer
13790 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013791if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013792 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13793 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013794 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013795)))
13796 {
13797 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013798 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013799 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13800 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013801 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013802 }
13803
13804 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13805 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13806 WDI_MAC_ADDR_LEN);
13807
13808 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13809 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13810 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013811 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013812 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013813
13814 wpalMemoryCopy( pSendBuffer+usDataOffset,
13815 &halSetMaxTxPower.setMaxTxPwrParams,
13816 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013817
13818 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013819 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013820
13821 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013822 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013823 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13825 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13826 WDI_SET_MAX_TX_POWER_RESP);
13827
Jeff Johnson295189b2012-06-20 16:38:30 -070013828}
13829
Arif Hussaina5ebce02013-08-09 15:09:58 -070013830/*
13831 @brief Process Set Max Tx Power Per Band Request function (called when Main
13832 FSM allows it)
13833
13834 @param pWDICtx: pointer to the WLAN DAL context
13835 pEventData: pointer to the event information structure
13836
13837 @see
13838 @return Result of the function call
13839*/
13840WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13841(
13842 WDI_ControlBlockType* pWDICtx,
13843 WDI_EventInfoType* pEventData
13844)
13845{
13846 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13847 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13848 wpt_uint8* pSendBuffer = NULL;
13849 wpt_uint16 usDataOffset = 0;
13850 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013851 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013852 WDI_Status rValue = WDI_STATUS_SUCCESS;
13853 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13854
13855 /*-------------------------------------------------------------------------
13856 Sanity check
13857 -------------------------------------------------------------------------*/
13858 if (( NULL == pEventData ) ||
13859 ( NULL == pEventData->pEventData ) ||
13860 ( NULL == pEventData->pCBfnc ))
13861 {
13862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13863 "%s: Invalid parameters", __func__);
13864 WDI_ASSERT(0);
13865 return WDI_STATUS_E_FAILURE;
13866 }
13867 pwdiSetMaxTxPowerPerBandParams = \
13868 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13869
13870 wdiSetMaxTxPowerPerBandRspCb = \
13871 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13872
13873 /*-----------------------------------------------------------------------
13874 Get message buffer
13875 -----------------------------------------------------------------------*/
13876
13877 rValue = WDI_GetMessageBuffer(pWDICtx,
13878 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13879 sizeof(tSetMaxTxPwrPerBandParams),
13880 &pSendBuffer, &usDataOffset, &usSendSize);
13881
13882 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13883 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13884 {
13885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13886 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13887 pEventData, pwdiSetMaxTxPowerPerBandParams,
13888 wdiSetMaxTxPowerPerBandRspCb);
13889 WDI_ASSERT(0);
13890 return WDI_STATUS_E_FAILURE;
13891 }
13892
13893
Arif Hussainf8f080c2014-04-03 09:48:36 -070013894 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13895 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013896 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13897
Arif Hussainf8f080c2014-04-03 09:48:36 -070013898 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013899 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13900
13901 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13902 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13903
13904 /*-------------------------------------------------------------------------
13905 Send Set Max Tx Power Per Band Request to HAL
13906 -------------------------------------------------------------------------*/
13907 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13908 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13909 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13910}
13911
schang86c22c42013-03-13 18:41:24 -070013912/**
13913 @brief Process Set Tx Power Request function (called when Main
13914 FSM allows it)
13915
13916 @param pWDICtx: pointer to the WLAN DAL context
13917 pEventData: pointer to the event information structure
13918
13919 @see
13920 @return Result of the function call
13921*/
13922WDI_Status WDI_ProcessSetTxPowerReq
13923(
13924 WDI_ControlBlockType* pWDICtx,
13925 WDI_EventInfoType* pEventData
13926)
13927{
13928 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13929 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13930 wpt_uint8* pSendBuffer = NULL;
13931 wpt_uint16 usDataOffset = 0;
13932 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013933 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13935
13936 /*-------------------------------------------------------------------------
13937 Sanity check
13938 -------------------------------------------------------------------------*/
13939 if (( NULL == pEventData ) ||
13940 ( NULL == pEventData->pEventData ) ||
13941 ( NULL == pEventData->pCBfnc ))
13942 {
13943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13944 "%s: Invalid parameters", __func__);
13945 WDI_ASSERT(0);
13946 return WDI_STATUS_E_FAILURE;
13947 }
13948
13949 pwdiSetTxPowerParams =
13950 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13951 wdiSetTxPowerRspCb =
13952 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13953
13954 /*-----------------------------------------------------------------------
13955 Get message buffer
13956 -----------------------------------------------------------------------*/
13957 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13958 sizeof(tSetTxPwrReqParams),
13959 &pSendBuffer, &usDataOffset, &usSendSize))||
13960 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13961 )))
13962 {
13963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013964 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013965 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13966 WDI_ASSERT(0);
13967 return WDI_STATUS_E_FAILURE;
13968 }
13969
Leo Chang9a43db92013-03-25 17:39:58 -070013970 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13971 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13972 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013973
13974 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13975 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13976
13977 /*-------------------------------------------------------------------------
13978 Send Set Tx Power Request to HAL
13979 -------------------------------------------------------------------------*/
13980 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13981 wdiSetTxPowerRspCb, pEventData->pUserData,
13982 WDI_SET_TX_POWER_RESP);
13983}
Jeff Johnson295189b2012-06-20 16:38:30 -070013984
13985/**
13986 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13987 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013988
13989 @param pWDICtx: pointer to the WLAN DAL context
13990 pEventData: pointer to the event information structure
13991
Jeff Johnson295189b2012-06-20 16:38:30 -070013992 @see
13993 @return Result of the function call
13994*/
13995WDI_Status
13996WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013997(
Jeff Johnson295189b2012-06-20 16:38:30 -070013998 WDI_ControlBlockType* pWDICtx,
13999 WDI_EventInfoType* pEventData
14000)
14001{
14002 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
14003 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014004 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014005 wpt_uint16 usDataOffset = 0;
14006 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014007 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14009
14010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014012 -------------------------------------------------------------------------*/
14013 if (( NULL == pEventData ) ||
14014 ( NULL == pEventData->pEventData) ||
14015 ( NULL == pEventData->pCBfnc))
14016 {
14017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014018 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014019 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014020 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 }
14022
Jeff Johnsone7245742012-09-05 17:12:55 -070014023 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014024 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14027 /*-----------------------------------------------------------------------
14028 Get message buffer
14029 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014030 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14031 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014032 sizeof(halSetP2PGONOAParams),
14033 &pSendBuffer, &usDataOffset, &usSendSize))||
14034 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14035 {
14036 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014037 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014038 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14039 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014040 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014041 }
14042
Jeff Johnsone7245742012-09-05 17:12:55 -070014043 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014044 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014045 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14047 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014048 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014049 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014050 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014051 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014052 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14056
Jeff Johnsone7245742012-09-05 17:12:55 -070014057 wpalMemoryCopy( pSendBuffer+usDataOffset,
14058 &halSetP2PGONOAParams,
14059 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014060
14061 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014062 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014063
14064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014065 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14068 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14069 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014070}/*WDI_ProcessP2PGONOAReq*/
14071
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014072#ifdef FEATURE_WLAN_TDLS
14073
14074/**
14075 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14076 allows it)
14077
14078 @param pWDICtx: pointer to the WLAN DAL context
14079 pEventData: pointer to the event information structure
14080
14081 @see
14082 @return Result of the function call
14083*/
14084WDI_Status
14085WDI_ProcessTdlsLinkEstablishReq
14086(
14087 WDI_ControlBlockType* pWDICtx,
14088 WDI_EventInfoType* pEventData
14089)
14090{
14091 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14092 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14093 wpt_uint8* pSendBuffer = NULL;
14094 wpt_uint16 usDataOffset = 0;
14095 wpt_uint16 usSendSize = 0;
14096
14097 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14099
14100 /*-------------------------------------------------------------------------
14101 Sanity check
14102 -------------------------------------------------------------------------*/
14103 if (( NULL == pEventData ) ||
14104 ( NULL == pEventData->pEventData) ||
14105 ( NULL == pEventData->pCBfnc))
14106 {
14107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14108 "%s: Invalid parameters", __func__);
14109 WDI_ASSERT(0);
14110 return WDI_STATUS_E_FAILURE;
14111 }
14112 pwdiTDLSLinkEstablishReqParams =
14113 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14114 wdiTDLSLinkEstablishReqRspCb =
14115 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14116
14117
14118 /*-----------------------------------------------------------------------
14119 Get message buffer
14120 -----------------------------------------------------------------------*/
14121 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14122 WDI_TDLS_LINK_ESTABLISH_REQ,
14123 sizeof(halSetTDLSLinkEstablishParams),
14124 &pSendBuffer, &usDataOffset, &usSendSize))||
14125 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14126 {
14127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014128 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014129 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14130 WDI_ASSERT(0);
14131 return WDI_STATUS_E_FAILURE;
14132 }
14133
14134 halSetTDLSLinkEstablishParams.staIdx =
14135 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14136 halSetTDLSLinkEstablishParams.bIsResponder =
14137 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14138 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14139 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14140 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14141 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14142 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14143 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14144 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14145 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14146 halSetTDLSLinkEstablishParams.aAck = 0;
14147 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14148 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14149 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014150 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14151 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14152
14153 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14154 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14155 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14156 halSetTDLSLinkEstablishParams.validChannelsLen =
14157 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14158
14159 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14160 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14161 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14162 halSetTDLSLinkEstablishParams.validOperClassesLen =
14163 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014164
14165 wpalMemoryCopy( pSendBuffer+usDataOffset,
14166 &halSetTDLSLinkEstablishParams,
14167 sizeof(halSetTDLSLinkEstablishParams));
14168
14169 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14170 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14171
14172 /*-------------------------------------------------------------------------
14173 Send Update Probe Resp Template Request to HAL
14174 -------------------------------------------------------------------------*/
14175 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14176 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14177 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14178 return 0;
14179}/*WDI_ProcessTdlsLinkEstablishReq*/
14180
14181
Atul Mittalc0f739f2014-07-31 13:47:47 +053014182/**
14183 @brief sends the channel switch command to f/w (called when Main FSM
14184 allows it)
14185
14186 @param pWDICtx: pointer to the WLAN DAL context
14187 pEventData: pointer to the event information structure
14188
14189 @see
14190 @return Result of the function call
14191*/
14192WDI_Status
14193WDI_ProcessTdlsChanSwitchReq
14194(
14195 WDI_ControlBlockType* pWDICtx,
14196 WDI_EventInfoType* pEventData
14197)
14198{
14199 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14200 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14201 wpt_uint8* pSendBuffer = NULL;
14202 wpt_uint16 usDataOffset = 0;
14203 wpt_uint16 usSendSize = 0;
14204 //WDI_Status wdiStatus;
14205 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14207
14208 /*-------------------------------------------------------------------------
14209 Sanity check
14210 -------------------------------------------------------------------------*/
14211 if (( NULL == pEventData ) ||
14212 ( NULL == pEventData->pEventData))
14213 {
14214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14215 "%s: Invalid parameters", __func__);
14216 WDI_ASSERT(0);
14217 return WDI_STATUS_E_FAILURE;
14218 }
14219 pwdiTDLSChanSwitchReqParams =
14220 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14221 wdiTDLSChanSwitchReqRspCb =
14222 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14223
14224 /*-----------------------------------------------------------------------
14225 Get message buffer
14226 -----------------------------------------------------------------------*/
14227 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14228 WDI_TDLS_CHAN_SWITCH_REQ,
14229 sizeof(halSetTDLSChanSwitchParams),
14230 &pSendBuffer, &usDataOffset, &usSendSize))||
14231 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14232 {
14233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14234 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14235 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14236 WDI_ASSERT(0);
14237 return WDI_STATUS_E_FAILURE;
14238 }
14239
14240 halSetTDLSChanSwitchParams.staIdx =
14241 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14242 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14243 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14244 halSetTDLSChanSwitchParams.targetOperClass =
14245 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14246 halSetTDLSChanSwitchParams.targetChannel =
14247 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14248 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14249 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14250 wpalMemoryCopy( pSendBuffer+usDataOffset,
14251 &halSetTDLSChanSwitchParams,
14252 sizeof(halSetTDLSChanSwitchParams));
14253
14254 pWDICtx->wdiReqStatusCB = NULL;
14255 pWDICtx->pReqStatusUserData = NULL;
14256
14257 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14258 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14259 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14260}/*WDI_ProcessTdlsChanSwitchReq*/
14261
14262#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014263
Jeff Johnson295189b2012-06-20 16:38:30 -070014264
14265
14266/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014267 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014268 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014269 @param None
14270
14271 @see
14272 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014273*/
14274void
14275WDI_SetPowerStateCb
14276(
14277 wpt_status status,
14278 unsigned int dxePhyAddr,
14279 void *pContext
14280)
14281{
14282 wpt_status wptStatus;
14283 WDI_ControlBlockType *pCB = NULL;
14284 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014285 /*
14286 * Trigger the event to bring the Enter BMPS req function to come
14287 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014288*/
14289 if( NULL != pContext )
14290 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014291 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014292 }
14293 else
14294 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014295 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014296 pCB = &gWDICb;
14297 }
Mihir Shetea4306052014-03-25 00:02:54 +053014298
14299 if(eWLAN_PAL_STATUS_SUCCESS == status )
14300 {
14301 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14302 }
14303 else
14304 {
14305 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14306 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014307 pCB->dxePhyAddr = dxePhyAddr;
14308 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14309 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14310 {
14311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14312 "Failed to set an event");
14313
Jeff Johnsone7245742012-09-05 17:12:55 -070014314 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014315 }
14316 return;
14317}
14318
14319
14320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014321 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014322 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014323
14324 @param pWDICtx: pointer to the WLAN DAL context
14325 pEventData: pointer to the event information structure
14326
Jeff Johnson295189b2012-06-20 16:38:30 -070014327 @see
14328 @return Result of the function call
14329*/
14330WDI_Status
14331WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014332(
Jeff Johnson295189b2012-06-20 16:38:30 -070014333 WDI_ControlBlockType* pWDICtx,
14334 WDI_EventInfoType* pEventData
14335)
14336{
Jeff Johnson43971f52012-07-17 12:26:56 -070014337 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014338 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014339 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 wpt_uint16 usDataOffset = 0;
14341 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014342 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014343 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14344
14345 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014346 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014347 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014348 if ((NULL == pEventData ) ||
14349 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14350 (NULL == (pwdiEnterImpsReqParams =
14351 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014352 {
14353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014355 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014356 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 }
14358
14359 /*-----------------------------------------------------------------------
14360 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014361 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014362 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 0,
14365 &pSendBuffer, &usDataOffset, &usSendSize))||
14366 ( usSendSize < (usDataOffset )))
14367 {
14368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014369 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014370 pEventData, wdiEnterImpsRspCb);
14371 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014372 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014373 }
14374
14375 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014376 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14377 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014378 {
14379 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14380 "WDI Init failed to reset an event");
14381
Jeff Johnsone7245742012-09-05 17:12:55 -070014382 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014383 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014384 }
14385
14386 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014387 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14388 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014390 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014391 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014392 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014393 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014394
14395 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014396 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014397 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014398 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14399 WDI_SET_POWER_STATE_TIMEOUT);
14400 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014401 {
14402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14403 "WDI Init failed to wait on an event");
14404
Karthick S1fa70262015-08-20 13:28:14 +053014405 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014406 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014407 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014408 }
14409
Mihir Shetea4306052014-03-25 00:02:54 +053014410 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14411 {
14412 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14413 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14414
14415 goto fail;
14416 }
14417
14418 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14419 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014420 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014421 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14424 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014425
14426fail:
14427 // Release the message buffer so we don't leak
14428 wpalMemoryFree(pSendBuffer);
14429
14430failRequest:
14431 //WDA should have failure check to avoid the memory leak
14432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014433}/*WDI_ProcessEnterImpsReq*/
14434
14435/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014436 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014437 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014438
14439 @param pWDICtx: pointer to the WLAN DAL context
14440 pEventData: pointer to the event information structure
14441
Jeff Johnson295189b2012-06-20 16:38:30 -070014442 @see
14443 @return Result of the function call
14444*/
14445WDI_Status
14446WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014447(
Jeff Johnson295189b2012-06-20 16:38:30 -070014448 WDI_ControlBlockType* pWDICtx,
14449 WDI_EventInfoType* pEventData
14450)
14451{
14452 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014453 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014454 wpt_uint16 usDataOffset = 0;
14455 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014456 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014457 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14458
14459 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014460 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014461 -------------------------------------------------------------------------*/
14462 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014463 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14464 (NULL == (pwdiExitImpsReqParams =
14465 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014466 {
14467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014468 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 }
14472
14473 /*-----------------------------------------------------------------------
14474 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014475 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014476 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 0,
14479 &pSendBuffer, &usDataOffset, &usSendSize))||
14480 ( usSendSize < (usDataOffset )))
14481 {
14482 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014483 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014484 pEventData, wdiExitImpsRspCb);
14485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014487 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014488 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14489 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014491 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14494 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014495}/*WDI_ProcessExitImpsReq*/
14496
14497/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014498 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014499 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014500
14501 @param pWDICtx: pointer to the WLAN DAL context
14502 pEventData: pointer to the event information structure
14503
Jeff Johnson295189b2012-06-20 16:38:30 -070014504 @see
14505 @return Result of the function call
14506*/
14507WDI_Status
14508WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014509(
Jeff Johnson295189b2012-06-20 16:38:30 -070014510 WDI_ControlBlockType* pWDICtx,
14511 WDI_EventInfoType* pEventData
14512)
14513{
14514 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14515 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014517 wpt_uint16 usDataOffset = 0;
14518 wpt_uint16 usSendSize = 0;
14519 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014520 wpt_status wptStatus;
14521
Jeff Johnson295189b2012-06-20 16:38:30 -070014522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14523
14524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 -------------------------------------------------------------------------*/
14527 if (( NULL == pEventData ) ||
14528 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14529 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14530 {
14531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014533 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014534 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 }
14536
14537 /*-----------------------------------------------------------------------
14538 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014539 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014540 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 sizeof(enterBmpsReq),
14543 &pSendBuffer, &usDataOffset, &usSendSize))||
14544 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14545 {
14546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014547 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014548 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14549 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014550 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014551 }
14552
14553 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014554 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14555 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014556 {
14557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14558 "WDI Init failed to reset an event");
14559
Jeff Johnsone7245742012-09-05 17:12:55 -070014560 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014561 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014562 }
14563
14564 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014565 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14566 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14567 {
14568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014569 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014570 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014571 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014572 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014573
14574/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014577 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14578 WDI_SET_POWER_STATE_TIMEOUT);
14579 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014580 {
14581 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14582 "WDI Init failed to wait on an event");
14583
Karthick S1fa70262015-08-20 13:28:14 +053014584 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014585 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014586 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014587 }
14588
14589 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14590
14591 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14592 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14593 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14594 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14595
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014596 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014597 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14598 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14599 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14600
14601 wpalMemoryCopy( pSendBuffer+usDataOffset,
14602 &enterBmpsReq,
14603 sizeof(enterBmpsReq));
14604
14605 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014606 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014607
14608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014609 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14612 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014613
14614fail:
14615 // Release the message buffer so we don't leak
14616 wpalMemoryFree(pSendBuffer);
14617
14618failRequest:
14619 //WDA should have failure check to avoid the memory leak
14620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014621}/*WDI_ProcessEnterBmpsReq*/
14622
14623/**
14624 @brief Process Exit BMPS Request function (called when Main FSM
14625 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014626
14627 @param pWDICtx: pointer to the WLAN DAL context
14628 pEventData: pointer to the event information structure
14629
Jeff Johnson295189b2012-06-20 16:38:30 -070014630 @see
14631 @return Result of the function call
14632*/
14633WDI_Status
14634WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014635(
Jeff Johnson295189b2012-06-20 16:38:30 -070014636 WDI_ControlBlockType* pWDICtx,
14637 WDI_EventInfoType* pEventData
14638)
14639{
14640 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14641 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014643 wpt_uint16 usDataOffset = 0;
14644 wpt_uint16 usSendSize = 0;
14645 tHalExitBmpsReqParams exitBmpsReq;
14646 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14647
14648 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014650 -------------------------------------------------------------------------*/
14651 if (( NULL == pEventData ) ||
14652 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14653 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14654 {
14655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 }
14660
14661 /*-----------------------------------------------------------------------
14662 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014663 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 sizeof(exitBmpsReq),
14667 &pSendBuffer, &usDataOffset, &usSendSize))||
14668 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14669 {
14670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014671 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014672 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14673 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014675 }
14676 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14677
Jeff Johnsone7245742012-09-05 17:12:55 -070014678 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14679
Jeff Johnson295189b2012-06-20 16:38:30 -070014680 wpalMemoryCopy( pSendBuffer+usDataOffset,
14681 &exitBmpsReq,
14682 sizeof(exitBmpsReq));
14683
14684 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014685 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014686
14687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014688 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14691 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014692}/*WDI_ProcessExitBmpsReq*/
14693
14694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014696 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014697
14698 @param pWDICtx: pointer to the WLAN DAL context
14699 pEventData: pointer to the event information structure
14700
Jeff Johnson295189b2012-06-20 16:38:30 -070014701 @see
14702 @return Result of the function call
14703*/
14704WDI_Status
14705WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014706(
Jeff Johnson295189b2012-06-20 16:38:30 -070014707 WDI_ControlBlockType* pWDICtx,
14708 WDI_EventInfoType* pEventData
14709)
14710{
14711 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14712 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014713 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014714 wpt_uint16 usDataOffset = 0;
14715 wpt_uint16 usSendSize = 0;
14716 tUapsdReqParams enterUapsdReq;
14717 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14718
14719 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014720 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014721 -------------------------------------------------------------------------*/
14722 if (( NULL == pEventData ) ||
14723 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14724 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14725 {
14726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 }
14731
14732 /*-----------------------------------------------------------------------
14733 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014734 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014735 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 sizeof(enterUapsdReq),
14738 &pSendBuffer, &usDataOffset, &usSendSize))||
14739 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14740 {
14741 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014742 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014743 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14744 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014745 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 }
14747
14748 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14749 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14750 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14751 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14752 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14753 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14754 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14755 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014756 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014757
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 wpalMemoryCopy( pSendBuffer+usDataOffset,
14759 &enterUapsdReq,
14760 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014761
14762 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014763 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014764
14765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014766 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14769 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014770}/*WDI_ProcessEnterUapsdReq*/
14771
14772/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014773 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014774 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014775
14776 @param pWDICtx: pointer to the WLAN DAL context
14777 pEventData: pointer to the event information structure
14778
Jeff Johnson295189b2012-06-20 16:38:30 -070014779 @see
14780 @return Result of the function call
14781*/
14782WDI_Status
14783WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014784(
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 WDI_ControlBlockType* pWDICtx,
14786 WDI_EventInfoType* pEventData
14787)
14788{
14789 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014790 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014791 wpt_uint16 usDataOffset = 0;
14792 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014793 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14794 wpt_uint8 bssIdx = 0;
14795
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14797
14798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014800 -------------------------------------------------------------------------*/
14801 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014802 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14804 {
14805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 }
14810
14811 /*-----------------------------------------------------------------------
14812 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014813 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014814 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014815 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014816 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014818 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 {
14820 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014821 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014822 pEventData, wdiExitUapsdRspCb);
14823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014825 }
14826
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014827 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14828
14829 wpalMemoryCopy( pSendBuffer+usDataOffset,
14830 &bssIdx,
14831 sizeof(wpt_uint8));
14832
14833 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14834 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14835
Jeff Johnson295189b2012-06-20 16:38:30 -070014836 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014837 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14840 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014841}/*WDI_ProcessExitUapsdReq*/
14842
14843/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014844 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014845 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014846
14847 @param pWDICtx: pointer to the WLAN DAL context
14848 pEventData: pointer to the event information structure
14849
Jeff Johnson295189b2012-06-20 16:38:30 -070014850 @see
14851 @return Result of the function call
14852*/
14853WDI_Status
14854WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014855(
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 WDI_ControlBlockType* pWDICtx,
14857 WDI_EventInfoType* pEventData
14858)
14859{
14860 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14861 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014862 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 wpt_uint16 usDataOffset = 0;
14864 wpt_uint16 usSendSize = 0;
14865 tUapsdInfo uapsdAcParamsReq;
14866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14867
14868 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014869 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014870 -------------------------------------------------------------------------*/
14871 if (( NULL == pEventData ) ||
14872 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14873 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14874 {
14875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014876 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014877 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014878 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 }
14880
14881 /*-----------------------------------------------------------------------
14882 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014883 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014884 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 sizeof(uapsdAcParamsReq),
14887 &pSendBuffer, &usDataOffset, &usSendSize))||
14888 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14889 {
14890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014891 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14893 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014894 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014895 }
14896
14897 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14898 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14899 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14900 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14901 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14902 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14903
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 wpalMemoryCopy( pSendBuffer+usDataOffset,
14905 &uapsdAcParamsReq,
14906 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014907
14908 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014909 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014910
14911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014912 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014913 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14915 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014916}/*WDI_ProcessSetUapsdAcParamsReq*/
14917
14918/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014919 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014920 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014921
14922 @param pWDICtx: pointer to the WLAN DAL context
14923 pEventData: pointer to the event information structure
14924
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 @see
14926 @return Result of the function call
14927*/
14928WDI_Status
14929WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014930(
Jeff Johnson295189b2012-06-20 16:38:30 -070014931 WDI_ControlBlockType* pWDICtx,
14932 WDI_EventInfoType* pEventData
14933)
14934{
14935 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14936 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014937 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014938 wpt_uint16 usDataOffset = 0;
14939 wpt_uint16 usSendSize = 0;
14940 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14941
14942 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014943 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014944 -------------------------------------------------------------------------*/
14945 if (( NULL == pEventData ) ||
14946 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14947 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14948 {
14949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014950 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014952 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 }
14954
14955 /*-----------------------------------------------------------------------
14956 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014957 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014958 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14961 &pSendBuffer, &usDataOffset, &usSendSize))||
14962 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14963 {
14964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014965 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014969 }
14970
Jeff Johnsone7245742012-09-05 17:12:55 -070014971 wpalMemoryCopy( pSendBuffer+usDataOffset,
14972 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14973 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014974
14975 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014976 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014977
14978 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014979 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014980 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14982 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014983}/*WDI_ProcessUpdateUapsdParamsReq*/
14984
14985/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014986 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014987 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014988
14989 @param pWDICtx: pointer to the WLAN DAL context
14990 pEventData: pointer to the event information structure
14991
Jeff Johnson295189b2012-06-20 16:38:30 -070014992 @see
14993 @return Result of the function call
14994*/
14995WDI_Status
14996WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014997(
Jeff Johnson295189b2012-06-20 16:38:30 -070014998 WDI_ControlBlockType* pWDICtx,
14999 WDI_EventInfoType* pEventData
15000)
15001{
15002 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
15003 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015004 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015005 wpt_uint16 usDataOffset = 0;
15006 wpt_uint16 usSendSize = 0;
15007 tHalConfigureRxpFilterReqParams halRxpFilterParams;
15008
15009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15010
15011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015013 -------------------------------------------------------------------------*/
15014 if (( NULL == pEventData ) ||
15015 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15016 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15017 {
15018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 }
15023
15024 /*-----------------------------------------------------------------------
15025 Get message buffer
15026 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015027 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015028 sizeof(halRxpFilterParams),
15029 &pSendBuffer, &usDataOffset, &usSendSize))||
15030 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15031 {
15032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015033 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015034 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15035 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015036 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015037 }
15038
Jeff Johnsone7245742012-09-05 17:12:55 -070015039 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15043
Jeff Johnsone7245742012-09-05 17:12:55 -070015044 wpalMemoryCopy( pSendBuffer+usDataOffset,
15045 &halRxpFilterParams,
15046 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015047
15048 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015049 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015050
15051 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015052 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015053 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15055 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015056}/*WDI_ProcessConfigureRxpFilterReq*/
15057
15058/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015059 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015060 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015061
15062 @param pWDICtx: pointer to the WLAN DAL context
15063 pEventData: pointer to the event information structure
15064
Jeff Johnson295189b2012-06-20 16:38:30 -070015065 @see
15066 @return Result of the function call
15067*/
15068WDI_Status
15069WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015070(
Jeff Johnson295189b2012-06-20 16:38:30 -070015071 WDI_ControlBlockType* pWDICtx,
15072 WDI_EventInfoType* pEventData
15073)
15074{
15075 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15076 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015077 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015078 wpt_uint16 usDataOffset = 0;
15079 wpt_uint16 usSendSize = 0;
15080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15081
15082 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015083 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015084 -------------------------------------------------------------------------*/
15085 if (( NULL == pEventData ) ||
15086 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15087 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15088 {
15089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015090 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015091 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015092 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 }
15094
15095 /*-----------------------------------------------------------------------
15096 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015097 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015098 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15101 &pSendBuffer, &usDataOffset, &usSendSize))||
15102 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15103 {
15104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015105 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015106 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 }
15110
Jeff Johnsone7245742012-09-05 17:12:55 -070015111 wpalMemoryCopy( pSendBuffer+usDataOffset,
15112 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15113 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15114 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15115 &pwdiBeaconFilterParams->aFilters[0],
15116 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015117
15118 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015119 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015120
15121 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015122 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015124 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15125 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015126}/*WDI_ProcessSetBeaconFilterReq*/
15127
15128/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015129 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015130 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015131
15132 @param pWDICtx: pointer to the WLAN DAL context
15133 pEventData: pointer to the event information structure
15134
Jeff Johnson295189b2012-06-20 16:38:30 -070015135 @see
15136 @return Result of the function call
15137*/
15138WDI_Status
15139WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015140(
Jeff Johnson295189b2012-06-20 16:38:30 -070015141 WDI_ControlBlockType* pWDICtx,
15142 WDI_EventInfoType* pEventData
15143)
15144{
15145 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15146 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015147 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015148 wpt_uint16 usDataOffset = 0;
15149 wpt_uint16 usSendSize = 0;
15150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15151
15152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015153 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 -------------------------------------------------------------------------*/
15155 if (( NULL == pEventData ) ||
15156 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15157 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15158 {
15159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 }
15164
15165 /*-----------------------------------------------------------------------
15166 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015167 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015168 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15171 &pSendBuffer, &usDataOffset, &usSendSize))||
15172 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15173 {
15174 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015175 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015176 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15177 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015178 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015179 }
15180
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 wpalMemoryCopy( pSendBuffer+usDataOffset,
15182 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15183 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015184
15185 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015187
15188 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015189 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015190 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015191 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15192 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015193}
15194
15195/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015196 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015197 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015198
15199 @param pWDICtx: pointer to the WLAN DAL context
15200 pEventData: pointer to the event information structure
15201
Jeff Johnson295189b2012-06-20 16:38:30 -070015202 @see
15203 @return Result of the function call
15204*/
15205WDI_Status
15206WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015207(
Jeff Johnson295189b2012-06-20 16:38:30 -070015208 WDI_ControlBlockType* pWDICtx,
15209 WDI_EventInfoType* pEventData
15210)
15211{
15212 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15213 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015214 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015215 wpt_uint16 usDataOffset = 0;
15216 wpt_uint16 usSendSize = 0;
15217 tHalRSSIThresholds rssiThresholdsReq;
15218 WDI_Status ret_status = 0;
15219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15220
15221 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015222 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015223 -------------------------------------------------------------------------*/
15224 if (( NULL == pEventData ) ||
15225 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15226 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15227 {
15228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015229 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015231 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 }
15233
15234 /*-----------------------------------------------------------------------
15235 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 sizeof(rssiThresholdsReq),
15240 &pSendBuffer, &usDataOffset, &usSendSize))||
15241 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15242 {
15243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015244 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015245 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15246 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015247 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015248 }
15249
Jeff Johnsone7245742012-09-05 17:12:55 -070015250 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015251 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015254 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015260 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15270
Jeff Johnsone7245742012-09-05 17:12:55 -070015271 wpalMemoryCopy( pSendBuffer+usDataOffset,
15272 &rssiThresholdsReq,
15273 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015274
15275 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015276 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015277
15278 /*-------------------------------------------------------------------------
15279 Send Set threshold req to HAL
15280 -------------------------------------------------------------------------*/
15281 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15282 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15283 {
15284 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15285 // req. Then as a result of processing the threshold cross ind, we trigger
15286 // a Set threshold req, then we need to indicate to WDI that it needs to
15287 // go to busy state as a result of the indication as we sent a req in the
15288 // same WDI context.
15289 // Hence expected state transition is to busy.
15290 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15291 }
15292
15293 return ret_status;
15294}
15295
15296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015297 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015298 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015299
15300 @param pWDICtx: pointer to the WLAN DAL context
15301 pEventData: pointer to the event information structure
15302
Jeff Johnson295189b2012-06-20 16:38:30 -070015303 @see
15304 @return Result of the function call
15305*/
15306WDI_Status
15307WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015308(
Jeff Johnson295189b2012-06-20 16:38:30 -070015309 WDI_ControlBlockType* pWDICtx,
15310 WDI_EventInfoType* pEventData
15311)
15312{
15313 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15314 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015315 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015316 wpt_uint16 usDataOffset = 0;
15317 wpt_uint16 usSendSize = 0;
15318 tHalHostOffloadReq hostOffloadParams;
15319 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015320 wpt_uint8 ucCurrentBSSSesIdx = 0;
15321 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015322
15323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15324
15325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015326 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015327 -------------------------------------------------------------------------*/
15328 if (( NULL == pEventData ) ||
15329 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15330 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15331 {
15332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015335 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 }
15337
15338 /*-----------------------------------------------------------------------
15339 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015340 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015341 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15344 &pSendBuffer, &usDataOffset, &usSendSize))||
15345 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15346 {
15347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015348 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015349 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15350 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015351 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 }
15353
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015354 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15355 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15356 &pBSSSes);
15357 if ( NULL == pBSSSes )
15358 {
c_hpothu86feba52014-10-28 15:51:18 +053015359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015360 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15361 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015362 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015363 }
15364
Jeff Johnson295189b2012-06-20 16:38:30 -070015365 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15366 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015367
Jeff Johnson295189b2012-06-20 16:38:30 -070015368 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15369 {
15370 // ARP Offload
15371 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15372 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15373 4);
15374 }
15375 else
15376 {
15377 // NS Offload
15378 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15379 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15380 16);
15381
15382#ifdef WLAN_NS_OFFLOAD
15383 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15384 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15385 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15386 16);
15387 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15388 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15389 16);
15390 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15391 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15392 16);
15393 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15394 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15395 16);
15396 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15397 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15398 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015399 nsOffloadParams.srcIPv6AddrValid =
15400 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15401
15402 nsOffloadParams.targetIPv6Addr1Valid =
15403 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15404
15405 nsOffloadParams.targetIPv6Addr2Valid =
15406 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15407
15408 nsOffloadParams.slotIndex =
15409 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015410
Jeff Johnson295189b2012-06-20 16:38:30 -070015411#endif // WLAN_NS_OFFLOAD
15412 }
15413
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015414 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15415
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 // copy hostOffloadParams into pSendBuffer
15417 wpalMemoryCopy( pSendBuffer+usDataOffset,
15418 &hostOffloadParams,
15419 sizeof(hostOffloadParams));
15420
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015421 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015422 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015423 // copy nsOffloadParams into pSendBuffer
15424 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 &nsOffloadParams,
15426 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015427 }
15428 else
15429 {
15430#ifdef WLAN_NS_OFFLOAD
15431 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15432 {
15433 // copy nsOffloadParams into pSendBuffer
15434 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15435 &nsOffloadParams,
15436 sizeof(nsOffloadParams));
15437 }
15438#endif
15439 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015440
15441 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015442 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015443
15444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015445 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015446 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15448 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015449
15450fail:
15451 // Release the message buffer so we don't leak
15452 wpalMemoryFree(pSendBuffer);
15453
15454failRequest:
15455 //WDA should have failure check to avoid the memory leak
15456 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015457}/*WDI_ProcessHostOffloadReq*/
15458
15459/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015460 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015461 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015462
15463 @param pWDICtx: pointer to the WLAN DAL context
15464 pEventData: pointer to the event information structure
15465
Jeff Johnson295189b2012-06-20 16:38:30 -070015466 @see
15467 @return Result of the function call
15468*/
15469WDI_Status
15470WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015471(
Jeff Johnson295189b2012-06-20 16:38:30 -070015472 WDI_ControlBlockType* pWDICtx,
15473 WDI_EventInfoType* pEventData
15474)
15475{
15476 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15477 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015478 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015479 wpt_uint16 usDataOffset = 0;
15480 wpt_uint16 usSendSize = 0;
15481 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015482 wpt_uint8 ucCurrentBSSSesIdx = 0;
15483 WDI_BSSSessionType* pBSSSes = NULL;
15484
Jeff Johnson295189b2012-06-20 16:38:30 -070015485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15486
15487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015488 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015489 -------------------------------------------------------------------------*/
15490 if (( NULL == pEventData ) ||
15491 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15492 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15493 {
15494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15495 "Invalid parameters in Keep Alive req");
15496 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015497 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015498 }
15499
15500 /*-----------------------------------------------------------------------
15501 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015502 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015503 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 sizeof(keepAliveReq),
15506 &pSendBuffer, &usDataOffset, &usSendSize))||
15507 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15508 {
15509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015510 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15512 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015513 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 }
15515
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015516 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15517 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15518 &pBSSSes);
15519 if ( NULL == pBSSSes )
15520 {
15521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015522 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015523 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015524 }
15525
Jeff Johnson295189b2012-06-20 16:38:30 -070015526 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15527 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15528
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015529 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015530
Jeff Johnson295189b2012-06-20 16:38:30 -070015531 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15532 {
15533 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15534 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15535 HAL_IPV4_ADDR_LEN);
15536 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15537 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015538 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015539 wpalMemoryCopy(keepAliveReq.destMacAddr,
15540 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15541 HAL_MAC_ADDR_LEN);
15542 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015543
15544 wpalMemoryCopy( pSendBuffer+usDataOffset,
15545 &keepAliveReq,
15546 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015547
15548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015549 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015550
15551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015552 "Process keep alive req time period %d",
15553 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015554
15555 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015556 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015557
15558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15559 "Sending keep alive req to HAL");
15560
15561 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015562 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015563 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15565 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015566
15567fail:
15568 // Release the message buffer so we don't leak
15569 wpalMemoryFree(pSendBuffer);
15570
15571failRequest:
15572 //WDA should have failure check to avoid the memory leak
15573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015574}/*WDI_ProcessKeepAliveReq*/
15575
15576
15577/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015578 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015579 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015580
15581 @param pWDICtx: pointer to the WLAN DAL context
15582 pEventData: pointer to the event information structure
15583
Jeff Johnson295189b2012-06-20 16:38:30 -070015584 @see
15585 @return Result of the function call
15586*/
15587WDI_Status
15588WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015589(
Jeff Johnson295189b2012-06-20 16:38:30 -070015590 WDI_ControlBlockType* pWDICtx,
15591 WDI_EventInfoType* pEventData
15592)
15593{
15594 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15595 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015596 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015597 wpt_uint16 usDataOffset = 0;
15598 wpt_uint16 usSendSize = 0;
15599 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015600 wpt_uint8 ucCurrentBSSSesIdx = 0;
15601 WDI_BSSSessionType* pBSSSes = NULL;
15602
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15604
15605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015606 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015607 -------------------------------------------------------------------------*/
15608 if (( NULL == pEventData ) ||
15609 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15610 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15611 {
15612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015613 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015614 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015615 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015616 }
15617
15618 /*-----------------------------------------------------------------------
15619 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015620 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015621 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015622 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 sizeof(wowlAddBcPtrnReq),
15624 &pSendBuffer, &usDataOffset, &usSendSize))||
15625 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15626 {
15627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015628 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015629 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15630 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015631 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015632 }
15633
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015634 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15635 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15636 &pBSSSes);
15637 if ( NULL == pBSSSes )
15638 {
15639 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015640 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015641 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015642 }
15643
Jeff Johnsone7245742012-09-05 17:12:55 -070015644 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015645 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15652
15653 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15654 {
15655 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15656 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15657 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15658 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15659 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15660 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15661 }
15662 else
15663 {
15664 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15665 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15666 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15667 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15668 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15669 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15670
15671 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15672 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15673 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15674 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15675 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15676 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15677 }
15678
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015679 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15680
Jeff Johnson295189b2012-06-20 16:38:30 -070015681 wpalMemoryCopy( pSendBuffer+usDataOffset,
15682 &wowlAddBcPtrnReq,
15683 sizeof(wowlAddBcPtrnReq));
15684
15685 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015686 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015687
15688 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015689 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015690 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15692 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015693fail:
15694 // Release the message buffer so we don't leak
15695 wpalMemoryFree(pSendBuffer);
15696
15697failRequest:
15698 //WDA should have failure check to avoid the memory leak
15699 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015700}/*WDI_ProcessWowlAddBcPtrnReq*/
15701
15702/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015703 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015704 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015705
15706 @param pWDICtx: pointer to the WLAN DAL context
15707 pEventData: pointer to the event information structure
15708
Jeff Johnson295189b2012-06-20 16:38:30 -070015709 @see
15710 @return Result of the function call
15711*/
15712WDI_Status
15713WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015714(
Jeff Johnson295189b2012-06-20 16:38:30 -070015715 WDI_ControlBlockType* pWDICtx,
15716 WDI_EventInfoType* pEventData
15717)
15718{
15719 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15720 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015721 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015722 wpt_uint16 usDataOffset = 0;
15723 wpt_uint16 usSendSize = 0;
15724 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015725 wpt_uint8 ucCurrentBSSSesIdx = 0;
15726 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15728
15729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015731 -------------------------------------------------------------------------*/
15732 if (( NULL == pEventData ) ||
15733 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15734 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15735 {
15736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015737 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015739 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 }
15741
15742 /*-----------------------------------------------------------------------
15743 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015744 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015745 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 sizeof(wowlDelBcPtrnReq),
15748 &pSendBuffer, &usDataOffset, &usSendSize))||
15749 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15750 {
15751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015752 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015753 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15754 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015755 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015756 }
15757
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015758 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15759 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15760 &pBSSSes);
15761 if ( NULL == pBSSSes )
15762 {
15763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015764 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015765 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015766 }
15767
Jeff Johnsone7245742012-09-05 17:12:55 -070015768 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015769 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015770
15771 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15772
Jeff Johnsone7245742012-09-05 17:12:55 -070015773 wpalMemoryCopy( pSendBuffer+usDataOffset,
15774 &wowlDelBcPtrnReq,
15775 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015776
15777 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015779
15780 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015781 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015782 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15784 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015785
15786fail:
15787 // Release the message buffer so we don't leak
15788 wpalMemoryFree(pSendBuffer);
15789
15790failRequest:
15791 //WDA should have failure check to avoid the memory leak
15792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015793}/*WDI_ProcessWowlDelBcPtrnReq*/
15794
15795/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015796 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015797 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015798
15799 @param pWDICtx: pointer to the WLAN DAL context
15800 pEventData: pointer to the event information structure
15801
Jeff Johnson295189b2012-06-20 16:38:30 -070015802 @see
15803 @return Result of the function call
15804*/
15805WDI_Status
15806WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015807(
Jeff Johnson295189b2012-06-20 16:38:30 -070015808 WDI_ControlBlockType* pWDICtx,
15809 WDI_EventInfoType* pEventData
15810)
15811{
15812 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15813 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015814 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015815 wpt_uint16 usDataOffset = 0;
15816 wpt_uint16 usSendSize = 0;
15817 tHalWowlEnterParams wowlEnterReq;
15818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15819
15820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015822 -------------------------------------------------------------------------*/
15823 if (( NULL == pEventData ) ||
15824 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15825 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15826 {
15827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015828 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015830 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 }
15832
15833 /*-----------------------------------------------------------------------
15834 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015838 sizeof(wowlEnterReq),
15839 &pSendBuffer, &usDataOffset, &usSendSize))||
15840 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15841 {
15842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015843 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015844 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015847 }
15848
Kumar Anandaca924e2013-07-22 14:35:34 -070015849 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15850
Jeff Johnsone7245742012-09-05 17:12:55 -070015851 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015852 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015853 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015855 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015857 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015858 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015861 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15867
15868#ifdef WLAN_WAKEUP_EVENTS
15869 wowlEnterReq.ucWoWEAPIDRequestEnable =
15870 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15871
15872 wowlEnterReq.ucWoWEAPOL4WayEnable =
15873 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15874
15875 wowlEnterReq.ucWowNetScanOffloadMatch =
15876 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15877
15878 wowlEnterReq.ucWowGTKRekeyError =
15879 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15880
15881 wowlEnterReq.ucWoWBSSConnLoss =
15882 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15883#endif // WLAN_WAKEUP_EVENTS
15884
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015885 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15886
Jeff Johnson295189b2012-06-20 16:38:30 -070015887 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15888 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15889 sizeof(tSirMacAddr));
15890
Jeff Johnsone7245742012-09-05 17:12:55 -070015891 wpalMemoryCopy( pSendBuffer+usDataOffset,
15892 &wowlEnterReq,
15893 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015894
15895 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015896 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015897
15898 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015899 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015900 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15902 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015903}/*WDI_ProcessWowlEnterReq*/
15904
15905/**
15906 @brief Process Wowl exit Request function (called when Main FSM
15907 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015908
15909 @param pWDICtx: pointer to the WLAN DAL context
15910 pEventData: pointer to the event information structure
15911
Jeff Johnson295189b2012-06-20 16:38:30 -070015912 @see
15913 @return Result of the function call
15914*/
15915WDI_Status
15916WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015917(
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 WDI_ControlBlockType* pWDICtx,
15919 WDI_EventInfoType* pEventData
15920)
15921{
15922 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015923 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 wpt_uint16 usDataOffset = 0;
15926 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015927 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15929
15930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015932 -------------------------------------------------------------------------*/
15933 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015934 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015935 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15936 {
15937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 }
15942
15943 /*-----------------------------------------------------------------------
15944 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015945 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015946 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015948 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015950 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 {
15952 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015953 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015954 pEventData, wdiWowlExitCb);
15955 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015956 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015957 }
15958
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015959 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15960
15961 wpalMemoryCopy( pSendBuffer+usDataOffset,
15962 &wowlExitparams,
15963 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015964 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015965 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15968 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015969}/*WDI_ProcessWowlExitReq*/
15970
15971/**
15972 @brief Process Configure Apps Cpu Wakeup State Request function
15973 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015974
15975 @param pWDICtx: pointer to the WLAN DAL context
15976 pEventData: pointer to the event information structure
15977
Jeff Johnson295189b2012-06-20 16:38:30 -070015978 @see
15979 @return Result of the function call
15980*/
15981WDI_Status
15982WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015983(
Jeff Johnson295189b2012-06-20 16:38:30 -070015984 WDI_ControlBlockType* pWDICtx,
15985 WDI_EventInfoType* pEventData
15986)
15987{
15988 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15989 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015991 wpt_uint16 usDataOffset = 0;
15992 wpt_uint16 usSendSize = 0;
15993 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15995
15996 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015997 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015998 -------------------------------------------------------------------------*/
15999 if (( NULL == pEventData ) ||
16000 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
16001 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
16002 {
16003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016004 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016005 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016006 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 }
16008
16009 /*-----------------------------------------------------------------------
16010 Get message buffer
16011 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016013 sizeof(halCfgAppsCpuWakeupStateReqParams),
16014 &pSendBuffer, &usDataOffset, &usSendSize))||
16015 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16016 {
16017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016018 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016019 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016022 }
16023
Jeff Johnsone7245742012-09-05 17:12:55 -070016024 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016025 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16026
Jeff Johnsone7245742012-09-05 17:12:55 -070016027 wpalMemoryCopy( pSendBuffer+usDataOffset,
16028 &halCfgAppsCpuWakeupStateReqParams,
16029 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016030
16031 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016032 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016033
16034 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016035 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016036 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016037 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16038 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16039 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016040}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16041
16042#ifdef WLAN_FEATURE_VOWIFI_11R
16043/**
16044 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16045 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016046
16047 @param pWDICtx: pointer to the WLAN DAL context
16048 pEventData: pointer to the event information structure
16049
Jeff Johnson295189b2012-06-20 16:38:30 -070016050 @see
16051 @return Result of the function call
16052*/
16053WDI_Status
16054WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016055(
Jeff Johnson295189b2012-06-20 16:38:30 -070016056 WDI_ControlBlockType* pWDICtx,
16057 WDI_EventInfoType* pEventData
16058)
16059{
16060 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16061 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016062 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016063 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016064 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 wpt_uint16 usDataOffset = 0;
16066 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016067 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016068 wpt_macAddr macBSSID;
16069 tAggrAddTsReq halAggrAddTsReq;
16070 int i;
16071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16072
16073 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016074 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016075 -------------------------------------------------------------------------*/
16076 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16077 ( NULL == pEventData->pCBfnc ))
16078 {
16079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016080 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016081 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016082 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 }
16084 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16085 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16086 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16087 /*-------------------------------------------------------------------------
16088 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016089 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016090 -------------------------------------------------------------------------*/
16091 wpalMutexAcquire(&pWDICtx->wptMutex);
16092
16093 /*------------------------------------------------------------------------
16094 Find the BSS for which the request is made and identify WDI session
16095 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016096 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16097 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016098 &macBSSID))
16099 {
16100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016101 "This station does not exist in the WDI Station Table %d",
16102 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016103 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016104 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 }
16106
Jeff Johnsone7245742012-09-05 17:12:55 -070016107 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16108 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016109 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16111 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16112 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016113
16114 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016115 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016116 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016117
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 /*------------------------------------------------------------------------
16119 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016120 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016121 ------------------------------------------------------------------------*/
16122 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16123 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16125 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16126 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016127
Jeff Johnsone7245742012-09-05 17:12:55 -070016128 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016129 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 }
16132
16133 wpalMutexRelease(&pWDICtx->wptMutex);
16134 /*-----------------------------------------------------------------------
16135 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016136 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 sizeof(tAggrAddTsParams),
16140 &pSendBuffer, &usDataOffset, &usSendSize))||
16141 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16142 {
16143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016144 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16146 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016147 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016148 }
16149
Jeff Johnsone7245742012-09-05 17:12:55 -070016150 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016151 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16154
16155 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16156 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016157 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016158 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16163 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016164 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016165 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16166 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016167 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016168 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16169 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016170 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016171 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16172 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016173 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016174 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16175 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016176 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016177 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16178 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016179 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016180 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16181 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016182 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016183 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16184 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016186 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016189
16190
16191 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16221 }
16222
Jeff Johnsone7245742012-09-05 17:12:55 -070016223 wpalMemoryCopy( pSendBuffer+usDataOffset,
16224 &halAggrAddTsReq,
16225 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016226
16227 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016228 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016229
16230 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016231 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016232 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016235 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016236}/*WDI_ProcessAggrAddTSpecReq*/
16237#endif /* WLAN_FEATURE_VOWIFI_11R */
16238
16239/**
16240 @brief Process Shutdown Request function (called when Main FSM
16241 allows it)
16242
16243 @param pWDICtx: pointer to the WLAN DAL context
16244 pEventData: pointer to the event information structure
16245
16246 @see
16247 @return Result of the function call
16248*/
16249WDI_Status
16250WDI_ProcessShutdownReq
16251(
16252 WDI_ControlBlockType* pWDICtx,
16253 WDI_EventInfoType* pEventData
16254 )
16255{
16256 wpt_status wptStatus;
16257
16258
16259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16260
16261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 -------------------------------------------------------------------------*/
16264 if ( NULL == pEventData )
16265 {
16266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016267 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016268 WDI_ASSERT(0);
16269 return WDI_STATUS_E_FAILURE;
16270 }
16271
16272 wpalMutexAcquire(&pWDICtx->wptMutex);
16273
16274
16275 gWDIInitialized = eWLAN_PAL_FALSE;
16276 /*! TO DO: stop the data services */
16277 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16278 {
16279 /*Stop the STA Table !UT- check this logic again
16280 It is safer to do it here than on the response - because a stop is imminent*/
16281 WDI_STATableStop(pWDICtx);
16282
16283 /* Stop Transport Driver, DXE */
16284 WDTS_Stop(pWDICtx);
16285 }
16286
16287 /*Clear all pending request*/
16288 WDI_ClearPendingRequests(pWDICtx);
16289 /* Close Data transport*/
16290 /* FTM mode does not open Data Path */
16291 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16292 {
16293 WDTS_Close(pWDICtx);
16294 }
16295 /*Close the STA Table !UT- check this logic again*/
16296 WDI_STATableClose(pWDICtx);
16297 /*close the PAL */
16298 wptStatus = wpalClose(pWDICtx->pPALContext);
16299 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16300 {
16301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16302 "Failed to wpal Close %d", wptStatus);
16303 WDI_ASSERT(0);
16304 }
16305
16306 /*Transition back to init state*/
16307 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16308
16309 wpalMutexRelease(&pWDICtx->wptMutex);
16310
16311 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016313
16314
Jeff Johnsone7245742012-09-05 17:12:55 -070016315 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016316}/*WDI_ProcessShutdownReq*/
16317
16318/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016319 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016320========================================================================*/
16321
16322/**
16323 @brief Process Start Response function (called when a response
16324 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016325
16326 @param pWDICtx: pointer to the WLAN DAL context
16327 pEventData: pointer to the event information structure
16328
Jeff Johnson295189b2012-06-20 16:38:30 -070016329 @see
16330 @return Result of the function call
16331*/
16332WDI_Status
16333WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016334(
Jeff Johnson295189b2012-06-20 16:38:30 -070016335 WDI_ControlBlockType* pWDICtx,
16336 WDI_EventInfoType* pEventData
16337)
16338{
16339 WDI_StartRspParamsType wdiRspParams;
16340 WDI_StartRspCb wdiStartRspCb = NULL;
16341
16342 tHalMacStartRspParams* startRspParams;
16343
16344#ifndef HAL_SELF_STA_PER_BSS
16345 WDI_AddStaParams wdiAddSTAParam = {0};
16346#endif
16347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16348
Jeff Johnsone7245742012-09-05 17:12:55 -070016349 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 -------------------------------------------------------------------------*/
16353 if (( NULL == pEventData ) ||
16354 ( NULL == pEventData->pEventData) ||
16355 ( NULL == wdiStartRspCb ))
16356 {
16357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016358 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016359 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016360 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 }
16362
16363 /*-------------------------------------------------------------------------
16364 Extract response and send it to UMAC
16365 -------------------------------------------------------------------------*/
16366 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16367 {
16368 // not enough data was received
16369 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016370 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016371 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16372 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016373 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016374 }
16375
16376 /*-------------------------------------------------------------------------
16377 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016378 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016379 -------------------------------------------------------------------------*/
16380 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16381
16382 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16383 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16384 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16385 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16386 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16387 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16388 wdiRspParams.wlanReportedVersion.major =
16389 startRspParams->wcnssWlanVersion.major;
16390 wdiRspParams.wlanReportedVersion.minor =
16391 startRspParams->wcnssWlanVersion.minor;
16392 wdiRspParams.wlanReportedVersion.version =
16393 startRspParams->wcnssWlanVersion.version;
16394 wdiRspParams.wlanReportedVersion.revision =
16395 startRspParams->wcnssWlanVersion.revision;
16396 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16397 startRspParams->wcnssCrmVersionString,
16398 sizeof(wdiRspParams.wcnssSoftwareVersion));
16399 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16400 startRspParams->wcnssWlanVersionString,
16401 sizeof(wdiRspParams.wcnssHardwareVersion));
16402 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16403
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016404 /*Save the HAL Version*/
16405 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16406
Jeff Johnson295189b2012-06-20 16:38:30 -070016407 wpalMutexAcquire(&pWDICtx->wptMutex);
16408 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16409 {
16410 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16411
16412 /*Cache the start response for further use*/
16413 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016414 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016415 sizeof(pWDICtx->wdiCachedStartRspParams));
16416
16417 }
16418 else
16419 {
16420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16421 "Failed to start device with status %s(%d)",
16422 WDI_getHALStatusMsgString(startRspParams->status),
16423 startRspParams->status);
16424
16425 /*Set the expected state transition to stopped - because the start has
16426 failed*/
16427 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16428
16429 wpalMutexRelease(&pWDICtx->wptMutex);
16430
16431 /*Notify UMAC*/
16432 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016433
Jeff Johnson295189b2012-06-20 16:38:30 -070016434 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016435 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016436
16437 /*Although the response is an error - it was processed by our function
16438 so as far as the caller is concerned this is a succesful reponse processing*/
16439 return WDI_STATUS_SUCCESS;
16440 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016441
Jeff Johnson295189b2012-06-20 16:38:30 -070016442 wpalMutexRelease(&pWDICtx->wptMutex);
16443
16444 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16445 {
16446 /* FTM mode does not need to execute below */
16447 /* Notify UMAC */
16448 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16449 return WDI_STATUS_SUCCESS;
16450 }
16451
16452 /* START the Data transport */
16453 WDTS_startTransport(pWDICtx);
16454
16455 /*Start the STA Table !- check this logic again*/
16456 WDI_STATableStart(pWDICtx);
16457
16458#ifndef HAL_SELF_STA_PER_BSS
16459 /* Store the Self STA Index */
16460 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16461
16462 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16463 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16464 WDI_MAC_ADDR_LEN);
16465
16466 /* At this point add the self-STA */
16467
16468 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16469 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16470 /*! TO DO: wdiAddSTAParam.dpuSig */
16471 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16472 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16473 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16474
16475 //all DPU indices are the same for self STA
16476 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16477 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016478 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016479 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16480 WDI_MAC_ADDR_LEN);
16481 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16482 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16483
16484 /* Note: Since we don't get an explicit config STA request for self STA, we
16485 add the self STA upon receiving the Start response message. But the
16486 self STA entry in the table is deleted when WDI gets an explicit delete STA
16487 request */
16488 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16489#endif
16490
16491 /*Notify UMAC*/
16492 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16493
Jeff Johnsone7245742012-09-05 17:12:55 -070016494 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016495}/*WDI_ProcessStartRsp*/
16496
16497
16498/**
16499 @brief Process Stop Response function (called when a response
16500 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016501
16502 @param pWDICtx: pointer to the WLAN DAL context
16503 pEventData: pointer to the event information structure
16504
Jeff Johnson295189b2012-06-20 16:38:30 -070016505 @see
16506 @return Result of the function call
16507*/
16508WDI_Status
16509WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016510(
Jeff Johnson295189b2012-06-20 16:38:30 -070016511 WDI_ControlBlockType* pWDICtx,
16512 WDI_EventInfoType* pEventData
16513)
16514{
16515 WDI_Status wdiStatus;
16516 WDI_StopRspCb wdiStopRspCb = NULL;
16517
Jeff Johnsone7245742012-09-05 17:12:55 -070016518 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016519 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16520
Jeff Johnsone7245742012-09-05 17:12:55 -070016521 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 -------------------------------------------------------------------------*/
16525 if (( NULL == pEventData ) ||
16526 ( NULL == pEventData->pEventData) ||
16527 ( NULL == wdiStopRspCb ))
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 Extract response and send it to UMAC
16537 -------------------------------------------------------------------------*/
16538 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16539 {
16540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016541 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016542 pEventData->uEventDataSize);
16543 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016544 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016545 }
16546
16547 /*-------------------------------------------------------------------------
16548 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016549 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016550 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16552 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016553 sizeof(halMacStopRspMsg.stopRspParams));
16554
Jeff Johnsone7245742012-09-05 17:12:55 -070016555 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016556
16557 wpalMutexAcquire(&pWDICtx->wptMutex);
16558
16559 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016560 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016561 --------------------------------------------------------------------------*/
16562 if ( WDI_STATUS_SUCCESS != wdiStatus )
16563 {
16564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16565 "Failed to stop the device with status %s (%d)",
16566 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16567 halMacStopRspMsg.stopRspParams.status);
16568
Jeff Johnsone7245742012-09-05 17:12:55 -070016569 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016570 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016571
Jeff Johnson295189b2012-06-20 16:38:30 -070016572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016573 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016575
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16577
16578 /*Transition now as WDI may get preempted imediately after it sends
16579 up the Stop Response and it will not get to process the state transition
16580 from Main Rsp function*/
16581 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16582 wpalMutexRelease(&pWDICtx->wptMutex);
16583
16584 /*! TO DO: - STOP the Data transport */
16585
16586 /*Notify UMAC*/
16587 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16588
Jeff Johnsone7245742012-09-05 17:12:55 -070016589 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016590}/*WDI_ProcessStopRsp*/
16591
16592/**
16593 @brief Process Close Rsp function (called when a response
16594 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016595
16596 @param pWDICtx: pointer to the WLAN DAL context
16597 pEventData: pointer to the event information structure
16598
Jeff Johnson295189b2012-06-20 16:38:30 -070016599 @see
16600 @return Result of the function call
16601*/
16602WDI_Status
16603WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016604(
Jeff Johnson295189b2012-06-20 16:38:30 -070016605 WDI_ControlBlockType* pWDICtx,
16606 WDI_EventInfoType* pEventData
16607)
16608{
16609 /*There is no close response comming from HAL - function just kept for
16610 simmetry */
16611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016613}/*WDI_ProcessCloseRsp*/
16614
16615
16616/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016617 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016618============================================================================*/
16619
16620/**
16621 @brief Process Init Scan Rsp function (called when a response
16622 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016623
16624 @param pWDICtx: pointer to the WLAN DAL context
16625 pEventData: pointer to the event information structure
16626
Jeff Johnson295189b2012-06-20 16:38:30 -070016627 @see
16628 @return Result of the function call
16629*/
16630WDI_Status
16631WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016632(
Jeff Johnson295189b2012-06-20 16:38:30 -070016633 WDI_ControlBlockType* pWDICtx,
16634 WDI_EventInfoType* pEventData
16635)
16636{
16637 WDI_Status wdiStatus;
16638 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016639 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016640 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016641 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16642
16643 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016645 -------------------------------------------------------------------------*/
16646 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16647 ( NULL == pEventData->pEventData))
16648 {
16649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016650 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016651 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016653 }
16654
16655 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16656 if( NULL == wdiInitScanRspCb)
16657 {
16658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016659 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016660 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016661 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016662 }
16663
16664 /*-------------------------------------------------------------------------
16665 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016666 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16669 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016670 sizeof(halInitScanRspMsg.initScanRspParams));
16671
Jeff Johnsone7245742012-09-05 17:12:55 -070016672 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016673
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016674 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070016675 {
16676 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016677 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16678 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16679 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016680 "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 -080016681 WDI_ASSERT(0);
16682 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016683 }
Abhishek Singha7d80b12016-02-03 15:27:20 +053016684 else if (WDI_STATUS_SUCCESS != wdiStatus)
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016685 {
16686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16687 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
16688 wdiStatus, pWDICtx->bInBmps);
16689 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016690
16691 /*Notify UMAC*/
16692 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16693
Jeff Johnsone7245742012-09-05 17:12:55 -070016694 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016695}/*WDI_ProcessInitScanRsp*/
16696
16697
16698/**
16699 @brief Process Start Scan Rsp function (called when a response
16700 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016701
16702 @param pWDICtx: pointer to the WLAN DAL context
16703 pEventData: pointer to the event information structure
16704
Jeff Johnson295189b2012-06-20 16:38:30 -070016705 @see
16706 @return Result of the function call
16707*/
16708WDI_Status
16709WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016710(
Jeff Johnson295189b2012-06-20 16:38:30 -070016711 WDI_ControlBlockType* pWDICtx,
16712 WDI_EventInfoType* pEventData
16713)
16714{
16715 WDI_StartScanRspParamsType wdiStartScanParams;
16716 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016717
16718 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16720
16721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016723 -------------------------------------------------------------------------*/
16724 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16725 ( NULL == pEventData->pEventData))
16726 {
16727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016728 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016729 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016730 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016731 }
16732
16733 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16734 if( NULL == wdiStartScanRspCb)
16735 {
16736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016737 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016738 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016739 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 }
16741
16742 /*-------------------------------------------------------------------------
16743 Extract response and send it to UMAC
16744 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016745 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16746 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016747 sizeof(halStartScanRspMsg.startScanRspParams));
16748
16749 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16750 halStartScanRspMsg.startScanRspParams.status);
16751#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016752 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016753 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 halStartScanRspMsg.startScanRspParams.startTSF,
16756 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016757#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016758
16759 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16760 {
16761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16762 "Start scan failed with status %s (%d)",
16763 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16764 halStartScanRspMsg.startScanRspParams.status);
16765 /* send the status to UMAC, don't return from here*/
16766 }
16767
16768 /*Notify UMAC*/
16769 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16770
Jeff Johnsone7245742012-09-05 17:12:55 -070016771 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016772
16773}/*WDI_ProcessStartScanRsp*/
16774
16775
16776/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016777 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016778 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016779
16780 @param pWDICtx: pointer to the WLAN DAL context
16781 pEventData: pointer to the event information structure
16782
Jeff Johnson295189b2012-06-20 16:38:30 -070016783 @see
16784 @return Result of the function call
16785*/
16786WDI_Status
16787WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016788(
Jeff Johnson295189b2012-06-20 16:38:30 -070016789 WDI_ControlBlockType* pWDICtx,
16790 WDI_EventInfoType* pEventData
16791)
16792{
16793 WDI_Status wdiStatus;
16794 tHalEndScanRspMsg halEndScanRspMsg;
16795 WDI_EndScanRspCb wdiEndScanRspCb;
16796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16797
16798 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016799 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 -------------------------------------------------------------------------*/
16801 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16802 ( NULL == pEventData->pEventData))
16803 {
16804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016805 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016806 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016807 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 }
16809
16810 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16811
16812 /*-------------------------------------------------------------------------
16813 Extract response and send it to UMAC
16814 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016815 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16816 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016817 sizeof(halEndScanRspMsg.endScanRspParams));
16818
Jeff Johnsone7245742012-09-05 17:12:55 -070016819 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016820
16821 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16822 {
16823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16824 "End Scan failed with status %s (%d )",
16825 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16826 halEndScanRspMsg.endScanRspParams.status);
16827 /* send the status to UMAC, don't return from here*/
16828 }
16829
16830 /*Notify UMAC*/
16831 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16832
Jeff Johnsone7245742012-09-05 17:12:55 -070016833 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016834}/*WDI_ProcessEndScanRsp*/
16835
16836
16837/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016838 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016839 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016840
16841 @param pWDICtx: pointer to the WLAN DAL context
16842 pEventData: pointer to the event information structure
16843
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 @see
16845 @return Result of the function call
16846*/
16847WDI_Status
16848WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016849(
Jeff Johnson295189b2012-06-20 16:38:30 -070016850 WDI_ControlBlockType* pWDICtx,
16851 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016852)
Jeff Johnson295189b2012-06-20 16:38:30 -070016853{
16854 WDI_Status wdiStatus;
16855 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016856
16857 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16859
16860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016862 -------------------------------------------------------------------------*/
16863 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16864 ( NULL == pEventData->pEventData))
16865 {
16866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016867 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016868 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016869 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 }
16871
16872 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16873
16874 /*-------------------------------------------------------------------------
16875 Extract response and send it to UMAC
16876 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016877 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16878 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016879 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16880
Jeff Johnsone7245742012-09-05 17:12:55 -070016881 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016882
16883 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016884 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016885 halFinishScanRspMsg.finishScanRspParams.status);
16886
16887 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16888 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16889 {
16890 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16891 "Finish Scan failed with status %s (%d)",
16892 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16893 halFinishScanRspMsg.finishScanRspParams.status);
16894 /* send the status to UMAC, don't return from here*/
16895 }
16896
16897 /*Notify UMAC*/
16898 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16899
Jeff Johnsone7245742012-09-05 17:12:55 -070016900 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016901}/*WDI_ProcessFinishScanRsp*/
16902
16903/**
16904 @brief Process Join Response function (called when a response
16905 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016906
16907 @param pWDICtx: pointer to the WLAN DAL context
16908 pEventData: pointer to the event information structure
16909
Jeff Johnson295189b2012-06-20 16:38:30 -070016910 @see
16911 @return Result of the function call
16912*/
16913WDI_Status
16914WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016915(
Jeff Johnson295189b2012-06-20 16:38:30 -070016916 WDI_ControlBlockType* pWDICtx,
16917 WDI_EventInfoType* pEventData
16918)
16919{
16920 WDI_Status wdiStatus;
16921 WDI_JoinRspCb wdiJoinRspCb;
16922 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016923
16924 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016925 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16926
16927 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016928 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016929 -------------------------------------------------------------------------*/
16930 if (( NULL == pWDICtx ) ||
16931 ( NULL == pWDICtx->pfncRspCB ) ||
16932 ( NULL == pEventData ) ||
16933 ( NULL == pEventData->pEventData))
16934 {
16935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016936 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016937 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016938 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 }
16940
16941 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16942
16943 /*-------------------------------------------------------------------------
16944 Extract response and send it to UMAC
16945 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016946 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16947 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016948 sizeof(halJoinRspMsg.joinRspParams));
16949
Jeff Johnsone7245742012-09-05 17:12:55 -070016950 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016951
16952 wpalMutexAcquire(&pWDICtx->wptMutex);
16953
16954 /*-----------------------------------------------------------------------
16955 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016956 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016958 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16960 {
16961 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016962 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16963 "association no longer in progress %d - mysterious HAL response",
16964 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016965
Jeff Johnsone7245742012-09-05 17:12:55 -070016966 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016967 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016968 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 }
16970
16971 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16972
16973 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016974 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016975 -----------------------------------------------------------------------*/
16976 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16977 {
16978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16979 "Join only allowed in Joining state - failure state is %d "
16980 "strange HAL response", pBSSSes->wdiAssocState);
16981
Jeff Johnsone7245742012-09-05 17:12:55 -070016982 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16983
Jeff Johnson295189b2012-06-20 16:38:30 -070016984 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016985 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016986 }
16987
16988
16989 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016990 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016991 -----------------------------------------------------------------------*/
16992 if ( WDI_STATUS_SUCCESS != wdiStatus )
16993 {
16994 /*Association was failed by HAL - remove session*/
16995 WDI_DeleteSession(pWDICtx, pBSSSes);
16996
16997 /*Association no longer in progress */
16998 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
16999
17000 /*Association no longer in progress - prepare pending assoc for processing*/
17001 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070017002
Jeff Johnson295189b2012-06-20 16:38:30 -070017003 }
17004 else
17005 {
17006 /*Transition to state Joining - this may be redundant as we are supposed
17007 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017008 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017009 }
17010
17011 wpalMutexRelease(&pWDICtx->wptMutex);
17012
17013 /*Notify UMAC*/
17014 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17015
Jeff Johnsone7245742012-09-05 17:12:55 -070017016 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017017}/*WDI_ProcessJoinRsp*/
17018
17019
17020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017021 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017022 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017023
17024 @param pWDICtx: pointer to the WLAN DAL context
17025 pEventData: pointer to the event information structure
17026
Jeff Johnson295189b2012-06-20 16:38:30 -070017027 @see
17028 @return Result of the function call
17029*/
17030WDI_Status
17031WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017032(
Jeff Johnson295189b2012-06-20 16:38:30 -070017033 WDI_ControlBlockType* pWDICtx,
17034 WDI_EventInfoType* pEventData
17035)
17036{
17037 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17038 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017040 WDI_BSSSessionType* pBSSSes = NULL;
17041
Jeff Johnsone7245742012-09-05 17:12:55 -070017042 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017043 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17044 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017045
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17047
17048 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017049 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017050 -------------------------------------------------------------------------*/
17051 if (( NULL == pEventData ) ||
17052 ( NULL == pEventData->pEventData))
17053 {
17054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017055 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 }
17059
17060 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17061
17062 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017065 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17066 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017067 sizeof(halConfigBssRspMsg.configBssRspParams));
17068
17069 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17070 halConfigBssRspMsg.configBssRspParams.status);
17071 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17072 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017073 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017074 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17075 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017076
Jeff Johnson295189b2012-06-20 16:38:30 -070017077 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017078
17079 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017081
17082 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017083 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017084
Jeff Johnson295189b2012-06-20 16:38:30 -070017085 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017086
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017088 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17090 #endif
17091 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17092 halConfigBssRspMsg.configBssRspParams.staMac,
17093 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017094
Jeff Johnson295189b2012-06-20 16:38:30 -070017095 wpalMutexAcquire(&pWDICtx->wptMutex);
17096 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017097 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017098 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17100 wdiConfigBSSParams.macBSSID,
17101 &pBSSSes);
17102
Jeff Johnson295189b2012-06-20 16:38:30 -070017103 /*-----------------------------------------------------------------------
17104 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017105 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017106 -----------------------------------------------------------------------*/
17107 if ( NULL == pBSSSes )
17108 {
17109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17110 "Association sequence for this BSS does not yet exist "
17111 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017112
17113 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17114
Jeff Johnson295189b2012-06-20 16:38:30 -070017115 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017116 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017118
Jeff Johnson295189b2012-06-20 16:38:30 -070017119 /*Save data for this BSS*/
17120 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17121 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017122 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017123 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017124 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017126 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017127 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017128 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017129 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017131 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17132 pBSSSes->bcastStaIdx =
17133 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017134
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017136
Jeff Johnson295189b2012-06-20 16:38:30 -070017137 /*-------------------------------------------------------------------------
17138 Add Peer STA
17139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017140 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017141 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17142 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017143
Jeff Johnson295189b2012-06-20 16:38:30 -070017144 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017145 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017146 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 wdiAddSTAParam.ucHTCapable =
17148 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17149 wdiAddSTAParam.ucStaType =
17150 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17151
Jeff Johnson295189b2012-06-20 16:38:30 -070017152 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017153 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17154 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017155 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017156
17157 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17158 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17159 WDI_MAC_ADDR_LEN);
17160
Jeff Johnson295189b2012-06-20 16:38:30 -070017161 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017164 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017165 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017168 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017170 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017171 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017172 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017174
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17176 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017177
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17179 /*-------------------------------------------------------------------------
17180 Add Broadcast STA only in AP mode
17181 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017182 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017183 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 {
17185 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17186 "Add BCAST STA to table for index: %d",
17187 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017188
17189 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017190 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017191
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17193 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17194 }
17195 wpalMutexRelease(&pWDICtx->wptMutex);
17196 }
17197 else
17198 {
17199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17200 "Config BSS RSP failed with status : %s(%d)",
17201 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017202 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017203 halConfigBssRspMsg.configBssRspParams.status);
17204
Jeff Johnsone7245742012-09-05 17:12:55 -070017205
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 /*Association was failed by HAL - remove session*/
17207 WDI_DeleteSession(pWDICtx, pBSSSes);
17208
17209 /*Association no longer in progress */
17210 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17211
17212 /*Association no longer in progress - prepare pending assoc for processing*/
17213 WDI_DequeueAssocRequest(pWDICtx);
17214
17215 }
17216
17217 /*Notify UMAC*/
17218 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17219
Jeff Johnsone7245742012-09-05 17:12:55 -070017220 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017221}/*WDI_ProcessConfigBSSRsp*/
17222
17223
17224/**
17225 @brief Process Del BSS Response function (called when a response
17226 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017227
17228 @param pWDICtx: pointer to the WLAN DAL context
17229 pEventData: pointer to the event information structure
17230
Jeff Johnson295189b2012-06-20 16:38:30 -070017231 @see
17232 @return Result of the function call
17233*/
17234WDI_Status
17235WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017236(
Jeff Johnson295189b2012-06-20 16:38:30 -070017237 WDI_ControlBlockType* pWDICtx,
17238 WDI_EventInfoType* pEventData
17239)
17240{
17241 WDI_DelBSSRspParamsType wdiDelBSSParams;
17242 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017243 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 WDI_BSSSessionType* pBSSSes = NULL;
17245
Jeff Johnsone7245742012-09-05 17:12:55 -070017246 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017247 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17248
17249 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017250 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017251 -------------------------------------------------------------------------*/
17252 if (( NULL == pEventData ) ||
17253 ( NULL == pEventData->pEventData))
17254 {
17255 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017256 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017257 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017258 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017259 }
17260
17261 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17262
17263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017264 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017265 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017266 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17267 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017268 sizeof(halDelBssRspMsg.deleteBssRspParams));
17269
17270
17271 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017272 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017273
17274 wpalMutexAcquire(&pWDICtx->wptMutex);
17275
17276 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017277 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017278 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17280 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17281 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017282
17283 /*-----------------------------------------------------------------------
17284 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017285 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017286 -----------------------------------------------------------------------*/
17287 if ( NULL == pBSSSes )
17288 {
17289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17290 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017291 "association no longer in progress - mysterious HAL response");
17292
17293 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17294
17295 wpalMutexRelease(&pWDICtx->wptMutex);
17296 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017297 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017298
17299 /*Extract BSSID for the response to UMAC*/
17300 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17301 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17302
17303 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17304
17305 /*-----------------------------------------------------------------------
17306 The current session will be deleted
17307 -----------------------------------------------------------------------*/
17308 WDI_DeleteSession(pWDICtx, pBSSSes);
17309
17310
17311 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017312 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17313 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017314 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017315 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017316 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017317
17318 /* Delete the STA's in this BSS */
17319 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17320
Jeff Johnson295189b2012-06-20 16:38:30 -070017321 wpalMutexRelease(&pWDICtx->wptMutex);
17322
17323 /*Notify UMAC*/
17324 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17325
Jeff Johnsone7245742012-09-05 17:12:55 -070017326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017327}/*WDI_ProcessDelBSSRsp*/
17328
17329/**
17330 @brief Process Post Assoc Rsp function (called when a response
17331 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017332
17333 @param pWDICtx: pointer to the WLAN DAL context
17334 pEventData: pointer to the event information structure
17335
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 @see
17337 @return Result of the function call
17338*/
17339WDI_Status
17340WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017341(
Jeff Johnson295189b2012-06-20 16:38:30 -070017342 WDI_ControlBlockType* pWDICtx,
17343 WDI_EventInfoType* pEventData
17344)
17345{
17346 WDI_PostAssocRspParamsType wdiPostAssocParams;
17347 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017348 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017349 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17352
17353 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017354 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017355 -------------------------------------------------------------------------*/
17356 if (( NULL == pEventData ) ||
17357 ( NULL == pEventData->pEventData))
17358 {
17359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 }
17364
17365 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17366
17367 /*-------------------------------------------------------------------------
17368 Extract response and send it to UMAC
17369 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017370 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17371 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017372 sizeof(halPostAssocRspMsg.postAssocRspParams));
17373
17374 /*Extract the Post Assoc STA Params */
17375
Jeff Johnsone7245742012-09-05 17:12:55 -070017376 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017377 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017378 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17382
Jeff Johnsone7245742012-09-05 17:12:55 -070017383 wdiPostAssocParams.wdiStatus =
17384 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017385
17386 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17387 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017388 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17389 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017390 WDI_MAC_ADDR_LEN);
17391
17392 /* Extract Post Assoc BSS Params */
17393
Jeff Johnsone7245742012-09-05 17:12:55 -070017394 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17395 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17396 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017397
17398 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17399 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017400 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017401 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17402 .macSTA, WDI_MAC_ADDR_LEN);
17403
Jeff Johnsone7245742012-09-05 17:12:55 -070017404 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017405 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17406
Jeff Johnsone7245742012-09-05 17:12:55 -070017407 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017408 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17409
17410 wdiPostAssocParams.bssParams.ucBSSIdx =
17411 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17412
Jeff Johnsone7245742012-09-05 17:12:55 -070017413 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017414 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17415
17416 wpalMutexAcquire(&pWDICtx->wptMutex);
17417
17418 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017419 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017420 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017423 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017424
17425 /*-----------------------------------------------------------------------
17426 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017427 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017428 -----------------------------------------------------------------------*/
17429 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017430 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17432 {
17433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17434 "Association sequence for this BSS does not yet exist or "
17435 "association no longer in progress - mysterious HAL response");
17436
Jeff Johnsone7245742012-09-05 17:12:55 -070017437 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17438
Jeff Johnson295189b2012-06-20 16:38:30 -070017439 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017440 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 }
17442
17443 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017444 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017445 -----------------------------------------------------------------------*/
17446 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17447 {
17448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17449 "Post Assoc not allowed before JOIN - failing request "
17450 "strange HAL response");
17451
Jeff Johnsone7245742012-09-05 17:12:55 -070017452 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17453
Jeff Johnson295189b2012-06-20 16:38:30 -070017454 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017456 }
17457
17458 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017460 -----------------------------------------------------------------------*/
17461 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17462 {
17463 /*Association was failed by HAL - remove session*/
17464 WDI_DeleteSession(pWDICtx, pBSSSes);
17465 }
17466 else
17467 {
17468 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017469 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017470
17471 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017472 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017473 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017474 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017476 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017478 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17480
Jeff Johnsone7245742012-09-05 17:12:55 -070017481 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017482 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17483 }
17484
17485 /*Association no longer in progress */
17486 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17487
17488 /*Association no longer in progress - prepare pending assoc for processing*/
17489 WDI_DequeueAssocRequest(pWDICtx);
17490
17491 wpalMutexRelease(&pWDICtx->wptMutex);
17492
17493 /*Notify UMAC*/
17494 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17495
Jeff Johnsone7245742012-09-05 17:12:55 -070017496 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017497}/*WDI_ProcessPostAssocRsp*/
17498
17499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017500 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017501 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017502
17503 @param pWDICtx: pointer to the WLAN DAL context
17504 pEventData: pointer to the event information structure
17505
Jeff Johnson295189b2012-06-20 16:38:30 -070017506 @see
17507 @return Result of the function call
17508*/
17509WDI_Status
17510WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017511(
Jeff Johnson295189b2012-06-20 16:38:30 -070017512 WDI_ControlBlockType* pWDICtx,
17513 WDI_EventInfoType* pEventData
17514)
17515{
17516 WDI_DelSTARspParamsType wdiDelSTARsp;
17517 WDI_DelSTARspCb wdiDelSTARspCb;
17518 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17521
17522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017524 -------------------------------------------------------------------------*/
17525 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17526 ( NULL == pEventData->pEventData))
17527 {
17528 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017529 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017531 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 }
17533
17534 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17535
17536 /*-------------------------------------------------------------------------
17537 Extract response and send it to UMAC
17538 -------------------------------------------------------------------------*/
17539 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017540 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017541 sizeof(halDelStaRspMsg.delStaRspParams));
17542
17543 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 wdiDelSTARsp.wdiStatus =
17545 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017546
17547 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17548
17549 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17550 if(staType == WDI_STA_ENTRY_SELF)
17551 {
17552 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17553
17554 /* At this point add the self-STA */
17555
17556 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17557 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17558 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17559
17560#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17561#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17562
17563 //all DPU indices are the same for self STA
17564 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17565 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17566 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17567 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17568 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17569 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017570
17571 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017572 }
17573 else
17574 {
17575 //Delete the station in the table
17576 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17577 }
17578
17579 /*Notify UMAC*/
17580 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17581
Jeff Johnsone7245742012-09-05 17:12:55 -070017582 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017583}/*WDI_ProcessDelSTARsp*/
17584
17585
17586/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017587 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017588==========================================================================*/
17589
17590/**
17591 @brief Process Set BSS Key Rsp function (called when a response
17592 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017593
17594 @param pWDICtx: pointer to the WLAN DAL context
17595 pEventData: pointer to the event information structure
17596
Jeff Johnson295189b2012-06-20 16:38:30 -070017597 @see
17598 @return Result of the function call
17599*/
17600WDI_Status
17601WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017602(
Jeff Johnson295189b2012-06-20 16:38:30 -070017603 WDI_ControlBlockType* pWDICtx,
17604 WDI_EventInfoType* pEventData
17605)
17606{
17607 WDI_Status wdiStatus;
17608 eHalStatus halStatus;
17609 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17611
17612 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017613 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017614 -------------------------------------------------------------------------*/
17615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17616 ( NULL == pEventData->pEventData))
17617 {
17618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 }
17623
17624 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17625
17626 /*-------------------------------------------------------------------------
17627 Extract response and send it to UMAC
17628 -------------------------------------------------------------------------*/
17629 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017630 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017631
17632 if ( eHAL_STATUS_SUCCESS != halStatus )
17633 {
17634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17635 "Set BSS Key failed with status %s (%d)",
17636 WDI_getHALStatusMsgString(halStatus),
17637 halStatus);
17638 /* send the status to UMAC, don't return from here*/
17639 }
17640
17641 /*Notify UMAC*/
17642 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17643
Jeff Johnsone7245742012-09-05 17:12:55 -070017644 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017645}/*WDI_ProcessSetBssKeyRsp*/
17646
17647/**
17648 @brief Process Remove BSS Key Rsp function (called when a response
17649 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017650
17651 @param pWDICtx: pointer to the WLAN DAL context
17652 pEventData: pointer to the event information structure
17653
Jeff Johnson295189b2012-06-20 16:38:30 -070017654 @see
17655 @return Result of the function call
17656*/
17657WDI_Status
17658WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017659(
Jeff Johnson295189b2012-06-20 16:38:30 -070017660 WDI_ControlBlockType* pWDICtx,
17661 WDI_EventInfoType* pEventData
17662)
17663{
17664 WDI_Status wdiStatus;
17665 eHalStatus halStatus;
17666 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17668
17669 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017670 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017671 -------------------------------------------------------------------------*/
17672 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17673 ( NULL == pEventData->pEventData))
17674 {
17675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017676 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017678 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 }
17680
17681 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17682
17683 /*-------------------------------------------------------------------------
17684 Extract response and send it to UMAC
17685 -------------------------------------------------------------------------*/
17686 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017687 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017688
17689 if ( eHAL_STATUS_SUCCESS != halStatus )
17690 {
17691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17692 "Remove BSS Key failed with status %s (%d )",
17693 WDI_getHALStatusMsgString(halStatus),
17694 halStatus);
17695 /* send the status to UMAC, don't return from here*/
17696 }
17697
17698 /*Notify UMAC*/
17699 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17700
Jeff Johnsone7245742012-09-05 17:12:55 -070017701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017702}/*WDI_ProcessSetBssKeyRsp*/
17703
17704
17705/**
17706 @brief Process Set STA Key Rsp function (called when a response
17707 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017708
17709 @param pWDICtx: pointer to the WLAN DAL context
17710 pEventData: pointer to the event information structure
17711
Jeff Johnson295189b2012-06-20 16:38:30 -070017712 @see
17713 @return Result of the function call
17714*/
17715WDI_Status
17716WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017717(
Jeff Johnson295189b2012-06-20 16:38:30 -070017718 WDI_ControlBlockType* pWDICtx,
17719 WDI_EventInfoType* pEventData
17720)
17721{
17722 WDI_Status wdiStatus;
17723 eHalStatus halStatus;
17724 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17726
17727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017729 -------------------------------------------------------------------------*/
17730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17731 ( NULL == pEventData->pEventData))
17732 {
17733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017735 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 }
17738
17739 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17740
17741 /*-------------------------------------------------------------------------
17742 Extract response and send it to UMAC
17743 -------------------------------------------------------------------------*/
17744 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017745 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017746
17747 if ( eHAL_STATUS_SUCCESS != halStatus )
17748 {
17749 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17750 "Set STA Key failed with status %s (%d)",
17751 WDI_getHALStatusMsgString(halStatus),
17752 halStatus);
17753 /* send the status to UMAC, don't return from here*/
17754 }
17755
17756 /*Notify UMAC*/
17757 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17758
Jeff Johnsone7245742012-09-05 17:12:55 -070017759 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017760}/*WDI_ProcessSetSTAKeyRsp*/
17761
17762/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017763 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017764 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017765
17766 @param pWDICtx: pointer to the WLAN DAL context
17767 pEventData: pointer to the event information structure
17768
Jeff Johnson295189b2012-06-20 16:38:30 -070017769 @see
17770 @return Result of the function call
17771*/
17772WDI_Status
17773WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017774(
Jeff Johnson295189b2012-06-20 16:38:30 -070017775 WDI_ControlBlockType* pWDICtx,
17776 WDI_EventInfoType* pEventData
17777)
17778{
17779 WDI_Status wdiStatus;
17780 eHalStatus halStatus;
17781 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17783
17784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017786 -------------------------------------------------------------------------*/
17787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17788 ( NULL == pEventData->pEventData))
17789 {
17790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017794 }
17795
17796 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17797
17798 /*-------------------------------------------------------------------------
17799 Extract response and send it to UMAC
17800 -------------------------------------------------------------------------*/
17801 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017802 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017803
17804 if ( eHAL_STATUS_SUCCESS != halStatus )
17805 {
17806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17807 "Remove STA Key failed with status %s (%d)",
17808 WDI_getHALStatusMsgString(halStatus),
17809 halStatus);
17810 /* send the status to UMAC, don't return from here*/
17811 }
17812
17813 /*Notify UMAC*/
17814 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17815
Jeff Johnsone7245742012-09-05 17:12:55 -070017816 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017817}/*WDI_ProcessRemoveStaKeyRsp*/
17818
17819/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017820 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017821 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017822
17823 @param pWDICtx: pointer to the WLAN DAL context
17824 pEventData: pointer to the event information structure
17825
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 @see
17827 @return Result of the function call
17828*/
17829WDI_Status
17830WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017831(
Jeff Johnson295189b2012-06-20 16:38:30 -070017832 WDI_ControlBlockType* pWDICtx,
17833 WDI_EventInfoType* pEventData
17834)
17835{
17836 WDI_Status wdiStatus;
17837 eHalStatus halStatus;
17838 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17840
17841 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017842 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017843 -------------------------------------------------------------------------*/
17844 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17845 ( NULL == pEventData->pEventData))
17846 {
17847 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017848 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017849 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017850 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017851 }
17852
17853 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17854
17855 /*-------------------------------------------------------------------------
17856 Extract response and send it to UMAC
17857 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017858 wpalMemoryCopy( &halStatus,
17859 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017860 sizeof(halStatus));
17861
Jeff Johnsone7245742012-09-05 17:12:55 -070017862 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017863
17864 if ( eHAL_STATUS_SUCCESS != halStatus )
17865 {
17866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17867 "Set STA Key failed with status %s (%d)",
17868 WDI_getHALStatusMsgString(halStatus),
17869 halStatus);
17870 /* send the status to UMAC, don't return from here*/
17871 }
17872
17873 /*Notify UMAC*/
17874 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17875
Jeff Johnsone7245742012-09-05 17:12:55 -070017876 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017877}/*WDI_ProcessSetSTABcastKeyRsp*/
17878
17879/**
17880 @brief Process Remove STA Bcast Key Rsp function (called when a
17881 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017882
17883 @param pWDICtx: pointer to the WLAN DAL context
17884 pEventData: pointer to the event information structure
17885
Jeff Johnson295189b2012-06-20 16:38:30 -070017886 @see
17887 @return Result of the function call
17888*/
17889WDI_Status
17890WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017891(
Jeff Johnson295189b2012-06-20 16:38:30 -070017892 WDI_ControlBlockType* pWDICtx,
17893 WDI_EventInfoType* pEventData
17894)
17895{
17896 WDI_Status wdiStatus;
17897 eHalStatus halStatus;
17898 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17900
17901 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017902 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017903 -------------------------------------------------------------------------*/
17904 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17905 ( NULL == pEventData->pEventData))
17906 {
17907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017908 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017909 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017910 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 }
17912
17913 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17914
17915 /*-------------------------------------------------------------------------
17916 Extract response and send it to UMAC
17917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017918 wpalMemoryCopy( &halStatus,
17919 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017920 sizeof(halStatus));
17921
Jeff Johnsone7245742012-09-05 17:12:55 -070017922 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017923
17924 if ( eHAL_STATUS_SUCCESS != halStatus )
17925 {
17926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17927 "Remove STA Key failed with status %s (%d)",
17928 WDI_getHALStatusMsgString(halStatus),
17929 halStatus);
17930 /* send the status to UMAC, don't return from here*/
17931 }
17932
17933 /*Notify UMAC*/
17934 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17935
Jeff Johnsone7245742012-09-05 17:12:55 -070017936 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017937}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17938
17939
17940/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017941 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017942==========================================================================*/
17943
17944/**
17945 @brief Process Add TSpec Rsp function (called when a response
17946 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017947
17948 @param pWDICtx: pointer to the WLAN DAL context
17949 pEventData: pointer to the event information structure
17950
Jeff Johnson295189b2012-06-20 16:38:30 -070017951 @see
17952 @return Result of the function call
17953*/
17954WDI_Status
17955WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017956(
Jeff Johnson295189b2012-06-20 16:38:30 -070017957 WDI_ControlBlockType* pWDICtx,
17958 WDI_EventInfoType* pEventData
17959)
17960{
17961 WDI_Status wdiStatus;
17962 eHalStatus halStatus;
17963 WDI_AddTsRspCb wdiAddTsRspCb;
17964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17965
17966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017968 -------------------------------------------------------------------------*/
17969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17970 ( NULL == pEventData->pEventData))
17971 {
17972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 }
17977
17978 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17979
17980 /*-------------------------------------------------------------------------
17981 Extract response and send it to UMAC
17982 -------------------------------------------------------------------------*/
17983 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017984 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017985
17986 /*Notify UMAC*/
17987 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17988
Jeff Johnsone7245742012-09-05 17:12:55 -070017989 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017990}/*WDI_ProcessAddTSpecRsp*/
17991
17992
Sunil Duttbd736ed2014-05-26 21:19:41 +053017993
17994#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17995
17996WDI_Status
17997WDI_ProcessLLStatsSetRsp
17998(
17999 WDI_ControlBlockType* pWDICtx,
18000 WDI_EventInfoType* pEventData
18001)
18002{
18003 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
18004
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018006 "%s: Enter ", __func__);
18007 /*-------------------------------------------------------------------------
18008 Sanity check
18009 -------------------------------------------------------------------------*/
18010 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18011 ( NULL == pEventData->pEventData))
18012 {
18013 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18014 "%s: Invalid parameters", __func__);
18015 WDI_ASSERT(0);
18016 return WDI_STATUS_E_FAILURE;
18017 }
18018
18019 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18020
18021 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18022
18023 return WDI_STATUS_SUCCESS;
18024}
18025
18026WDI_Status
18027WDI_ProcessLLStatsGetRsp
18028(
18029 WDI_ControlBlockType* pWDICtx,
18030 WDI_EventInfoType* pEventData
18031)
18032{
18033 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18034
18035 /*-------------------------------------------------------------------------
18036 Sanity check
18037 -------------------------------------------------------------------------*/
18038 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18039 ( NULL == pEventData->pEventData))
18040 {
18041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18042 "%s: Invalid parameters", __func__);
18043 WDI_ASSERT(0);
18044 return WDI_STATUS_E_FAILURE;
18045 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018047 "%s: Enter ", __func__);
18048
18049 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18050
18051 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18052
18053 return WDI_STATUS_SUCCESS;
18054}
18055
18056WDI_Status
18057WDI_ProcessLLStatsClearRsp
18058(
18059 WDI_ControlBlockType* pWDICtx,
18060 WDI_EventInfoType* pEventData
18061)
18062{
18063 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18064
18065 /*-------------------------------------------------------------------------
18066 Sanity check
18067 -------------------------------------------------------------------------*/
18068 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18069 ( NULL == pEventData->pEventData))
18070 {
18071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18072 "%s: Invalid parameters", __func__);
18073 WDI_ASSERT(0);
18074 return WDI_STATUS_E_FAILURE;
18075 }
18076
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018077 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018078 "%s: CLEAR RESPONSE CALL BACK", __func__);
18079 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18080
18081 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18082
18083 return WDI_STATUS_SUCCESS;
18084}
18085#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18086
Jeff Johnson295189b2012-06-20 16:38:30 -070018087/**
18088 @brief Process Del TSpec Rsp function (called when a response
18089 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018090
18091 @param pWDICtx: pointer to the WLAN DAL context
18092 pEventData: pointer to the event information structure
18093
Jeff Johnson295189b2012-06-20 16:38:30 -070018094 @see
18095 @return Result of the function call
18096*/
18097WDI_Status
18098WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018099(
Jeff Johnson295189b2012-06-20 16:38:30 -070018100 WDI_ControlBlockType* pWDICtx,
18101 WDI_EventInfoType* pEventData
18102)
18103{
18104 WDI_Status wdiStatus;
18105 eHalStatus halStatus;
18106 WDI_DelTsRspCb wdiDelTsRspCb;
18107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18108
18109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018111 -------------------------------------------------------------------------*/
18112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18113 ( NULL == pEventData->pEventData))
18114 {
18115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018119 }
18120
18121 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18122
18123 /*-------------------------------------------------------------------------
18124 Extract response and send it to UMAC
18125 -------------------------------------------------------------------------*/
18126 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018127 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018128
18129 /*Notify UMAC*/
18130 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18131
Jeff Johnsone7245742012-09-05 17:12:55 -070018132 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018133}/*WDI_ProcessDelTSpecRsp*/
18134
18135/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018136 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018137 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018138
18139 @param pWDICtx: pointer to the WLAN DAL context
18140 pEventData: pointer to the event information structure
18141
Jeff Johnson295189b2012-06-20 16:38:30 -070018142 @see
18143 @return Result of the function call
18144*/
18145WDI_Status
18146WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018147(
Jeff Johnson295189b2012-06-20 16:38:30 -070018148 WDI_ControlBlockType* pWDICtx,
18149 WDI_EventInfoType* pEventData
18150)
18151{
18152 WDI_Status wdiStatus;
18153 eHalStatus halStatus;
18154 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18156
18157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018159 -------------------------------------------------------------------------*/
18160 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18161 ( NULL == pEventData->pEventData))
18162 {
18163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 }
18168
18169 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18170
18171 /*-------------------------------------------------------------------------
18172 Extract response and send it to UMAC
18173 -------------------------------------------------------------------------*/
18174 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018175 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018176
18177 /*Notify UMAC*/
18178 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18179
Jeff Johnsone7245742012-09-05 17:12:55 -070018180 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018181}/*WDI_ProcessUpdateEDCAParamsRsp*/
18182
18183
18184/**
18185 @brief Process Add BA Rsp function (called when a response
18186 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018187
18188 @param pWDICtx: pointer to the WLAN DAL context
18189 pEventData: pointer to the event information structure
18190
Jeff Johnson295189b2012-06-20 16:38:30 -070018191 @see
18192 @return Result of the function call
18193*/
18194WDI_Status
18195WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018196(
Jeff Johnson295189b2012-06-20 16:38:30 -070018197 WDI_ControlBlockType* pWDICtx,
18198 WDI_EventInfoType* pEventData
18199)
18200{
18201 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18202
18203 tAddBASessionRspParams halBASessionRsp;
18204 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18205
Jeff Johnsone7245742012-09-05 17:12:55 -070018206
Jeff Johnson295189b2012-06-20 16:38:30 -070018207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18208
18209 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018210 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018211 -------------------------------------------------------------------------*/
18212 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18213 ( NULL == pEventData->pEventData))
18214 {
18215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018218 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 }
18220
18221 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18222
18223 /*-------------------------------------------------------------------------
18224 Extract response and send it to UMAC
18225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018226 wpalMemoryCopy( &halBASessionRsp,
18227 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018228 sizeof(halBASessionRsp));
18229
18230 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18231
Jeff Johnson43971f52012-07-17 12:26:56 -070018232 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018233 {
18234 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18235 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18236 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18237 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18238 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18239 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18240 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18241 }
18242
18243 /*Notify UMAC*/
18244 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18245
Jeff Johnsone7245742012-09-05 17:12:55 -070018246 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018247}/*WDI_ProcessAddSessionBARsp*/
18248
18249
18250/**
18251 @brief Process Del BA Rsp function (called when a response
18252 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018253
18254 @param pWDICtx: pointer to the WLAN DAL context
18255 pEventData: pointer to the event information structure
18256
Jeff Johnson295189b2012-06-20 16:38:30 -070018257 @see
18258 @return Result of the function call
18259*/
18260WDI_Status
18261WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018262(
Jeff Johnson295189b2012-06-20 16:38:30 -070018263 WDI_ControlBlockType* pWDICtx,
18264 WDI_EventInfoType* pEventData
18265)
18266{
18267 WDI_Status wdiStatus;
18268 eHalStatus halStatus;
18269 WDI_DelBARspCb wdiDelBARspCb;
18270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18271
18272 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018273 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018274 -------------------------------------------------------------------------*/
18275 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18276 ( NULL == pEventData->pEventData))
18277 {
18278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018279 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018281 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 }
18283
18284 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18285
18286 /*-------------------------------------------------------------------------
18287 Extract response and send it to UMAC
18288 -------------------------------------------------------------------------*/
18289 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018290 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018291
18292 if ( eHAL_STATUS_SUCCESS == halStatus )
18293 {
18294 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18295 }
18296
18297 /*Notify UMAC*/
18298 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18299
Jeff Johnsone7245742012-09-05 17:12:55 -070018300 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018301}/*WDI_ProcessDelBARsp*/
18302
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018303#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018304/**
18305 @brief Process TSM Stats Rsp function (called when a response
18306 is being received over the bus from HAL)
18307
18308 @param pWDICtx: pointer to the WLAN DAL context
18309 pEventData: pointer to the event information structure
18310
18311 @see
18312 @return Result of the function call
18313*/
18314WDI_Status
18315WDI_ProcessTsmStatsRsp
18316(
18317 WDI_ControlBlockType* pWDICtx,
18318 WDI_EventInfoType* pEventData
18319)
18320{
18321 WDI_TsmRspCb wdiTsmStatsRspCb;
18322 tTsmStatsRspMsg halTsmStatsRspMsg;
18323 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18324 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18325
18326 /*-------------------------------------------------------------------------
18327 Sanity check
18328 -------------------------------------------------------------------------*/
18329 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18330 ( NULL == pEventData->pEventData))
18331 {
18332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018333 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018334 WDI_ASSERT(0);
18335 return WDI_STATUS_E_FAILURE;
18336 }
18337
18338 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18339
18340 /*-------------------------------------------------------------------------
18341 Unpack HAL Response Message - the header was already extracted by the
18342 main Response Handling procedure
18343 -------------------------------------------------------------------------*/
18344 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18345 pEventData->pEventData,
18346 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18347
18348 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18349 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18350 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18351 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18352 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18353 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18354 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18355 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18356 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18357 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18358 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18359 halTsmStatsRspMsg.tsmStatsRspParams.status);
18360
18361 /*Notify UMAC*/
18362 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18363
18364 return WDI_STATUS_SUCCESS;
18365}/*WDI_ProcessTsmStatsRsp*/
18366
18367#endif
18368
18369
18370
18371/**
18372 @brief Process Flush AC Rsp function (called when a response
18373 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018374
18375 @param pWDICtx: pointer to the WLAN DAL context
18376 pEventData: pointer to the event information structure
18377
Jeff Johnson295189b2012-06-20 16:38:30 -070018378 @see
18379 @return Result of the function call
18380*/
18381WDI_Status
18382WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018383(
Jeff Johnson295189b2012-06-20 16:38:30 -070018384 WDI_ControlBlockType* pWDICtx,
18385 WDI_EventInfoType* pEventData
18386)
18387{
18388 WDI_Status wdiStatus;
18389 eHalStatus halStatus;
18390 WDI_FlushAcRspCb wdiFlushAcRspCb;
18391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18392
18393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018395 -------------------------------------------------------------------------*/
18396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18397 ( NULL == pEventData->pEventData))
18398 {
18399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 }
18404
18405 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18406
18407 /*-------------------------------------------------------------------------
18408 Extract response and send it to UMAC
18409 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018410 wpalMemoryCopy( &halStatus,
18411 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018412 sizeof(halStatus));
18413
Jeff Johnsone7245742012-09-05 17:12:55 -070018414 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018415
18416 /*Notify UMAC*/
18417 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18418
Jeff Johnsone7245742012-09-05 17:12:55 -070018419 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018420}/*WDI_ProcessFlushAcRsp*/
18421
18422/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018423 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018424 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018425
18426 @param pWDICtx: pointer to the WLAN DAL context
18427 pEventData: pointer to the event information structure
18428
Jeff Johnson295189b2012-06-20 16:38:30 -070018429 @see
18430 @return Result of the function call
18431*/
18432WDI_Status
18433WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018434(
Jeff Johnson295189b2012-06-20 16:38:30 -070018435 WDI_ControlBlockType* pWDICtx,
18436 WDI_EventInfoType* pEventData
18437)
18438{
18439 WDI_Status wdiStatus;
18440 eHalStatus halStatus;
18441 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18442 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18443
18444 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018445 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018446 -------------------------------------------------------------------------*/
18447 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18448 ( NULL == pEventData->pEventData))
18449 {
18450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018451 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018452 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018453 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018454 }
18455
18456 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18457
18458 /*-------------------------------------------------------------------------
18459 Extract response and send it to UMAC
18460 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018461 wpalMemoryCopy( &halStatus,
18462 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018463 sizeof(halStatus));
18464
Jeff Johnsone7245742012-09-05 17:12:55 -070018465 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018466
18467 /*Notify UMAC*/
18468 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18469
Jeff Johnsone7245742012-09-05 17:12:55 -070018470 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018471}/*WDI_ProcessBtAmpEventRsp*/
18472
18473
18474/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018475 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018476 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018477
18478 @param pWDICtx: pointer to the WLAN DAL context
18479 pEventData: pointer to the event information structure
18480
Jeff Johnson295189b2012-06-20 16:38:30 -070018481 @see
18482 @return Result of the function call
18483*/
18484WDI_Status
18485WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018486(
Jeff Johnson295189b2012-06-20 16:38:30 -070018487 WDI_ControlBlockType* pWDICtx,
18488 WDI_EventInfoType* pEventData
18489)
18490{
18491 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18492 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18493 tAddStaSelfRspMsg halAddStaSelfRsp;
18494 WDI_AddStaParams wdiAddSTAParam = {0};
18495 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18496
18497 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018498 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018499 -------------------------------------------------------------------------*/
18500 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18501 ( NULL == pEventData->pEventData))
18502 {
18503 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018504 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 }
18508
Jeff Johnsone7245742012-09-05 17:12:55 -070018509 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018510 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18511
18512 /*-------------------------------------------------------------------------
18513 Extract response and send it to UMAC
18514 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018515 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18516 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018517 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18518
18519
Jeff Johnsone7245742012-09-05 17:12:55 -070018520 wdiAddSTASelfParams.wdiStatus =
18521 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018522
Jeff Johnsone7245742012-09-05 17:12:55 -070018523 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018527 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18529
18530 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18531 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18532 WDI_MAC_ADDR_LEN);
18533
18534
18535#ifdef HAL_SELF_STA_PER_BSS
18536
18537 /* At this point add the self-STA */
18538
18539 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18540 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18541 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18542
18543 //all DPU indices are the same for self STA
18544
18545 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018546 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018547 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18548 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18549 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18550 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18551 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18552
18553 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18554 WDI_MAC_ADDR_LEN);
18555
18556 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18557 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18558
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018560 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18561 {
18562 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18563 }
18564#endif
18565
18566 /*Notify UMAC*/
18567 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18568
Jeff Johnsone7245742012-09-05 17:12:55 -070018569 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018570}/*WDI_ProcessAddSTASelfRsp*/
18571
18572
18573
18574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018575 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018577
18578 @param pWDICtx: pointer to the WLAN DAL context
18579 pEventData: pointer to the event information structure
18580
Jeff Johnson295189b2012-06-20 16:38:30 -070018581 @see
18582 @return Result of the function call
18583*/
18584WDI_Status
18585WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018586(
Jeff Johnson295189b2012-06-20 16:38:30 -070018587 WDI_ControlBlockType* pWDICtx,
18588 WDI_EventInfoType* pEventData
18589)
18590{
18591 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18592 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18593 tDelStaSelfRspParams delStaSelfRspParams;
18594 wpt_uint8 ucStaIdx;
18595
18596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18597
18598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018599 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018600 -------------------------------------------------------------------------*/
18601 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18602 ( NULL == pEventData->pEventData))
18603 {
18604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018608 }
18609
18610 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18611
18612 /*-------------------------------------------------------------------------
18613 Extract response and send it to UMAC
18614 -------------------------------------------------------------------------*/
18615
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 (wpt_uint8*)pEventData->pEventData,
18618 sizeof(tDelStaSelfRspParams));
18619
Jeff Johnsone7245742012-09-05 17:12:55 -070018620 wdiDelStaSelfRspParams.wdiStatus =
18621 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018622
Jeff Johnsone7245742012-09-05 17:12:55 -070018623 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018624 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18625 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18626 {
18627 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018628 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018629 delStaSelfRspParams.selfMacAddr,
18630 &ucStaIdx);
18631 if(WDI_STATUS_E_FAILURE == wdiStatus)
18632 {
18633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018634 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018635 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018636 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 }
18638 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18639 }
18640
18641 /*Notify UMAC*/
18642 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18643
18644 return WDI_STATUS_SUCCESS;
18645}
18646
Jeff Johnsone7245742012-09-05 17:12:55 -070018647#ifdef FEATURE_OEM_DATA_SUPPORT
18648/**
18649 @brief Start Oem Data Rsp function (called when a
18650 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018651
Jeff Johnsone7245742012-09-05 17:12:55 -070018652 @param pWDICtx: pointer to the WLAN DAL context
18653 pEventData: pointer to the event information structure
18654
18655 @see
18656 @return Result of the function call
18657*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018658
18659WDI_Status
18660WDI_ProcessStartOemDataRsp
18661(
18662 WDI_ControlBlockType* pWDICtx,
18663 WDI_EventInfoType* pEventData
18664)
18665{
18666 WDI_oemDataRspCb wdiOemDataRspCb;
18667 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18668 tStartOemDataRspParams* halStartOemDataRspParams;
18669
18670 /*-------------------------------------------------------------------------
18671 Sanity check
18672 -------------------------------------------------------------------------*/
18673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18674 ( NULL == pEventData->pEventData))
18675 {
18676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018677 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018678 WDI_ASSERT(0);
18679 return WDI_STATUS_E_FAILURE;
18680 }
18681
18682 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18683
18684 /*-------------------------------------------------------------------------
18685 Extract response and send it to UMAC
18686 -------------------------------------------------------------------------*/
18687 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18688
18689
18690 //It is the responsibility of the application code to check for failure
18691 //conditions!
18692
18693 //Allocate memory for WDI OEM DATA RSP structure
18694 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18695
18696 if(NULL == wdiOemDataRspParams)
18697 {
18698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018699 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018700 pWDICtx, pEventData, pEventData->pEventData);
18701 WDI_ASSERT(0);
18702 return WDI_STATUS_E_FAILURE;
18703 }
18704
18705 /* Populate WDI structure members */
18706 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18707
18708 /*Notify UMAC*/
18709 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18710
18711 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18712 wpalMemoryFree(wdiOemDataRspParams);
18713
18714 return WDI_STATUS_SUCCESS;
18715}/*WDI_PrcoessStartOemDataRsp*/
18716#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018717
18718/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018719 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018720===========================================================================*/
18721
18722/**
18723 @brief Process Channel Switch Rsp function (called when a response
18724 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018725
18726 @param pWDICtx: pointer to the WLAN DAL context
18727 pEventData: pointer to the event information structure
18728
Jeff Johnson295189b2012-06-20 16:38:30 -070018729 @see
18730 @return Result of the function call
18731*/
18732WDI_Status
18733WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018734(
Jeff Johnson295189b2012-06-20 16:38:30 -070018735 WDI_ControlBlockType* pWDICtx,
18736 WDI_EventInfoType* pEventData
18737)
18738{
18739 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18740 WDI_SwitchChRspCb wdiChSwitchRspCb;
18741 tSwitchChannelRspParams halSwitchChannelRsp;
18742 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18743
18744 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018745 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018746 -------------------------------------------------------------------------*/
18747 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18748 ( NULL == pEventData->pEventData))
18749 {
18750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 }
18755
18756 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18757
18758 /*-------------------------------------------------------------------------
18759 Extract response and send it to UMAC
18760 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018761 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018762 (wpt_uint8*)pEventData->pEventData,
18763 sizeof(halSwitchChannelRsp));
18764
Jeff Johnsone7245742012-09-05 17:12:55 -070018765 wdiSwitchChRsp.wdiStatus =
18766 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018767 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18768
18769#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018770 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018771#endif
18772
18773 /*Notify UMAC*/
18774 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18775
Jeff Johnsone7245742012-09-05 17:12:55 -070018776 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018777}/*WDI_ProcessChannelSwitchRsp*/
18778
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018779/**
18780 @brief Process Channel Switch Rsp function (called when a response
18781 is being received over the bus from HAL against
18782 WDI_ProcessChannelSwitchReq_V1)
18783
18784 @param pWDICtx: pointer to the WLAN DAL context
18785 pEventData: pointer to the event information structure
18786
18787 @see
18788 @return Result of the function call
18789*/
18790
18791WDI_Status
18792WDI_ProcessChannelSwitchRsp_V1
18793(
18794 WDI_ControlBlockType* pWDICtx,
18795 WDI_EventInfoType* pEventData
18796)
18797{
18798 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18799 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18800 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18801 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18802
18803 /*-------------------------------------------------------------------------
18804 Sanity check
18805 -------------------------------------------------------------------------*/
18806 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18807 ( NULL == pEventData->pEventData))
18808 {
18809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18810 "%s: Invalid parameters", __func__);
18811 WDI_ASSERT(0);
18812 return WDI_STATUS_E_FAILURE;
18813 }
18814
18815 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18816
18817 /*-------------------------------------------------------------------------
18818 Extract response and send it to UMAC
18819 -------------------------------------------------------------------------*/
18820 wpalMemoryCopy( &halSwitchChannelRsp,
18821 (wpt_uint8*)pEventData->pEventData,
18822 sizeof(halSwitchChannelRsp));
18823
18824 wdiSwitchChRsp.wdiStatus =
18825 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18826 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18827
18828#ifdef WLAN_FEATURE_VOWIFI
18829 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18830#endif
18831
18832 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18833 if (( NULL == wdiChSwitchRspCb ) )
18834 {
18835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18836 "%s: ### Call back function is null", __func__);
18837 WDI_ASSERT(0);
18838 return WDI_STATUS_E_FAILURE;
18839 }
18840 /*Notify UMAC*/
18841 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18842
18843 return WDI_STATUS_SUCCESS;
18844}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018845
18846/**
18847 @brief Process Config STA Rsp function (called when a response
18848 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018849
18850 @param pWDICtx: pointer to the WLAN DAL context
18851 pEventData: pointer to the event information structure
18852
Jeff Johnson295189b2012-06-20 16:38:30 -070018853 @see
18854 @return Result of the function call
18855*/
18856WDI_Status
18857WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018858(
Jeff Johnson295189b2012-06-20 16:38:30 -070018859 WDI_ControlBlockType* pWDICtx,
18860 WDI_EventInfoType* pEventData
18861)
18862{
18863 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18864 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18865 WDI_AddStaParams wdiAddSTAParam;
18866
18867 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018868 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018869
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18872
18873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018875 -------------------------------------------------------------------------*/
18876 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18877 ( NULL == pEventData->pEventData))
18878 {
18879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 }
18884
18885 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18886
18887 /*-------------------------------------------------------------------------
18888 Extract response and send it to UMAC
18889 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018890 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18891 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018892 sizeof(halConfigStaRsp.configStaRspParams));
18893
18894
18895 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18896 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18897 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18898 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18899 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18900
18901 /* MAC Address of STA - take from cache as it does not come back in the
18902 response*/
18903 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018904 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018905 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018906
18907 wdiCfgSTAParams.wdiStatus =
18908 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018909
18910 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18911 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18912 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18913
18914 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18915 {
18916 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18917 {
18918 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018919 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018920 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18921 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018922
Jeff Johnson295189b2012-06-20 16:38:30 -070018923 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018924 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 wdiAddSTAParam.ucHTCapable =
18927 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18928 wdiAddSTAParam.ucStaType =
18929 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018930 wdiAddSTAParam.ucRmfEnabled =
18931 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018932
Jeff Johnson295189b2012-06-20 16:38:30 -070018933 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018934 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18935 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018936 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018937
18938 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18939 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18940 WDI_MAC_ADDR_LEN);
18941
18942 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18943 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18944 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018945
18946 if ( NULL == pBSSSes )
18947 {
18948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18949 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018950
Jeff Johnson295189b2012-06-20 16:38:30 -070018951 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018952 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 }
18954
18955 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018956 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018957 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018958 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018962 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018965
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18967 }
18968 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18969 {
18970 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18971
Jeff Johnsone7245742012-09-05 17:12:55 -070018972 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018973 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018978 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018979 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018980 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018984 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018985 halConfigStaRsp.configStaRspParams.ucUcastSig;
18986 }
18987 }
18988
18989 /*Notify UMAC*/
18990 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18991
Jeff Johnsone7245742012-09-05 17:12:55 -070018992 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018993}/*WDI_ProcessConfigStaRsp*/
18994
18995
18996/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018997 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018998 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018999
19000 @param pWDICtx: pointer to the WLAN DAL context
19001 pEventData: pointer to the event information structure
19002
Jeff Johnson295189b2012-06-20 16:38:30 -070019003 @see
19004 @return Result of the function call
19005*/
19006WDI_Status
19007WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019008(
Jeff Johnson295189b2012-06-20 16:38:30 -070019009 WDI_ControlBlockType* pWDICtx,
19010 WDI_EventInfoType* pEventData
19011)
19012{
19013 WDI_Status wdiStatus;
19014 eHalStatus halStatus;
19015 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19016
19017 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019018 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19020
19021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019023 -------------------------------------------------------------------------*/
19024 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19025 ( NULL == pEventData->pEventData))
19026 {
19027 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019028 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019030 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019031 }
19032
19033 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19034
19035 wpalMutexAcquire(&pWDICtx->wptMutex);
19036
19037 /*If the link is being transitioned to idle - the BSS is to be deleted
19038 - this type of ending a session is possible when UMAC has failed an
19039 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019040 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019041 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19042 {
19043 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019044 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019045 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19047 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19048 &pBSSSes);
19049
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 /*-----------------------------------------------------------------------
19051 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019052 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019053 -----------------------------------------------------------------------*/
19054 if ( NULL == pBSSSes )
19055 {
19056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19057 "Set link response received outside association session");
19058 }
19059 else
19060 {
19061 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19062 will be del BSS coming after this to stop the beaconing & cleaning up the
19063 sessions*/
19064 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19065 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19066 {
19067 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019068 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019069 -----------------------------------------------------------------------*/
19070 WDI_DeleteSession(pWDICtx, pBSSSes);
19071
19072 /*-----------------------------------------------------------------------
19073 Check to see if this association is in progress - if so disable the
19074 flag as this has ended
19075 -----------------------------------------------------------------------*/
19076 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 /*Association no longer in progress */
19079 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19080 /*Association no longer in progress - prepare pending assoc for processing*/
19081 WDI_DequeueAssocRequest(pWDICtx);
19082 }
19083 }
19084 }
19085 }
19086 /* If the link state has been set to POST ASSOC, reset the "association in
19087 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019088 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019089 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19090 {
19091 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19092 WDI_DequeueAssocRequest(pWDICtx);
19093 }
19094
19095 wpalMutexRelease(&pWDICtx->wptMutex);
19096
19097 /*-------------------------------------------------------------------------
19098 Extract response and send it to UMAC
19099 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019100 wpalMemoryCopy( &halStatus,
19101 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 sizeof(halStatus));
19103
Jeff Johnsone7245742012-09-05 17:12:55 -070019104 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019105
19106 /*Notify UMAC*/
19107 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19108
Jeff Johnsone7245742012-09-05 17:12:55 -070019109 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019110}/*WDI_ProcessSetLinkStateRsp*/
19111
19112/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019113 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019114 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019115
19116 @param pWDICtx: pointer to the WLAN DAL context
19117 pEventData: pointer to the event information structure
19118
Jeff Johnson295189b2012-06-20 16:38:30 -070019119 @see
19120 @return Result of the function call
19121*/
19122WDI_Status
19123WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019124(
Jeff Johnson295189b2012-06-20 16:38:30 -070019125 WDI_ControlBlockType* pWDICtx,
19126 WDI_EventInfoType* pEventData
19127)
19128{
19129 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19130 WDI_GetStatsRspCb wdiGetStatsRspCb;
19131 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019132
Jeff Johnson295189b2012-06-20 16:38:30 -070019133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19134
19135 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019136 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019137 -------------------------------------------------------------------------*/
19138 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19139 ( NULL == pEventData->pEventData))
19140 {
19141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019142 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019144 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 }
19146
19147 /*-------------------------------------------------------------------------
19148 Extract response and send it to UMAC
19149 -------------------------------------------------------------------------*/
19150 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19151
19152 /*allocate the stats response buffer */
19153 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19154 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19155 + sizeof(WDI_GetStatsRspParamsType));
19156
19157 if(NULL == wdiGetStatsRsp)
19158 {
19159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019160 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019161 pWDICtx, pEventData, pEventData->pEventData);
19162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019163 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019164 }
19165
19166 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19167
19168 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19169 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19170 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19171 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19172 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19173 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19174
19175 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19176 wpalMemoryCopy(wdiGetStatsRsp + 1,
19177 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19178 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19179
19180 /*Notify UMAC*/
19181 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19182
19183 wpalMemoryFree(wdiGetStatsRsp);
19184
Jeff Johnsone7245742012-09-05 17:12:55 -070019185 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019186}/*WDI_ProcessGetStatsRsp*/
19187
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019188#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019189/**
19190 @brief Process Get Roam Rssi Rsp function (called when a response is
19191 being received over the bus from HAL)
19192
19193 @param pWDICtx: pointer to the WLAN DAL context
19194 pEventData: pointer to the event information structure
19195
19196 @see
19197 @return Result of the function call
19198*/
19199WDI_Status
19200WDI_ProcessGetRoamRssiRsp
19201(
19202 WDI_ControlBlockType* pWDICtx,
19203 WDI_EventInfoType* pEventData
19204)
19205{
19206 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19207 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19208 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19210
19211 /*-------------------------------------------------------------------------
19212 Sanity check
19213 -------------------------------------------------------------------------*/
19214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19215 ( NULL == pEventData->pEventData))
19216 {
19217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19218 "%s: Invalid parameters", __func__);
19219 WDI_ASSERT(0);
19220 return WDI_STATUS_E_FAILURE;
19221 }
19222
19223 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19224 if(NULL == wdiGetRoamRssiRspCb)
19225 {
19226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19227 "%s: call back function is NULL", __func__);
19228 WDI_ASSERT(0);
19229 return WDI_STATUS_E_FAILURE;
19230 }
19231
19232 /*-------------------------------------------------------------------------
19233 Extract response and send it to UMAC
19234 -------------------------------------------------------------------------*/
19235 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19236 pEventData->pEventData,
19237 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19238
19239 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19240 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19241 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19242
19243 /*Notify UMAC*/
19244 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19245
19246 return WDI_STATUS_SUCCESS;
19247}/*WDI_ProcessGetRoamRssiRsp*/
19248#endif
19249
Jeff Johnson295189b2012-06-20 16:38:30 -070019250
19251/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019252 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019253 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019254
19255 @param pWDICtx: pointer to the WLAN DAL context
19256 pEventData: pointer to the event information structure
19257
Jeff Johnson295189b2012-06-20 16:38:30 -070019258 @see
19259 @return Result of the function call
19260*/
19261WDI_Status
19262WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019263(
Jeff Johnson295189b2012-06-20 16:38:30 -070019264 WDI_ControlBlockType* pWDICtx,
19265 WDI_EventInfoType* pEventData
19266)
19267{
19268 WDI_Status wdiStatus;
19269 eHalStatus halStatus;
19270 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19271 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19272
19273 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019274 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019275 -------------------------------------------------------------------------*/
19276 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19277 ( NULL == pEventData->pEventData))
19278 {
19279 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019280 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019281 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019282 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 }
19284
19285 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19286
19287 /*-------------------------------------------------------------------------
19288 Extract response and send it to UMAC
19289 -------------------------------------------------------------------------*/
19290 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019291 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019292
19293 /*Notify UMAC*/
19294 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19295
Jeff Johnsone7245742012-09-05 17:12:55 -070019296 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019297}/*WDI_ProcessUpdateCfgRsp*/
19298
19299
19300
19301/**
19302 @brief Process Add BA Rsp function (called when a response
19303 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019304
19305 @param pWDICtx: pointer to the WLAN DAL context
19306 pEventData: pointer to the event information structure
19307
Jeff Johnson295189b2012-06-20 16:38:30 -070019308 @see
19309 @return Result of the function call
19310*/
19311WDI_Status
19312WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019313(
Jeff Johnson295189b2012-06-20 16:38:30 -070019314 WDI_ControlBlockType* pWDICtx,
19315 WDI_EventInfoType* pEventData
19316)
19317{
19318 WDI_AddBARspCb wdiAddBARspCb;
19319
19320 tAddBARspParams halAddBARsp;
19321 WDI_AddBARspinfoType wdiAddBARsp;
19322
19323 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19324
19325 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019326 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019327 -------------------------------------------------------------------------*/
19328 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19329 ( NULL == pEventData->pEventData))
19330 {
19331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019332 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019333 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019334 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019335 }
19336
19337 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19338
19339 /*-------------------------------------------------------------------------
19340 Extract response and send it to UMAC
19341 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019342 wpalMemoryCopy( &halAddBARsp,
19343 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019344 sizeof(halAddBARsp));
19345
19346 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19347
Jeff Johnson43971f52012-07-17 12:26:56 -070019348 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019349 {
19350 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19351 }
19352
19353 /*Notify UMAC*/
19354 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19355
Jeff Johnsone7245742012-09-05 17:12:55 -070019356 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019357}/*WDI_ProcessAddSessionBARsp*/
19358
19359/**
19360 @brief Process Add BA Rsp function (called when a response
19361 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019362
19363 @param pWDICtx: pointer to the WLAN DAL context
19364 pEventData: pointer to the event information structure
19365
Jeff Johnson295189b2012-06-20 16:38:30 -070019366 @see
19367 @return Result of the function call
19368*/
19369WDI_Status
19370WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019371(
Jeff Johnson295189b2012-06-20 16:38:30 -070019372 WDI_ControlBlockType* pWDICtx,
19373 WDI_EventInfoType* pEventData
19374)
19375{
19376 WDI_TriggerBARspCb wdiTriggerBARspCb;
19377
19378 tTriggerBARspParams* halTriggerBARsp;
19379 tTriggerBaRspCandidate* halBaCandidate;
19380 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19381 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19382 wpt_uint16 index;
19383 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019384 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019385 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19386
19387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019389 -------------------------------------------------------------------------*/
19390 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19391 ( NULL == pEventData->pEventData))
19392 {
19393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019394 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019395 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019396 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 }
19398
19399 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19400
19401 /*-------------------------------------------------------------------------
19402 Extract response and send it to UMAC
19403 -------------------------------------------------------------------------*/
19404 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19405
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019406 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19407
19408 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19409 {
19410 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019411 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019412 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019413
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019414 if(NULL == wdiTriggerBARsp)
19415 {
19416 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019417 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019418 pWDICtx, pEventData, pEventData->pEventData);
19419 WDI_ASSERT(0);
19420 return WDI_STATUS_E_FAILURE;
19421 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019422
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019423 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19424
Jeff Johnson295189b2012-06-20 16:38:30 -070019425 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019426 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19428
19429 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19430 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19431
19432 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19433 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019434 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019435 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19436 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19437 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019438 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019439 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019440 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19442 }
19443 wdiTriggerBARspCandidate++;
19444 halBaCandidate++;
19445 }
19446 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019447 else
19448 {
19449 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19450
19451 if(NULL == wdiTriggerBARsp)
19452 {
19453 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019454 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019455 pWDICtx, pEventData, pEventData->pEventData);
19456 WDI_ASSERT(0);
19457 return WDI_STATUS_E_FAILURE;
19458 }
19459
19460 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19461
19462 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019463
19464 /*Notify UMAC*/
19465 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19466
19467 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019468 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019469}/*WDI_ProcessAddSessionBARsp*/
19470
19471/**
19472 @brief Process Update Beacon Params Rsp function (called when a response
19473 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019474
19475 @param pWDICtx: pointer to the WLAN DAL context
19476 pEventData: pointer to the event information structure
19477
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 @see
19479 @return Result of the function call
19480*/
19481WDI_Status
19482WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019483(
Jeff Johnson295189b2012-06-20 16:38:30 -070019484 WDI_ControlBlockType* pWDICtx,
19485 WDI_EventInfoType* pEventData
19486)
19487{
19488 WDI_Status wdiStatus;
19489 eHalStatus halStatus;
19490 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19492
19493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019495 -------------------------------------------------------------------------*/
19496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19497 ( NULL == pEventData->pEventData))
19498 {
19499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 }
19504
19505 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19506
19507 /*-------------------------------------------------------------------------
19508 Extract response and send it to UMAC
19509 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019510 wpalMemoryCopy( &halStatus,
19511 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019512 sizeof(halStatus));
19513
Jeff Johnsone7245742012-09-05 17:12:55 -070019514 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019515
19516 /*Notify UMAC*/
19517 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19518
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019520}/*WDI_ProcessUpdateBeaconParamsRsp*/
19521
19522/**
19523 @brief Process Send Beacon template Rsp function (called when a response
19524 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019525
19526 @param pWDICtx: pointer to the WLAN DAL context
19527 pEventData: pointer to the event information structure
19528
Jeff Johnson295189b2012-06-20 16:38:30 -070019529 @see
19530 @return Result of the function call
19531*/
19532WDI_Status
19533WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019534(
Jeff Johnson295189b2012-06-20 16:38:30 -070019535 WDI_ControlBlockType* pWDICtx,
19536 WDI_EventInfoType* pEventData
19537)
19538{
19539 WDI_Status wdiStatus;
19540 eHalStatus halStatus;
19541 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19543
19544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019546 -------------------------------------------------------------------------*/
19547 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19548 ( NULL == pEventData->pEventData))
19549 {
19550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019551 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019552 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019553 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019554 }
19555
19556 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19557
19558 /*-------------------------------------------------------------------------
19559 Extract response and send it to UMAC
19560 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019561 wpalMemoryCopy( &halStatus,
19562 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019563 sizeof(halStatus));
19564
Jeff Johnsone7245742012-09-05 17:12:55 -070019565 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019566
19567 /*Notify UMAC*/
19568 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19569
Jeff Johnsone7245742012-09-05 17:12:55 -070019570 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019571}/*WDI_ProcessSendBeaconParamsRsp*/
19572
Jeff Johnsone7245742012-09-05 17:12:55 -070019573
Jeff Johnson295189b2012-06-20 16:38:30 -070019574/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019575 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019576 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019577
19578 @param pWDICtx: pointer to the WLAN DAL context
19579 pEventData: pointer to the event information structure
19580
Jeff Johnson295189b2012-06-20 16:38:30 -070019581 @see
19582 @return Result of the function call
19583*/
19584WDI_Status
19585WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019586(
Jeff Johnson295189b2012-06-20 16:38:30 -070019587 WDI_ControlBlockType* pWDICtx,
19588 WDI_EventInfoType* pEventData
19589)
19590{
19591 WDI_Status wdiStatus;
19592 eHalStatus halStatus;
19593 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19595
19596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019597 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019598 -------------------------------------------------------------------------*/
19599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19600 ( NULL == pEventData->pEventData))
19601 {
19602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019606 }
19607
19608 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19609
19610 /*-------------------------------------------------------------------------
19611 Extract response and send it to UMAC
19612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019613 wpalMemoryCopy( &halStatus,
19614 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019615 sizeof(halStatus));
19616
Jeff Johnsone7245742012-09-05 17:12:55 -070019617 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019618
19619 /*Notify UMAC*/
19620 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19621
Jeff Johnsone7245742012-09-05 17:12:55 -070019622 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019623}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19624
19625 /**
19626 @brief Process Set Max Tx Power Rsp function (called when a response
19627 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019628
19629 @param pWDICtx: pointer to the WLAN DAL context
19630 pEventData: pointer to the event information structure
19631
Jeff Johnson295189b2012-06-20 16:38:30 -070019632 @see
19633 @return Result of the function call
19634*/
19635WDI_Status
19636WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019637(
Jeff Johnson295189b2012-06-20 16:38:30 -070019638 WDI_ControlBlockType* pWDICtx,
19639 WDI_EventInfoType* pEventData
19640)
19641{
19642 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019643
Jeff Johnson295189b2012-06-20 16:38:30 -070019644 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019645
Jeff Johnson295189b2012-06-20 16:38:30 -070019646 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19647 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19648
19649 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019650 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019651 -------------------------------------------------------------------------*/
19652 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19653 ( NULL == pEventData->pEventData))
19654 {
19655 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019656 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019657 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 }
19660
19661 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19662
19663 /*-------------------------------------------------------------------------
19664 Extract response and send it to UMAC
19665 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019666 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19667 pEventData->pEventData,
19668 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019669
19670 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19671 {
19672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19673 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019674 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019675 }
19676
Jeff Johnsone7245742012-09-05 17:12:55 -070019677 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019678 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019680
19681 /*Notify UMAC*/
19682 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19683
Jeff Johnsone7245742012-09-05 17:12:55 -070019684 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019685}
19686
schang86c22c42013-03-13 18:41:24 -070019687 /**
19688 @brief Process Set Tx Power Rsp function (called when a response
19689 is being received over the bus from HAL)
19690
19691 @param pWDICtx: pointer to the WLAN DAL context
19692 pEventData: pointer to the event information structure
19693
19694 @see
19695 @return Result of the function call
19696*/
19697WDI_Status
19698WDI_ProcessSetTxPowerRsp
19699(
19700 WDI_ControlBlockType* pWDICtx,
19701 WDI_EventInfoType* pEventData
19702)
19703{
19704 tSetTxPwrRspMsg halTxpowerrsp;
19705 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19706 WDA_SetTxPowerRspCb wdiReqStatusCb;
19707 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19708
19709 /*-------------------------------------------------------------------------
19710 Sanity check
19711 -------------------------------------------------------------------------*/
19712 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19713 ( NULL == pEventData->pEventData))
19714 {
19715 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19716 "%s: Invalid parameters", __func__);
19717 WDI_ASSERT(0);
19718 return WDI_STATUS_E_FAILURE;
19719 }
19720
19721 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19722
19723 /*-------------------------------------------------------------------------
19724 Extract response and send it to UMAC
19725 -------------------------------------------------------------------------*/
19726 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19727 pEventData->pEventData,
19728 sizeof(halTxpowerrsp.setTxPwrRspParams));
19729
19730 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19731 {
19732 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19733 "Error status returned in Set Tx Power Response ");
19734 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19735 return WDI_STATUS_E_FAILURE;
19736 }
19737
19738 wdiSetTxPowerRspMsg.wdiStatus =
19739 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19740
19741 /*Notify UMAC*/
19742 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19743
19744 return WDI_STATUS_SUCCESS;
19745}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019746
19747/**
19748 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19749 is being received over the bus from HAL)
19750
19751 @param pWDICtx: pointer to the WLAN DAL context
19752 pEventData: pointer to the event information structure
19753
19754 @see
19755 @return Result of the function call
19756*/
19757WDI_Status
19758WDI_ProcessSetMaxTxPowerPerBandRsp
19759(
19760 WDI_ControlBlockType* pWDICtx,
19761 WDI_EventInfoType* pEventData
19762)
19763{
19764 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19765 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19766 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19768
19769 /*-------------------------------------------------------------------------
19770 Sanity check
19771 -------------------------------------------------------------------------*/
19772 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19773 ( NULL == pEventData->pEventData))
19774 {
19775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19776 "%s: Invalid parameters", __func__);
19777 WDI_ASSERT(0);
19778 return WDI_STATUS_E_FAILURE;
19779 }
19780
19781 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19782
19783 /*-------------------------------------------------------------------------
19784 Extract response and send it to UMAC
19785 -------------------------------------------------------------------------*/
19786 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19787 pEventData->pEventData,
19788 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19789
19790 if (eHAL_STATUS_SUCCESS !=
19791 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19792 {
19793 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19794 "Error status returned in Set Max Tx Power Per Band Response");
19795 return WDI_STATUS_E_FAILURE;
19796 }
19797
19798 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19799 WDI_HAL_2_WDI_STATUS(
19800 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19801
19802 /* Notify UMAC */
19803 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19804
19805 return WDI_STATUS_SUCCESS;
19806}
19807
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019808#ifdef FEATURE_WLAN_TDLS
19809/**
19810 @brief Process TDLS Link Establish Rsp function (called
19811 when a response is being received over the bus from HAL)
19812
19813 @param pWDICtx: pointer to the WLAN DAL context
19814 pEventData: pointer to the event information structure
19815
19816 @see
19817 @return Result of the function call
19818*/
19819WDI_Status
19820WDI_ProcessLinkEstablishReqRsp
19821(
19822 WDI_ControlBlockType* pWDICtx,
19823 WDI_EventInfoType* pEventData
19824)
19825{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019826 eHalStatus halStatus;
19827 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019828 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19829 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19830
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19832
19833 /*-------------------------------------------------------------------------
19834 Sanity check
19835 -------------------------------------------------------------------------*/
19836 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19837 ( NULL == pEventData->pEventData))
19838 {
19839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19840 "%s: Invalid parameters", __func__);
19841 WDI_ASSERT(0);
19842 return WDI_STATUS_E_FAILURE;
19843 }
19844
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019845 /*-------------------------------------------------------------------------
19846 Extract indication and send it to UMAC
19847 -------------------------------------------------------------------------*/
19848 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19849 pEventData->pEventData,
19850 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19851
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019852 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19853
19854 /*-------------------------------------------------------------------------
19855 Extract response and send it to UMAC
19856 -------------------------------------------------------------------------*/
19857 wpalMemoryCopy( &halStatus,
19858 pEventData->pEventData,
19859 sizeof(halStatus));
19860
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019861 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19862 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019863
19864 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019865 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019866
19867 return WDI_STATUS_SUCCESS;
19868}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019869
19870
19871
19872/**
19873 @brief Process TDLS Chan switch Rsp function (called
19874 when a response is being received over the bus from HAL)
19875
19876 @param pWDICtx: pointer to the WLAN DAL context
19877 pEventData: pointer to the event information structure
19878
19879 @see
19880 @return Result of the function call
19881*/
19882WDI_Status
19883WDI_ProcessChanSwitchReqRsp
19884(
19885 WDI_ControlBlockType* pWDICtx,
19886 WDI_EventInfoType* pEventData
19887)
19888{
19889 eHalStatus halStatus;
19890 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19891 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19892 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19893
19894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19895
19896 /*-------------------------------------------------------------------------
19897 Sanity check
19898 -------------------------------------------------------------------------*/
19899 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19900 ( NULL == pEventData->pEventData))
19901 {
19902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19903 "%s: Invalid parameters", __func__);
19904 WDI_ASSERT(0);
19905 return WDI_STATUS_E_FAILURE;
19906 }
19907
19908 /*-------------------------------------------------------------------------
19909 Extract indication and send it to UMAC
19910 -------------------------------------------------------------------------*/
19911 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19912 pEventData->pEventData,
19913 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19914
19915 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19916
19917 /*-------------------------------------------------------------------------
19918 Extract response and send it to UMAC
19919 -------------------------------------------------------------------------*/
19920 wpalMemoryCopy( &halStatus,
19921 pEventData->pEventData,
19922 sizeof(halStatus));
19923
19924 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19925 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19926
19927 /*Notify UMAC*/
19928 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19929
19930 return WDI_STATUS_SUCCESS;
19931}/*WDI_ProcessChanSwitchReqRsp*/
19932
19933
19934
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019935#endif
schang86c22c42013-03-13 18:41:24 -070019936
Jeff Johnson295189b2012-06-20 16:38:30 -070019937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019938 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019939 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019940
19941 @param pWDICtx: pointer to the WLAN DAL context
19942 pEventData: pointer to the event information structure
19943
Jeff Johnson295189b2012-06-20 16:38:30 -070019944 @see
19945 @return Result of the function call
19946*/
19947WDI_Status
19948WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019949(
Jeff Johnson295189b2012-06-20 16:38:30 -070019950 WDI_ControlBlockType* pWDICtx,
19951 WDI_EventInfoType* pEventData
19952)
19953{
19954 WDI_Status wdiStatus;
19955 eHalStatus halStatus;
19956 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19958
19959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019961 -------------------------------------------------------------------------*/
19962 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19963 ( NULL == pEventData->pEventData))
19964 {
19965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019966 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 }
19970
19971 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19972
19973 /*-------------------------------------------------------------------------
19974 Extract response and send it to UMAC
19975 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019976 wpalMemoryCopy( &halStatus,
19977 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019978 sizeof(halStatus));
19979
Jeff Johnsone7245742012-09-05 17:12:55 -070019980 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019981
19982 /*Notify UMAC*/
19983 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19984
Jeff Johnsone7245742012-09-05 17:12:55 -070019985 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019986}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019987/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019988 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019989 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019990
19991 @param pWDICtx: pointer to the WLAN DAL context
19992 pEventData: pointer to the event information structure
19993
Jeff Johnson295189b2012-06-20 16:38:30 -070019994 @see
19995 @return Result of the function call
19996*/
19997WDI_Status
19998WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019999(
Jeff Johnson295189b2012-06-20 16:38:30 -070020000 WDI_ControlBlockType* pWDICtx,
20001 WDI_EventInfoType* pEventData
20002)
20003{
20004 WDI_Status wdiStatus;
20005 eHalStatus halStatus;
20006 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020007 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020008 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20009
20010 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020011 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020012 -------------------------------------------------------------------------*/
20013 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20014 ( NULL == pEventData->pEventData))
20015 {
20016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020017 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 }
20021
20022 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20023
20024 /*-------------------------------------------------------------------------
20025 Extract response and send it to UMAC
20026 -------------------------------------------------------------------------*/
20027 halStatus = *((eHalStatus*)pEventData->pEventData);
20028
Jeff Johnsone7245742012-09-05 17:12:55 -070020029 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020030
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020031 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20032 * Other module states are taken care by PMC.
20033 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20034 */
20035 if (wdiStatus != WDI_STATUS_SUCCESS) {
20036
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20038 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20039 halStatus);
20040 /* Call Back is not required as we are putting the DXE in FULL
20041 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020042 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20043
20044 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020046 "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 -080020047 WDI_ASSERT(0);
20048 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020049 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020050 /*Notify UMAC*/
20051 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20052
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020054}/*WDI_ProcessEnterImpsRsp*/
20055
20056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020057 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020058 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020059
20060 @param pWDICtx: pointer to the WLAN DAL context
20061 pEventData: pointer to the event information structure
20062
Jeff Johnson295189b2012-06-20 16:38:30 -070020063 @see
20064 @return Result of the function call
20065*/
20066WDI_Status
20067WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020068(
Jeff Johnson295189b2012-06-20 16:38:30 -070020069 WDI_ControlBlockType* pWDICtx,
20070 WDI_EventInfoType* pEventData
20071)
20072{
20073 WDI_Status wdiStatus;
20074 eHalStatus halStatus;
20075 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020076 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20078
20079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020081 -------------------------------------------------------------------------*/
20082 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20083 ( NULL == pEventData->pEventData))
20084 {
20085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 }
20090
20091 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20092
20093 /*-------------------------------------------------------------------------
20094 Extract response and send it to UMAC
20095 -------------------------------------------------------------------------*/
20096 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020097 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020098
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020099 if (halStatus != eHAL_STATUS_SUCCESS)
20100 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20101 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20102
Jeff Johnson295189b2012-06-20 16:38:30 -070020103 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020104 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20105 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20106 {
20107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020108 "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 -080020109 WDI_ASSERT(0);
20110 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 /*Notify UMAC*/
20112 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20113
Jeff Johnsone7245742012-09-05 17:12:55 -070020114 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020115}/*WDI_ProcessExitImpsRsp*/
20116
20117/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020118 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020119 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020120
20121 @param pWDICtx: pointer to the WLAN DAL context
20122 pEventData: pointer to the event information structure
20123
Jeff Johnson295189b2012-06-20 16:38:30 -070020124 @see
20125 @return Result of the function call
20126*/
20127WDI_Status
20128WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020129(
Jeff Johnson295189b2012-06-20 16:38:30 -070020130 WDI_ControlBlockType* pWDICtx,
20131 WDI_EventInfoType* pEventData
20132)
20133{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020134 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20135 tHalEnterBmpsRspParams halEnterBmpsRsp;
20136 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20137 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020138 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020139 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20140
20141 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020142 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 -------------------------------------------------------------------------*/
20144 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20145 ( NULL == pEventData->pEventData))
20146 {
20147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020148 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 }
20152
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020154 Extract response and send it to UMAC
20155 -------------------------------------------------------------------------*/
20156 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20157 {
20158 wpalMemoryCopy( &halEnterBmpsRsp,
20159 pEventData->pEventData,
20160 sizeof(halEnterBmpsRsp));
20161
20162 //Used to print debug message
20163 halStatus = halEnterBmpsRsp.status;
20164 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20165 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20166 }
20167 else
20168 {
20169 halStatus = *((eHalStatus*)pEventData->pEventData);
20170 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20171 }
20172
20173 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020174
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020175 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20176 * Other module states are taken care by PMC.
20177 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20178 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020179 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20180 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020181
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020182 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020183 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20184 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020185 /* Call Back is not required as we are putting the DXE in FULL
20186 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020187 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20188 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20189 {
20190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020191 "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 -080020192 WDI_ASSERT(0);
20193 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020194 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020195 }
20196
Jeff Johnson295189b2012-06-20 16:38:30 -070020197 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020198 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020199
Jeff Johnsone7245742012-09-05 17:12:55 -070020200 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020201}/*WDI_ProcessEnterBmpsRsp*/
20202
20203/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020204 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020205 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020206
20207 @param pWDICtx: pointer to the WLAN DAL context
20208 pEventData: pointer to the event information structure
20209
Jeff Johnson295189b2012-06-20 16:38:30 -070020210 @see
20211 @return Result of the function call
20212*/
20213WDI_Status
20214WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020215(
Jeff Johnson295189b2012-06-20 16:38:30 -070020216 WDI_ControlBlockType* pWDICtx,
20217 WDI_EventInfoType* pEventData
20218)
20219{
Jeff Johnson295189b2012-06-20 16:38:30 -070020220 eHalStatus halStatus;
20221 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020222 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020223 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20224 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20226
20227 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020228 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020229 -------------------------------------------------------------------------*/
20230 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20231 ( NULL == pEventData->pEventData))
20232 {
20233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020234 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 }
20238
20239 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20240
20241 /*-------------------------------------------------------------------------
20242 Extract response and send it to UMAC
20243 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020244
20245 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20246 {
20247 wpalMemoryCopy( &halExitBmpsRsp,
20248 pEventData->pEventData,
20249 sizeof(halExitBmpsRsp));
20250
20251 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20252 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20253 }
20254 else
20255 {
20256 halStatus = *((eHalStatus*)pEventData->pEventData);
20257 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20258 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020259
20260 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020261 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20262 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20263 {
20264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020265 "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 -080020266 WDI_ASSERT(0);
20267 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020268 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20269
20270 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020271 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020272
Jeff Johnsone7245742012-09-05 17:12:55 -070020273 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020274}/*WDI_ProcessExitBmpsRsp*/
20275
20276/**
20277 @brief Process Enter UAPSD Rsp function (called when a response
20278 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020279
20280 @param pWDICtx: pointer to the WLAN DAL context
20281 pEventData: pointer to the event information structure
20282
Jeff Johnson295189b2012-06-20 16:38:30 -070020283 @see
20284 @return Result of the function call
20285*/
20286WDI_Status
20287WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020288(
Jeff Johnson295189b2012-06-20 16:38:30 -070020289 WDI_ControlBlockType* pWDICtx,
20290 WDI_EventInfoType* pEventData
20291)
20292{
Jeff Johnson295189b2012-06-20 16:38:30 -070020293 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020294 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020296 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20297
Jeff Johnson295189b2012-06-20 16:38:30 -070020298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20299
20300 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020301 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020302 -------------------------------------------------------------------------*/
20303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20304 ( NULL == pEventData->pEventData))
20305 {
20306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020308 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020309 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 }
20311
20312 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20313
20314 /*-------------------------------------------------------------------------
20315 Extract response and send it to UMAC
20316 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020317 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20318 {
20319 wpalMemoryCopy( &halEnterUapsdRsp,
20320 pEventData->pEventData,
20321 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020322
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020323 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20324 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20325 }
20326 else
20327 {
20328 halStatus = *((eHalStatus*)pEventData->pEventData);
20329 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20330 }
20331
20332 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020333 {
20334 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20335 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20336 // the traffic to decide when to suspend the trigger frames when there is no traffic
20337 // activity on the trigger enabled ACs
20338 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20339
20340#ifdef WLAN_PERF
20341 // Increment the BD signature to refresh the fast path BD utilization
20342 pWDICtx->uBdSigSerialNum++;
20343#endif
20344 }
20345
20346 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020347 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020348
Jeff Johnsone7245742012-09-05 17:12:55 -070020349 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020350}/*WDI_ProcessEnterUapsdRsp*/
20351
20352/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020353 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020354 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020355
20356 @param pWDICtx: pointer to the WLAN DAL context
20357 pEventData: pointer to the event information structure
20358
Jeff Johnson295189b2012-06-20 16:38:30 -070020359 @see
20360 @return Result of the function call
20361*/
20362WDI_Status
20363WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020364(
Jeff Johnson295189b2012-06-20 16:38:30 -070020365 WDI_ControlBlockType* pWDICtx,
20366 WDI_EventInfoType* pEventData
20367)
20368{
Jeff Johnson295189b2012-06-20 16:38:30 -070020369 eHalStatus halStatus;
20370 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020371 tHalExitUapsdRspParams halExitUapsdRsp;
20372 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20374
20375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020377 -------------------------------------------------------------------------*/
20378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20379 ( NULL == pEventData->pEventData))
20380 {
20381 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020382 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020383 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020385 }
20386
20387 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20388
20389 /*-------------------------------------------------------------------------
20390 Extract response and send it to UMAC
20391 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020392 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20393 {
20394 wpalMemoryCopy( &halExitUapsdRsp,
20395 pEventData->pEventData,
20396 sizeof(halExitUapsdRsp));
20397
20398 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20399 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20400 }
20401 else
20402 {
20403 halStatus = *((eHalStatus*)pEventData->pEventData);
20404 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20405 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020406 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20407 // directly instead of the FW WQ.
20408 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20409
20410#ifdef WLAN_PERF
20411 // Increment the BD signature to refresh the fast path BD utilization
20412 pWDICtx->uBdSigSerialNum++;
20413#endif
20414
20415 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020416 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020417
Jeff Johnsone7245742012-09-05 17:12:55 -070020418 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020419}/*WDI_ProcessExitUapsdRsp*/
20420
20421/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020422 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020423 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020424
20425 @param pWDICtx: pointer to the WLAN DAL context
20426 pEventData: pointer to the event information structure
20427
Jeff Johnson295189b2012-06-20 16:38:30 -070020428 @see
20429 @return Result of the function call
20430*/
20431WDI_Status
20432WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020433(
Jeff Johnson295189b2012-06-20 16:38:30 -070020434 WDI_ControlBlockType* pWDICtx,
20435 WDI_EventInfoType* pEventData
20436)
20437{
20438 WDI_Status wdiStatus;
20439 eHalStatus halStatus;
20440 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20441 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20442
20443 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020444 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020445 -------------------------------------------------------------------------*/
20446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20447 ( NULL == pEventData->pEventData))
20448 {
20449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020451 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020452 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 }
20454
20455 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20456
20457 /*-------------------------------------------------------------------------
20458 Extract response and send it to UMAC
20459 -------------------------------------------------------------------------*/
20460 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020461 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020462
20463 /*Notify UMAC*/
20464 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20465
Jeff Johnsone7245742012-09-05 17:12:55 -070020466 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020467}/*WDI_ProcessSetUapsdAcParamsRsp*/
20468
20469/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020470 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020471 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020472
20473 @param pWDICtx: pointer to the WLAN DAL context
20474 pEventData: pointer to the event information structure
20475
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 @see
20477 @return Result of the function call
20478*/
20479WDI_Status
20480WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020481(
Jeff Johnson295189b2012-06-20 16:38:30 -070020482 WDI_ControlBlockType* pWDICtx,
20483 WDI_EventInfoType* pEventData
20484)
20485{
20486 WDI_Status wdiStatus;
20487 eHalStatus halStatus;
20488 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20489 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20490
20491 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020492 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020493 -------------------------------------------------------------------------*/
20494 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20495 ( NULL == pEventData->pEventData))
20496 {
20497 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020498 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020500 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020501 }
20502
20503 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20504
20505 /*-------------------------------------------------------------------------
20506 Extract response and send it to UMAC
20507 -------------------------------------------------------------------------*/
20508 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020509 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020510
20511 /*Notify UMAC*/
20512 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20513
Jeff Johnsone7245742012-09-05 17:12:55 -070020514 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020515}/*WDI_ProcessUpdateUapsdParamsRsp*/
20516
20517/**
20518 @brief Process Configure RXP filter Rsp function (called when a
20519 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020520
20521 @param pWDICtx: pointer to the WLAN DAL context
20522 pEventData: pointer to the event information structure
20523
Jeff Johnson295189b2012-06-20 16:38:30 -070020524 @see
20525 @return Result of the function call
20526*/
20527WDI_Status
20528WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020529(
Jeff Johnson295189b2012-06-20 16:38:30 -070020530 WDI_ControlBlockType* pWDICtx,
20531 WDI_EventInfoType* pEventData
20532)
20533{
20534 WDI_Status wdiStatus;
20535 eHalStatus halStatus;
20536 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20538
20539 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020540 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020541 -------------------------------------------------------------------------*/
20542 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20543 ( NULL == pEventData->pEventData))
20544 {
20545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020546 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020547 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020548 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 }
20550
20551 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20552
20553 /*-------------------------------------------------------------------------
20554 Extract response and send it to UMAC
20555 -------------------------------------------------------------------------*/
20556 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020557 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020558
20559 /*Notify UMAC*/
20560 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20561
Jeff Johnsone7245742012-09-05 17:12:55 -070020562 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020563}/*WDI_ProcessConfigureRxpFilterRsp*/
20564
20565/**
20566 @brief Process Set beacon filter Rsp function (called when a
20567 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020568
20569 @param pWDICtx: pointer to the WLAN DAL context
20570 pEventData: pointer to the event information structure
20571
Jeff Johnson295189b2012-06-20 16:38:30 -070020572 @see
20573 @return Result of the function call
20574*/
20575WDI_Status
20576WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020577(
Jeff Johnson295189b2012-06-20 16:38:30 -070020578 WDI_ControlBlockType* pWDICtx,
20579 WDI_EventInfoType* pEventData
20580)
20581{
20582 WDI_Status wdiStatus;
20583 eHalStatus halStatus;
20584 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20585 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20586
20587 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020588 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020589 -------------------------------------------------------------------------*/
20590 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20591 ( NULL == pEventData->pEventData))
20592 {
20593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020597 }
20598
20599 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20600
20601 /*-------------------------------------------------------------------------
20602 Extract response and send it to UMAC
20603 -------------------------------------------------------------------------*/
20604 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020605 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020606
20607 /*Notify UMAC*/
20608 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20609
Jeff Johnsone7245742012-09-05 17:12:55 -070020610 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020611}/*WDI_ProcessSetBeaconFilterRsp*/
20612
20613/**
20614 @brief Process remove beacon filter Rsp function (called when a
20615 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020616
20617 @param pWDICtx: pointer to the WLAN DAL context
20618 pEventData: pointer to the event information structure
20619
Jeff Johnson295189b2012-06-20 16:38:30 -070020620 @see
20621 @return Result of the function call
20622*/
20623WDI_Status
20624WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020625(
Jeff Johnson295189b2012-06-20 16:38:30 -070020626 WDI_ControlBlockType* pWDICtx,
20627 WDI_EventInfoType* pEventData
20628)
20629{
20630 WDI_Status wdiStatus;
20631 eHalStatus halStatus;
20632 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20634
20635 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020636 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020637 -------------------------------------------------------------------------*/
20638 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20639 ( NULL == pEventData->pEventData))
20640 {
20641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020642 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020643 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020644 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 }
20646
20647 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20648
20649 /*-------------------------------------------------------------------------
20650 Extract response and send it to UMAC
20651 -------------------------------------------------------------------------*/
20652 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020653 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020654
20655 /*Notify UMAC*/
20656 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20657
Jeff Johnsone7245742012-09-05 17:12:55 -070020658 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020659}/*WDI_ProcessRemBeaconFilterRsp*/
20660
20661/**
20662 @brief Process set RSSI thresholds Rsp function (called when a
20663 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020664
20665 @param pWDICtx: pointer to the WLAN DAL context
20666 pEventData: pointer to the event information structure
20667
Jeff Johnson295189b2012-06-20 16:38:30 -070020668 @see
20669 @return Result of the function call
20670*/
20671WDI_Status
20672WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020673(
Jeff Johnson295189b2012-06-20 16:38:30 -070020674 WDI_ControlBlockType* pWDICtx,
20675 WDI_EventInfoType* pEventData
20676)
20677{
20678 WDI_Status wdiStatus;
20679 eHalStatus halStatus;
20680 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20682
20683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020684 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020685 -------------------------------------------------------------------------*/
20686 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20687 ( NULL == pEventData->pEventData))
20688 {
20689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020690 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020691 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020692 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 }
20694
20695 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20696
20697 /*-------------------------------------------------------------------------
20698 Extract response and send it to UMAC
20699 -------------------------------------------------------------------------*/
20700 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020701 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020702
20703 /*Notify UMAC*/
20704 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20705
Jeff Johnsone7245742012-09-05 17:12:55 -070020706 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020707}/*WDI_ProcessSetRSSIThresoldsRsp*/
20708
20709/**
20710 @brief Process host offload Rsp function (called when a
20711 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020712
20713 @param pWDICtx: pointer to the WLAN DAL context
20714 pEventData: pointer to the event information structure
20715
Jeff Johnson295189b2012-06-20 16:38:30 -070020716 @see
20717 @return Result of the function call
20718*/
20719WDI_Status
20720WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020721(
Jeff Johnson295189b2012-06-20 16:38:30 -070020722 WDI_ControlBlockType* pWDICtx,
20723 WDI_EventInfoType* pEventData
20724)
20725{
20726 WDI_Status wdiStatus;
20727 eHalStatus halStatus;
20728 WDI_HostOffloadCb wdiHostOffloadCb;
20729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20730
20731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020733 -------------------------------------------------------------------------*/
20734 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20735 ( NULL == pEventData->pEventData))
20736 {
20737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020738 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020739 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 }
20742
20743 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20744
20745 /*-------------------------------------------------------------------------
20746 Extract response and send it to UMAC
20747 -------------------------------------------------------------------------*/
20748 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020749 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020750
20751 /*Notify UMAC*/
20752 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20753
Jeff Johnsone7245742012-09-05 17:12:55 -070020754 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020755}/*WDI_ProcessHostOffloadRsp*/
20756
20757/**
20758 @brief Process keep alive Rsp function (called when a
20759 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020760
20761 @param pWDICtx: pointer to the WLAN DAL context
20762 pEventData: pointer to the event information structure
20763
Jeff Johnson295189b2012-06-20 16:38:30 -070020764 @see
20765 @return Result of the function call
20766*/
20767WDI_Status
20768WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020769(
Jeff Johnson295189b2012-06-20 16:38:30 -070020770 WDI_ControlBlockType* pWDICtx,
20771 WDI_EventInfoType* pEventData
20772)
20773{
20774 WDI_Status wdiStatus;
20775 eHalStatus halStatus;
20776 WDI_KeepAliveCb wdiKeepAliveCb;
20777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053020778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070020779 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20780
20781
20782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020783 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 -------------------------------------------------------------------------*/
20785 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20786 ( NULL == pEventData->pEventData))
20787 {
20788 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020789 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020790 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020791 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 }
20793
Jeff Johnsone7245742012-09-05 17:12:55 -070020794 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20795
Jeff Johnson295189b2012-06-20 16:38:30 -070020796 /*-------------------------------------------------------------------------
20797 Extract response and send it to UMAC
20798 -------------------------------------------------------------------------*/
20799 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020800 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020801
20802 /*Notify UMAC*/
20803 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20804
Jeff Johnsone7245742012-09-05 17:12:55 -070020805 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020806}/*WDI_ProcessKeepAliveRsp*/
20807
20808/**
20809 @brief Process wowl add ptrn Rsp function (called when a
20810 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020811
20812 @param pWDICtx: pointer to the WLAN DAL context
20813 pEventData: pointer to the event information structure
20814
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 @see
20816 @return Result of the function call
20817*/
20818WDI_Status
20819WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020820(
Jeff Johnson295189b2012-06-20 16:38:30 -070020821 WDI_ControlBlockType* pWDICtx,
20822 WDI_EventInfoType* pEventData
20823)
20824{
Jeff Johnson295189b2012-06-20 16:38:30 -070020825 eHalStatus halStatus;
20826 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020827 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20828 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20829
Jeff Johnson295189b2012-06-20 16:38:30 -070020830 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20831
20832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020833 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020834 -------------------------------------------------------------------------*/
20835 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20836 ( NULL == pEventData->pEventData))
20837 {
20838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020839 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020840 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020842 }
20843
20844 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20845
20846 /*-------------------------------------------------------------------------
20847 Extract response and send it to UMAC
20848 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020849 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20850 {
20851 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20852 pEventData->pEventData,
20853 sizeof(halAddWowlBcastPtrRsp));
20854
20855 wdiWowlAddBcPtrRsp.wdiStatus =
20856 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20857 }
20858 else
20859 {
20860 halStatus = *((eHalStatus*)pEventData->pEventData);
20861 wdiWowlAddBcPtrRsp.wdiStatus =
20862 WDI_HAL_2_WDI_STATUS(halStatus);
20863 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020864
20865 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020866 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020867
Jeff Johnsone7245742012-09-05 17:12:55 -070020868 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020869}/*WDI_ProcessWowlAddBcPtrnRsp*/
20870
20871/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020872 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020873 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020874
20875 @param pWDICtx: pointer to the WLAN DAL context
20876 pEventData: pointer to the event information structure
20877
Jeff Johnson295189b2012-06-20 16:38:30 -070020878 @see
20879 @return Result of the function call
20880*/
20881WDI_Status
20882WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020883(
Jeff Johnson295189b2012-06-20 16:38:30 -070020884 WDI_ControlBlockType* pWDICtx,
20885 WDI_EventInfoType* pEventData
20886)
20887{
Jeff Johnson295189b2012-06-20 16:38:30 -070020888 eHalStatus halStatus;
20889 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020890 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20891 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020892 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20893
20894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020895 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020896 -------------------------------------------------------------------------*/
20897 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20898 ( NULL == pEventData->pEventData))
20899 {
20900 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020901 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020902 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020903 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 }
20905
20906 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20907
20908 /*-------------------------------------------------------------------------
20909 Extract response and send it to UMAC
20910 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020911 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20912 {
20913 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20914 pEventData->pEventData,
20915 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020916
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020917 wdiWowlDelBcstPtrRsp.wdiStatus =
20918 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20919 }
20920 else
20921 {
20922 halStatus = *((eHalStatus*)pEventData->pEventData);
20923 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20924 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020925 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020926 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020927
Jeff Johnsone7245742012-09-05 17:12:55 -070020928 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020929}/*WDI_ProcessWowlDelBcPtrnRsp*/
20930
20931/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020932 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020933 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020934
20935 @param pWDICtx: pointer to the WLAN DAL context
20936 pEventData: pointer to the event information structure
20937
Jeff Johnson295189b2012-06-20 16:38:30 -070020938 @see
20939 @return Result of the function call
20940*/
20941WDI_Status
20942WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020943(
Jeff Johnson295189b2012-06-20 16:38:30 -070020944 WDI_ControlBlockType* pWDICtx,
20945 WDI_EventInfoType* pEventData
20946)
20947{
Jeff Johnson295189b2012-06-20 16:38:30 -070020948 eHalStatus halStatus;
20949 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020950 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20951 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020952 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20953
20954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020955 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020956 -------------------------------------------------------------------------*/
20957 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20958 ( NULL == pEventData->pEventData))
20959 {
20960 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020961 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020962 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020963 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 }
20965
20966 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20967
20968 /*-------------------------------------------------------------------------
20969 Extract response and send it to UMAC
20970 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020971 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20972 {
20973 wpalMemoryCopy( &halEnterWowlRspParams,
20974 (wpt_uint8*)pEventData->pEventData,
20975 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020976
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020977 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20978 wdiwowlEnterRsp.status =
20979 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20980 }
20981 else
20982 {
20983 halStatus = *((eHalStatus*)pEventData->pEventData);
20984 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20985 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020986 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020987 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020988
Jeff Johnsone7245742012-09-05 17:12:55 -070020989 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020990}/*WDI_ProcessWowlEnterRsp*/
20991
20992/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020993 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020994 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020995
20996 @param pWDICtx: pointer to the WLAN DAL context
20997 pEventData: pointer to the event information structure
20998
Jeff Johnson295189b2012-06-20 16:38:30 -070020999 @see
21000 @return Result of the function call
21001*/
21002WDI_Status
21003WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021004(
Jeff Johnson295189b2012-06-20 16:38:30 -070021005 WDI_ControlBlockType* pWDICtx,
21006 WDI_EventInfoType* pEventData
21007)
21008{
Jeff Johnson295189b2012-06-20 16:38:30 -070021009 eHalStatus halStatus;
21010 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021011 tHalExitWowlRspParams halExitWowlRspParams;
21012 WDI_WowlExitRspParamsType wdiWowlExitRsp;
21013
Jeff Johnson295189b2012-06-20 16:38:30 -070021014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21015
21016 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021017 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 -------------------------------------------------------------------------*/
21019 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21020 ( NULL == pEventData->pEventData))
21021 {
21022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021023 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021024 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 }
21027
21028 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21029
21030 /*-------------------------------------------------------------------------
21031 Extract response and send it to UMAC
21032 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021033 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21034 {
21035 wpalMemoryCopy( &halExitWowlRspParams,
21036 pEventData->pEventData,
21037 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021038
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021039 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21040 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21041
21042 }
21043 else
21044 {
21045 halStatus = *((eHalStatus*)pEventData->pEventData);
21046 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21047 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021048 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021049 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021050
Jeff Johnsone7245742012-09-05 17:12:55 -070021051 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021052}/*WDI_ProcessWowlExitRsp*/
21053
21054/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021055 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021056 (called when a response is being received over the bus
21057 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021058
21059 @param pWDICtx: pointer to the WLAN DAL context
21060 pEventData: pointer to the event information structure
21061
Jeff Johnson295189b2012-06-20 16:38:30 -070021062 @see
21063 @return Result of the function call
21064*/
21065WDI_Status
21066WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021067(
Jeff Johnson295189b2012-06-20 16:38:30 -070021068 WDI_ControlBlockType* pWDICtx,
21069 WDI_EventInfoType* pEventData
21070)
21071{
21072 WDI_Status wdiStatus;
21073 eHalStatus halStatus;
21074 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21075 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21076
21077 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021078 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 -------------------------------------------------------------------------*/
21080 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21081 ( NULL == pEventData->pEventData))
21082 {
21083 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021084 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021085 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 }
21088
21089 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21090
21091 /*-------------------------------------------------------------------------
21092 Extract response and send it to UMAC
21093 -------------------------------------------------------------------------*/
21094 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021095 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021096
21097 /*Notify UMAC*/
21098 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21099
Jeff Johnsone7245742012-09-05 17:12:55 -070021100 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021101}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21102
21103
21104/**
21105 @brief Process Nv download(called when a response
21106 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021107
21108 @param pWDICtx: pointer to the WLAN DAL context
21109 pEventData: pointer to the event information structure
21110
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 @see
21112 @return Result of the function call
21113*/
21114WDI_Status
21115WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021116(
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 WDI_ControlBlockType* pWDICtx,
21118 WDI_EventInfoType* pEventData
21119)
21120{
21121
21122 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21123 tHalNvImgDownloadRspParams halNvDownloadRsp;
21124 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21125
21126 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021127 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021128 -------------------------------------------------------------------------*/
21129 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21130 ( NULL == pEventData->pEventData))
21131 {
21132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021133 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021134 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021135 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 }
21137
21138 /*-------------------------------------------------------------------------
21139 Extract response and send it to UMAC
21140 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021141 wpalMemoryCopy( &halNvDownloadRsp,
21142 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021143 sizeof(halNvDownloadRsp));
21144
21145 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21146
21147 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21149 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021150 {
21151 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021152 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021153 }
21154 else
21155 {
21156 /*Reset the Nv related global information in WDI context information */
21157 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21158 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21159 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21160 /*call WDA callback function for last fragment */
21161 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21162 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21163 }
21164
Jeff Johnsone7245742012-09-05 17:12:55 -070021165 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021166}
21167#ifdef WLAN_FEATURE_VOWIFI_11R
21168/**
21169 @brief Process Add TSpec Rsp function (called when a response
21170 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021171
21172 @param pWDICtx: pointer to the WLAN DAL context
21173 pEventData: pointer to the event information structure
21174
Jeff Johnson295189b2012-06-20 16:38:30 -070021175 @see
21176 @return Result of the function call
21177*/
21178WDI_Status
21179WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021180(
Jeff Johnson295189b2012-06-20 16:38:30 -070021181 WDI_ControlBlockType* pWDICtx,
21182 WDI_EventInfoType* pEventData
21183)
21184{
21185 WDI_Status wdiStatus;
21186 tAggrAddTsRspParams aggrAddTsRsp;
21187 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21189
21190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021192 -------------------------------------------------------------------------*/
21193 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21194 ( NULL == pEventData->pEventData))
21195 {
21196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021200 }
21201
21202 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21203
21204 /*-------------------------------------------------------------------------
21205 Extract response and send it to UMAC
21206 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021207 wpalMemoryCopy( &aggrAddTsRsp,
21208 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021209 sizeof(aggrAddTsRsp));
21210
21211 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021212 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021213
21214 /*Notify UMAC*/
21215 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21216
Jeff Johnsone7245742012-09-05 17:12:55 -070021217 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021218}/*WDI_ProcessAddTSpecRsp*/
21219#endif /* WLAN_FEATURE_VOWIFI_11R */
21220
21221/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021222 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021223 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021224
21225 @param pWDICtx: pointer to the WLAN DAL context
21226 pEventData: pointer to the event information structure
21227
Jeff Johnson295189b2012-06-20 16:38:30 -070021228 @see
21229 @return Result of the function call
21230*/
21231WDI_Status
21232WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021233(
Jeff Johnson295189b2012-06-20 16:38:30 -070021234 WDI_ControlBlockType* pWDICtx,
21235 WDI_EventInfoType* pEventData
21236)
21237{
21238 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21239 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21240 tHalHostResumeRspParams hostResumeRspMsg;
21241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21242
21243 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021244 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021245 -------------------------------------------------------------------------*/
21246 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21247 ( NULL == pEventData->pEventData))
21248 {
21249 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021250 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021251 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021252 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 }
21254
21255 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21256
21257 /*-------------------------------------------------------------------------
21258 Extract response and send it to UMAC
21259 -------------------------------------------------------------------------*/
21260
Jeff Johnsone7245742012-09-05 17:12:55 -070021261 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021262 (wpt_uint8*)pEventData->pEventData,
21263 sizeof(hostResumeRspMsg));
21264
Jeff Johnsone7245742012-09-05 17:12:55 -070021265 wdiResumeRspParams.wdiStatus =
21266 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021267
21268 /*Notify UMAC*/
21269 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21270
21271 return WDI_STATUS_SUCCESS;
21272}
21273
21274/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021275 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021276 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021277
21278 @param pWDICtx: pointer to the WLAN DAL context
21279 pEventData: pointer to the event information structure
21280
Jeff Johnson295189b2012-06-20 16:38:30 -070021281 @see
21282 @return Result of the function call
21283*/
21284WDI_Status
21285WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021286(
Jeff Johnson295189b2012-06-20 16:38:30 -070021287 WDI_ControlBlockType* pWDICtx,
21288 WDI_EventInfoType* pEventData
21289)
21290{
21291 WDI_Status wdiStatus;
21292 eHalStatus halStatus;
21293 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21295
21296 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021297 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021298 -------------------------------------------------------------------------*/
21299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21300 ( NULL == pEventData->pEventData))
21301 {
21302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021304 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021307
21308 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021309
21310 /*-------------------------------------------------------------------------
21311 Extract response and send it to UMAC
21312 -------------------------------------------------------------------------*/
21313 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021314 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021315
21316 /*Notify UMAC*/
21317 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21318
Jeff Johnsone7245742012-09-05 17:12:55 -070021319 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021320}/*WDI_ProcessSetTxPerTrackingRsp*/
21321
21322/*==========================================================================
21323 Indications from HAL
21324 ==========================================================================*/
21325/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021326 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 indication of this kind is being received over the bus
21328 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021329
21330 @param pWDICtx: pointer to the WLAN DAL context
21331 pEventData: pointer to the event information structure
21332
Jeff Johnson295189b2012-06-20 16:38:30 -070021333 @see
21334 @return Result of the function call
21335*/
21336WDI_Status
21337WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021338(
Jeff Johnson295189b2012-06-20 16:38:30 -070021339 WDI_ControlBlockType* pWDICtx,
21340 WDI_EventInfoType* pEventData
21341)
21342{
21343 WDI_LowLevelIndType wdiInd;
21344 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21346
21347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021349 -------------------------------------------------------------------------*/
21350 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21351 ( NULL == pEventData->pEventData))
21352 {
21353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021354 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021356 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 }
21358
21359 /*-------------------------------------------------------------------------
21360 Extract indication and send it to UMAC
21361 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021362 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21363 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021364 sizeof(tHalRSSINotification));
21365
21366 /*Fill in the indication parameters*/
21367 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21368 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21369 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21370 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21371 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21372 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21373 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21374 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21375 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21376 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21377 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21378 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21379 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021380 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21381 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021382
ltimariub77f24b2013-01-24 18:54:33 -080021383 if ( pWDICtx->wdiLowLevelIndCB )
21384 {
21385 /*Notify UMAC of indication*/
21386 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21387 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021388
21389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021390}/*WDI_ProcessLowRSSIInd*/
21391
21392
21393/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021394 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021395 an indication of this kind is being received over the
21396 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021397
21398 @param pWDICtx: pointer to the WLAN DAL context
21399 pEventData: pointer to the event information structure
21400
Jeff Johnson295189b2012-06-20 16:38:30 -070021401 @see
21402 @return Result of the function call
21403*/
21404WDI_Status
21405WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021406(
Jeff Johnson295189b2012-06-20 16:38:30 -070021407 WDI_ControlBlockType* pWDICtx,
21408 WDI_EventInfoType* pEventData
21409)
21410{
21411 WDI_Status wdiStatus;
21412 eHalStatus halStatus;
21413 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021414 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21416
21417 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021418 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021419 -------------------------------------------------------------------------*/
21420 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21421 ( NULL == pEventData->pEventData))
21422 {
21423 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021424 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021425 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021426 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021427 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021428 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 /*-------------------------------------------------------------------------
21430 Extract indication and send it to UMAC
21431 -------------------------------------------------------------------------*/
21432 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21433 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021434 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021435
21436 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021437 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021438 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21439 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021440 if ( pWDICtx->wdiLowLevelIndCB )
21441 {
21442 /*Notify UMAC*/
21443 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21444 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021445
21446 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021447}/*WDI_ProcessMissedBeaconInd*/
21448
21449
21450/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021451 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021452 an indication of this kind is being received over the
21453 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021454
21455 @param pWDICtx: pointer to the WLAN DAL context
21456 pEventData: pointer to the event information structure
21457
Jeff Johnson295189b2012-06-20 16:38:30 -070021458 @see
21459 @return Result of the function call
21460*/
21461WDI_Status
21462WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021463(
Jeff Johnson295189b2012-06-20 16:38:30 -070021464 WDI_ControlBlockType* pWDICtx,
21465 WDI_EventInfoType* pEventData
21466)
21467{
21468 WDI_Status wdiStatus;
21469 eHalStatus halStatus;
21470 WDI_LowLevelIndType wdiInd;
21471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21472
21473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021475 -------------------------------------------------------------------------*/
21476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21477 ( NULL == pEventData->pEventData))
21478 {
21479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 }
21484
21485 /*-------------------------------------------------------------------------
21486 Extract indication and send it to UMAC
21487 -------------------------------------------------------------------------*/
21488 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21489 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021490 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021491
21492 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021493 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 /* ! TO DO - fill in from HAL struct:
21495 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21496
ltimariub77f24b2013-01-24 18:54:33 -080021497 if ( pWDICtx->wdiLowLevelIndCB )
21498 {
21499 /*Notify UMAC*/
21500 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21501 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021502
21503 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021504}/*WDI_ProcessUnkAddrFrameInd*/
21505
21506
21507/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021508 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021509 indication of this kind is being received over the bus
21510 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021511
21512 @param pWDICtx: pointer to the WLAN DAL context
21513 pEventData: pointer to the event information structure
21514
Jeff Johnson295189b2012-06-20 16:38:30 -070021515 @see
21516 @return Result of the function call
21517*/
21518WDI_Status
21519WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021520(
Jeff Johnson295189b2012-06-20 16:38:30 -070021521 WDI_ControlBlockType* pWDICtx,
21522 WDI_EventInfoType* pEventData
21523)
21524{
21525 WDI_LowLevelIndType wdiInd;
21526 tpSirMicFailureInd pHalMicFailureInd;
21527
21528 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21529
21530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021531 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021532 -------------------------------------------------------------------------*/
21533 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21534 ( NULL == pEventData->pEventData))
21535 {
21536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021537 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021538 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021539 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021541
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21543 /*-------------------------------------------------------------------------
21544 Extract indication and send it to UMAC
21545 -------------------------------------------------------------------------*/
21546
21547 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021548 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021549 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21550 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21551 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21552 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21553 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21554 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21555 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21556 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021557 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021558 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021561 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021562 pHalMicFailureInd->info.keyId;
21563 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21564 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21565 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21566 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021567
21568 if ( pWDICtx->wdiLowLevelIndCB )
21569 {
21570 /*Notify UMAC*/
21571 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21572 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021573
21574 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021575}/*WDI_ProcessMicFailureInd*/
21576
21577
21578/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021579 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021580 an indication of this kind is being received over the
21581 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021582
21583 @param pWDICtx: pointer to the WLAN DAL context
21584 pEventData: pointer to the event information structure
21585
Jeff Johnson295189b2012-06-20 16:38:30 -070021586 @see
21587 @return Result of the function call
21588*/
21589WDI_Status
21590WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021591(
Jeff Johnson295189b2012-06-20 16:38:30 -070021592 WDI_ControlBlockType* pWDICtx,
21593 WDI_EventInfoType* pEventData
21594)
21595{
21596 WDI_Status wdiStatus;
21597 eHalStatus halStatus;
21598 WDI_LowLevelIndType wdiInd;
21599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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 /*-------------------------------------------------------------------------
21614 Extract indication and send it to UMAC
21615 -------------------------------------------------------------------------*/
21616
21617 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21618 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021619 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021620
21621 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21622 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021623
Jeff Johnson295189b2012-06-20 16:38:30 -070021624 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021625 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21626 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021627
ltimariub77f24b2013-01-24 18:54:33 -080021628 if ( pWDICtx->wdiLowLevelIndCB )
21629 {
21630 /*Notify UMAC*/
21631 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21632 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021633
21634 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021635}/*WDI_ProcessFatalErrorInd*/
21636
21637/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021638 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021639 an indication of this kind is being received over the
21640 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_ProcessDelSTAInd
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{
21655 tDeleteStaContextParams halDelSTACtx;
21656 WDI_LowLevelIndType wdiInd;
21657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21658
21659 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021660 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021661 -------------------------------------------------------------------------*/
21662 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21663 ( NULL == pEventData->pEventData))
21664 {
21665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021666 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021667 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021668 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 }
21670
21671 /*-------------------------------------------------------------------------
21672 Extract indication and send it to UMAC
21673 -------------------------------------------------------------------------*/
21674
21675 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021676 wpalMemoryCopy( &halDelSTACtx,
21677 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021678 sizeof(halDelSTACtx));
21679
21680 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021681 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021682
21683 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21684 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21685 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21686 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21687
Jeff Johnsone7245742012-09-05 17:12:55 -070021688 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021689 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21693 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021694
ltimariub77f24b2013-01-24 18:54:33 -080021695 if ( pWDICtx->wdiLowLevelIndCB )
21696 {
21697 /*Notify UMAC*/
21698 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21699 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021700
21701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021702}/*WDI_ProcessDelSTAInd*/
21703
21704/**
21705*@brief Process Coex Indication function (called when
21706 an indication of this kind is being received over the
21707 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021708
21709 @param pWDICtx: pointer to the WLAN DAL context
21710 pEventData: pointer to the event information structure
21711
Jeff Johnson295189b2012-06-20 16:38:30 -070021712 @see
21713 @return Result of the function call
21714*/
21715WDI_Status
21716WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021717(
Jeff Johnson295189b2012-06-20 16:38:30 -070021718 WDI_ControlBlockType* pWDICtx,
21719 WDI_EventInfoType* pEventData
21720)
21721{
21722 WDI_LowLevelIndType wdiInd;
21723 tCoexIndMsg halCoexIndMsg;
21724 wpt_uint32 index;
21725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21726
21727 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021728 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021729 -------------------------------------------------------------------------*/
21730 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21731 ( NULL == pEventData->pEventData ))
21732 {
21733 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021734 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021735 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021736 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 }
21738
21739 /*-------------------------------------------------------------------------
21740 Extract indication and send it to UMAC
21741 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021742 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21743 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 sizeof(halCoexIndMsg.coexIndParams) );
21745
21746 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021747 wdiInd.wdiIndicationType = WDI_COEX_IND;
21748 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021749 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21750 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021751 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021752 }
21753
21754 // DEBUG
21755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21756 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021757 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21758 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21759 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21760 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21761 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021762
ltimariub77f24b2013-01-24 18:54:33 -080021763 if ( pWDICtx->wdiLowLevelIndCB )
21764 {
21765 /*Notify UMAC*/
21766 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21767 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021768
21769 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021770}/*WDI_ProcessCoexInd*/
21771
21772/**
21773*@brief Process Tx Complete Indication function (called when
21774 an indication of this kind is being received over the
21775 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021776
21777 @param pWDICtx: pointer to the WLAN DAL context
21778 pEventData: pointer to the event information structure
21779
Jeff Johnson295189b2012-06-20 16:38:30 -070021780 @see
21781 @return Result of the function call
21782*/
21783WDI_Status
21784WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021785(
Jeff Johnson295189b2012-06-20 16:38:30 -070021786 WDI_ControlBlockType* pWDICtx,
21787 WDI_EventInfoType* pEventData
21788)
21789{
21790 WDI_LowLevelIndType wdiInd;
21791 tTxComplIndMsg halTxComplIndMsg;
21792 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21793
21794 /*-------------------------------------------------------------------------
21795 Sanity check
21796 -------------------------------------------------------------------------*/
21797 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21798 ( NULL == pEventData->pEventData ))
21799 {
21800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021801 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021802 WDI_ASSERT( 0 );
21803 return WDI_STATUS_E_FAILURE;
21804 }
21805
21806 /*-------------------------------------------------------------------------
21807 Extract indication and send it to UMAC
21808 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021809 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21810 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 sizeof(halTxComplIndMsg.txComplParams) );
21812
21813 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021814 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021815
21816 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21817 &halTxComplIndMsg.txComplParams,
21818 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021819
ltimariub77f24b2013-01-24 18:54:33 -080021820 if ( pWDICtx->wdiLowLevelIndCB )
21821 {
21822 /*Notify UMAC*/
21823 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21824 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021825
21826 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021827}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021828#ifdef FEATURE_WLAN_TDLS
21829/**
21830*@brief Process TDLS Indication function (called when
21831 an indication of this kind is being received over the
21832 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021833
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021834 @param pWDICtx: pointer to the WLAN DAL context
21835 pEventData: pointer to the event information structure
21836
21837 @see
21838 @return Result of the function call
21839*/
21840WDI_Status
21841WDI_ProcessTdlsInd
21842(
21843 WDI_ControlBlockType* pWDICtx,
21844 WDI_EventInfoType* pEventData
21845)
21846{
21847 WDI_LowLevelIndType wdiInd;
21848 tTdlsIndMsg halTdlsIndMsg;
21849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21850
21851 /*-------------------------------------------------------------------------
21852 Sanity check
21853 -------------------------------------------------------------------------*/
21854 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21855 ( NULL == pEventData->pEventData ))
21856 {
21857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21858 "%s: Invalid parameters", __func__);
21859 WDI_ASSERT( 0 );
21860 return WDI_STATUS_E_FAILURE;
21861 }
21862
21863 /*-------------------------------------------------------------------------
21864 Extract indication and send it to UMAC
21865 -------------------------------------------------------------------------*/
21866 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21867 pEventData->pEventData,
21868 sizeof(halTdlsIndMsg.tdlsIndParams) );
21869
21870 /*Fill in the indication parameters*/
21871 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21872
21873 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21874 = halTdlsIndMsg.tdlsIndParams.status;
21875
21876 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21877 = halTdlsIndMsg.tdlsIndParams.staIdx;
21878
21879 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21880 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21881
Atul Mittalbb2aad02014-09-22 19:09:36 +053021882 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21883 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021884 /*Notify UMAC*/
21885 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21886
21887 return WDI_STATUS_SUCCESS;
21888}/*WDI_ProcessTdlsInd*/
21889#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021890/**
Viral Modid86bde22012-12-10 13:09:21 -080021891*@brief Process Noa Start Indication function (called when
21892 an indication of this kind is being received over the
21893 bus from HAL)
21894
21895 @param pWDICtx: pointer to the WLAN DAL context
21896 pEventData: pointer to the event information structure
21897
21898 @see
21899 @return Result of the function call
21900*/
21901WDI_Status
21902WDI_ProcessP2pNoaStartInd
21903(
21904 WDI_ControlBlockType* pWDICtx,
21905 WDI_EventInfoType* pEventData
21906)
21907{
21908 WDI_LowLevelIndType wdiInd;
21909 tNoaStartIndMsg halNoaStartIndMsg;
21910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21911
21912 /*-------------------------------------------------------------------------
21913 Sanity check
21914 -------------------------------------------------------------------------*/
21915 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21916 ( NULL == pEventData->pEventData ))
21917 {
21918 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21919 "%s: Invalid parameters", __func__);
21920 WDI_ASSERT( 0 );
21921 return WDI_STATUS_E_FAILURE;
21922 }
21923
21924 /*-------------------------------------------------------------------------
21925 Extract indication and send it to UMAC
21926 -------------------------------------------------------------------------*/
21927 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21928 pEventData->pEventData,
21929 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21930
21931 /*Fill in the indication parameters*/
21932 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21933
21934 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21935 = halNoaStartIndMsg.noaStartIndParams.status;
21936
21937 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21938 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21939
21940 /*Notify UMAC*/
21941 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21942
21943 return WDI_STATUS_SUCCESS;
21944}/*WDI_ProcessNoaAttrInd*/
21945
21946/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021947*@brief Process Noa Attr Indication function (called when
21948 an indication of this kind is being received over the
21949 bus from HAL)
21950
21951 @param pWDICtx: pointer to the WLAN DAL context
21952 pEventData: pointer to the event information structure
21953
21954 @see
21955 @return Result of the function call
21956*/
21957WDI_Status
21958WDI_ProcessP2pNoaAttrInd
21959(
21960 WDI_ControlBlockType* pWDICtx,
21961 WDI_EventInfoType* pEventData
21962)
21963{
21964 WDI_LowLevelIndType wdiInd;
21965 tNoaAttrIndMsg halNoaAttrIndMsg;
21966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21967
21968 /*-------------------------------------------------------------------------
21969 Sanity check
21970 -------------------------------------------------------------------------*/
21971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21972 ( NULL == pEventData->pEventData ))
21973 {
21974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021976 WDI_ASSERT( 0 );
21977 return WDI_STATUS_E_FAILURE;
21978 }
21979
21980 /*-------------------------------------------------------------------------
21981 Extract indication and send it to UMAC
21982 -------------------------------------------------------------------------*/
21983 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21984 pEventData->pEventData,
21985 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21986
21987 /*Fill in the indication parameters*/
21988 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021989
Jeff Johnson295189b2012-06-20 16:38:30 -070021990 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21991 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021992
Jeff Johnson295189b2012-06-20 16:38:30 -070021993 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21994 = halNoaAttrIndMsg.noaAttrIndParams.index;
21995 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21996 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21997 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
21998 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070021999
Jeff Johnson295189b2012-06-20 16:38:30 -070022000 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
22001 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
22002 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
22003 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
22004 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
22005 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
22006 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
22007 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070022008
Jeff Johnson295189b2012-06-20 16:38:30 -070022009 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
22010 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
22011 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
22012 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
22013 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
22014 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22015 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22016 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22017
ltimariub77f24b2013-01-24 18:54:33 -080022018 if ( pWDICtx->wdiLowLevelIndCB )
22019 {
22020 /*Notify UMAC*/
22021 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22022 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022023
22024 return WDI_STATUS_SUCCESS;
22025}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022026
22027/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022028 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022029 an indication of this kind is being received over the
22030 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022031
22032 @param pWDICtx: pointer to the WLAN DAL context
22033 pEventData: pointer to the event information structure
22034
Jeff Johnson295189b2012-06-20 16:38:30 -070022035 @see
22036 @return Result of the function call
22037*/
22038WDI_Status
22039WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022040(
Jeff Johnson295189b2012-06-20 16:38:30 -070022041 WDI_ControlBlockType* pWDICtx,
22042 WDI_EventInfoType* pEventData
22043)
22044{
22045 WDI_LowLevelIndType wdiInd;
22046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022047
Jeff Johnson295189b2012-06-20 16:38:30 -070022048 /*-------------------------------------------------------------------------
22049 Extract indication and send it to UMAC
22050 -------------------------------------------------------------------------*/
22051 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022052 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22053
ltimariub77f24b2013-01-24 18:54:33 -080022054 if ( pWDICtx->wdiLowLevelIndCB )
22055 {
22056 /*Notify UMAC*/
22057 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22058 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022059
Jeff Johnsone7245742012-09-05 17:12:55 -070022060 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022061}/*WDI_ProcessTxPerHitInd*/
22062
Jeff Johnson295189b2012-06-20 16:38:30 -070022063/**
Yue Mab9c86f42013-08-14 15:59:08 -070022064 @brief Process Periodic Tx Pattern Fw Indication function
22065
22066 @param pWDICtx: pointer to the WLAN DAL context
22067 pEventData: pointer to the event information structure
22068
22069 @see
22070 @return Result of the function call
22071*/
22072WDI_Status
22073WDI_ProcessPeriodicTxPtrnFwInd
22074(
22075 WDI_ControlBlockType* pWDICtx,
22076 WDI_EventInfoType* pEventData
22077)
22078{
22079 WDI_LowLevelIndType wdiInd;
22080
22081 /*-------------------------------------------------------------------------
22082 Sanity check
22083 -------------------------------------------------------------------------*/
22084 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22085 (NULL == pEventData->pEventData))
22086 {
22087 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22088 "%s: Invalid parameters", __func__);
22089 WDI_ASSERT(0);
22090 return WDI_STATUS_E_FAILURE;
22091 }
22092
22093 /*-------------------------------------------------------------------------
22094 Extract indication and send it to UMAC
22095 -------------------------------------------------------------------------*/
22096 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22097 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22098 sizeof(tHalPeriodicTxPtrnFwInd));
22099
22100 if (pWDICtx->wdiLowLevelIndCB)
22101 {
22102 /*Notify UMAC*/
22103 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22104 }
22105
22106 return WDI_STATUS_SUCCESS;
22107}
22108
22109/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022110 @brief WDI_ProcessFTMCommandReq
22111 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022112
22113 @param pWDICtx: pointer to the WLAN DAL context
22114 pEventData: pointer to the event information structure
22115
Jeff Johnson295189b2012-06-20 16:38:30 -070022116 @see
22117 @return Result of the function call
22118*/
22119WDI_Status
22120WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022121(
Jeff Johnson295189b2012-06-20 16:38:30 -070022122 WDI_ControlBlockType* pWDICtx,
22123 WDI_EventInfoType* pEventData
22124)
22125{
22126 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22127 wpt_uint8 *ftmCommandBuffer = NULL;
22128 wpt_uint16 dataOffset;
22129 wpt_uint16 bufferSize;
22130 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022131 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022132 -------------------------------------------------------------------------*/
22133 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22134 ( NULL == pEventData->pEventData))
22135
22136 {
22137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022138 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022139 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022140 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 }
22142
22143 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22144
22145 /* Get MSG Buffer */
22146 WDI_GetMessageBuffer(pWDICtx,
22147 WDI_FTM_CMD_REQ,
22148 ftmCommandReq->bodyLength,
22149 &ftmCommandBuffer,
22150 &dataOffset,
22151 &bufferSize);
22152
22153 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22154 ftmCommandReq->FTMCommandBody,
22155 ftmCommandReq->bodyLength);
22156
22157 /* Send MSG */
22158 return WDI_SendMsg(pWDICtx,
22159 ftmCommandBuffer,
22160 bufferSize,
22161 pEventData->pCBfnc,
22162 pEventData->pUserData,
22163 WDI_FTM_CMD_RESP);
22164}
22165
22166/**
22167 @brief WDI_ProcessFTMCommandRsp
22168 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022169
22170 @param pWDICtx: pointer to the WLAN DAL context
22171 pEventData: pointer to the event information structure
22172
Jeff Johnson295189b2012-06-20 16:38:30 -070022173 @see
22174 @return Result of the function call
22175*/
22176WDI_Status
22177WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022178(
Jeff Johnson295189b2012-06-20 16:38:30 -070022179 WDI_ControlBlockType* pWDICtx,
22180 WDI_EventInfoType* pEventData
22181)
22182{
22183 WDI_FTMCommandRspCb ftmCMDRspCb;
22184 tProcessPttRspParams *ftmCMDRspData = NULL;
22185 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22186
22187 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022188 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022189 -------------------------------------------------------------------------*/
22190 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22191 ( NULL == pEventData->pEventData))
22192 {
22193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022194 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022195 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022196 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 }
22198
22199 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22200
22201 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22202
Jeff Johnsone7245742012-09-05 17:12:55 -070022203 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22204 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022205 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22206
22207 /*Notify UMAC*/
22208 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22209
Jeff Johnsone7245742012-09-05 17:12:55 -070022210 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022211}
Jeff Johnson295189b2012-06-20 16:38:30 -070022212/**
22213 @brief WDI_ProcessHalDumpCmdReq
22214 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022215
22216 @param pWDICtx: pointer to the WLAN DAL context
22217 pEventData: pointer to the event information structure
22218
Jeff Johnson295189b2012-06-20 16:38:30 -070022219 @see
22220 @return Result of the function call
22221*/
22222WDI_Status
22223WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022224(
Jeff Johnson295189b2012-06-20 16:38:30 -070022225 WDI_ControlBlockType* pWDICtx,
22226 WDI_EventInfoType* pEventData
22227)
22228{
22229 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22230 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22231 wpt_uint16 usDataOffset = 0;
22232 wpt_uint16 usSendSize = 0;
22233 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022234 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022235
22236 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022237 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022238 -------------------------------------------------------------------------*/
22239 if (( NULL == pEventData ) ||
22240 ( NULL == pEventData->pEventData) ||
22241 ( NULL == pEventData->pCBfnc ))
22242 {
22243 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022244 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022247 }
22248
22249 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22250 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22251
22252 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022253 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022254 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022255 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022257 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022262 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022263
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 /*-----------------------------------------------------------------------
22265 Get message buffer
22266 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022267 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022268 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22269 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022270 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022271 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22272 {
22273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022274 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022275 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22276 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022278 }
22279
Jeff Johnsone7245742012-09-05 17:12:55 -070022280 wpalMemoryCopy( pSendBuffer+usDataOffset,
22281 &halDumpCmdReqMsg.dumpCmdReqParams,
22282 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022283
22284 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022285 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022286
22287 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022288 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022289 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022290 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22291 wdiHALDumpCmdRspCb, pEventData->pUserData,
22292 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022293}
22294
22295/**
22296 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022297 Process hal Dump Command Response from HAL, simply route to HDD
22298
22299 @param pWDICtx: pointer to the WLAN DAL context
22300 pEventData: pointer to the event information structure
22301
Jeff Johnson295189b2012-06-20 16:38:30 -070022302 @see
22303 @return Result of the function call
22304*/
22305WDI_Status
22306WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022307(
Jeff Johnson295189b2012-06-20 16:38:30 -070022308 WDI_ControlBlockType* pWDICtx,
22309 WDI_EventInfoType* pEventData
22310)
22311{
22312 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022313 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022314 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22315
22316 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022317 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022318 -------------------------------------------------------------------------*/
22319 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22320 ( NULL == pEventData->pEventData))
22321 {
22322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022323 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 }
22327
Jeff Johnsone7245742012-09-05 17:12:55 -070022328 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022329
22330 /*Initialize the WDI Response structure */
22331 wdiHALDumpCmdRsp.usBufferLen = 0;
22332 wdiHALDumpCmdRsp.pBuffer = NULL;
22333
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022334 wpalMemoryCopy( &halDumpCmdRspParams,
22335 pEventData->pEventData,
22336 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022337
22338 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022339 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022340
22341 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022342 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022343 {
22344 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022345 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22346 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22347
22348 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22349 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022350 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022351 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022352
Jeff Johnson295189b2012-06-20 16:38:30 -070022353 /*Notify UMAC*/
22354 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22355
22356 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22357 {
22358 /* Free the allocated buffer */
22359 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22360 }
22361 return WDI_STATUS_SUCCESS;
22362}
22363
22364/*==========================================================================
22365 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022366
Jeff Johnson295189b2012-06-20 16:38:30 -070022367 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022368 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022369==========================================================================*/
22370/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022371 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022372 when it wishes to send up a notification like the ones
22373 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022374
Jeff Johnson295189b2012-06-20 16:38:30 -070022375 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022376
22377 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022378 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022379 wctsNotifyCBData: the callback data of the user
22380
Jeff Johnson295189b2012-06-20 16:38:30 -070022381 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022382
22383 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022384*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022385void
Jeff Johnson295189b2012-06-20 16:38:30 -070022386WDI_NotifyMsgCTSCB
22387(
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022389 WCTS_NotifyEventType wctsEvent,
22390 void* wctsNotifyCBData
22391)
22392{
Jeff Johnsone7245742012-09-05 17:12:55 -070022393 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022394 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22395
22396 if (NULL == pWDICtx )
22397 {
22398 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022399 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022400 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022401 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 }
22403
22404 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22405 {
22406 /* callback presumably occurred after close */
22407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022408 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022409 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022410 }
22411
22412 if ( WCTS_EVENT_OPEN == wctsEvent )
22413 {
22414 /*Flag must be set atomically as it is checked from incoming request
22415 functions*/
22416 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022417 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022418
22419 /*Nothing to do - so try to dequeue any pending request that may have
22420 occurred while we were trying to establish this*/
22421 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022422 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022423 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 {
22426 /*Flag must be set atomically as it is checked from incoming request
22427 functions*/
22428 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022429 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022430
22431 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022432 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022433 wpalMutexRelease(&pWDICtx->wptMutex);
22434
22435 /*Notify that the Control Channel is closed */
22436 wpalEventSet(&pWDICtx->wctsActionEvent);
22437 }
22438
22439}/*WDI_NotifyMsgCTSCB*/
22440
22441
22442/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022443 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022444 when it wishes to send up a packet received over the
22445 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022446
Jeff Johnson295189b2012-06-20 16:38:30 -070022447 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022448
22449 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022450 pMsg: the packet
22451 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022452 wctsRxMsgCBData: the callback data of the user
22453
Jeff Johnson295189b2012-06-20 16:38:30 -070022454 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022455
22456 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022457*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022458void
22459WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022460(
Jeff Johnsone7245742012-09-05 17:12:55 -070022461 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022462 void* pMsg,
22463 wpt_uint32 uLen,
22464 void* wctsRxMsgCBData
22465)
22466{
Jeff Johnsone7245742012-09-05 17:12:55 -070022467 tHalMsgHeader *pHalMsgHeader;
22468 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22470 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22471
22472 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022473 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022474 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 ( uLen < sizeof(tHalMsgHeader)))
22477 {
22478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022479 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022480 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022481 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 }
22483
22484 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22485 {
22486 /* callback presumably occurred after close */
22487 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022488 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022489 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022490 }
22491
Jeff Johnsone7245742012-09-05 17:12:55 -070022492 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022493 context - so no serialization is necessary here
22494 ! - revisit this assumption */
22495
22496 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22497
22498 if ( uLen != pHalMsgHeader->msgLen )
22499 {
22500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22501 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022502 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022503 wpalWlanReload();
22504
Jeff Johnsone7245742012-09-05 17:12:55 -070022505 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022506 }
22507
22508 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22509
22510 /*The message itself starts after the header*/
22511 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22512 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22513 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22514 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22515
22516
22517 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22518 {
22519 /*Stop the timer as the response was received */
22520 /*!UT - check for potential race conditions between stop and response */
22521 wpalTimerStop(&pWDICtx->wptResponseTimer);
22522 }
22523 /* Check if we receive a response message which is not expected */
22524 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22525 {
22526 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22527 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22528 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022529 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022530 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22531 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022532
22533 if (gWDICb.bEnableSSR == false)
22534 {
22535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22536 "SSR is not enabled on WDI timeout");
22537 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22538 return;
22539 }
22540 wpalWcnssResetIntr();
22541 /* if this timer fires, it means Riva did not receive the FIQ */
22542 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22543
Jeff Johnson295189b2012-06-20 16:38:30 -070022544 return;
22545 }
22546
22547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22548 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22549
22550 /*Post response event to the state machine*/
22551 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22552
22553}/*WDI_RXMsgCTSCB*/
22554
22555
22556/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022557 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022558========================================================================*/
22559
22560/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022561 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022562 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022563
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 @param pWDICtx - pointer to the control block
22565
22566 @return Result of the function call
22567*/
22568WPT_INLINE WDI_Status
22569WDI_CleanCB
22570(
22571 WDI_ControlBlockType* pWDICtx
22572)
22573{
22574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22575
22576 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022577 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022578
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022580 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22581 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22582
22583 WDI_ResetAssocSessions( pWDICtx );
22584
22585 return WDI_STATUS_SUCCESS;
22586}/*WDI_CleanCB*/
22587
22588
22589/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022590 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022591
Jeff Johnsone7245742012-09-05 17:12:55 -070022592
22593 @param pWDICtx: pointer to the WLAN DAL context
22594 pEventData: pointer to the event information structure
22595
Jeff Johnson295189b2012-06-20 16:38:30 -070022596 @see
22597 @return Result of the function call
22598*/
22599WPT_INLINE WDI_Status
22600WDI_ProcessRequest
22601(
22602 WDI_ControlBlockType* pWDICtx,
22603 WDI_EventInfoType* pEventData
22604)
22605{
22606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22607
Jeff Johnsone7245742012-09-05 17:12:55 -070022608 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022609 already checked these pointers*/
22610
22611 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22612 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022613 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022615 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022616 WDI_getReqMsgString(pEventData->wdiRequest),
22617 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22618 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22619 }
22620 else
22621 {
22622 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022623 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022624 pEventData->wdiRequest);
22625 return WDI_STATUS_E_NOT_IMPLEMENT;
22626 }
22627}/*WDI_ProcessRequest*/
22628
22629
22630/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022631 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022632 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 prefixes it with a send message header
22634
22635 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022636 wdiReqType: type of the request being sent
22637 uBufferLen: message buffer len
22638 pMsgBuffer: resulting allocated buffer
22639 pusDataOffset: offset in the buffer where the caller
22640 can start copying its message data
22641 puBufferSize: the resulting buffer size (offset+buff
22642 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022643
Jeff Johnson295189b2012-06-20 16:38:30 -070022644 @see
22645 @return Result of the function call
22646*/
22647WDI_Status
22648WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022649(
22650 WDI_ControlBlockType* pWDICtx,
22651 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022652 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 wpt_uint8** pMsgBuffer,
22654 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022655 wpt_uint16* pusBufferSize
22656)
22657{
22658 tHalMsgHeader halMsgHeader;
22659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22660
Jeff Johnsone7245742012-09-05 17:12:55 -070022661 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022662 again*/
22663
22664 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022665 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022666 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22669 if ( NULL == *pMsgBuffer )
22670 {
22671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22672 "Unable to allocate message buffer for req %s (%d)",
22673 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022674 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 }
22678
22679 /*-------------------------------------------------------------------------
22680 Fill in the message header
22681 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022682 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22683 /* Fill msgVersion */
22684#ifdef WLAN_FEATURE_11AC
22685 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022686 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022687 else
22688#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022689 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022690
Jeff Johnsone7245742012-09-05 17:12:55 -070022691 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22692 *pusDataOffset = sizeof(halMsgHeader);
22693 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22694
22695 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022696}/*WDI_GetMessageBuffer*/
22697
22698
22699/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022700 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022701 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 the CB
22703
22704 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022705 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022706
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 usSendSize size of the buffer to be sent
22708 pRspCb: response callback - save in the WDI
22709 CB
22710 pUserData: user data associated with the
22711 callback
22712 wdiExpectedResponse: the code of the response that is
22713 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022714
Jeff Johnson295189b2012-06-20 16:38:30 -070022715 @see
22716 @return Result of the function call
22717*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022718WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022719WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022720(
22721 WDI_ControlBlockType* pWDICtx,
22722 wpt_uint8* pSendBuffer,
22723 wpt_uint32 usSendSize,
22724 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022725 void* pUserData,
22726 WDI_ResponseEnumType wdiExpectedResponse
22727)
22728{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022729 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022730 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22732
22733 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022734 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022735 ------------------------------------------------------------------------*/
22736 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022737 pWDICtx->pfncRspCB = pRspCb;
22738 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022739
22740 /*-----------------------------------------------------------------------
22741 Call the CTS to send this message over - free message afterwards
22742 - notify transport failure
22743 Note: CTS is reponsible for freeing the message buffer.
22744 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022745 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22746 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22747 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022748 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022749 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022750 "Failed to send message with expected response %s (%d)"
22751 " over the bus - catastrophic failure",
22752 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22753 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022754
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022755 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22756 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022757 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022758 else
22759 {
22760 /* even when message was placed in CTS deferred Q, we will treat it
22761 success but log this info
22762 */
22763 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22764 {
22765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22766 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22767 "response %s (%d)",
22768 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22769 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022770 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022771 }
22772 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022773
Jeff Johnsond13512a2012-07-17 11:42:19 -070022774 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022775 if ( NULL != pWDICtx->wdiReqStatusCB )
22776 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022777 /*Inform originator whether request went through or not*/
22778 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22779 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022780 pWDICtx->wdiReqStatusCB = NULL;
22781 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022782 callback(wdiStatus, callbackContext);
22783
22784 /*For WDI requests which have registered a request callback,
22785 inform the WDA caller of the same via setting the return value
22786 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22787 end up repeating the functonality in the req callback for the
22788 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022789 if (wdiStatus != WDI_STATUS_SUCCESS)
22790 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022791 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022792 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022793 }
22794
Jeff Johnsond13512a2012-07-17 11:42:19 -070022795 if ( wdiStatus == WDI_STATUS_SUCCESS )
22796 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022797 /*Start timer for the expected response */
22798 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022799
22800 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022801 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022802 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022803 }
22804 else
22805 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022806 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022807 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22808 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022809
Jeff Johnsond13512a2012-07-17 11:42:19 -070022810 return wdiStatus;
22811
Jeff Johnson295189b2012-06-20 16:38:30 -070022812}/*WDI_SendMsg*/
22813
22814
22815
22816/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022817 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022818 the bus using the control transport and saves some info
22819 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022820
22821 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022822 pSendBuffer: buffer to be sent
22823 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022824
Jeff Johnson295189b2012-06-20 16:38:30 -070022825 @see
22826 @return Result of the function call
22827*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022828WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022829WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022830(
22831 WDI_ControlBlockType* pWDICtx,
22832 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022833 wpt_uint32 usSendSize
22834)
22835{
22836 wpt_uint32 uStatus ;
22837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22838
22839 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022840 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022841 Note: CTS is reponsible for freeing the message buffer.
22842 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022843 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022844 (void*)pSendBuffer, usSendSize );
22845
22846 /*Inform Upper MAC about the outcome of the request*/
22847 if ( NULL != pWDICtx->wdiReqStatusCB )
22848 {
22849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22850 "Send indication status : %d", uStatus);
22851
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022852 /* even if CTS placed indication into its deferred Q, we treat it
22853 * as success and let CTS drain its queue as per smd interrupt to CTS
22854 */
22855 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 -070022856 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022857 }
22858
22859 /*If sending of the message failed - it is considered catastrophic and
22860 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022861 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22862 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22863
Jeff Johnson295189b2012-06-20 16:38:30 -070022864 {
22865 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022866 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022867
22868 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22869 return WDI_STATUS_E_FAILURE;
22870 }
22871
Jeff Johnsone7245742012-09-05 17:12:55 -070022872 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022873}/*WDI_SendIndication*/
22874
22875
22876/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022877 @brief WDI_DetectedDeviceError - called internally by DAL when
22878 it has detected a failure in the device
22879
22880 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022881 usErrorCode: error code detected by WDI or received
22882 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022883
Jeff Johnson295189b2012-06-20 16:38:30 -070022884 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022885 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022886*/
22887void
22888WDI_DetectedDeviceError
22889(
22890 WDI_ControlBlockType* pWDICtx,
22891 wpt_uint16 usErrorCode
22892)
22893{
22894 WDI_LowLevelIndType wdiInd;
22895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22896
22897 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22898 "Device Error detected code: %d - transitioning to stopped state",
22899 usErrorCode);
22900
Katya Nigamf02ad012014-05-05 16:12:49 +053022901 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22902
Jeff Johnson295189b2012-06-20 16:38:30 -070022903 wpalMutexAcquire(&pWDICtx->wptMutex);
22904
22905 WDI_STATableStop(pWDICtx);
22906
22907 WDI_ResetAssocSessions(pWDICtx);
22908
22909 /*Set the expected state transition to stopped - because the device
22910 experienced a failure*/
22911 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22912
22913 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022914 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022915
Jeff Johnsone7245742012-09-05 17:12:55 -070022916 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022917
22918 /*TO DO: - there should be an attempt to reset the device here*/
22919
22920 wpalMutexRelease(&pWDICtx->wptMutex);
22921
22922 /*------------------------------------------------------------------------
22923 Notify UMAC if a handler is registered
22924 ------------------------------------------------------------------------*/
22925 if (pWDICtx->wdiLowLevelIndCB)
22926 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022927 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22928 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022929
22930 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22931 }
22932}/*WDI_DetectedDeviceError*/
22933
22934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022935 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022936 we started on send message has expire - this should
22937 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022938 reply - trigger catastrophic failure
22939 @param
22940
Jeff Johnson295189b2012-06-20 16:38:30 -070022941 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022942
22943 @see
22944 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022945*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022946void
Jeff Johnson295189b2012-06-20 16:38:30 -070022947WDI_ResponseTimerCB
22948(
22949 void *pUserData
22950)
22951{
22952 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22953 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22954
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022955 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022956 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022957 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022958 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022959 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022960 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022961 }
22962
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022963 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022964 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022965 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022966
22967 /* If response timer is running at this time that means this timer
22968 * event is not for the last request but rather last-to-last request and
22969 * this timer event has come after we recevied respone for last-to-last
22970 * message
22971 */
22972 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22973 {
22974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22975 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022976 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022977 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22979 "uArchTimeStampTmrStart: %llu seconds, "
22980 "uArchTimeStampTmrExp: %llu seconds",
22981 pWDICtx->uArchTimeStampRspTmrStart,
22982 pWDICtx->uArchTimeStampRspTmrExp);
22983
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022984 return;
22985 }
22986
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022987 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022988 {
22989
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022990 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022991 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022992 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022993 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022994 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22995 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022996 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22997 "uArchTimeStampTmrStart: %llu seconds, "
22998 "uArchTimeStampTmrExp: %llu seconds",
22999 pWDICtx->uArchTimeStampRspTmrStart,
23000 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023001
23002 /* WDI timeout means Riva is not responding or SMD communication to Riva
23003 * is not happening. The only possible way to recover from this error
23004 * is to initiate SSR from APPS.
23005 * There is also an option to re-enable wifi, which will eventually
23006 * trigger SSR
23007 */
23008 if (gWDICb.bEnableSSR == false)
23009 {
23010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23011 "SSR is not enabled on WDI timeout");
23012 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23013 return;
23014 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023015#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023016 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023017 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023018 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023019 if(wpalIsSsrPanicOnFailure())
23020 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023021 } else {
23022 /* if this timer fires, it means Riva did not receive the FIQ */
23023 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023024 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023025#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023026 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23027 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023028#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023029 }
23030 else
23031 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023033 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023034 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023035 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23036 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023037 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23038 "uArchTimeStampTmrStart: %llu seconds, "
23039 "uArchTimeStampTmrExp: %llu seconds",
23040 pWDICtx->uArchTimeStampRspTmrStart,
23041 pWDICtx->uArchTimeStampRspTmrExp);
23042
Jeff Johnson295189b2012-06-20 16:38:30 -070023043 }
23044
23045 return;
23046
23047}/*WDI_ResponseTimerCB*/
23048
23049
23050/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023051 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023052
Jeff Johnsone7245742012-09-05 17:12:55 -070023053
23054 @param pWDICtx: pointer to the WLAN DAL context
23055 pEventData: pointer to the event information structure
23056
Jeff Johnson295189b2012-06-20 16:38:30 -070023057 @see
23058 @return Result of the function call
23059*/
23060WPT_INLINE WDI_Status
23061WDI_ProcessResponse
23062(
23063 WDI_ControlBlockType* pWDICtx,
23064 WDI_EventInfoType* pEventData
23065)
23066{
23067 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23068
Jeff Johnsone7245742012-09-05 17:12:55 -070023069 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023070 already checked these pointers
23071 ! - revisit this assumption */
23072 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23073 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023074 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023076 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 WDI_getRespMsgString(pEventData->wdiResponse),
23078 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23079 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23080 }
23081 else
23082 {
23083 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023084 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023085 pEventData->wdiResponse);
23086 return WDI_STATUS_E_NOT_IMPLEMENT;
23087 }
23088}/*WDI_ProcessResponse*/
23089
23090
23091/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023092 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023093=========================================================================*/
23094
23095/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023096 @brief Utility function used by the DAL Core to help queue a
23097 request that cannot be processed right away.
23098 @param
23099
Jeff Johnson295189b2012-06-20 16:38:30 -070023100 pWDICtx: - pointer to the WDI control block
23101 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023102 queued
23103
23104 @see
23105 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023106*/
23107WDI_Status
23108WDI_QueuePendingReq
23109(
23110 WDI_ControlBlockType* pWDICtx,
23111 WDI_EventInfoType* pEventData
23112)
23113{
Jeff Johnsone7245742012-09-05 17:12:55 -070023114 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023115 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023116 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23118
23119 if ( NULL == pEventDataQueue )
23120 {
23121 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023122 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023123 WDI_ASSERT(0);
23124 return WDI_STATUS_MEM_FAILURE;
23125 }
23126
23127 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23128 pEventDataQueue->pUserData = pEventData->pUserData;
23129 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23130 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023131 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023132
23133 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23134 {
23135 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023136
Jeff Johnson295189b2012-06-20 16:38:30 -070023137 if ( NULL == pEventInfo )
23138 {
23139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023140 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023141 WDI_ASSERT(0);
23142 wpalMemoryFree(pEventDataQueue);
23143 return WDI_STATUS_MEM_FAILURE;
23144 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023145
Jeff Johnson295189b2012-06-20 16:38:30 -070023146 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23147
23148 }
23149 pEventDataQueue->pEventData = pEventInfo;
23150
23151 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023152 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023153
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023154 if (eWLAN_PAL_STATUS_E_FAILURE ==
23155 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23156 {
23157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23158 "pEventDataQueue wpal_list_insert_back failed");
23159 WDI_ASSERT(0);
23160 wpalMemoryFree(pEventDataQueue);
23161 wpalMemoryFree(pEventInfo);
23162 return WDI_STATUS_MEM_FAILURE;
23163 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023164
23165 return WDI_STATUS_SUCCESS;
23166}/*WDI_QueuePendingReq*/
23167
23168/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023169 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023170 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023171 @param
23172
23173 pMsg - pointer to the message
23174
23175 @see
23176 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023177*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023178void
Jeff Johnson295189b2012-06-20 16:38:30 -070023179WDI_PALCtrlMsgCB
23180(
23181 wpt_msg *pMsg
23182)
23183{
23184 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023185 WDI_ControlBlockType* pWDICtx = NULL;
23186 WDI_Status wdiStatus;
23187 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023188 void* pUserData;
23189 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23190
23191 if (( NULL == pMsg )||
23192 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23193 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23194 {
23195 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023196 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023199 }
23200
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023201 /*Access to the global state must be locked */
23202 wpalMutexAcquire(&pWDICtx->wptMutex);
23203
Jeff Johnson295189b2012-06-20 16:38:30 -070023204 /*Transition back to the state that we had before serialization
23205 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023206 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023207 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023208 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023209
23210 /*-----------------------------------------------------------------------
23211 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023212 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023213 -----------------------------------------------------------------------*/
23214 switch ( pEventData->wdiRequest )
23215 {
23216
Jeff Johnsone7245742012-09-05 17:12:55 -070023217 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023218 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23219 break;
23220
Jeff Johnson295189b2012-06-20 16:38:30 -070023221 case WDI_NV_DOWNLOAD_REQ:
23222 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23223 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23224 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23225 {
23226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023227 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023228 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23229 }
23230 else
23231 {
23232 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23233 }
23234
23235 break;
23236
23237 default:
23238 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23239 break;
23240 }/*switch ( pEventData->wdiRequest )*/
23241
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023242 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023243 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023244 {
23245 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23246
23247 if ( NULL != pfnReqStatusCB )
23248 {
23249 /*Fail the request*/
23250 pfnReqStatusCB( wdiStatus, pUserData);
23251 }
23252 }
23253
23254 /* Free data - that was allocated when queueing*/
23255 if( pEventData != NULL )
23256 {
23257 if( pEventData->pEventData != NULL )
23258 {
23259 wpalMemoryFree(pEventData->pEventData);
23260 }
23261 wpalMemoryFree(pEventData);
23262 }
23263
23264 if( pMsg != NULL )
23265 {
23266 wpalMemoryFree(pMsg);
23267 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023268
Jeff Johnson295189b2012-06-20 16:38:30 -070023269}/*WDI_PALCtrlMsgCB*/
23270
23271/**
23272 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023273 and schedule for execution a pending request
23274 @param
23275
Jeff Johnson295189b2012-06-20 16:38:30 -070023276 pWDICtx: - pointer to the WDI control block
23277 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023278 queued
23279
23280 @see
23281 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023282*/
23283WDI_Status
23284WDI_DequeuePendingReq
23285(
23286 WDI_ControlBlockType* pWDICtx
23287)
23288{
Jeff Johnsone7245742012-09-05 17:12:55 -070023289 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023290 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23293
Jeff Johnsone7245742012-09-05 17:12:55 -070023294 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023295
23296 if ( NULL == pNode )
23297 {
23298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023299 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023300 return WDI_STATUS_SUCCESS;
23301 }
23302
23303 /*The node actually points to the 1st element inside the Event Data struct -
23304 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023305 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023306
23307 /*Serialize processing in the control thread
23308 !TO DO: - check to see if these are all the messages params that need
23309 to be filled in*/
23310 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23311
23312 if ( NULL == palMsg )
23313 {
23314 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023315 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023316 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 palMsg->callback = WDI_PALCtrlMsgCB;
23321 palMsg->ptr = pEventData;
23322
23323 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023324 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023325 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023326
Jeff Johnson295189b2012-06-20 16:38:30 -070023327 /*Transition back to BUSY as we need to handle a queued request*/
23328 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023329
Jeff Johnson295189b2012-06-20 16:38:30 -070023330 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23331
23332 return WDI_STATUS_PENDING;
23333}/*WDI_DequeuePendingReq*/
23334
23335
23336/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023338 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 away.- The assoc requests will be queued by BSSID
23340 @param
23341
Jeff Johnson295189b2012-06-20 16:38:30 -070023342 pWDICtx: - pointer to the WDI control block
23343 pEventData: pointer to the evnt info that needs to be queued
23344 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023345
23346 @see
23347 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023348*/
23349WDI_Status
23350WDI_QueueNewAssocRequest
23351(
23352 WDI_ControlBlockType* pWDICtx,
23353 WDI_EventInfoType* pEventData,
23354 wpt_macAddr macBSSID
23355)
23356{
Jeff Johnsone7245742012-09-05 17:12:55 -070023357 wpt_uint8 i;
23358 WDI_BSSSessionType* pSession = NULL;
23359 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023360 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023361 void* pEventInfo;
23362 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023363 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023364
Jeff Johnsone7245742012-09-05 17:12:55 -070023365
23366 /*------------------------------------------------------------------------
23367 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023368 ------------------------------------------------------------------------*/
23369 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23370 {
23371 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23372 {
23373 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023374 pSession = &pWDICtx->aBSSSessions[i];
23375 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023376 }
23377 }
23378
23379 if ( i >= WDI_MAX_BSS_SESSIONS )
23380 {
23381 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023383 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023384
Jeff Johnson295189b2012-06-20 16:38:30 -070023385 /*------------------------------------------------------------------------
23386 Fill in the BSSID for this session and set the usage flag
23387 ------------------------------------------------------------------------*/
23388 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023389 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023390
23391 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023392 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023393 ------------------------------------------------------------------------*/
23394 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23395 if ( NULL == pEventDataQueue )
23396 {
23397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023398 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023399 WDI_ASSERT(0);
23400 return WDI_STATUS_MEM_FAILURE;
23401 }
23402
23403 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23404 if ( NULL == pSessionIdElement )
23405 {
23406 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023407 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023408 WDI_ASSERT(0);
23409 wpalMemoryFree(pEventDataQueue);
23410 return WDI_STATUS_MEM_FAILURE;
23411 }
23412
23413 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23414 if ( NULL == pEventInfo )
23415 {
23416 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023417 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023418 WDI_ASSERT(0);
23419 wpalMemoryFree(pSessionIdElement);
23420 wpalMemoryFree(pEventDataQueue);
23421 return WDI_STATUS_MEM_FAILURE;
23422 }
23423
23424 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23425 pEventDataQueue->pUserData = pEventData->pUserData;
23426 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23427 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023428 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023429
23430 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23431 pEventDataQueue->pEventData = pEventInfo;
23432
23433 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023434 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023435
23436 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023437 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023438
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023439 if (eWLAN_PAL_STATUS_E_FAILURE ==
23440 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23441 {
23442 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23443 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23444 WDI_ASSERT(0);
23445 wpalMemoryFree(pSessionIdElement);
23446 wpalMemoryFree(pEventDataQueue);
23447 wpalMemoryFree(pEventInfo);
23448 return WDI_STATUS_MEM_FAILURE;
23449 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023450
23451 /*We need to maintain a separate list that keeps track of the order in which
23452 the new assoc requests are being queued such that we can start processing
23453 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023454 pSessionIdElement->ucIndex = i;
23455 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023456
23457 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23458 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023459 if (eWLAN_PAL_STATUS_E_FAILURE ==
23460 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23461 {
23462 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23463 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23464 WDI_ASSERT(0);
23465 wpalMemoryFree(pSessionIdElement);
23466 wpalMemoryFree(pEventDataQueue);
23467 wpalMemoryFree(pEventInfo);
23468 return WDI_STATUS_MEM_FAILURE;
23469 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023470
23471 /*Return pending as this is what the status of the request is since it has
23472 been queued*/
23473 return WDI_STATUS_PENDING;
23474}/*WDI_QueueNewAssocRequest*/
23475
23476/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023477 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023478 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023479 away.- The assoc requests will be queued by BSSID
23480 @param
23481
Jeff Johnson295189b2012-06-20 16:38:30 -070023482 pWDICtx: - pointer to the WDI control block
23483 pSession: - session in which to queue
23484 pEventData: pointer to the event info that needs to be
23485 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023486
23487 @see
23488 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023489*/
23490WDI_Status
23491WDI_QueueAssocRequest
23492(
23493 WDI_ControlBlockType* pWDICtx,
23494 WDI_BSSSessionType* pSession,
23495 WDI_EventInfoType* pEventData
23496)
23497{
Jeff Johnsone7245742012-09-05 17:12:55 -070023498 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023499 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023500 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023502
23503 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023504 Sanity check
23505 ------------------------------------------------------------------------*/
23506 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23507 {
23508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023509 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023510
Jeff Johnsone7245742012-09-05 17:12:55 -070023511 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 }
23513
23514 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023515 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023516 ------------------------------------------------------------------------*/
23517 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23518 if ( NULL == pEventDataQueue )
23519 {
23520 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023521 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023522 WDI_ASSERT(0);
23523 return WDI_STATUS_MEM_FAILURE;
23524 }
23525
23526 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23527 if ( NULL == pEventInfo )
23528 {
23529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23530 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023531 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023532 WDI_ASSERT(0);
23533 wpalMemoryFree(pEventDataQueue);
23534 return WDI_STATUS_MEM_FAILURE;
23535 }
23536
23537 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23538 pEventDataQueue->pUserData = pEventData->pUserData;
23539 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23540 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023542 pEventDataQueue->pEventData = pEventInfo;
23543
23544 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23545
23546 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023547 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023548
23549 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023550 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023551
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023552 if (eWLAN_PAL_STATUS_E_FAILURE ==
23553 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23554 {
23555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23556 "%s: Cannot allocate memory for queueing event data info",
23557 __func__);
23558 WDI_ASSERT(0);
23559 wpalMemoryFree(pEventDataQueue);
23560 wpalMemoryFree(pEventInfo);
23561 return WDI_STATUS_MEM_FAILURE;
23562 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023563
23564 /*The result of this operation is pending because the request has been
23565 queued and it will be processed at a later moment in time */
23566 return WDI_STATUS_PENDING;
23567}/*WDI_QueueAssocRequest*/
23568
23569/**
23570 @brief Utility function used by the DAL Core to help dequeue
23571 an association request that was pending
23572 The request will be queued up in front of the main
23573 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023574 @param
23575
Jeff Johnson295189b2012-06-20 16:38:30 -070023576 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023577
23578
23579 @see
23580 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023581*/
23582WDI_Status
23583WDI_DequeueAssocRequest
23584(
23585 WDI_ControlBlockType* pWDICtx
23586)
23587{
Jeff Johnsone7245742012-09-05 17:12:55 -070023588 wpt_list_node* pNode = NULL;
23589 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023590 WDI_BSSSessionType* pSession;
23591 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023592
23593 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023594 Sanity check
23595 ------------------------------------------------------------------------*/
23596 if ( NULL == pWDICtx )
23597 {
23598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023599 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023600
Jeff Johnsone7245742012-09-05 17:12:55 -070023601 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023602 }
23603
23604 /*------------------------------------------------------------------------
23605 An association has been completed => a new association can occur
23606 Check to see if there are any pending associations ->
23607 If so , transfer all the pending requests into the busy queue for
23608 processing
23609 These requests have arrived prior to the requests in the busy queue
23610 (bc they needed to be processed in order to be placed in this queue)
23611 => they will be placed at the front of the busy queue
23612 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023613 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023614
23615 if ( NULL == pNode )
23616 {
23617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023618 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023619 return WDI_STATUS_SUCCESS;
23620 }
23621
23622 /*The node actually points to the 1st element inside the Session Id struct -
23623 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023624 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023625
23626 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23627 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23628
23629 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23630 {
23631 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023632
Jeff Johnson295189b2012-06-20 16:38:30 -070023633 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023634 the front of the main waiting queue for subsequent execution*/
23635 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023636 while ( NULL != pNode )
23637 {
23638 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023639 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23640 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023641 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023642 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 }
23644 else
23645 {
23646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023647 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023648 WPAL_ASSERT(0);
23649 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023652
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23654 wpalMemoryFree(pSessionIdElement);
23655 return WDI_STATUS_SUCCESS;
23656}/*WDI_DequeueAssocRequest*/
23657
23658/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023659 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023660 pending requests - all req cb will be called with
23661 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023662 @param
23663
Jeff Johnson295189b2012-06-20 16:38:30 -070023664 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023665
23666 @see
23667 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023668*/
23669WDI_Status
23670WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023671(
Jeff Johnson295189b2012-06-20 16:38:30 -070023672 WDI_ControlBlockType* pWDICtx
23673)
23674{
Jeff Johnsone7245742012-09-05 17:12:55 -070023675 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023676 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 void* pUserData;
23679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23680
Jeff Johnsone7245742012-09-05 17:12:55 -070023681 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023682
23683 /*------------------------------------------------------------------------
23684 Go through all the requests and fail them - this will only be called
23685 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023686 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023687 ------------------------------------------------------------------------*/
23688 while( pNode )
23689 {
23690 /*The node actually points to the 1st element inside the Event Data struct -
23691 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023692 pEventDataQueue = (WDI_EventInfoType*)pNode;
23693
Jeff Johnson295189b2012-06-20 16:38:30 -070023694 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23695 if ( NULL != pfnReqStatusCB )
23696 {
23697 /*Fail the request*/
23698 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23699 }
23700 /* Free data - that was allocated when queueing */
23701 if ( pEventDataQueue->pEventData != NULL )
23702 {
23703 wpalMemoryFree(pEventDataQueue->pEventData);
23704 }
23705 wpalMemoryFree(pEventDataQueue);
23706
23707 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23708 {
23709 break;
23710 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023711 }
23712
Jeff Johnson295189b2012-06-20 16:38:30 -070023713 return WDI_STATUS_SUCCESS;
23714}/*WDI_ClearPendingRequests*/
23715
23716/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023717 @brief Helper routine used to init the BSS Sessions in the WDI control block
23718
23719
23720 @param pWDICtx: pointer to the WLAN DAL context
23721
Jeff Johnson295189b2012-06-20 16:38:30 -070023722 @see
23723*/
23724void
23725WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023726(
Jeff Johnson295189b2012-06-20 16:38:30 -070023727 WDI_ControlBlockType* pWDICtx
23728)
23729{
Jeff Johnsone7245742012-09-05 17:12:55 -070023730 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23732
23733 /*-------------------------------------------------------------------------
23734 No Sanity check
23735 -------------------------------------------------------------------------*/
23736 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23737 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023738 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023739 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23740 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23741 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23742 }
23743}/*WDI_ResetAssocSessions*/
23744
23745/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023746 @brief Helper routine used to find a session based on the BSSID
23747
23748
23749 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023750 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023751 pSession: pointer to the session (if found)
23752
Jeff Johnson295189b2012-06-20 16:38:30 -070023753 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023754 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023755*/
23756wpt_uint8
23757WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023758(
Jeff Johnson295189b2012-06-20 16:38:30 -070023759 WDI_ControlBlockType* pWDICtx,
23760 wpt_macAddr macBSSID,
23761 WDI_BSSSessionType** ppSession
23762)
23763{
Jeff Johnsone7245742012-09-05 17:12:55 -070023764 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23766
23767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023768 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023769 -------------------------------------------------------------------------*/
23770 if ( NULL == ppSession )
23771 {
23772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023773 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023774 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023775 }
23776
Jeff Johnsone7245742012-09-05 17:12:55 -070023777 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023778
Jeff Johnsone7245742012-09-05 17:12:55 -070023779 /*------------------------------------------------------------------------
23780 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023781 ------------------------------------------------------------------------*/
23782 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23783 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023784 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23785 (eWLAN_PAL_TRUE ==
23786 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23787 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 {
23789 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023790 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023791 return i;
23792 }
23793 }
23794
Jeff Johnsone7245742012-09-05 17:12:55 -070023795 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023796}/*WDI_FindAssocSession*/
23797
23798/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023799 @brief Helper routine used to find a session based on the BSSID
23800
23801
23802 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 ucBSSIdx: BSS Index of the session
23804 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023805
Jeff Johnson295189b2012-06-20 16:38:30 -070023806 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023807 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023808*/
23809wpt_uint8
23810WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023811(
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 WDI_ControlBlockType* pWDICtx,
23813 wpt_uint16 ucBSSIdx,
23814 WDI_BSSSessionType** ppSession
23815)
23816{
Jeff Johnsone7245742012-09-05 17:12:55 -070023817 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23819
23820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023822 -------------------------------------------------------------------------*/
23823 if ( NULL == ppSession )
23824 {
23825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023826 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 }
23829
Jeff Johnsone7245742012-09-05 17:12:55 -070023830 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023831
Jeff Johnsone7245742012-09-05 17:12:55 -070023832 /*------------------------------------------------------------------------
23833 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023834 ------------------------------------------------------------------------*/
23835 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23836 {
23837 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23838 {
23839 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023840 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023841 return i;
23842 }
23843 }
23844
Jeff Johnsone7245742012-09-05 17:12:55 -070023845 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023846}/*WDI_FindAssocSessionByBSSIdx*/
23847
23848/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023849 @brief Helper routine used to find a session based on the BSSID
23850
23851
23852 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023853 ucBSSIdx: BSS Index of the session
23854 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023855
Jeff Johnson295189b2012-06-20 16:38:30 -070023856 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023857 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023858*/
23859wpt_uint8
23860WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023861(
Jeff Johnson295189b2012-06-20 16:38:30 -070023862 WDI_ControlBlockType* pWDICtx,
23863 wpt_uint16 usIdx,
23864 WDI_BSSSessionType** ppSession
23865)
23866{
23867 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23868
23869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023870 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023871 -------------------------------------------------------------------------*/
23872 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23873 {
23874 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023875 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023876 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023877 }
23878
23879 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023880 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023881
23882 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023883
Jeff Johnson295189b2012-06-20 16:38:30 -070023884}/*WDI_FindAssocSessionByBSSIdx*/
23885
23886/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023887 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023888 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023889
23890
23891 @param pWDICtx: pointer to the WLAN DAL context
23892 pSession: pointer to the session (if found)
23893
Jeff Johnson295189b2012-06-20 16:38:30 -070023894 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023895 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023896*/
23897wpt_uint8
23898WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023899(
Jeff Johnson295189b2012-06-20 16:38:30 -070023900 WDI_ControlBlockType* pWDICtx,
23901 WDI_BSSSessionType** ppSession
23902)
23903{
Jeff Johnsone7245742012-09-05 17:12:55 -070023904 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23906 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023907 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023908 -------------------------------------------------------------------------*/
23909 if ( NULL == ppSession )
23910 {
23911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023912 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023913 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023914 }
23915
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023917
Jeff Johnsone7245742012-09-05 17:12:55 -070023918 /*------------------------------------------------------------------------
23919 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023920 ------------------------------------------------------------------------*/
23921 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23922 {
23923 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23924 {
23925 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023926 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 return i;
23928 }
23929 }
23930
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023932}/*WDI_FindEmptySession*/
23933
23934
23935/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023936 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023937 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023938
23939
23940 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023941 macBSSID: pointer to BSSID. If NULL, get all the session.
23942 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23943 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23944 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023945 @see
23946 @return Number of sessions in use
23947*/
23948wpt_uint8
23949WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023950(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023951 WDI_ControlBlockType* pWDICtx,
23952 wpt_macAddr macBSSID,
23953 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023954)
23955{
Jeff Johnsone7245742012-09-05 17:12:55 -070023956 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023958
23959 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023960 Count all sessions in use
23961 ------------------------------------------------------------------------*/
23962 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23963 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023964 if ( macBSSID && skipBSSID &&
23965 (eWLAN_PAL_TRUE ==
23966 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23967 WDI_MAC_ADDR_LEN)))
23968 {
23969 continue;
23970 }
23971 else if ( pWDICtx->aBSSSessions[i].bInUse )
23972 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023973 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023974 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 }
23976
Jeff Johnsone7245742012-09-05 17:12:55 -070023977 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023978}/*WDI_GetActiveSessionsCount*/
23979
23980/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023981 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023982 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023983
23984
23985 @param pWDICtx: pointer to the WLAN DAL context
23986 pSession: pointer to the session (if found)
23987
Jeff Johnson295189b2012-06-20 16:38:30 -070023988 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023989 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023990*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023991void
Jeff Johnson295189b2012-06-20 16:38:30 -070023992WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023993(
Jeff Johnson295189b2012-06-20 16:38:30 -070023994 WDI_ControlBlockType* pWDICtx,
23995 WDI_BSSSessionType* ppSession
23996)
23997{
23998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024000 -------------------------------------------------------------------------*/
24001 if ( NULL == ppSession )
24002 {
24003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024004 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024005 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024006 }
24007
Jeff Johnsone7245742012-09-05 17:12:55 -070024008 /*------------------------------------------------------------------------
24009 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070024010 ------------------------------------------------------------------------*/
24011 wpal_list_destroy(&ppSession->wptPendingQueue);
24012 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070024013 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
24014 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024015 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24016 wpal_list_init(&ppSession->wptPendingQueue);
24017
24018}/*WDI_DeleteSession*/
24019
24020/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024021 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024022 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 @param
24024
Jeff Johnson295189b2012-06-20 16:38:30 -070024025 WDI_AddStaParams: - pointer to the WDI Add STA params
24026 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024027
24028 @see
24029 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024030*/
24031void
24032WDI_AddBcastSTAtoSTATable
24033(
24034 WDI_ControlBlockType* pWDICtx,
24035 WDI_AddStaParams * staParams,
24036 wpt_uint16 usBcastStaIdx
24037)
24038{
24039 WDI_AddStaParams wdiAddSTAParam = {0};
24040 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24041 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24042
24043 /*---------------------------------------------------------------------
24044 Sanity check
24045 ---------------------------------------------------------------------*/
24046 if ( NULL == staParams )
24047 {
24048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024049 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024050
Jeff Johnsone7245742012-09-05 17:12:55 -070024051 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 }
24053
24054 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24055 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24056 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24057 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24058 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24059 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24060 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24061 WDI_MAC_ADDR_LEN );
24062 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24063 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24064 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24065 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24066 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24067 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24068 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024069
Jeff Johnson295189b2012-06-20 16:38:30 -070024070 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24071}
24072
24073/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024074 @brief NV blob will be divided into fragments of size 4kb and
24075 Sent to HAL
24076
24077 @param pWDICtx: pointer to the WLAN DAL context
24078 pEventData: pointer to the event information structure
24079
Jeff Johnson295189b2012-06-20 16:38:30 -070024080 @see
24081 @return Result of the function call
24082 */
24083
24084WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024085(
Jeff Johnson295189b2012-06-20 16:38:30 -070024086 WDI_ControlBlockType* pWDICtx,
24087 WDI_EventInfoType* pEventData
24088)
24089{
24090
24091 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24092 wpt_uint8* pSendBuffer = NULL;
24093 wpt_uint16 usDataOffset = 0;
24094 wpt_uint16 usSendSize = 0;
24095 wpt_uint16 usCurrentFragmentSize =0;
24096 wpt_uint8* pSrcBuffer = NULL;
24097 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24098 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24099
24100 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24101 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24102 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24103
Jeff Johnsone7245742012-09-05 17:12:55 -070024104 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024105 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24106
24107 /* Update the current Fragment Number */
24108 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24109
24110 /*Update the HAL REQ structure */
24111 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24112 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24113 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24114
24115 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024116 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024117 image will be sent to HAL*/
24118
Jeff Johnsone7245742012-09-05 17:12:55 -070024119 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024120 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024121 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024122 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024123 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024124 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24125 usCurrentFragmentSize = FRAGMENT_SIZE;
24126
24127 /*Update the HAL REQ structure */
24128 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24129 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24130
24131 }
24132 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024133 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 usCurrentFragmentSize = FRAGMENT_SIZE;
24135
24136 /*Update the HAL REQ structure */
24137 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24138 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24139 }
24140
24141 /*-----------------------------------------------------------------------
24142 Get message buffer
24143 -----------------------------------------------------------------------*/
24144 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24145 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24146 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024147 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024148 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24149 {
24150 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024151 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 pEventData, pwdiNvDownloadReqParams);
24153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024155 }
24156
24157 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024158 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024159 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24160
24161 /* Appending the NV image fragment */
24162 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24163 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24164 usCurrentFragmentSize);
24165
24166 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024167 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024168
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24170 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024171 WDI_NV_DOWNLOAD_RESP);
24172
24173}
Jeff Johnsone7245742012-09-05 17:12:55 -070024174/*============================================================================
24175 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024176 ============================================================================*/
24177/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024178 @brief Helper routine used to find a session based on the BSSID
24179 @param pContext: pointer to the WLAN DAL context
24180 @param pDPContext: pointer to the Datapath context
24181
Jeff Johnson295189b2012-06-20 16:38:30 -070024182 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024183 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024184*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024185WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024186WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24187{
24188 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24189
24190 pCB->pDPContext = pDPContext;
24191 return;
24192}
24193
24194/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024195 @brief Helper routine used to find a session based on the BSSID
24196
24197
24198 @param pContext: pointer to the WLAN DAL context
24199
Jeff Johnson295189b2012-06-20 16:38:30 -070024200 @see
24201 @return pointer to Datapath context
24202*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024203WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024204WDI_DS_GetDatapathContext (void *pContext)
24205{
24206 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24207 return pCB->pDPContext;
24208}
24209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024210 @brief Helper routine used to find a session based on the BSSID
24211
24212
24213 @param pContext: pointer to the WLAN DAL context
24214 @param pDTDriverContext: pointer to the Transport Driver context
24215
Jeff Johnson295189b2012-06-20 16:38:30 -070024216 @see
24217 @return void
24218*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024219WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024220WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24221{
24222 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24223
24224 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024225 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024226}
24227
24228/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024229 @brief Helper routine used to find a session based on the BSSID
24230
24231
24232 @param pWDICtx: pointer to the WLAN DAL context
24233
Jeff Johnson295189b2012-06-20 16:38:30 -070024234 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024235 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024236*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024237WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024238WDT_GetTransportDriverContext (void *pContext)
24239{
24240 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024241 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024242}
24243
Jeff Johnsone7245742012-09-05 17:12:55 -070024244/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024245 Helper inline converters
24246 ============================================================================*/
24247/*Convert WDI driver type into HAL driver type*/
24248WPT_STATIC WPT_INLINE WDI_Status
24249WDI_HAL_2_WDI_STATUS
24250(
24251 eHalStatus halStatus
24252)
24253{
Jeff Johnsone7245742012-09-05 17:12:55 -070024254 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024255 the chances of getting inlined*/
24256 switch( halStatus )
24257 {
24258 case eHAL_STATUS_SUCCESS:
24259 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24260 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24261 return WDI_STATUS_SUCCESS;
24262 case eHAL_STATUS_FAILURE:
24263 return WDI_STATUS_E_FAILURE;
24264 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024265 return WDI_STATUS_MEM_FAILURE;
24266 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024267 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 default:
24269 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24270 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024271
Jeff Johnsone7245742012-09-05 17:12:55 -070024272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024273}/*WDI_HAL_2_WDI_STATUS*/
24274
24275/*Convert WDI request type into HAL request type*/
24276WPT_STATIC WPT_INLINE tHalHostMsgType
24277WDI_2_HAL_REQ_TYPE
24278(
24279 WDI_RequestEnumType wdiReqType
24280)
24281{
Jeff Johnsone7245742012-09-05 17:12:55 -070024282 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024283 the chances of getting inlined*/
24284 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024285 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024289 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024291 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024295 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024297 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024299 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024301 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024302 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024303 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024309 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024310 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024311 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024312 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 return WLAN_HAL_RMV_STAKEY_REQ;
24321 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024322 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024328 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 case WDI_DEL_BA_REQ:
24330 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024331#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024332 case WDI_TSM_STATS_REQ:
24333 return WLAN_HAL_TSM_STATS_REQ;
24334#endif
24335 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024336 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024337 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024338 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024340 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024341 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024342 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024343 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024344 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024345 case WDI_ADD_BA_SESSION_REQ:
24346 return WLAN_HAL_ADD_BA_SESSION_REQ;
24347 case WDI_TRIGGER_BA_REQ:
24348 return WLAN_HAL_TRIGGER_BA_REQ;
24349 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024350 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024351 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24354 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24355 case WDI_SET_MAX_TX_POWER_REQ:
24356 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024357 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24358 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024359 case WDI_SET_TX_POWER_REQ:
24360 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024361 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24362 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024363#ifdef FEATURE_WLAN_TDLS
24364 case WDI_TDLS_LINK_ESTABLISH_REQ:
24365 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024366 case WDI_TDLS_CHAN_SWITCH_REQ:
24367 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024368#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024369 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024370 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024373 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024376 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024379 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024382 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024384 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024385 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024386 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024387 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 case WDI_REM_BEACON_FILTER_REQ:
24390 return WLAN_HAL_REM_BCN_FILTER_REQ;
24391 case WDI_SET_RSSI_THRESHOLDS_REQ:
24392 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24393 case WDI_HOST_OFFLOAD_REQ:
24394 return WLAN_HAL_HOST_OFFLOAD_REQ;
24395 case WDI_WOWL_ADD_BC_PTRN_REQ:
24396 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24397 case WDI_WOWL_DEL_BC_PTRN_REQ:
24398 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24399 case WDI_WOWL_ENTER_REQ:
24400 return WLAN_HAL_ENTER_WOWL_REQ;
24401 case WDI_WOWL_EXIT_REQ:
24402 return WLAN_HAL_EXIT_WOWL_REQ;
24403 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24404 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24405 case WDI_NV_DOWNLOAD_REQ:
24406 return WLAN_HAL_DOWNLOAD_NV_REQ;
24407 case WDI_FLUSH_AC_REQ:
24408 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24409 case WDI_BTAMP_EVENT_REQ:
24410 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24411#ifdef WLAN_FEATURE_VOWIFI_11R
24412 case WDI_AGGR_ADD_TS_REQ:
24413 return WLAN_HAL_AGGR_ADD_TS_REQ;
24414#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024415 case WDI_FTM_CMD_REQ:
24416 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 case WDI_ADD_STA_SELF_REQ:
24418 return WLAN_HAL_ADD_STA_SELF_REQ;
24419 case WDI_DEL_STA_SELF_REQ:
24420 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024421#ifdef FEATURE_OEM_DATA_SUPPORT
24422 case WDI_START_OEM_DATA_REQ:
24423 return WLAN_HAL_START_OEM_DATA_REQ;
24424#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024425 case WDI_HOST_RESUME_REQ:
24426 return WLAN_HAL_HOST_RESUME_REQ;
24427 case WDI_HOST_SUSPEND_IND:
24428 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024429 case WDI_TRAFFIC_STATS_IND:
24430 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024431#ifdef WLAN_FEATURE_11W
24432 case WDI_EXCLUDE_UNENCRYPTED_IND:
24433 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24434#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 case WDI_KEEP_ALIVE_REQ:
24436 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024437#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024438 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24439 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024440#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024441#ifdef FEATURE_WLAN_SCAN_PNO
24442 case WDI_SET_PREF_NETWORK_REQ:
24443 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24444 case WDI_SET_RSSI_FILTER_REQ:
24445 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24446 case WDI_UPDATE_SCAN_PARAMS_REQ:
24447 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24448#endif // FEATURE_WLAN_SCAN_PNO
24449 case WDI_SET_TX_PER_TRACKING_REQ:
24450 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24451#ifdef WLAN_FEATURE_PACKET_FILTERING
24452 case WDI_8023_MULTICAST_LIST_REQ:
24453 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24454 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024455 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024456 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24457 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24458 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24459 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24460#endif // WLAN_FEATURE_PACKET_FILTERING
24461 case WDI_HAL_DUMP_CMD_REQ:
24462 return WLAN_HAL_DUMP_COMMAND_REQ;
24463#ifdef WLAN_FEATURE_GTK_OFFLOAD
24464 case WDI_GTK_OFFLOAD_REQ:
24465 return WLAN_HAL_GTK_OFFLOAD_REQ;
24466 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24467 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24468#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24469
24470 case WDI_INIT_SCAN_CON_REQ:
24471 return WLAN_HAL_INIT_SCAN_CON_REQ;
24472 case WDI_SET_POWER_PARAMS_REQ:
24473 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24474 case WDI_SET_TM_LEVEL_REQ:
24475 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24476 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24477 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024478#ifdef WLAN_FEATURE_11AC
24479 case WDI_UPDATE_VHT_OP_MODE_REQ:
24480 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24481#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024482 case WDI_GET_ROAM_RSSI_REQ:
24483 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024484 case WDI_DHCP_START_IND:
24485 return WLAN_HAL_DHCP_START_IND;
24486 case WDI_DHCP_STOP_IND:
24487 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024488#ifdef FEATURE_WLAN_LPHB
24489 case WDI_LPHB_CFG_REQ:
24490 return WLAN_HAL_LPHB_CFG_REQ;
24491#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024492 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24493 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24494 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24495 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24496
Rajeev79dbe4c2013-10-05 11:03:42 +053024497#ifdef FEATURE_WLAN_BATCH_SCAN
24498 case WDI_SET_BATCH_SCAN_REQ:
24499 return WLAN_HAL_BATCHSCAN_SET_REQ;
24500 case WDI_STOP_BATCH_SCAN_IND:
24501 return WLAN_HAL_BATCHSCAN_STOP_IND;
24502 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24503 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24504#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024505 case WDI_RATE_UPDATE_IND:
24506 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024507 case WDI_START_HT40_OBSS_SCAN_IND:
24508 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24509 case WDI_STOP_HT40_OBSS_SCAN_IND:
24510 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024511 case WDI_UPDATE_CHAN_REQ:
24512 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024513 case WDI_CH_SWITCH_REQ_V1:
24514 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024515 case WDI_GET_BCN_MISS_RATE_REQ:
24516 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024517
24518#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24519 case WDI_LL_STATS_SET_REQ:
24520 return WLAN_HAL_LL_SET_STATS_REQ;
24521 case WDI_LL_STATS_GET_REQ:
24522 return WLAN_HAL_LL_GET_STATS_REQ;
24523 case WDI_LL_STATS_CLEAR_REQ:
24524 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24525#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024526#ifdef WLAN_FEATURE_EXTSCAN
24527 case WDI_EXTSCAN_START_REQ:
24528 return WLAN_HAL_EXT_SCAN_START_REQ;
24529 case WDI_EXTSCAN_STOP_REQ:
24530 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24531 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24532 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24533 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24534 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24535 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24536 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24537 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24538 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024539 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24540 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24541 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24542 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053024543 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
24544 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053024545#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024546 case WDI_SPOOF_MAC_ADDR_REQ:
24547 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024548 case WDI_GET_FW_STATS_REQ:
24549 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024550 case WDI_ENCRYPT_MSG_REQ:
24551 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024552 case WDI_FW_LOGGING_INIT_REQ:
24553 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024554 case WDI_GET_FRAME_LOG_REQ:
24555 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024556 case WDI_NAN_REQUEST:
24557 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024558 case WDI_SET_RTS_CTS_HTVHT_IND:
24559 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024560 case WDI_MON_START_REQ:
24561 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24562 case WDI_MON_STOP_REQ:
24563 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024564 case WDI_FW_LOGGING_DXE_DONE_IND:
24565 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024566 case WDI_FATAL_EVENT_LOGGING_REQ:
24567 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024568 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24569 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024570 case WDI_FWR_MEM_DUMP_REQ:
24571 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024572 case WDI_START_RSSI_MONITOR_REQ:
24573 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24574 case WDI_STOP_RSSI_MONITOR_REQ:
24575 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024576 case WDI_WIFI_CONFIG_SET_REQ:
24577 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024578 case WDI_START_OEM_DATA_REQ_IND_NEW:
24579 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053024580 case WDI_ANTENNA_DIVERSITY_SELECTION_REQ:
24581 return WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024582 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024583 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024584 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024585
Jeff Johnson295189b2012-06-20 16:38:30 -070024586}/*WDI_2_HAL_REQ_TYPE*/
24587
24588/*Convert WDI response type into HAL response type*/
24589WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24590HAL_2_WDI_RSP_TYPE
24591(
24592 tHalHostMsgType halMsg
24593)
24594{
Jeff Johnsone7245742012-09-05 17:12:55 -070024595 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024596 the chances of getting inlined*/
24597 switch( halMsg )
24598 {
24599 case WLAN_HAL_START_RSP:
24600 return WDI_START_RESP;
24601 case WLAN_HAL_STOP_RSP:
24602 return WDI_STOP_RESP;
24603 case WLAN_HAL_INIT_SCAN_RSP:
24604 return WDI_INIT_SCAN_RESP;
24605 case WLAN_HAL_START_SCAN_RSP:
24606 return WDI_START_SCAN_RESP;
24607 case WLAN_HAL_END_SCAN_RSP:
24608 return WDI_END_SCAN_RESP;
24609 case WLAN_HAL_FINISH_SCAN_RSP:
24610 return WDI_FINISH_SCAN_RESP;
24611 case WLAN_HAL_CONFIG_STA_RSP:
24612 return WDI_CONFIG_STA_RESP;
24613 case WLAN_HAL_DELETE_STA_RSP:
24614 return WDI_DEL_STA_RESP;
24615 case WLAN_HAL_CONFIG_BSS_RSP:
24616 return WDI_CONFIG_BSS_RESP;
24617 case WLAN_HAL_DELETE_BSS_RSP:
24618 return WDI_DEL_BSS_RESP;
24619 case WLAN_HAL_JOIN_RSP:
24620 return WDI_JOIN_RESP;
24621 case WLAN_HAL_POST_ASSOC_RSP:
24622 return WDI_POST_ASSOC_RESP;
24623 case WLAN_HAL_SET_BSSKEY_RSP:
24624 return WDI_SET_BSS_KEY_RESP;
24625 case WLAN_HAL_SET_STAKEY_RSP:
24626 return WDI_SET_STA_KEY_RESP;
24627 case WLAN_HAL_RMV_BSSKEY_RSP:
24628 return WDI_RMV_BSS_KEY_RESP;
24629 case WLAN_HAL_RMV_STAKEY_RSP:
24630 return WDI_RMV_STA_KEY_RESP;
24631 case WLAN_HAL_SET_BCASTKEY_RSP:
24632 return WDI_SET_STA_BCAST_KEY_RESP;
24633 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24634 // return WDI_RMV_STA_BCAST_KEY_RESP;
24635 case WLAN_HAL_ADD_TS_RSP:
24636 return WDI_ADD_TS_RESP;
24637 case WLAN_HAL_DEL_TS_RSP:
24638 return WDI_DEL_TS_RESP;
24639 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24640 return WDI_UPD_EDCA_PRMS_RESP;
24641 case WLAN_HAL_ADD_BA_RSP:
24642 return WDI_ADD_BA_RESP;
24643 case WLAN_HAL_DEL_BA_RSP:
24644 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024645#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024646 case WLAN_HAL_TSM_STATS_RSP:
24647 return WDI_TSM_STATS_RESP;
24648#endif
24649 case WLAN_HAL_CH_SWITCH_RSP:
24650 return WDI_CH_SWITCH_RESP;
24651 case WLAN_HAL_SET_LINK_ST_RSP:
24652 return WDI_SET_LINK_ST_RESP;
24653 case WLAN_HAL_GET_STATS_RSP:
24654 return WDI_GET_STATS_RESP;
24655 case WLAN_HAL_UPDATE_CFG_RSP:
24656 return WDI_UPDATE_CFG_RESP;
24657 case WLAN_HAL_ADD_BA_SESSION_RSP:
24658 return WDI_ADD_BA_SESSION_RESP;
24659 case WLAN_HAL_TRIGGER_BA_RSP:
24660 return WDI_TRIGGER_BA_RESP;
24661 case WLAN_HAL_UPDATE_BEACON_RSP:
24662 return WDI_UPD_BCON_PRMS_RESP;
24663 case WLAN_HAL_SEND_BEACON_RSP:
24664 return WDI_SND_BCON_RESP;
24665 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24666 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24667 /*Indications*/
24668 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24669 return WDI_HAL_RSSI_NOTIFICATION_IND;
24670 case WLAN_HAL_MISSED_BEACON_IND:
24671 return WDI_HAL_MISSED_BEACON_IND;
24672 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24673 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24674 case WLAN_HAL_MIC_FAILURE_IND:
24675 return WDI_HAL_MIC_FAILURE_IND;
24676 case WLAN_HAL_FATAL_ERROR_IND:
24677 return WDI_HAL_FATAL_ERROR_IND;
24678 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24679 return WDI_HAL_DEL_STA_IND;
24680 case WLAN_HAL_COEX_IND:
24681 return WDI_HAL_COEX_IND;
24682 case WLAN_HAL_OTA_TX_COMPL_IND:
24683 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024684 case WLAN_HAL_P2P_NOA_ATTR_IND:
24685 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024686 case WLAN_HAL_P2P_NOA_START_IND:
24687 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024688 case WLAN_HAL_DEL_BA_IND:
24689 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024690 case WLAN_HAL_TX_PER_HIT_IND:
24691 return WDI_HAL_TX_PER_HIT_IND;
24692 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24693 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024694 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24695 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024696 case WLAN_HAL_SET_TX_POWER_RSP:
24697 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024698 case WLAN_HAL_SET_P2P_GONOA_RSP:
24699 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024700#ifdef FEATURE_WLAN_TDLS
24701 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24702 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024703 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24704 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024705 case WLAN_HAL_TDLS_IND:
24706 return WDI_HAL_TDLS_IND;
24707#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024708 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024709 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024710 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024711 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024713 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024714 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024715 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024716 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024717 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024718 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024719 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024720 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024721 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024723 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024725 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024726 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24727 return WDI_SET_BEACON_FILTER_RESP;
24728 case WLAN_HAL_REM_BCN_FILTER_RSP:
24729 return WDI_REM_BEACON_FILTER_RESP;
24730 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24731 return WDI_SET_RSSI_THRESHOLDS_RESP;
24732 case WLAN_HAL_HOST_OFFLOAD_RSP:
24733 return WDI_HOST_OFFLOAD_RESP;
24734 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24735 return WDI_WOWL_ADD_BC_PTRN_RESP;
24736 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24737 return WDI_WOWL_DEL_BC_PTRN_RESP;
24738 case WLAN_HAL_ENTER_WOWL_RSP:
24739 return WDI_WOWL_ENTER_RESP;
24740 case WLAN_HAL_EXIT_WOWL_RSP:
24741 return WDI_WOWL_EXIT_RESP;
24742 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24743 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24744 case WLAN_HAL_DOWNLOAD_NV_RSP:
24745 return WDI_NV_DOWNLOAD_RESP;
24746 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24747 return WDI_FLUSH_AC_RESP;
24748 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24749 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024750 case WLAN_HAL_PROCESS_PTT_RSP:
24751 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024752 case WLAN_HAL_ADD_STA_SELF_RSP:
24753 return WDI_ADD_STA_SELF_RESP;
24754case WLAN_HAL_DEL_STA_SELF_RSP:
24755 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024756#ifdef FEATURE_OEM_DATA_SUPPORT
24757 case WLAN_HAL_START_OEM_DATA_RSP:
24758 return WDI_START_OEM_DATA_RESP;
24759#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024760 case WLAN_HAL_HOST_RESUME_RSP:
24761 return WDI_HOST_RESUME_RESP;
24762 case WLAN_HAL_KEEP_ALIVE_RSP:
24763 return WDI_KEEP_ALIVE_RESP;
24764#ifdef FEATURE_WLAN_SCAN_PNO
24765 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24766 return WDI_SET_PREF_NETWORK_RESP;
24767 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024768 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024769 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24770 return WDI_UPDATE_SCAN_PARAMS_RESP;
24771 case WLAN_HAL_PREF_NETW_FOUND_IND:
24772 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24773#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024774#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024775 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24776 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024777#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024778 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24779 return WDI_SET_TX_PER_TRACKING_RESP;
24780#ifdef WLAN_FEATURE_PACKET_FILTERING
24781 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24782 return WDI_8023_MULTICAST_LIST_RESP;
24783 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24784 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24785 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24786 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24787 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24788 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24789#endif // WLAN_FEATURE_PACKET_FILTERING
24790
24791 case WLAN_HAL_DUMP_COMMAND_RSP:
24792 return WDI_HAL_DUMP_CMD_RESP;
24793 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24794 return WDI_SET_POWER_PARAMS_RESP;
24795#ifdef WLAN_FEATURE_VOWIFI_11R
24796 case WLAN_HAL_AGGR_ADD_TS_RSP:
24797 return WDI_AGGR_ADD_TS_RESP;
24798#endif
24799
24800#ifdef WLAN_FEATURE_GTK_OFFLOAD
24801 case WLAN_HAL_GTK_OFFLOAD_RSP:
24802 return WDI_GTK_OFFLOAD_RESP;
24803 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24804 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24805#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24806#ifdef WLAN_WAKEUP_EVENTS
24807 case WLAN_HAL_WAKE_REASON_IND:
24808 return WDI_HAL_WAKE_REASON_IND;
24809#endif // WLAN_WAKEUP_EVENTS
24810
24811 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24812 return WDI_SET_TM_LEVEL_RESP;
24813 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24814 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024815#ifdef WLAN_FEATURE_11AC
24816 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24817 return WDI_UPDATE_VHT_OP_MODE_RESP;
24818#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024819#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024820 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24821 return WDI_GET_ROAM_RSSI_RESP;
24822#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024823
Leo Chang9056f462013-08-01 19:21:11 -070024824#ifdef FEATURE_WLAN_LPHB
24825 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024826 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024827 case WLAN_HAL_LPHB_CFG_RSP:
24828 return WDI_LPHB_CFG_RESP;
24829#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024830
24831 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24832 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024833 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24834 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024835
Rajeev79dbe4c2013-10-05 11:03:42 +053024836#ifdef FEATURE_WLAN_BATCH_SCAN
24837 case WLAN_HAL_BATCHSCAN_SET_RSP:
24838 return WDI_SET_BATCH_SCAN_RESP;
24839 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24840 return WDI_BATCHSCAN_RESULT_IND;
24841#endif // FEATURE_WLAN_BATCH_SCAN
24842
Leo Chang0b0e45a2013-12-15 15:18:55 -080024843#ifdef FEATURE_WLAN_CH_AVOID
24844 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24845 return WDI_HAL_CH_AVOID_IND;
24846#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024847 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24848 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024849 case WLAN_HAL_PRINT_REG_INFO_IND:
24850 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024851 case WLAN_HAL_CH_SWITCH_V1_RSP:
24852 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024853 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24854 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024855#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24856 case WLAN_HAL_LL_SET_STATS_RSP:
24857 return WDI_LL_STATS_SET_RSP;
24858 case WLAN_HAL_LL_GET_STATS_RSP:
24859 return WDI_LL_STATS_GET_RSP;
24860 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24861 return WDI_LL_STATS_CLEAR_RSP;
24862 case WLAN_HAL_LL_NOTIFY_STATS:
24863 return WDI_HAL_LL_STATS_RESULTS_IND;
24864#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024865#ifdef WLAN_FEATURE_EXTSCAN
24866 case WLAN_HAL_EXT_SCAN_START_RSP:
24867 return WDI_EXTSCAN_START_RSP;
24868 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24869 return WDI_EXTSCAN_STOP_RSP;
24870 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24871 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24872 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24873 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24874 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24875 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24876 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24877 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024878 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
24879 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
24880 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
24881 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024882 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24883 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24884 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24885 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24886 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24887 return WDI_HAL_EXTSCAN_RESULT_IND;
24888 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24889 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024890 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
24891 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053024892#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024893 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24894 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024895 case WLAN_HAL_FW_STATS_RSP:
24896 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024897 case WLAN_HAL_ENCRYPT_DATA_RSP:
24898 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024899 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24900 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024901 case WLAN_HAL_GET_FRAME_LOG_RSP:
24902 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024903 case WLAN_HAL_NAN_RSP:
24904 return WDI_NAN_RESPONSE;
24905 case WLAN_HAL_NAN_EVT:
24906 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024907 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24908 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024909 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24910 return WDI_MON_START_RSP;
24911 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24912 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024913 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24914 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053024915 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
24916 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024917 case WLAN_HAL_START_RSSI_MONITORING_RSP:
24918 return WDI_START_RSSI_MONITOR_RSP;
24919 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
24920 return WDI_STOP_RSSI_MONITOR_RSP;
24921 case WLAN_HAL_RSSI_MONITORING_IND:
24922 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024923 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
24924 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024925#ifdef FEATURE_OEM_DATA_SUPPORT
24926 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
24927 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
24928#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053024929 case WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_RSP:
24930 return WDI_ANTENNA_DIVERSITY_SELECTION_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024931 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024932 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024933 }
24934
24935}/*HAL_2_WDI_RSP_TYPE*/
24936
24937
24938/*Convert WDI driver type into HAL driver type*/
24939WPT_STATIC WPT_INLINE tDriverType
24940WDI_2_HAL_DRV_TYPE
24941(
24942 WDI_DriverType wdiDriverType
24943)
24944{
Jeff Johnsone7245742012-09-05 17:12:55 -070024945 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024946 the chances of getting inlined*/
24947 switch( wdiDriverType )
24948 {
24949 case WDI_DRIVER_TYPE_PRODUCTION:
24950 return eDRIVER_TYPE_PRODUCTION;
24951 case WDI_DRIVER_TYPE_MFG:
24952 return eDRIVER_TYPE_MFG;
24953 case WDI_DRIVER_TYPE_DVT:
24954 return eDRIVER_TYPE_DVT;
24955 }
24956
Jeff Johnsone7245742012-09-05 17:12:55 -070024957 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024958}/*WDI_2_HAL_DRV_TYPE*/
24959
24960
24961/*Convert WDI stop reason into HAL stop reason*/
24962WPT_STATIC WPT_INLINE tHalStopType
24963WDI_2_HAL_STOP_REASON
24964(
24965 WDI_StopType wdiDriverType
24966)
24967{
Jeff Johnsone7245742012-09-05 17:12:55 -070024968 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024969 the chances of getting inlined*/
24970 switch( wdiDriverType )
24971 {
24972 case WDI_STOP_TYPE_SYS_RESET:
24973 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024974 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24975 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024976 case WDI_STOP_TYPE_RF_KILL:
24977 return HAL_STOP_TYPE_RF_KILL;
24978 }
24979
Jeff Johnsone7245742012-09-05 17:12:55 -070024980 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024981}/*WDI_2_HAL_STOP_REASON*/
24982
24983
24984/*Convert WDI scan mode type into HAL scan mode type*/
24985WPT_STATIC WPT_INLINE eHalSysMode
24986WDI_2_HAL_SCAN_MODE
24987(
24988 WDI_ScanMode wdiScanMode
24989)
24990{
Jeff Johnsone7245742012-09-05 17:12:55 -070024991 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024992 the chances of getting inlined*/
24993 switch( wdiScanMode )
24994 {
24995 case WDI_SCAN_MODE_NORMAL:
24996 return eHAL_SYS_MODE_NORMAL;
24997 case WDI_SCAN_MODE_LEARN:
24998 return eHAL_SYS_MODE_LEARN;
24999 case WDI_SCAN_MODE_SCAN:
25000 return eHAL_SYS_MODE_SCAN;
25001 case WDI_SCAN_MODE_PROMISC:
25002 return eHAL_SYS_MODE_PROMISC;
25003 case WDI_SCAN_MODE_SUSPEND_LINK:
25004 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070025005 case WDI_SCAN_MODE_ROAM_SCAN:
25006 return eHAL_SYS_MODE_ROAM_SCAN;
25007 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
25008 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070025009 }
25010
Jeff Johnsone7245742012-09-05 17:12:55 -070025011 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025012}/*WDI_2_HAL_SCAN_MODE*/
25013
25014/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025015WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070025016WDI_2_HAL_SEC_CH_OFFSET
25017(
25018 WDI_HTSecondaryChannelOffset wdiSecChOffset
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( wdiSecChOffset )
25024 {
25025 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025026 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025027 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025028 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025029 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025030 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25031#ifdef WLAN_FEATURE_11AC
25032 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25033 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25034 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25035 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25036 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25037 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25038 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25039 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25040 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25041 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25042 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25043 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25044 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25045 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25046#endif
25047 default:
25048 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025049 }
25050
Jeff Johnsone7245742012-09-05 17:12:55 -070025051 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025052}/*WDI_2_HAL_SEC_CH_OFFSET*/
25053
25054/*Convert WDI BSS type into HAL BSS type*/
25055WPT_STATIC WPT_INLINE tSirBssType
25056WDI_2_HAL_BSS_TYPE
25057(
25058 WDI_BssType wdiBSSType
25059)
25060{
Jeff Johnsone7245742012-09-05 17:12:55 -070025061 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025062 the chances of getting inlined*/
25063 switch( wdiBSSType )
25064 {
25065 case WDI_INFRASTRUCTURE_MODE:
25066 return eSIR_INFRASTRUCTURE_MODE;
25067 case WDI_INFRA_AP_MODE:
25068 return eSIR_INFRA_AP_MODE;
25069 case WDI_IBSS_MODE:
25070 return eSIR_IBSS_MODE;
25071 case WDI_BTAMP_STA_MODE:
25072 return eSIR_BTAMP_STA_MODE;
25073 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025074 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025075 case WDI_BSS_AUTO_MODE:
25076 return eSIR_AUTO_MODE;
25077 }
25078
Jeff Johnsone7245742012-09-05 17:12:55 -070025079 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025080}/*WDI_2_HAL_BSS_TYPE*/
25081
25082/*Convert WDI NW type into HAL NW type*/
25083WPT_STATIC WPT_INLINE tSirNwType
25084WDI_2_HAL_NW_TYPE
25085(
25086 WDI_NwType wdiNWType
25087)
25088{
Jeff Johnsone7245742012-09-05 17:12:55 -070025089 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025090 the chances of getting inlined*/
25091 switch( wdiNWType )
25092 {
25093 case WDI_11A_NW_TYPE:
25094 return eSIR_11A_NW_TYPE;
25095 case WDI_11B_NW_TYPE:
25096 return eSIR_11B_NW_TYPE;
25097 case WDI_11G_NW_TYPE:
25098 return eSIR_11G_NW_TYPE;
25099 case WDI_11N_NW_TYPE:
25100 return eSIR_11N_NW_TYPE;
25101 }
25102
Jeff Johnsone7245742012-09-05 17:12:55 -070025103 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025104}/*WDI_2_HAL_NW_TYPE*/
25105
25106/*Convert WDI chanel bonding type into HAL cb type*/
25107WPT_STATIC WPT_INLINE ePhyChanBondState
25108WDI_2_HAL_CB_STATE
25109(
25110 WDI_PhyChanBondState wdiCbState
25111)
25112{
Jeff Johnsone7245742012-09-05 17:12:55 -070025113 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025114 the chances of getting inlined*/
25115 switch ( wdiCbState )
25116 {
25117 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25118 return PHY_SINGLE_CHANNEL_CENTERED;
25119 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25120 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25121 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25122 return PHY_DOUBLE_CHANNEL_CENTERED;
25123 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25124 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025125#ifdef WLAN_FEATURE_11AC
25126 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25127 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25128 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25129 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25130 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25131 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25132 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25133 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25134 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25135 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25136 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25137 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25138 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25139 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25140#endif
25141 case WDI_MAX_CB_STATE:
25142 default:
25143 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025144 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025145
Jeff Johnson295189b2012-06-20 16:38:30 -070025146 return PHY_CHANNEL_BONDING_STATE_MAX;
25147}/*WDI_2_HAL_CB_STATE*/
25148
25149/*Convert WDI chanel bonding type into HAL cb type*/
25150WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25151WDI_2_HAL_HT_OPER_MODE
25152(
25153 WDI_HTOperatingMode wdiHTOperMode
25154)
25155{
Jeff Johnsone7245742012-09-05 17:12:55 -070025156 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025157 the chances of getting inlined*/
25158 switch ( wdiHTOperMode )
25159 {
25160 case WDI_HT_OP_MODE_PURE:
25161 return eSIR_HT_OP_MODE_PURE;
25162 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25163 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25164 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25165 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25166 case WDI_HT_OP_MODE_MIXED:
25167 return eSIR_HT_OP_MODE_MIXED;
25168 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025169
Jeff Johnson295189b2012-06-20 16:38:30 -070025170 return eSIR_HT_OP_MODE_MAX;
25171}/*WDI_2_HAL_HT_OPER_MODE*/
25172
25173/*Convert WDI mimo PS type into HAL mimo PS type*/
25174WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25175WDI_2_HAL_MIMO_PS
25176(
25177 WDI_HTMIMOPowerSaveState wdiHTOperMode
25178)
25179{
Jeff Johnsone7245742012-09-05 17:12:55 -070025180 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025181 the chances of getting inlined*/
25182 switch ( wdiHTOperMode )
25183 {
25184 case WDI_HT_MIMO_PS_STATIC:
25185 return eSIR_HT_MIMO_PS_STATIC;
25186 case WDI_HT_MIMO_PS_DYNAMIC:
25187 return eSIR_HT_MIMO_PS_DYNAMIC;
25188 case WDI_HT_MIMO_PS_NA:
25189 return eSIR_HT_MIMO_PS_NA;
25190 case WDI_HT_MIMO_PS_NO_LIMIT:
25191 return eSIR_HT_MIMO_PS_NO_LIMIT;
25192 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025193
Jeff Johnson295189b2012-06-20 16:38:30 -070025194 return eSIR_HT_MIMO_PS_MAX;
25195}/*WDI_2_HAL_MIMO_PS*/
25196
25197/*Convert WDI ENC type into HAL ENC type*/
25198WPT_STATIC WPT_INLINE tAniEdType
25199WDI_2_HAL_ENC_TYPE
25200(
25201 WDI_EncryptType wdiEncType
25202)
25203{
Jeff Johnsone7245742012-09-05 17:12:55 -070025204 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025205 the chances of getting inlined*/
25206 switch ( wdiEncType )
25207 {
25208 case WDI_ENCR_NONE:
25209 return eSIR_ED_NONE;
25210
25211 case WDI_ENCR_WEP40:
25212 return eSIR_ED_WEP40;
25213
25214 case WDI_ENCR_WEP104:
25215 return eSIR_ED_WEP104;
25216
25217 case WDI_ENCR_TKIP:
25218 return eSIR_ED_TKIP;
25219
25220 case WDI_ENCR_CCMP:
25221 return eSIR_ED_CCMP;
25222
25223 case WDI_ENCR_AES_128_CMAC:
25224 return eSIR_ED_AES_128_CMAC;
25225#if defined(FEATURE_WLAN_WAPI)
25226 case WDI_ENCR_WPI:
25227 return eSIR_ED_WPI;
25228#endif
25229 default:
25230 return eSIR_ED_NOT_IMPLEMENTED;
25231 }
25232
25233}/*WDI_2_HAL_ENC_TYPE*/
25234
25235/*Convert WDI WEP type into HAL WEP type*/
25236WPT_STATIC WPT_INLINE tAniWepType
25237WDI_2_HAL_WEP_TYPE
25238(
25239 WDI_WepType wdiWEPType
25240)
25241{
Jeff Johnsone7245742012-09-05 17:12:55 -070025242 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025243 the chances of getting inlined*/
25244 switch ( wdiWEPType )
25245 {
25246 case WDI_WEP_STATIC:
25247 return eSIR_WEP_STATIC;
25248
25249 case WDI_WEP_DYNAMIC:
25250 return eSIR_WEP_DYNAMIC;
25251 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025252
Jeff Johnson295189b2012-06-20 16:38:30 -070025253 return eSIR_WEP_MAX;
25254}/*WDI_2_HAL_WEP_TYPE*/
25255
25256WPT_STATIC WPT_INLINE tSirLinkState
25257WDI_2_HAL_LINK_STATE
25258(
25259 WDI_LinkStateType wdiLinkState
25260)
25261{
Jeff Johnsone7245742012-09-05 17:12:55 -070025262 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025263 the chances of getting inlined*/
25264 switch ( wdiLinkState )
25265 {
25266 case WDI_LINK_IDLE_STATE:
25267 return eSIR_LINK_IDLE_STATE;
25268
25269 case WDI_LINK_PREASSOC_STATE:
25270 return eSIR_LINK_PREASSOC_STATE;
25271
25272 case WDI_LINK_POSTASSOC_STATE:
25273 return eSIR_LINK_POSTASSOC_STATE;
25274
25275 case WDI_LINK_AP_STATE:
25276 return eSIR_LINK_AP_STATE;
25277
25278 case WDI_LINK_IBSS_STATE:
25279 return eSIR_LINK_IBSS_STATE;
25280
25281 case WDI_LINK_BTAMP_PREASSOC_STATE:
25282 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25283
25284 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25285 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25286
25287 case WDI_LINK_BTAMP_AP_STATE:
25288 return eSIR_LINK_BTAMP_AP_STATE;
25289
25290 case WDI_LINK_BTAMP_STA_STATE:
25291 return eSIR_LINK_BTAMP_STA_STATE;
25292
25293 case WDI_LINK_LEARN_STATE:
25294 return eSIR_LINK_LEARN_STATE;
25295
25296 case WDI_LINK_SCAN_STATE:
25297 return eSIR_LINK_SCAN_STATE;
25298
25299 case WDI_LINK_FINISH_SCAN_STATE:
25300 return eSIR_LINK_FINISH_SCAN_STATE;
25301
25302 case WDI_LINK_INIT_CAL_STATE:
25303 return eSIR_LINK_INIT_CAL_STATE;
25304
25305 case WDI_LINK_FINISH_CAL_STATE:
25306 return eSIR_LINK_FINISH_CAL_STATE;
25307
Jeff Johnson295189b2012-06-20 16:38:30 -070025308 case WDI_LINK_LISTEN_STATE:
25309 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025310
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025311 case WDI_LINK_SEND_ACTION_STATE:
25312 return eSIR_LINK_SEND_ACTION_STATE;
25313
Jeff Johnson295189b2012-06-20 16:38:30 -070025314 default:
25315 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025316 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025317}
25318
Jeff Johnsone7245742012-09-05 17:12:55 -070025319/*Translate a STA Context from WDI into HAL*/
25320WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025321void
25322WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025323(
Jeff Johnson295189b2012-06-20 16:38:30 -070025324 tConfigStaParams* phalConfigSta,
25325 WDI_ConfigStaReqInfoType* pwdiConfigSta
25326)
25327{
25328 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025329#ifdef WLAN_FEATURE_11AC
25330 /* Get the Version 1 Handler */
25331 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25332 if (WDI_getFwWlanFeatCaps(DOT11AC))
25333 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025334 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025335 }
25336#endif
25337 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025338 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025339
Jeff Johnsone7245742012-09-05 17:12:55 -070025340 wpalMemoryCopy(phalConfigSta->bssId,
25341 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25342
25343 wpalMemoryCopy(phalConfigSta->staMac,
25344 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025345
25346 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25347 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25348 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25349 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25350 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25351 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25352 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25353 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25354 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25355 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25356 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25357 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25358 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25359 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25360 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25361 phalConfigSta->action = pwdiConfigSta->wdiAction;
25362 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25363 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25364 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25365 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25366 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25367 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25368 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025369
Jeff Johnson295189b2012-06-20 16:38:30 -070025370 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25371
Jeff Johnsone7245742012-09-05 17:12:55 -070025372 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025373 pwdiConfigSta->wdiSupportedRates.opRateMode;
25374 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25375 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025376 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025377 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25378 }
25379 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25380 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025381 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025382 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25383 }
25384 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25385 {
25386 phalConfigSta->supportedRates.aniLegacyRates[i] =
25387 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25388 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025389 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025390 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25391 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25392 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025393 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025394 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25395 }
25396 phalConfigSta->supportedRates.rxHighestDataRate =
25397 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25398
Jeff Johnsone7245742012-09-05 17:12:55 -070025399#ifdef WLAN_FEATURE_11AC
25400 if(phalConfigSta_V1 != NULL)
25401 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025402 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25403 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25404 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25405 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025406 }
25407#endif
25408
Jeff Johnson295189b2012-06-20 16:38:30 -070025409 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025410
Jeff Johnsone7245742012-09-05 17:12:55 -070025411#ifdef WLAN_FEATURE_11AC
25412 if(phalConfigSta_V1 != NULL)
25413 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025414 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25415 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025416 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025417 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025418 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25419 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25420
Jeff Johnsone7245742012-09-05 17:12:55 -070025421 }
25422#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025423}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025424
25425/*Translate a Rate set info from WDI into HAL*/
25426WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025427WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025428(
Jeff Johnson295189b2012-06-20 16:38:30 -070025429 tSirMacRateSet* pHalRateSet,
25430 WDI_RateSet* pwdiRateSet
25431)
25432{
Jeff Johnsone7245742012-09-05 17:12:55 -070025433 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25435
25436 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25437 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25438
25439 for ( i = 0; i < pHalRateSet->numRates; i++ )
25440 {
25441 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25442 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025443
Jeff Johnson295189b2012-06-20 16:38:30 -070025444}/*WDI_CopyWDIRateSetToHALRateSet*/
25445
25446
25447/*Translate an EDCA Parameter Record from WDI into HAL*/
25448WPT_STATIC WPT_INLINE void
25449WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025450(
Jeff Johnson295189b2012-06-20 16:38:30 -070025451 tSirMacEdcaParamRecord* phalEdcaParam,
25452 WDI_EdcaParamRecord* pWDIEdcaParam
25453)
25454{
Jeff Johnsone7245742012-09-05 17:12:55 -070025455 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025456 the chances of getting inlined*/
25457
25458 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25459 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25460 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25461 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25462
25463 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25464 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25465 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25466}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25467
25468
25469/*Copy a management frame header from WDI fmt into HAL fmt*/
25470WPT_STATIC WPT_INLINE void
25471WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25472(
25473 tSirMacMgmtHdr* pmacMgmtHdr,
25474 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25475)
25476{
25477 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25478 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25479 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25480 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25481 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25482 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25483 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25484 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25485 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25486 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25487 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25488
25489 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25490 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25491
Jeff Johnsone7245742012-09-05 17:12:55 -070025492 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025493 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025494 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025495 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025496 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 pwdiMacMgmtHdr->bssId, 6);
25498
25499 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25500 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25501 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25502
25503}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25504
25505
25506/*Copy config bss parameters from WDI fmt into HAL fmt*/
25507WPT_STATIC WPT_INLINE void
25508WDI_CopyWDIConfigBSSToHALConfigBSS
25509(
25510 tConfigBssParams* phalConfigBSS,
25511 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25512)
25513{
25514
25515 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025516#ifdef WLAN_FEATURE_11AC
25517 /* Get the Version 1 Handler */
25518 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25519 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025520 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025521#endif
25522
Jeff Johnson295189b2012-06-20 16:38:30 -070025523 wpalMemoryCopy( phalConfigBSS->bssId,
25524 pwdiConfigBSS->macBSSID,
25525 WDI_MAC_ADDR_LEN);
25526
25527#ifdef HAL_SELF_STA_PER_BSS
25528 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25529 pwdiConfigBSS->macSelfAddr,
25530 WDI_MAC_ADDR_LEN);
25531#endif
25532
25533 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25534
25535 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25536 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25537
Jeff Johnsone7245742012-09-05 17:12:55 -070025538 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025539 pwdiConfigBSS->ucShortSlotTimeSupported;
25540 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25541 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25542 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25543 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25544 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025545 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025546 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25547 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25548 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25549 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25550 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25551 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25552 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25553 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25554 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25555 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25556 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25557
Jeff Johnsone7245742012-09-05 17:12:55 -070025558 phalConfigBSS->htOperMode =
25559 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025560
25561 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25562 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25563 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25564 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25565
25566#ifdef WLAN_FEATURE_VOWIFI
25567 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25568#endif
25569
25570 /*! Used 32 as magic number because that is how the ssid is declared inside the
25571 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25574 pwdiConfigBSS->wdiSSID.ucLength : 32;
25575 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025576 pwdiConfigBSS->wdiSSID.sSSID,
25577 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025578
25579 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25580 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025581
Jeff Johnson295189b2012-06-20 16:38:30 -070025582 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25583 &pwdiConfigBSS->wdiRateSet);
25584
25585 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25586
25587 if(phalConfigBSS->edcaParamsValid)
25588 {
25589 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25590 &pwdiConfigBSS->wdiBEEDCAParams);
25591 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25592 &pwdiConfigBSS->wdiBKEDCAParams);
25593 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25594 &pwdiConfigBSS->wdiVIEDCAParams);
25595 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25596 &pwdiConfigBSS->wdiVOEDCAParams);
25597 }
25598
Jeff Johnsone7245742012-09-05 17:12:55 -070025599 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025600
25601 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25602
25603#ifdef WLAN_FEATURE_VOWIFI_11R
25604
Jeff Johnsone7245742012-09-05 17:12:55 -070025605 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025606 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025607
Jeff Johnson295189b2012-06-20 16:38:30 -070025608 if( phalConfigBSS->extSetStaKeyParamValid )
25609 {
25610 /*-----------------------------------------------------------------------
25611 Copy the STA Key parameters into the HAL message
25612 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025613 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025614 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25615
Jeff Johnsone7245742012-09-05 17:12:55 -070025616 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025617 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25618
25619 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25620
25621 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25622
25623 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25624
Jeff Johnson295189b2012-06-20 16:38:30 -070025625 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25626 keyIndex++)
25627 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025628 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025629 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25630 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25631 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25632 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25633 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25634 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025635 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025636 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025637 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025638 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25641 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025642 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025643 WDI_MAX_KEY_LENGTH);
25644 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025645 }
25646 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25647 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025648 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 sizeof(phalConfigBSS->extSetStaKeyParam) );
25650 }
25651
25652#endif /*WLAN_FEATURE_VOWIFI_11R*/
25653
Jeff Johnsone7245742012-09-05 17:12:55 -070025654#ifdef WLAN_FEATURE_11AC
25655 if(phalConfigBSS_V1 != NULL)
25656 {
25657 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25658 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25659 }
25660#endif
25661
Jeff Johnson295189b2012-06-20 16:38:30 -070025662}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25663
25664
Jeff Johnsone7245742012-09-05 17:12:55 -070025665/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025666 pointed to by user data */
25667WPT_STATIC WPT_INLINE void
25668WDI_ExtractRequestCBFromEvent
25669(
25670 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025671 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025672 void** ppUserData
25673)
25674{
25675 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25676 switch ( pEvent->wdiRequest )
25677 {
25678 case WDI_START_REQ:
25679 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25680 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25681 break;
25682 case WDI_STOP_REQ:
25683 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25684 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25685 break;
25686 case WDI_INIT_SCAN_REQ:
25687 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25688 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25689 break;
25690 case WDI_START_SCAN_REQ:
25691 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25692 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25693 break;
25694 case WDI_END_SCAN_REQ:
25695 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25696 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25697 break;
25698 case WDI_FINISH_SCAN_REQ:
25699 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25700 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25701 break;
25702 case WDI_JOIN_REQ:
25703 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25704 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25705 break;
25706 case WDI_CONFIG_BSS_REQ:
25707 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25708 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25709 break;
25710 case WDI_DEL_BSS_REQ:
25711 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25712 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25713 break;
25714 case WDI_POST_ASSOC_REQ:
25715 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25716 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25717 break;
25718 case WDI_DEL_STA_REQ:
25719 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25720 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25721 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025722
25723 case WDI_ADD_STA_SELF_REQ:
25724 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25725 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25726 break;
25727
Jeff Johnson295189b2012-06-20 16:38:30 -070025728 case WDI_DEL_STA_SELF_REQ:
25729 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25730 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25731 break;
25732
25733 case WDI_SET_BSS_KEY_REQ:
25734 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25735 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25736 break;
25737 case WDI_RMV_BSS_KEY_REQ:
25738 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25739 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25740 break;
25741 case WDI_SET_STA_KEY_REQ:
25742 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25743 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25744 break;
25745 case WDI_RMV_STA_KEY_REQ:
25746 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25747 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25748 break;
25749 case WDI_ADD_TS_REQ:
25750 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25751 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25752 break;
25753 case WDI_DEL_TS_REQ:
25754 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25755 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25756 break;
25757 case WDI_UPD_EDCA_PRMS_REQ:
25758 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25759 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25760 break;
25761 case WDI_ADD_BA_SESSION_REQ:
25762 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25763 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25764 break;
25765 case WDI_DEL_BA_REQ:
25766 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25767 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25768 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025769#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025770 case WDI_TSM_STATS_REQ:
25771 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25772 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25773 break;
25774#endif
25775 case WDI_CH_SWITCH_REQ:
25776 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25777 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25778 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025779 case WDI_CH_SWITCH_REQ_V1:
25780 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25781 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25782 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025783 case WDI_CONFIG_STA_REQ:
25784 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25785 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25786 break;
25787 case WDI_SET_LINK_ST_REQ:
25788 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25789 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25790 break;
25791 case WDI_GET_STATS_REQ:
25792 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25793 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25794 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025795#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025796 case WDI_GET_ROAM_RSSI_REQ:
25797 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25798 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25799 break;
25800#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025801 case WDI_UPDATE_CFG_REQ:
25802 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25803 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25804 break;
25805 case WDI_ADD_BA_REQ:
25806 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25807 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25808 break;
25809 case WDI_TRIGGER_BA_REQ:
25810 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25811 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25812 break;
25813 case WDI_UPD_BCON_PRMS_REQ:
25814 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25815 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25816 break;
25817 case WDI_SND_BCON_REQ:
25818 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25819 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25820 break;
25821 case WDI_ENTER_BMPS_REQ:
25822 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25823 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25824 break;
25825 case WDI_EXIT_BMPS_REQ:
25826 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25827 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25828 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025829 case WDI_ENTER_IMPS_REQ:
25830 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25831 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25832 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025833 case WDI_ENTER_UAPSD_REQ:
25834 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25835 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25836 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025837 case WDI_EXIT_UAPSD_REQ:
25838 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25839 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25840 break;
25841 case WDI_SET_UAPSD_PARAM_REQ:
25842 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25843 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25844 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 case WDI_UPDATE_UAPSD_PARAM_REQ:
25846 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25847 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25848 break;
25849 case WDI_CONFIGURE_RXP_FILTER_REQ:
25850 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25851 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25852 break;
25853 case WDI_SET_BEACON_FILTER_REQ:
25854 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25855 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25856 break;
25857 case WDI_REM_BEACON_FILTER_REQ:
25858 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25859 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025860 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025861 case WDI_SET_RSSI_THRESHOLDS_REQ:
25862 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25863 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25864 break;
25865 case WDI_HOST_OFFLOAD_REQ:
25866 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25867 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25868 break;
25869 case WDI_WOWL_ADD_BC_PTRN_REQ:
25870 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25871 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25872 break;
25873 case WDI_WOWL_DEL_BC_PTRN_REQ:
25874 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25875 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25876 break;
25877 case WDI_WOWL_ENTER_REQ:
25878 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25879 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25880 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025881 case WDI_WOWL_EXIT_REQ:
25882 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25883 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25884 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025885 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25886 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25887 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25888 break;
25889 case WDI_FLUSH_AC_REQ:
25890 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25891 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25892 break;
25893 case WDI_BTAMP_EVENT_REQ:
25894 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25895 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25896 break;
25897 case WDI_KEEP_ALIVE_REQ:
25898 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25899 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25900 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025901#if defined FEATURE_WLAN_SCAN_PNO
25902 case WDI_SET_PREF_NETWORK_REQ:
25903 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25904 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25905 break;
25906 case WDI_SET_RSSI_FILTER_REQ:
25907 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25908 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25909 break;
25910 case WDI_UPDATE_SCAN_PARAMS_REQ:
25911 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25912 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25913 break;
25914#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025915 case WDI_SET_TX_PER_TRACKING_REQ:
25916 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25917 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025918 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025919#if defined WLAN_FEATURE_PACKET_FILTERING
25920 case WDI_8023_MULTICAST_LIST_REQ:
25921 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25922 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25923 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025924 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25925 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25926 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25927 break;
25928 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25929 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25930 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25931 break;
25932 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25933 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25934 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25935 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025936#endif
25937 case WDI_SET_POWER_PARAMS_REQ:
25938 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25939 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25940 break;
25941#if defined WLAN_FEATURE_GTK_OFFLOAD
25942 case WDI_GTK_OFFLOAD_REQ:
25943 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25944 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25945 break;
25946 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25947 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25948 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25949 break;
25950#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025951
Jeff Johnson295189b2012-06-20 16:38:30 -070025952 default:
25953 *ppfnReqCB = NULL;
25954 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025955 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 }
25957}/*WDI_ExtractRequestCBFromEvent*/
25958
25959
25960/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025961 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025962 frame xtl is enabled for a particular STA.
25963
25964 WDI_PostAssocReq must have been called.
25965
Jeff Johnsone7245742012-09-05 17:12:55 -070025966 @param uSTAIdx: STA index
25967
Jeff Johnson295189b2012-06-20 16:38:30 -070025968 @see WDI_PostAssocReq
25969 @return Result of the function call
25970*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025971wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025972WDI_IsHwFrameTxTranslationCapable
25973(
25974 wpt_uint8 uSTAIdx
25975)
25976{
Jeff Johnsone7245742012-09-05 17:12:55 -070025977 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025978 uma value*/
25979 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025980 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025981 ------------------------------------------------------------------------*/
25982 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25983 {
25984 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25985 "WDI API call before module is initialized - Fail request");
25986
Jeff Johnsone7245742012-09-05 17:12:55 -070025987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025988 }
25989
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025990#ifdef WLAN_SOFTAP_VSTA_FEATURE
25991 if (IS_VSTA_IDX(uSTAIdx))
25992 {
25993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25994 "STA %d is a Virtual STA, "
25995 "HW frame translation disabled", uSTAIdx);
25996 return eWLAN_PAL_FALSE;
25997 }
25998#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070025999
Jeff Johnson295189b2012-06-20 16:38:30 -070026000 return gWDICb.bFrameTransEnabled;
26001}/*WDI_IsHwFrameTxTranslationCapable*/
26002
Katya Nigam6201c3e2014-05-27 17:51:42 +053026003
26004/**
26005 @brief WDI_IsSelfSTA - check if staid is self sta index
26006
26007
26008 @param pWDICtx: pointer to the WLAN DAL context
26009 ucSTAIdx: station index
26010
26011 @return Result of the function call
26012*/
26013wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
26014{
26015 wpt_uint8 ucSTAType;
26016
26017 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
26018 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26019 {
26020 if( ucSTAType == WDI_STA_ENTRY_SELF )
26021 return eWLAN_PAL_TRUE;
26022 }
26023
26024 return eWLAN_PAL_FALSE;
26025}
26026
26027
26028
Jeff Johnson295189b2012-06-20 16:38:30 -070026029#ifdef FEATURE_WLAN_SCAN_PNO
26030/**
26031 @brief WDI_SetPreferredNetworkList
26032
Jeff Johnsone7245742012-09-05 17:12:55 -070026033 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026034 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026035
Jeff Johnson295189b2012-06-20 16:38:30 -070026036 wdiPNOScanCb: callback for passing back the response
26037 of the Set PNO operation received from the
26038 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026039
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026041 callback
26042
Jeff Johnson295189b2012-06-20 16:38:30 -070026043 @return Result of the function call
26044*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026045WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026046WDI_SetPreferredNetworkReq
26047(
26048 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26049 WDI_PNOScanCb wdiPNOScanCb,
26050 void* pUserData
26051)
26052{
26053 WDI_EventInfoType wdiEventData = {{0}};
26054 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26055
26056 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026057 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026058 ------------------------------------------------------------------------*/
26059 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26060 {
26061 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26062 "WDI API call before module is initialized - Fail request");
26063
Jeff Johnsone7245742012-09-05 17:12:55 -070026064 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026065 }
26066
26067 /*------------------------------------------------------------------------
26068 Fill in Event data and post to the Main FSM
26069 ------------------------------------------------------------------------*/
26070 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026071 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026072 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026073 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026074 wdiEventData.pUserData = pUserData;
26075
26076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26077}
26078
26079
26080/**
26081 @brief WDI_SetRssiFilterReq
26082
Jeff Johnsone7245742012-09-05 17:12:55 -070026083 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026084 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026085
Jeff Johnson295189b2012-06-20 16:38:30 -070026086 wdiRssiFilterCb: callback for passing back the response
26087 of the Set RSSI Filter operation received from the
26088 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026089
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026091 callback
26092
Jeff Johnson295189b2012-06-20 16:38:30 -070026093 @return Result of the function call
26094*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026095WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026096WDI_SetRssiFilterReq
26097(
26098 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26099 WDI_RssiFilterCb wdiRssiFilterCb,
26100 void* pUserData
26101)
26102{
26103 WDI_EventInfoType wdiEventData = {{0}};
26104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26105
26106 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026107 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026108 ------------------------------------------------------------------------*/
26109 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26110 {
26111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26112 "WDI API call before module is initialized - Fail request");
26113
Jeff Johnsone7245742012-09-05 17:12:55 -070026114 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026115 }
26116
26117 /*------------------------------------------------------------------------
26118 Fill in Event data and post to the Main FSM
26119 ------------------------------------------------------------------------*/
26120 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026121 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026122 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026123 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026124 wdiEventData.pUserData = pUserData;
26125
26126 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26127}/*WDI_SetRssiFilterReq*/
26128
26129/**
26130 @brief WDI_UpdateScanParamsReq
26131
Jeff Johnsone7245742012-09-05 17:12:55 -070026132 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026133 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026134
Jeff Johnson295189b2012-06-20 16:38:30 -070026135 wdiUpdateScanParamsCb: callback for passing back the response
26136 of the Set PNO operation received from the
26137 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026138
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026140 callback
26141
Jeff Johnson295189b2012-06-20 16:38:30 -070026142 @return Result of the function call
26143*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026144WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026145WDI_UpdateScanParamsReq
26146(
26147 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26148 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26149 void* pUserData
26150)
26151{
26152 WDI_EventInfoType wdiEventData = {{0}};
26153 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26154
26155 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026156 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026157 ------------------------------------------------------------------------*/
26158 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26159 {
26160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26161 "WDI API call before module is initialized - Fail request");
26162
Jeff Johnsone7245742012-09-05 17:12:55 -070026163 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026164 }
26165
26166 /*------------------------------------------------------------------------
26167 Fill in Event data and post to the Main FSM
26168 ------------------------------------------------------------------------*/
26169 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026170 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026171 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026172 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026173 wdiEventData.pUserData = pUserData;
26174
26175 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26176}
26177
26178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026179 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026180 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026181
26182 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026183 pwdiPNOScanReqParams: pointer to the info received
26184 from upper layers
26185 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026186 and its size
26187
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 @return Result of the function call
26189*/
26190
26191WDI_Status
26192WDI_PackPreferredNetworkList
26193(
26194 WDI_ControlBlockType* pWDICtx,
26195 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26196 wpt_uint8** ppSendBuffer,
26197 wpt_uint16* pSize
26198)
26199{
Jeff Johnsone7245742012-09-05 17:12:55 -070026200 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026201 wpt_uint16 usDataOffset = 0;
26202 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026203 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026204 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026205 /*-----------------------------------------------------------------------
26206 Get message buffer
26207 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026208 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026209 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026210 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026211 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026212 {
26213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026214 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026215 pwdiPNOScanReqParams);
26216 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026217 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026218 }
26219
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026220 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26221
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 /*-------------------------------------------------------------------------
26223 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26224 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026225 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026226 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026227 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026228 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26229
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026230 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026231 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026232 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026233 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026234 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26235
26236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026238 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26239 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26240 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26241
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026242 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 {
26244 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026245 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026246 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26247
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026248 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026249 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026250 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026251
26252 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026253 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026254 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026255
26256 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026257 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026258 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026259
Jeff Johnsone7245742012-09-05 17:12:55 -070026260 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026261 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026262 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026263 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26264 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26265 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26266 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026267
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026268 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026269 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026270 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026271
26272 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026273 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026274 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26275
26276 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026277 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026278 pPrefNetwListParams->aNetworks[i].ssId.length,
26279 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026280 }
26281
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026282 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026283 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26285 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26286 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26287
26288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026289 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026290 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026291 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26292 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26293
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026294 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026296 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026297 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026298 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26300 }
26301
26302 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026303 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026304 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26305 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26306 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026307 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026308
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026309 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026310 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026311 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026312
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026313 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026314 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26315 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26316 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026317 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026318
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026319 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026320 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026321 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026322
26323 /*Set the output values*/
26324 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026325 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026326
26327 return WDI_STATUS_SUCCESS;
26328}/*WDI_PackPreferredNetworkList*/
26329
26330/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026331 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026332 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026333
26334 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026335 pwdiPNOScanReqParams: pointer to the info received
26336 from upper layers
26337 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026338 and its size
26339
Jeff Johnson295189b2012-06-20 16:38:30 -070026340 @return Result of the function call
26341*/
26342
26343WDI_Status
26344WDI_PackPreferredNetworkListNew
26345(
26346 WDI_ControlBlockType* pWDICtx,
26347 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26348 wpt_uint8** ppSendBuffer,
26349 wpt_uint16* pSize
26350)
26351{
Jeff Johnsone7245742012-09-05 17:12:55 -070026352 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026353 wpt_uint16 usDataOffset = 0;
26354 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026355 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026356 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026357
26358 /*-----------------------------------------------------------------------
26359 Get message buffer
26360 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026361 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026362 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026363 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026364 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026365 {
26366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026367 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026368 pwdiPNOScanReqParams);
26369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026371 }
26372
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026373 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26374
Jeff Johnson295189b2012-06-20 16:38:30 -070026375 /*-------------------------------------------------------------------------
26376 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26377 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026378 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026379 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026380 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026381 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26382
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026383 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026384 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026385 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026386 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026387 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26388
26389 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026390 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026391 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26392 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26393 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26394
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026395 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026396 {
26397 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026398 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026399 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26400
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026401 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026402 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026403 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026404
26405 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026406 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026407 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026408
26409 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026410 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026411 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026412
26413 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026414 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026415 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026416
Jeff Johnsone7245742012-09-05 17:12:55 -070026417 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026418 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026419 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026420 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26421
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026422 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026423 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026424 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026425
26426 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026427 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026428 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26429
26430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026431 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026432 pPrefNetwListParams->aNetworks[i].ssId.length,
26433 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026434 }
26435
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026436 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026437 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26439 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26440 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26441
26442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026443 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026444 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026445 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26446 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26447
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026448 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026449 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026450 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026451 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026452 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026453 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26454 }
26455
26456 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026457 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026458 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26459 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26460 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026461 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026462
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026463 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026464 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026465 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026466
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026467 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026468 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26469 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26470 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026471 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026472
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026473 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026474 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026475 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026476
Jeff Johnson295189b2012-06-20 16:38:30 -070026477
26478 /*Set the output values*/
26479 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026480 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026481
26482 return WDI_STATUS_SUCCESS;
26483}/*WDI_PackPreferredNetworkListNew*/
26484
26485/**
26486 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026487
26488 @param pWDICtx: pointer to the WLAN DAL context
26489 pEventData: pointer to the event information structure
26490
Jeff Johnson295189b2012-06-20 16:38:30 -070026491 @return Result of the function call
26492*/
26493WDI_Status
26494WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026495(
Jeff Johnson295189b2012-06-20 16:38:30 -070026496 WDI_ControlBlockType* pWDICtx,
26497 WDI_EventInfoType* pEventData
26498)
26499{
26500 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26501 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026502 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026503 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026504 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026505
26506 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026507 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026508 -------------------------------------------------------------------------*/
26509 if (( NULL == pEventData ) ||
26510 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26511 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26512 {
26513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026514 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026515 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026516 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026517 }
26518
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026519 /*----------------------------------------------------------------------
26520 Avoid Enable PNO during any active session or an ongoing session
26521 ----------------------------------------------------------------------*/
26522 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26523 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26524 {
26525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26526 "%s:(Active/Ongoing Session) - Fail request", __func__);
26527
26528 return WDI_STATUS_E_FAILURE;
26529 }
26530
Jeff Johnson295189b2012-06-20 16:38:30 -070026531 /*-------------------------------------------------------------------------
26532 Pack the PNO request structure based on version
26533 -------------------------------------------------------------------------*/
26534 if ( pWDICtx->wdiPNOVersion > 0 )
26535 {
26536 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026537 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026538 pWDICtx->wdiPNOVersion);
26539
26540 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26541 &pSendBuffer, &usSendSize);
26542 }
26543 else
26544 {
26545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026546 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026547 pWDICtx->wdiPNOVersion);
26548
26549 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26550 &pSendBuffer, &usSendSize);
26551 }
26552
26553 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26554 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26555 {
26556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026557 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026559 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026560 }
26561
26562 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026563 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026564
26565 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026566 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026567 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026568 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26569 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026570}
26571
26572/**
26573 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026574
26575 @param pWDICtx: pointer to the WLAN DAL context
26576 pEventData: pointer to the event information structure
26577
Jeff Johnson295189b2012-06-20 16:38:30 -070026578 @see
26579 @return Result of the function call
26580*/
26581WDI_Status
26582WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026583(
Jeff Johnson295189b2012-06-20 16:38:30 -070026584 WDI_ControlBlockType* pWDICtx,
26585 WDI_EventInfoType* pEventData
26586)
26587{
26588 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26589 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026590 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026591 wpt_uint16 usDataOffset = 0;
26592 wpt_uint16 usSendSize = 0;
26593 wpt_uint8 ucRssiThreshold;
26594
26595 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026596 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026597 -------------------------------------------------------------------------*/
26598 if (( NULL == pEventData ) ||
26599 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26600 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26601 {
26602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026603 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026604 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026605 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026606 }
26607
26608 /*-----------------------------------------------------------------------
26609 Get message buffer
26610 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026612 sizeof(ucRssiThreshold),
26613 &pSendBuffer, &usDataOffset, &usSendSize))||
26614 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26615 {
26616 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026617 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026621 }
26622
26623 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26624
Jeff Johnsone7245742012-09-05 17:12:55 -070026625 wpalMemoryCopy( pSendBuffer+usDataOffset,
26626 &ucRssiThreshold,
26627 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026628
26629 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026630 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026631
26632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026633 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026634 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026635 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26636 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026637}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026638#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26639/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026640 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026641
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026642 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026643 by the Device Interface
26644
26645 wdiRoamOffloadScancb: callback for passing back the response
26646 of the Roam Candidate Lookup Req operation received from the
26647 device
26648
26649 pUserData: user data will be passed back with the
26650 callback
26651 @return Result of the function call
26652*/
26653WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026654WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026655(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026656 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026657 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26658 void* pUserData
26659)
26660{
26661 WDI_EventInfoType wdiEventData = {{0}};
26662 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26663
26664 /*------------------------------------------------------------------------
26665 Sanity Check
26666 ------------------------------------------------------------------------*/
26667 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26668 {
26669 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26670 "WDI API call before module is initialized - Fail request");
26671
26672 return WDI_STATUS_E_NOT_ALLOWED;
26673 }
26674
26675 /*------------------------------------------------------------------------
26676 Fill in Event data and post to the Main FSM
26677 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026678 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26679 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26680 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026681 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26682 wdiEventData.pUserData = pUserData;
26683
26684 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26685}
26686
26687void
26688WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26689{
26690 switch (wdiEdType)
26691 {
26692 case WDI_ED_NONE:
26693 *EdType = eED_NONE;
26694 break;
26695 case WDI_ED_WEP40:
26696 case WDI_ED_WEP104:
26697 *EdType = eED_WEP;
26698 break;
26699 case WDI_ED_TKIP:
26700 *EdType = eED_TKIP;
26701 break;
26702 case WDI_ED_CCMP:
26703#ifdef WLAN_FEATURE_11W
26704 case WDI_ED_AES_128_CMAC:
26705#endif
26706 *EdType = eED_CCMP;
26707 break;
26708#ifdef FEATURE_WLAN_WAPI
26709 case WDI_ED_WPI:
26710 *EdType = eED_WPI;
26711 break;
26712#endif
26713 case WDI_ED_ANY:
26714 *EdType = eED_ANY;
26715 break;
26716
26717 default:
26718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26719 "%s: Unknown Encryption Type", __func__);
26720 break;
26721 }
26722}
26723
26724/**
26725 @brief Helper function to pack Start Roam Candidate Lookup
26726 Request parameters
26727
26728 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026729 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026730 from upper layers
26731 ppSendBuffer, pSize - out pointers of the packed buffer
26732 and its size
26733
26734 @return Result of the function call
26735*/
26736
26737WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026738WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026739(
26740 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026741 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026742 wpt_uint8** ppSendBuffer,
26743 wpt_uint16* pSize
26744)
26745{
26746 wpt_uint8* pSendBuffer = NULL;
26747 wpt_uint16 usDataOffset = 0;
26748 wpt_uint16 usSendSize = 0;
26749 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26750 wpt_uint8 i;
26751 /*-----------------------------------------------------------------------
26752 Get message buffer
26753 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026755 sizeof(tRoamCandidateListParams),
26756 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026757 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026758 {
26759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026760 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026761 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026762 WDI_ASSERT(0);
26763 return WDI_STATUS_E_FAILURE;
26764 }
26765 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026766 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026767 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026768 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026769 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026770 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026771 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026772 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026773 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026774 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026775 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026776
26777 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026778 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026779 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026780 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026781 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26782 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026783 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26784 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26785 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26786 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26787 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026788 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026789 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026790 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026791 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26792 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26793 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26794 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26795 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26796 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26797 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026798 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026799 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026800 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26801 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26802 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026803
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026804 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26805 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26806 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26807 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26808 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26809 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026810 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026811 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26812 pRoamCandidateListParams->RoamScanOffloadEnabled,
26813 pRoamCandidateListParams->Command,
26814 pRoamCandidateListParams->StartScanReason,
26815 pRoamCandidateListParams->NeighborScanTimerPeriod,
26816 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26817 pRoamCandidateListParams->NeighborScanChannelMinTime,
26818 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26819 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26820 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26821 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26822 pRoamCandidateListParams->ConnectedNetwork.authentication,
26823 pRoamCandidateListParams->ConnectedNetwork.encryption,
26824 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26825 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26826 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026827 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026828 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026829 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026830 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026831 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26832 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026833 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026834 pRoamCandidateListParams->us24GProbeSize);
26835 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026836 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026837 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026838 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026839 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26840 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026841 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026842 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026843 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26844 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26845 pRoamCandidateListParams->nProbes =
26846 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26847 pRoamCandidateListParams->HomeAwayTime =
26848 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026850 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26851 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026853 }
26854
26855
26856 /*Set the output values*/
26857 *ppSendBuffer = pSendBuffer;
26858 *pSize = usSendSize;
26859 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026860}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026861
26862/**
26863 @brief Process Start Roam Candidate Lookup Request function
26864
26865 @param pWDICtx: pointer to the WLAN DAL context
26866 pEventData: pointer to the event information structure
26867
26868 @return Result of the function call
26869*/
26870WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026871WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026872(
26873 WDI_ControlBlockType* pWDICtx,
26874 WDI_EventInfoType* pEventData
26875)
26876{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026877 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026878 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26879 wpt_uint8* pSendBuffer = NULL;
26880 wpt_uint16 usSendSize = 0;
26881 WDI_Status wdiStatus;
26882 /*-------------------------------------------------------------------------
26883 Sanity check
26884 -------------------------------------------------------------------------*/
26885 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026886 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026887 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26888 {
26889 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26890 "%s: Invalid parameters", __func__);
26891 WDI_ASSERT(0);
26892 return WDI_STATUS_E_FAILURE;
26893 }
26894
26895 /*-------------------------------------------------------------------------
26896 Pack the Start Roam Candidate Lookup request structure based on version
26897 -------------------------------------------------------------------------*/
26898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26899 "%s: Packing Roam Candidate Lookup request ", __func__);
26900
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026901 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026902 &pSendBuffer, &usSendSize);
26903
26904 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26905 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26906 {
26907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26908 "%s: failed to pack request parameters", __func__);
26909 WDI_ASSERT(0);
26910 return wdiStatus;
26911 }
26912
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026913 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26914 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026915
26916 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026917 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026918 -------------------------------------------------------------------------*/
26919 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026920 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026921}
26922
26923/**
26924 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26925 response is being received over the bus from HAL)
26926
26927 @param pWDICtx: pointer to the WLAN DAL context
26928 pEventData: pointer to the event information structure
26929
26930 @see
26931 @return Result of the function call
26932*/
26933WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026934WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026935(
26936 WDI_ControlBlockType* pWDICtx,
26937 WDI_EventInfoType* pEventData
26938)
26939{
26940 WDI_Status wdiStatus;
26941 eHalStatus halStatus;
26942 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26943
26944 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26945
26946 /*-------------------------------------------------------------------------
26947 Sanity check
26948 -------------------------------------------------------------------------*/
26949 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26950 ( NULL == pEventData->pEventData ))
26951 {
26952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26953 "%s: Invalid parameters", __func__);
26954 WDI_ASSERT(0);
26955 return WDI_STATUS_E_FAILURE;
26956 }
26957
26958 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26959
26960 /*-------------------------------------------------------------------------
26961 Extract response and send it to UMAC
26962 -------------------------------------------------------------------------*/
26963 halStatus = *((eHalStatus*)pEventData->pEventData);
26964 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26965
26966 /*Notify UMAC*/
26967 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26968
26969 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026970}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026971#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026972
26973/**
26974 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026975
26976 @param pWDICtx: pointer to the WLAN DAL context
26977 pEventData: pointer to the event information structure
26978
Jeff Johnson295189b2012-06-20 16:38:30 -070026979 @see
26980 @return Result of the function call
26981*/
26982WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026983WDI_PackUpdateScanParamsReq
26984(
26985 WDI_ControlBlockType* pWDICtx,
26986 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26987 wpt_uint8** ppSendBuffer,
26988 wpt_uint16* pSize
26989)
26990{
26991 wpt_uint8* pSendBuffer = NULL;
26992 wpt_uint16 usDataOffset = 0;
26993 wpt_uint16 usSendSize = 0;
26994 tUpdateScanParams updateScanParams = {0};
26995
26996
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080026997 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026998 "Begin WDI Update Scan Parameters Old Style Params");
26999 /*-----------------------------------------------------------------------
27000 Get message buffer
27001 -----------------------------------------------------------------------*/
27002 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27003 sizeof(updateScanParams),
27004 &pSendBuffer, &usDataOffset, &usSendSize))||
27005 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27006 {
27007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027008 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027009 pwdiUpdateScanParams);
27010 WDI_ASSERT(0);
27011 return WDI_STATUS_E_FAILURE;
27012 }
27013
27014 //
27015 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27016 //
27017
27018 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27019 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27020
27021 updateScanParams.ucChannelCount =
27022 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27023 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27024 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27025 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
27026
27027 wpalMemoryCopy( updateScanParams.aChannels,
27028 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27029 updateScanParams.ucChannelCount);
27030
27031
27032 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27033 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27034 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27035 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27036 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27037
27038 wpalMemoryCopy( pSendBuffer+usDataOffset,
27039 &updateScanParams,
27040 sizeof(updateScanParams));
27041
27042 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27043 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27044
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027046 "End Update Scan Parameters Old Style");
27047
27048 /*Set the output values*/
27049 *ppSendBuffer = pSendBuffer;
27050 *pSize = usSendSize;
27051
27052 return WDI_STATUS_SUCCESS;
27053}
27054
27055/**
27056 @brief Process Update Scan Params function
27057
27058 @param pWDICtx: pointer to the WLAN DAL context
27059 pEventData: pointer to the event information structure
27060
27061 @see
27062 @return Result of the function call
27063*/
27064WDI_Status
27065WDI_PackUpdateScanParamsReqEx
27066(
27067 WDI_ControlBlockType* pWDICtx,
27068 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27069 wpt_uint8** ppSendBuffer,
27070 wpt_uint16* pSize
27071)
27072{
27073 wpt_uint8* pSendBuffer = NULL;
27074 wpt_uint16 usDataOffset = 0;
27075 wpt_uint16 usSendSize = 0;
27076 tUpdateScanParamsEx updateScanParams = {0};
27077
27078
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027079 /*-----------------------------------------------------------------------
27080 Get message buffer
27081 -----------------------------------------------------------------------*/
27082 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27083 sizeof(updateScanParams),
27084 &pSendBuffer, &usDataOffset, &usSendSize))||
27085 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27086 {
27087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027088 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027089 pwdiUpdateScanParams);
27090 WDI_ASSERT(0);
27091 return WDI_STATUS_E_FAILURE;
27092 }
27093
27094 //
27095 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27096 //
27097
27098 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27099 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27100
27101 updateScanParams.ucChannelCount =
27102 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27103 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27104 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27105 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27106
27107 wpalMemoryCopy( updateScanParams.aChannels,
27108 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27109 updateScanParams.ucChannelCount);
27110
27111
27112 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27113 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27114 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27115 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27116 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27117
27118 wpalMemoryCopy( pSendBuffer+usDataOffset,
27119 &updateScanParams,
27120 sizeof(updateScanParams));
27121
27122 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27123 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27124
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027125 /*Set the output values*/
27126 *ppSendBuffer = pSendBuffer;
27127 *pSize = usSendSize;
27128
27129 return WDI_STATUS_SUCCESS;
27130}
27131
27132/**
27133 @brief Process Update Scan Params function
27134
27135 @param pWDICtx: pointer to the WLAN DAL context
27136 pEventData: pointer to the event information structure
27137
27138 @see
27139 @return Result of the function call
27140*/
27141WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027142WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027143(
Jeff Johnson295189b2012-06-20 16:38:30 -070027144 WDI_ControlBlockType* pWDICtx,
27145 WDI_EventInfoType* pEventData
27146)
27147{
27148 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27149 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027150 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027151 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027152 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027153
27154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027156 -------------------------------------------------------------------------*/
27157 if (( NULL == pEventData ) ||
27158 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27159 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27160 {
27161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027165 }
27166
27167 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27168 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027169
27170 //
27171 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27172 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027173 if ( pWDICtx->wlanVersion.revision < 1 )
27174 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027175 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027176 &pSendBuffer, &usSendSize);
27177 }
27178 else
27179 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027180 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27181 &pSendBuffer, &usSendSize);
27182 }
27183
27184 if(WDI_STATUS_SUCCESS != wdiStatus)
27185 {
27186 //memory allocation failed
27187 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027188 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027189
Jeff Johnson295189b2012-06-20 16:38:30 -070027190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027191 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027192 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027193 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027194 wdiUpdateScanParamsCb, pEventData->pUserData,
27195 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027196}
27197
27198/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027199 @brief Process Update Channel Params function
27200
27201 @param pWDICtx: pointer to the WLAN DAL context
27202 pEventData: pointer to the event information structure
27203
27204 @see
27205 @return Result of the function call
27206*/
27207WDI_Status
27208WDI_ProcessUpdateChannelParamsReq
27209(
27210 WDI_ControlBlockType* pWDICtx,
27211 WDI_EventInfoType* pEventData
27212)
27213{
27214 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27215 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27216 wpt_uint8* pSendBuffer = NULL;
27217 wpt_uint16 usDataOffset = 0;
27218 wpt_uint16 usSendSize = 0;
27219 tUpdateChannelReqType *updateChannelParams;
27220 wpt_uint32 usUpdateChanParamSize;
27221 wpt_uint8 num_channels = 0;
27222
27223 /*-------------------------------------------------------------------------
27224 Sanity check
27225 -------------------------------------------------------------------------*/
27226 if (( NULL == pEventData ) ||
27227 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27228 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27229 {
27230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27231 "%s: Invalid parameters", __func__);
27232 WDI_ASSERT(0);
27233 return WDI_STATUS_E_FAILURE;
27234 }
27235 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027236 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027237
27238 /*-----------------------------------------------------------------------
27239 Get message buffer
27240 -----------------------------------------------------------------------*/
27241 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27242 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27243 &pSendBuffer, &usDataOffset, &usSendSize))||
27244 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27245 {
27246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27247 "Unable to get send buffer in Update Channel Params req %p",
27248 pwdiUpdateChanListParams);
27249 WDI_ASSERT(0);
27250 return WDI_STATUS_E_FAILURE;
27251 }
27252 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27253
27254 updateChannelParams->numChan = num_channels;
27255 wpalMemoryCopy(&updateChannelParams->chanParam,
27256 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27257 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27258
27259 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27260 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27261
27262 /*-------------------------------------------------------------------------
27263 Send Update channel request to fw
27264 -------------------------------------------------------------------------*/
27265 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27266 wdiUpdateChanParamsCb, pEventData->pUserData,
27267 WDI_UPDATE_CHAN_RESP);
27268}
27269
27270/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027271 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027272
27273 @param pWDICtx: pointer to the WLAN DAL context
27274 pEventData: pointer to the event information structure
27275
Jeff Johnson295189b2012-06-20 16:38:30 -070027276 @see
27277 @return Result of the function call
27278*/
27279WDI_Status
27280WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027281(
Jeff Johnson295189b2012-06-20 16:38:30 -070027282 WDI_ControlBlockType* pWDICtx,
27283 WDI_EventInfoType* pEventData
27284)
27285{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027286 WDI_LowLevelIndType wdiInd;
27287 tpPrefNetwFoundParams pNetwFoundParams;
27288 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027289
27290
27291 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027292 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027293 -------------------------------------------------------------------------*/
27294 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27295 ( NULL == pEventData->pEventData ))
27296 {
27297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027299 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027301 }
27302
27303 /*-------------------------------------------------------------------------
27304 Extract indication and send it to UMAC
27305 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027306 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27307
27308 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27309 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27310 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27311
27312 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27313 {
27314 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27315 "%s: fail to allocate memory", __func__);
27316 return WDI_STATUS_MEM_FAILURE;
27317 }
27318
27319 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27320 (pNetwFoundParams->ssId.length < 32 )?
27321 pNetwFoundParams->ssId.length : 32;
27322 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27323 pNetwFoundParams->ssId.ssId,
27324 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27325 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27326 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27327 pNetwFoundParams->frameLength;
27328 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27329 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27330 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027331
27332 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027333 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027334
Jeff Johnson295189b2012-06-20 16:38:30 -070027335 // DEBUG
27336 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027337 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027338 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027339 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027340 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027341 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027342 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27343
ltimariub77f24b2013-01-24 18:54:33 -080027344 if ( pWDICtx->wdiLowLevelIndCB )
27345 {
27346 /*Notify UMAC*/
27347 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27348 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027349
27350 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027351}
27352
27353/**
27354 @brief Process PNO Rsp function (called when a
27355 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027356
27357 @param pWDICtx: pointer to the WLAN DAL context
27358 pEventData: pointer to the event information structure
27359
Jeff Johnson295189b2012-06-20 16:38:30 -070027360 @see
27361 @return Result of the function call
27362*/
27363WDI_Status
27364WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027365(
Jeff Johnson295189b2012-06-20 16:38:30 -070027366 WDI_ControlBlockType* pWDICtx,
27367 WDI_EventInfoType* pEventData
27368)
27369{
27370 WDI_Status wdiStatus;
27371 eHalStatus halStatus;
27372 WDI_PNOScanCb wdiPNOScanCb = NULL;
27373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27374
27375 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027376 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027377 -------------------------------------------------------------------------*/
27378 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27379 ( NULL == pEventData->pEventData ))
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 }
27386
27387
Jeff Johnsone7245742012-09-05 17:12:55 -070027388 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027389
27390 /*-------------------------------------------------------------------------
27391 Extract response and send it to UMAC
27392 -------------------------------------------------------------------------*/
27393 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027394 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027395
27396 /*Notify UMAC*/
27397 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27398
Jeff Johnsone7245742012-09-05 17:12:55 -070027399 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027400}/*WDI_ProcessSetPreferredNetworkRsp*/
27401
27402/**
27403 @brief Process RSSI Filter Rsp function (called when a
27404 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027405
27406 @param pWDICtx: pointer to the WLAN DAL context
27407 pEventData: pointer to the event information structure
27408
Jeff Johnson295189b2012-06-20 16:38:30 -070027409 @see
27410 @return Result of the function call
27411*/
27412WDI_Status
27413WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027414(
Jeff Johnson295189b2012-06-20 16:38:30 -070027415 WDI_ControlBlockType* pWDICtx,
27416 WDI_EventInfoType* pEventData
27417)
27418{
27419 WDI_Status wdiStatus;
27420 eHalStatus halStatus;
27421 WDI_RssiFilterCb wdiRssiFilterCb;
27422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27423
27424 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027425 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027426 -------------------------------------------------------------------------*/
27427 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27428 ( NULL == pEventData->pEventData ))
27429 {
27430 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027431 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027432 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027433 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027434 }
27435
Jeff Johnsone7245742012-09-05 17:12:55 -070027436 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027437
27438 /*-------------------------------------------------------------------------
27439 Extract response and send it to UMAC
27440 -------------------------------------------------------------------------*/
27441 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027442 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027443
27444 /*Notify UMAC*/
27445 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27446
Jeff Johnsone7245742012-09-05 17:12:55 -070027447 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027448}/*WDI_ProcessSetRssiFilterRsp*/
27449
27450/**
27451 @brief Process Update Scan Params Rsp function (called when a
27452 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027453
27454 @param pWDICtx: pointer to the WLAN DAL context
27455 pEventData: pointer to the event information structure
27456
Jeff Johnson295189b2012-06-20 16:38:30 -070027457 @see
27458 @return Result of the function call
27459*/
27460WDI_Status
27461WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027462(
Jeff Johnson295189b2012-06-20 16:38:30 -070027463 WDI_ControlBlockType* pWDICtx,
27464 WDI_EventInfoType* pEventData
27465)
27466{
27467 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027468 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027469 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027470 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027471 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27472
27473 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027474 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027475 -------------------------------------------------------------------------*/
27476 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27477 ( NULL == pEventData->pEventData ))
27478 {
27479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027480 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027481 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027482 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027483 }
27484
27485 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027486 "%s: Process UPD scan params ptr : %p",
27487 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027488
Jeff Johnsone7245742012-09-05 17:12:55 -070027489 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027490
27491 /*-------------------------------------------------------------------------
27492 Extract response and send it to UMAC
27493 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027494 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27495 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027496 sizeof(halUpdScanParams.status));
27497
27498 uStatus = halUpdScanParams.status;
27499
27500 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027501 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027502
27503 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027504 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027505
Jeff Johnsone7245742012-09-05 17:12:55 -070027506 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027507
27508 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027509 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027510 halUpdScanParams.status);
27511
27512 /*Notify UMAC*/
27513 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27514
Jeff Johnsone7245742012-09-05 17:12:55 -070027515 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027516}
27517#endif // FEATURE_WLAN_SCAN_PNO
27518
27519#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027520WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027521WDI_8023MulticastListReq
27522(
27523 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27524 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27525 void* pUserData
27526)
27527{
27528 WDI_EventInfoType wdiEventData;
27529 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27530
27531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027532 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027533
27534 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027535 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027536 ------------------------------------------------------------------------*/
27537 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27538 {
27539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27540 "WDI API call before module is initialized - Fail request");
27541
Jeff Johnsone7245742012-09-05 17:12:55 -070027542 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027543 }
27544
27545 /*------------------------------------------------------------------------
27546 Fill in Event data and post to the Main FSM
27547 ------------------------------------------------------------------------*/
27548 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027549 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027550 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027551 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027552 wdiEventData.pUserData = pUserData;
27553
27554 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27555}
27556
Jeff Johnsone7245742012-09-05 17:12:55 -070027557WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027558WDI_ReceiveFilterSetFilterReq
27559(
27560 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27561 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27562 void* pUserData
27563)
27564{
27565 WDI_EventInfoType wdiEventData;
27566 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27567
27568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027569 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027570
27571 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027572 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027573 ------------------------------------------------------------------------*/
27574 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27575 {
27576 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27577 "WDI API call before module is initialized - Fail request");
27578
Jeff Johnsone7245742012-09-05 17:12:55 -070027579 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027580 }
27581
27582 /*------------------------------------------------------------------------
27583 Fill in Event data and post to the Main FSM
27584 ------------------------------------------------------------------------*/
27585 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027586 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27587 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027588 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27589 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027590 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027591 wdiEventData.pUserData = pUserData;
27592
27593
27594 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27595}
27596
Jeff Johnsone7245742012-09-05 17:12:55 -070027597WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027598WDI_FilterMatchCountReq
27599(
27600 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27601 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27602 void* pUserData
27603)
27604{
27605 WDI_EventInfoType wdiEventData;
27606 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27607
27608 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027609 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027610
27611 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027612 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027613 ------------------------------------------------------------------------*/
27614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27615 {
27616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27617 "WDI API call before module is initialized - Fail request");
27618
Jeff Johnsone7245742012-09-05 17:12:55 -070027619 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027620 }
27621
27622 /*------------------------------------------------------------------------
27623 Fill in Event data and post to the Main FSM
27624 ------------------------------------------------------------------------*/
27625 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027626 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027627 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027628 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027629 wdiEventData.pUserData = pUserData;
27630
27631
27632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27633}
27634
Jeff Johnsone7245742012-09-05 17:12:55 -070027635WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027636WDI_ReceiveFilterClearFilterReq
27637(
27638 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27639 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27640 void* pUserData
27641)
27642{
27643 WDI_EventInfoType wdiEventData;
27644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27645
27646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027647 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027648
27649 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027650 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027651 ------------------------------------------------------------------------*/
27652 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27653 {
27654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27655 "WDI API call before module is initialized - Fail request");
27656
Jeff Johnsone7245742012-09-05 17:12:55 -070027657 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027658 }
27659
27660 /*------------------------------------------------------------------------
27661 Fill in Event data and post to the Main FSM
27662 ------------------------------------------------------------------------*/
27663 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027664 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027665 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027666 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027667 wdiEventData.pUserData = pUserData;
27668
27669
27670 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27671}
27672
27673/**
27674 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027675
27676 @param pWDICtx: pointer to the WLAN DAL context
27677 pEventData: pointer to the event information structure
27678
Jeff Johnson295189b2012-06-20 16:38:30 -070027679 @see
27680 @return Result of the function call
27681*/
27682WDI_Status
27683WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027684(
Jeff Johnson295189b2012-06-20 16:38:30 -070027685 WDI_ControlBlockType* pWDICtx,
27686 WDI_EventInfoType* pEventData
27687)
27688{
27689 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27690 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027691 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027692 wpt_uint16 usDataOffset = 0;
27693 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027694 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027695 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027696 wpt_uint8 ucCurrentBSSSesIdx = 0;
27697 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027698
27699 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027700 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027701
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027702 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27703 if( NULL == pRcvFltMcAddrListType )
27704 {
27705 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27706 "Failed to alloc in WDI_Process8023MulticastListReq");
27707 return WDI_STATUS_E_FAILURE;
27708 }
27709
Jeff Johnson295189b2012-06-20 16:38:30 -070027710 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027711 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027712 -------------------------------------------------------------------------*/
27713 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027714 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027715 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027716 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027717 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27718 {
27719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027720 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027721 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027722 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027723 return WDI_STATUS_E_FAILURE;
27724 }
27725
27726 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27727 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27728 &pBSSSes);
27729 if ( NULL == pBSSSes )
27730 {
27731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027732 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027733 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027735 }
27736
27737 /*-----------------------------------------------------------------------
27738 Get message buffer
27739 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27741 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027742 sizeof(tHalRcvFltMcAddrListType),
27743 &pSendBuffer, &usDataOffset, &usSendSize))||
27744 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27745 {
27746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27747 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027748 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027749 pEventData, pwdiFltPktSetMcListReqParamsType,
27750 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027751 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027752 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027754 }
27755
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027756 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027757 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027758 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027759 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027760 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027761 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27762 sizeof(tSirMacAddr));
27763 }
27764
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027765 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027766 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027767 pRcvFltMcAddrListType,
27768 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027769
27770 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027771 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027772
27773
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027774 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027775 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027776 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027777 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027778 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027779 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027780 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027781}
27782
27783/**
27784 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027785
27786 @param pWDICtx: pointer to the WLAN DAL context
27787 pEventData: pointer to the event information structure
27788
Jeff Johnson295189b2012-06-20 16:38:30 -070027789 @see
27790 @return Result of the function call
27791*/
27792WDI_Status
27793WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027794(
Jeff Johnson295189b2012-06-20 16:38:30 -070027795 WDI_ControlBlockType* pWDICtx,
27796 WDI_EventInfoType* pEventData
27797)
27798{
27799 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27800 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027801 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027802 wpt_uint16 usDataOffset = 0;
27803 wpt_uint16 usSendSize = 0;
27804 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027805 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027806 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027807 wpt_uint8 ucCurrentBSSSesIdx = 0;
27808 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027809 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27810 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027811
27812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027813 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027814
27815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027816 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027817 -------------------------------------------------------------------------*/
27818 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027819 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027820 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027821 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027822 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27823 {
27824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027827 return WDI_STATUS_E_FAILURE;
27828 }
27829
27830 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27831 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27832 &pBSSSes);
27833 if ( NULL == pBSSSes )
27834 {
27835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027836 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027837 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027838 }
27839
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027840 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27841 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027842
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027843 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27844 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27845 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27846
27847 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27848 usSessRcvPktFilterCfgSize);
27849
27850 if(NULL == pSessRcvPktFilterCfg)
27851 {
27852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27853 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027854 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027855 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027856 WDI_ASSERT(0);
27857 return WDI_STATUS_E_FAILURE;
27858 }
27859
27860 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27861
27862 /*-----------------------------------------------------------------------
27863 Get message buffer
27864 -----------------------------------------------------------------------*/
27865
27866 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27867 usSessRcvPktFilterCfgSize,
27868 &pSendBuffer, &usDataOffset, &usSendSize))||
27869 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27870 {
27871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27872 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027873 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027874 pEventData, pwdiSetRcvPktFilterReqInfo,
27875 wdiReceiveFilterSetFilterCb);
27876 WDI_ASSERT(0);
27877 wpalMemoryFree(pSessRcvPktFilterCfg);
27878 return WDI_STATUS_E_FAILURE;
27879 }
27880
27881 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027882 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027883 usSendSize,pSessRcvPktFilterCfg);
27884
27885 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27886 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27887 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27888 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27889
27890 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27891
27892 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27893 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27894 pSessRcvPktFilterCfg->filterType);
27895 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27896 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27897 pSessRcvPktFilterCfg->coleasceTime);
27898
27899 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27900 {
27901 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27902 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27903 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27904 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27905 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27906 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27907 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27908 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27909
27910 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27911 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27912 8);
27913 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27914 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27915 8);
27916
27917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027918 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027919 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27920 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27921
27922 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027923 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027924 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27925 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27926
27927 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027928 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027929 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27930 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27931 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27932 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27933 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27934 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27935
27936 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027937 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027938 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27939 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27940 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27941 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27942 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27943 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27944 }
27945
27946 wpalMemoryCopy( pSendBuffer+usDataOffset,
27947 pSessRcvPktFilterCfg,
27948 usSessRcvPktFilterCfgSize);
27949
27950
27951 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27952 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27953
27954 wpalMemoryFree(pSessRcvPktFilterCfg);
27955
27956 }
27957 /*If SLM_SESSIONIZATION is not supported then do this */
27958 else
27959 {
27960 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27961 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27962 * sizeof(tHalRcvPktFilterParams));
27963
27964 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027965 usRcvPktFilterCfgSize);
27966
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027967 if(NULL == pRcvPktFilterCfg)
27968 {
27969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27970 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027971 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027972 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027973 WDI_ASSERT(0);
27974 return WDI_STATUS_E_FAILURE;
27975 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027976
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027977 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027978
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027979 /*-----------------------------------------------------------------------
27980 Get message buffer
27981 -----------------------------------------------------------------------*/
27982 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027983 usRcvPktFilterCfgSize,
27984 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027985 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27986 {
27987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027988 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027989 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027990 pEventData, pwdiSetRcvPktFilterReqInfo,
27991 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027992 WDI_ASSERT(0);
27993 wpalMemoryFree(pRcvPktFilterCfg);
27994 return WDI_STATUS_E_FAILURE;
27995 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027996
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027998 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070027999 usSendSize,usRcvPktFilterCfgSize);
28000
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028001 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
28002 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
28003 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
28004 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070028005
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028007 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070028008 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028009 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070028010 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070028011 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070028012
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028013 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
28014 {
28015 pRcvPktFilterCfg->paramsData[i].protocolLayer =
28016 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
28017 pRcvPktFilterCfg->paramsData[i].cmpFlag =
28018 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28019 pRcvPktFilterCfg->paramsData[i].dataOffset =
28020 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28021 pRcvPktFilterCfg->paramsData[i].dataLength =
28022 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070028023
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028024 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028025 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28026 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028027 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070028028 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28029 8);
28030
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028031 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028032 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070028033 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070028034 pRcvPktFilterCfg->paramsData[i].cmpFlag);
28035
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028037 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028038 pRcvPktFilterCfg->paramsData[i].dataOffset,
28039 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028040
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028041 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028042 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028043 pRcvPktFilterCfg->paramsData[i].compareData[0],
28044 pRcvPktFilterCfg->paramsData[i].compareData[1],
28045 pRcvPktFilterCfg->paramsData[i].compareData[2],
28046 pRcvPktFilterCfg->paramsData[i].compareData[3],
28047 pRcvPktFilterCfg->paramsData[i].compareData[4],
28048 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070028049
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028050 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028051 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028052 pRcvPktFilterCfg->paramsData[i].dataMask[0],
28053 pRcvPktFilterCfg->paramsData[i].dataMask[1],
28054 pRcvPktFilterCfg->paramsData[i].dataMask[2],
28055 pRcvPktFilterCfg->paramsData[i].dataMask[3],
28056 pRcvPktFilterCfg->paramsData[i].dataMask[4],
28057 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
28058 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028059
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028060 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070028061 pRcvPktFilterCfg,
28062 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028063
28064
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028065 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28066 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028067
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028069 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028070 wpalMemoryFree(pRcvPktFilterCfg);
28071 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028072 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028073 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028074 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028075 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028076 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028077 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028078}
28079
28080/**
28081 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028082
28083 @param pWDICtx: pointer to the WLAN DAL context
28084 pEventData: pointer to the event information structure
28085
Jeff Johnson295189b2012-06-20 16:38:30 -070028086 @see
28087 @return Result of the function call
28088*/
28089WDI_Status
28090WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028091(
Jeff Johnson295189b2012-06-20 16:38:30 -070028092 WDI_ControlBlockType* pWDICtx,
28093 WDI_EventInfoType* pEventData
28094)
28095{
28096 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28097 NULL;
28098 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28099 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028100 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028101 wpt_uint16 usDataOffset = 0;
28102 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028103 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28104 wpt_uint8 ucCurrentBSSSesIdx = 0;
28105 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028106
28107 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028108 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028109
28110 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028111 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028112 -------------------------------------------------------------------------*/
28113 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028114 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028115 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028116 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028117 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28118 {
28119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028120 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028121 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028122 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028123 }
28124
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028125 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28126 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28127 &pBSSSes);
28128 if ( NULL == pBSSSes )
28129 {
28130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028131 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028132 return WDI_STATUS_E_FAILURE;
28133 }
28134
Jeff Johnson295189b2012-06-20 16:38:30 -070028135 /*-----------------------------------------------------------------------
28136 Get message buffer
28137 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028138 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28139 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028140 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028141 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028142 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028143 {
28144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28145 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028146 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028147 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28148 wdiFilterMatchCountCb);
28149 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028150 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028151 }
28152
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028153 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28154 wpalMemoryCopy( pSendBuffer+usDataOffset,
28155 &rcvFltPktMatchCntReqParam,
28156 sizeof(rcvFltPktMatchCntReqParam));
28157
Jeff Johnson295189b2012-06-20 16:38:30 -070028158 //
28159 // Don't need to fill send buffer other than header
28160 //
28161 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028162 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028163
28164
28165 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028166 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028167 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028168 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28169 wdiFilterMatchCountCb,
28170 pEventData->pUserData,
28171 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028172}
28173
28174/**
28175 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028176
28177 @param pWDICtx: pointer to the WLAN DAL context
28178 pEventData: pointer to the event information structure
28179
Jeff Johnson295189b2012-06-20 16:38:30 -070028180 @see
28181 @return Result of the function call
28182*/
28183WDI_Status
28184WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028185(
Jeff Johnson295189b2012-06-20 16:38:30 -070028186 WDI_ControlBlockType* pWDICtx,
28187 WDI_EventInfoType* pEventData
28188)
Jeff Johnsone7245742012-09-05 17:12:55 -070028189{
Jeff Johnson295189b2012-06-20 16:38:30 -070028190 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28191 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028192 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028193 wpt_uint16 usDataOffset = 0;
28194 wpt_uint16 usSendSize = 0;
28195 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028196 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028197 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028198
28199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028200 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028201
28202 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028203 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028204 -------------------------------------------------------------------------*/
28205 if (( NULL == pEventData ) ||
28206 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28207 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028208 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028209 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28210 {
28211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028212 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028213 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028214 return WDI_STATUS_E_FAILURE;
28215 }
28216
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028217 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028218 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28219 &pBSSSes);
28220 if ( NULL == pBSSSes )
28221 {
28222 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028223 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028224 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028225 }
28226
28227 /*-----------------------------------------------------------------------
28228 Get message buffer
28229 -----------------------------------------------------------------------*/
28230 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028231 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028232 sizeof(tHalRcvFltPktClearParam),
28233 &pSendBuffer, &usDataOffset, &usSendSize))||
28234 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28235 {
28236 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28237 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028238 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028239 pEventData, pwdiRcvFltPktClearReqParamsType,
28240 wdiRcvFltPktClearFilterCb);
28241 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028242 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028243 }
28244
28245
28246 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028247 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028248 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028249 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028250
Jeff Johnsone7245742012-09-05 17:12:55 -070028251 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28252 wpalMemoryCopy( pSendBuffer+usDataOffset,
28253 &rcvFltPktClearParam,
28254 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028255
28256 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028257 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028258
28259
28260 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028261 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028262 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028263 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028264 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028265 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028266}
28267
28268/**
28269 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028270
28271 @param pWDICtx: pointer to the WLAN DAL context
28272 pEventData: pointer to the event information structure
28273
Jeff Johnson295189b2012-06-20 16:38:30 -070028274 @see
28275 @return Result of the function call
28276*/
28277WDI_Status
28278WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028279(
Jeff Johnson295189b2012-06-20 16:38:30 -070028280 WDI_ControlBlockType* pWDICtx,
28281 WDI_EventInfoType* pEventData
28282)
28283{
Jeff Johnson295189b2012-06-20 16:38:30 -070028284 eHalStatus halStatus;
28285 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028286 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28287 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28289
28290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028291 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028292
28293 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028294 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028295 -------------------------------------------------------------------------*/
28296 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28297 ( NULL == pEventData->pEventData ))
28298 {
28299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028300 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028301 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028302 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028303 }
28304
Jeff Johnsone7245742012-09-05 17:12:55 -070028305 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028306
28307 /*-------------------------------------------------------------------------
28308 Extract response and send it to UMAC
28309 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028310 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28311 {
28312 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28313 pEventData->pEventData,
28314 sizeof(halRcvFltPktSetMcListRsp));
28315
28316 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28317 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28318 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28319 halRcvFltPktSetMcListRsp.bssIdx;
28320 }
28321 else
28322 {
28323 halStatus = *((eHalStatus*)pEventData->pEventData);
28324 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28325 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028326
28327 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028328 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028329
Jeff Johnsone7245742012-09-05 17:12:55 -070028330 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028331}
28332
28333/**
28334 @brief Process Set Rsp function (called when a
28335 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028336
28337 @param pWDICtx: pointer to the WLAN DAL context
28338 pEventData: pointer to the event information structure
28339
Jeff Johnson295189b2012-06-20 16:38:30 -070028340 @see
28341 @return Result of the function call
28342*/
28343WDI_Status
28344WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028345(
Jeff Johnson295189b2012-06-20 16:38:30 -070028346 WDI_ControlBlockType* pWDICtx,
28347 WDI_EventInfoType* pEventData
28348)
28349{
Jeff Johnson295189b2012-06-20 16:38:30 -070028350 eHalStatus halStatus;
28351 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028352 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28353 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028354 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28355
28356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028357 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028358
28359 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028360 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028361 -------------------------------------------------------------------------*/
28362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28363 ( NULL == pEventData->pEventData ))
28364 {
28365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028367 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028368 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028369 }
28370
28371 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028372 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028373
28374 /*-------------------------------------------------------------------------
28375 Extract response and send it to UMAC
28376 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028377 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28378 {
28379 wpalMemoryCopy( &halSetPktFilterRspParams,
28380 pEventData->pEventData,
28381 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028382
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028383 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28384 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28385 }
28386 else
28387 {
28388 halStatus = *((eHalStatus*)pEventData->pEventData);
28389 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28390 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028391 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028392 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028393
Jeff Johnsone7245742012-09-05 17:12:55 -070028394 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028395}
28396
28397/**
28398 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028399
28400 @param pWDICtx: pointer to the WLAN DAL context
28401 pEventData: pointer to the event information structure
28402
Jeff Johnson295189b2012-06-20 16:38:30 -070028403 @see
28404 @return Result of the function call
28405*/
28406WDI_Status
28407WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028408(
Jeff Johnson295189b2012-06-20 16:38:30 -070028409 WDI_ControlBlockType* pWDICtx,
28410 WDI_EventInfoType* pEventData
28411)
28412{
Jeff Johnson295189b2012-06-20 16:38:30 -070028413 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028414 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028415 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28416 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028417
28418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28419
28420 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028421 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028422
28423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028424 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028425 -------------------------------------------------------------------------*/
28426 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28427 ( NULL == pEventData->pEventData ))
28428 {
28429 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028430 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028431 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028432 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028433 }
28434
Jeff Johnsone7245742012-09-05 17:12:55 -070028435 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028436
28437 /*-------------------------------------------------------------------------
28438 Extract response and send it to UMAC
28439 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028440 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28441 {
28442 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28443 pEventData->pEventData,
28444 sizeof(halRcvFltrPktMatachRsp));
28445
28446 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28447 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28448 }
28449 else
28450 {
28451 halStatus = *((eHalStatus*)pEventData->pEventData);
28452 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28453 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028454
28455 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028456 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028457
Jeff Johnsone7245742012-09-05 17:12:55 -070028458 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028459}
28460
28461/**
28462 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028463
28464 @param pWDICtx: pointer to the WLAN DAL context
28465 pEventData: pointer to the event information structure
28466
Jeff Johnson295189b2012-06-20 16:38:30 -070028467 @see
28468 @return Result of the function call
28469*/
28470WDI_Status
28471WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028472(
Jeff Johnson295189b2012-06-20 16:38:30 -070028473 WDI_ControlBlockType* pWDICtx,
28474 WDI_EventInfoType* pEventData
28475)
28476{
Jeff Johnson295189b2012-06-20 16:38:30 -070028477 eHalStatus halStatus;
28478 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028479 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28480 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028481 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28482
28483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028484 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028485
28486 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028487 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028488 -------------------------------------------------------------------------*/
28489 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28490 ( NULL == pEventData->pEventData ))
28491 {
28492 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028493 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028494 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028495 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028496 }
28497
28498 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028499 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028500
28501 /*-------------------------------------------------------------------------
28502 Extract response and send it to UMAC
28503 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028504 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28505 {
28506 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28507 pEventData->pEventData,
28508 sizeof(halRcvFltPktClearRspMsg));
28509
28510 wdiRcvFltPktClearRspParamsType.wdiStatus =
28511 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28512 wdiRcvFltPktClearRspParamsType.bssIdx =
28513 halRcvFltPktClearRspMsg.bssIdx;
28514 }
28515 else
28516 {
28517 halStatus = *((eHalStatus*)pEventData->pEventData);
28518 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28519 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028520
28521 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028522 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028523
Jeff Johnsone7245742012-09-05 17:12:55 -070028524 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028525}
28526#endif // WLAN_FEATURE_PACKET_FILTERING
28527
28528/**
28529 @brief Process Shutdown Rsp function
28530 There is no shutdown response comming from HAL
28531 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028532
Jeff Johnson295189b2012-06-20 16:38:30 -070028533 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028534 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028535
28536 @see
28537 @return Result of the function call
28538*/
28539WDI_Status
28540WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028541(
Jeff Johnson295189b2012-06-20 16:38:30 -070028542 WDI_ControlBlockType* pWDICtx,
28543 WDI_EventInfoType* pEventData
28544)
28545{
28546 /*There is no shutdown response comming from HAL - function just kept for
28547 simmetry */
28548 WDI_ASSERT(0);
28549 return WDI_STATUS_SUCCESS;
28550}/*WDI_ProcessShutdownRsp*/
28551
28552/**
28553 @brief WDI_SetPowerParamsReq
28554
Jeff Johnsone7245742012-09-05 17:12:55 -070028555 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028556 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028557
Jeff Johnson295189b2012-06-20 16:38:30 -070028558 wdiPowerParamsCb: callback for passing back the response
28559 of the Set Power Params operation received from the
28560 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028561
Jeff Johnson295189b2012-06-20 16:38:30 -070028562 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028563 callback
28564
Jeff Johnson295189b2012-06-20 16:38:30 -070028565 @return Result of the function call
28566*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028567WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028568WDI_SetPowerParamsReq
28569(
28570 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28571 WDI_SetPowerParamsCb wdiPowerParamsCb,
28572 void* pUserData
28573)
28574{
28575 WDI_EventInfoType wdiEventData;
28576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28577
28578 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028579 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028580 ------------------------------------------------------------------------*/
28581 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28582 {
28583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28584 "WDI API call before module is initialized - Fail request");
28585
Jeff Johnsone7245742012-09-05 17:12:55 -070028586 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028587 }
28588
28589 /*------------------------------------------------------------------------
28590 Fill in Event data and post to the Main FSM
28591 ------------------------------------------------------------------------*/
28592 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028593 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028594 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028595 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028596 wdiEventData.pUserData = pUserData;
28597
28598 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28599}/*WDI_SetPowerParamsReq*/
28600
28601/**
28602 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028603
28604 @param pWDICtx: pointer to the WLAN DAL context
28605 pEventData: pointer to the event information structure
28606
Jeff Johnson295189b2012-06-20 16:38:30 -070028607 @see
28608 @return Result of the function call
28609*/
28610WDI_Status
28611WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028612(
Jeff Johnson295189b2012-06-20 16:38:30 -070028613 WDI_ControlBlockType* pWDICtx,
28614 WDI_EventInfoType* pEventData
28615)
28616{
28617 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28618 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028619 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028620 wpt_uint16 usDataOffset = 0;
28621 wpt_uint16 usSendSize = 0;
28622 tSetPowerParamsType powerParams;
28623
28624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028626 -------------------------------------------------------------------------*/
28627 if (( NULL == pEventData ) ||
28628 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28629 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28630 {
28631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028635 }
28636
28637 /*-----------------------------------------------------------------------
28638 Get message buffer
28639 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028640 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028641 sizeof(powerParams),
28642 &pSendBuffer, &usDataOffset, &usSendSize))||
28643 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28644 {
28645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028646 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028647 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028650 }
28651
28652 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028653 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028654 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28655
28656 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028657 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028658 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28659
28660 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028661 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028662 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28663
28664 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028665 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028666 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28667
28668 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028669 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028670 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28671
28672 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028673 powerParams.uBETInterval =
28674 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028675
Yue Mac24062f2013-05-13 17:01:29 -070028676 /* MAX LI for modulated DTIM */
28677 powerParams.uMaxLIModulatedDTIM =
28678 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028679
28680 wpalMemoryCopy( pSendBuffer+usDataOffset,
28681 &powerParams,
28682 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028683
28684 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028685 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028686
28687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028688 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28691 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028692}
28693
28694/**
28695 @brief Process Power Params Rsp function (called when a
28696 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028697
28698 @param pWDICtx: pointer to the WLAN DAL context
28699 pEventData: pointer to the event information structure
28700
Jeff Johnson295189b2012-06-20 16:38:30 -070028701 @see
28702 @return Result of the function call
28703*/
28704WDI_Status
28705WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028706(
Jeff Johnson295189b2012-06-20 16:38:30 -070028707 WDI_ControlBlockType* pWDICtx,
28708 WDI_EventInfoType* pEventData
28709)
28710{
28711 WDI_Status wdiStatus;
28712 eHalStatus halStatus;
28713 WDI_SetPowerParamsCb wdiPowerParamsCb;
28714 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28715
28716 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028717 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028718 -------------------------------------------------------------------------*/
28719 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28720 ( NULL == pEventData->pEventData ))
28721 {
28722 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028723 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028726 }
28727
Jeff Johnsone7245742012-09-05 17:12:55 -070028728 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028729
28730 /*-------------------------------------------------------------------------
28731 Extract response and send it to UMAC
28732 -------------------------------------------------------------------------*/
28733 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028734 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028735
28736 /*Notify UMAC*/
28737 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28738
Jeff Johnsone7245742012-09-05 17:12:55 -070028739 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028740}/*WDI_ProcessSetPowerParamsRsp*/
28741
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028742/**
28743 @brief WDI_dhcpStartInd
28744 Host will send an event to the FW when DHCP is initiated
28745
28746 @param
28747 WDI_DHCPInd: DHCP Indication
28748 @see
28749 @return Result of the function call
28750*/
28751WDI_Status
28752WDI_dhcpStartInd
28753(
28754 WDI_DHCPInd *wdiDHCPInd
28755)
28756{
28757 WDI_EventInfoType wdiEventData;
28758
28759 /*------------------------------------------------------------------------
28760 Sanity Check
28761 ------------------------------------------------------------------------*/
28762 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28763 {
28764 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28765 "WDI API call before module is initialized - Fail request");
28766
28767 return WDI_STATUS_E_NOT_ALLOWED;
28768 }
28769
28770 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28771 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028772 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028773 wdiEventData.pCBfnc = NULL;
28774 wdiEventData.pUserData = NULL;
28775
28776 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28777}
28778
28779
28780/**
28781 @brief WDI_dhcpStopInd
28782 Host will send an event to the FW when DHCP is completed
28783
28784 @param
28785 WDI_DHCPInd: DHCP Indication
28786 @see
28787 @return Result of the function call
28788*/
28789WDI_Status
28790WDI_dhcpStopInd
28791(
28792 WDI_DHCPInd *wdiDHCPInd
28793)
28794{
28795 WDI_EventInfoType wdiEventData;
28796
28797 /*------------------------------------------------------------------------
28798 Sanity Check
28799 ------------------------------------------------------------------------*/
28800 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28801 {
28802 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28803 "WDI API call before module is initialized - Fail request");
28804
28805 return WDI_STATUS_E_NOT_ALLOWED;
28806 }
28807
28808 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28809 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028810 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028811 wdiEventData.pCBfnc = NULL;
28812 wdiEventData.pUserData = NULL;
28813
28814 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28815}
28816
28817
28818/**
28819 @brief Process DHCP Start Indication message and post it to HAL
28820
28821 @param pWDICtx: pointer to the WLAN DAL context
28822 pEventData: pointer to the event information structure
28823
28824 @see
28825 @return Result of the function call
28826*/
28827WDI_Status
28828WDI_ProcessDHCPStartInd
28829(
28830 WDI_ControlBlockType* pWDICtx,
28831 WDI_EventInfoType* pEventData
28832)
28833{
28834 wpt_uint8* pSendBuffer = NULL;
28835 wpt_uint16 usDataOffset = 0;
28836 wpt_uint16 usSendSize = 0;
28837 wpt_uint16 usLen = 0;
28838 WDI_DHCPInd* pwdiDHCPInd = NULL;
28839 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028840 WDI_Status wdiStatus;
28841
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028842
28843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28844
28845 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28846 "%s", __func__);
28847
28848 /*-------------------------------------------------------------------------
28849 Sanity check
28850 -------------------------------------------------------------------------*/
28851 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28852 {
28853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28854 "%s: Invalid parameters", __func__);
28855 WDI_ASSERT(0);
28856 return WDI_STATUS_E_FAILURE;
28857 }
28858 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28859 /*-----------------------------------------------------------------------
28860 Get message buffer
28861 -----------------------------------------------------------------------*/
28862
28863 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28864 WDI_DHCP_START_IND,
28865 sizeof(tDHCPInfo),
28866 &pSendBuffer, &usDataOffset, &usSendSize))||
28867 ( usSendSize < (usDataOffset + usLen )))
28868 {
28869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28870 "Unable to get send buffer in DHCP Start req %p ",
28871 pEventData);
28872 WDI_ASSERT(0);
28873 return WDI_STATUS_E_FAILURE;
28874 }
28875
Sandeep Puligillaee789512014-02-13 19:14:52 +053028876 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028877 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28878 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28879 WDI_MAC_ADDR_LEN);
28880
28881 pWDICtx->pReqStatusUserData = NULL;
28882 pWDICtx->pfncRspCB = NULL;
28883
28884 /*-------------------------------------------------------------------------
28885 Send DHCP Start Indication to HAL
28886 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028887 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28888 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028889}/*WDI_ProcessDHCPStartInd*/
28890
28891/**
28892 @brief Process DHCP Stop indication message and post it to HAL
28893
28894 @param pWDICtx: pointer to the WLAN DAL context
28895 pEventData: pointer to the event information structure
28896
28897 @see
28898 @return Result of the function call
28899*/
28900WDI_Status
28901WDI_ProcessDHCPStopInd
28902(
28903 WDI_ControlBlockType* pWDICtx,
28904 WDI_EventInfoType* pEventData
28905)
28906{
28907 wpt_uint8* pSendBuffer = NULL;
28908 wpt_uint16 usDataOffset = 0;
28909 wpt_uint16 usSendSize = 0;
28910 wpt_uint16 usLen = 0;
28911 WDI_DHCPInd* pwdiDHCPInd = NULL;
28912 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028913 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028914
28915 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28916
28917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28918 "%s", __func__);
28919
28920 /*-------------------------------------------------------------------------
28921 Sanity check
28922 -------------------------------------------------------------------------*/
28923
28924 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28925 {
28926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28927 "%s: Invalid parameters", __func__);
28928 WDI_ASSERT(0);
28929 return WDI_STATUS_E_FAILURE;
28930 }
28931 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28932 /*-----------------------------------------------------------------------
28933 Get message buffer
28934 -----------------------------------------------------------------------*/
28935
28936 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28937 WDI_DHCP_STOP_IND,
28938 sizeof(tDHCPInfo),
28939 &pSendBuffer, &usDataOffset, &usSendSize))||
28940 ( usSendSize < (usDataOffset + usLen )))
28941 {
28942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28943 "Unable to get send buffer in DHCP Start req %p ",
28944 pEventData);
28945 WDI_ASSERT(0);
28946 return WDI_STATUS_E_FAILURE;
28947 }
28948
Sandeep Puligillaee789512014-02-13 19:14:52 +053028949 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028950 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28951 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28952 WDI_MAC_ADDR_LEN);
28953
28954 pWDICtx->pReqStatusUserData = NULL;
28955 pWDICtx->pfncRspCB = NULL;
28956 /*-------------------------------------------------------------------------
28957 Send DHCP Stop indication to HAL
28958 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028959 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28960 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028961
28962}/*WDI_ProcessDHCPStopInd*/
28963
28964
Jeff Johnson295189b2012-06-20 16:38:30 -070028965#ifdef WLAN_FEATURE_GTK_OFFLOAD
28966/**
28967 @brief WDI_GTKOffloadReq will be called when the upper MAC
28968 wants to set GTK Rekey Counter while in power save. Upon
28969 the call of this API the WLAN DAL will pack and send a
28970 HAL GTK offload request message to the lower RIVA
28971 sub-system if DAL is in state STARTED.
28972
28973 In state BUSY this request will be queued. Request won't
28974 be allowed in any other state.
28975
28976 WDI_PostAssocReq must have been called.
28977
28978 @param pwdiGtkOffloadParams: the GTK offload as specified
28979 by the Device Interface
28980
28981 wdiGtkOffloadCb: callback for passing back the response
28982 of the GTK offload operation received from the device
28983
28984 pUserData: user data will be passed back with the
28985 callback
28986
28987 @see WDI_PostAssocReq
28988 @return Result of the function call
28989*/
28990WDI_Status
28991WDI_GTKOffloadReq
28992(
28993 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28994 WDI_GtkOffloadCb wdiGtkOffloadCb,
28995 void* pUserData
28996)
28997{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053028998 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028999 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29000
29001 /*------------------------------------------------------------------------
29002 Sanity Check
29003 ------------------------------------------------------------------------*/
29004 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29005 {
29006 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29007 "WDI API call before module is initialized - Fail request");
29008
29009 return WDI_STATUS_E_NOT_ALLOWED;
29010 }
29011
29012 /*------------------------------------------------------------------------
29013 Fill in Event data and post to the Main FSM
29014 ------------------------------------------------------------------------*/
29015 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
29016 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070029017 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070029018 wdiEventData.pCBfnc = wdiGtkOffloadCb;
29019 wdiEventData.pUserData = pUserData;
29020
29021 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29022}
29023
29024
29025/**
29026 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
29027 MAC wants to get GTK Rekey Counter while in power save.
29028 Upon the call of this API the WLAN DAL will pack and
29029 send a HAL GTK offload request message to the lower RIVA
29030 sub-system if DAL is in state STARTED.
29031
29032 In state BUSY this request will be queued. Request won't
29033 be allowed in any other state.
29034
29035 WDI_PostAssocReq must have been called.
29036
29037 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
29038 Information Message as specified by the
29039 Device Interface
29040
29041 wdiGtkOffloadGetInfoCb: callback for passing back the
29042 response of the GTK offload operation received from the
29043 device
29044
29045 pUserData: user data will be passed back with the
29046 callback
29047
29048 @see WDI_PostAssocReq
29049 @return Result of the function call
29050*/
29051WDI_Status
29052WDI_GTKOffloadGetInfoReq
29053(
29054 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
29055 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
29056 void* pUserData
29057)
29058{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029059 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029060 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29061
29062 /*------------------------------------------------------------------------
29063 Sanity Check
29064 ------------------------------------------------------------------------*/
29065 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29066 {
29067 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29068 "WDI API call before module is initialized - Fail request");
29069
29070 return WDI_STATUS_E_NOT_ALLOWED;
29071 }
29072
29073 /*------------------------------------------------------------------------
29074 Fill in Event data and post to the Main FSM
29075 ------------------------------------------------------------------------*/
29076 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
29077 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29078 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29079 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29080 wdiEventData.pUserData = pUserData;
29081
29082 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29083}
29084
29085
29086/**
29087 @brief Process set GTK Offload Request function
29088
29089 @param pWDICtx: pointer to the WLAN DAL context
29090 pEventData: pointer to the event information structure
29091
29092 @see
29093 @return Result of the function call
29094*/
29095WDI_Status
29096WDI_ProcessGTKOffloadReq
29097(
29098 WDI_ControlBlockType* pWDICtx,
29099 WDI_EventInfoType* pEventData
29100)
29101{
29102 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29103 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29104 wpt_uint8* pSendBuffer = NULL;
29105 wpt_uint16 usDataOffset = 0;
29106 wpt_uint16 usSendSize = 0;
29107 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029108 wpt_uint8 ucCurrentSessionId = 0;
29109 WDI_BSSSessionType* pBSSSes = NULL;
29110
Jeff Johnson295189b2012-06-20 16:38:30 -070029111 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29112
29113 /*-------------------------------------------------------------------------
29114 Sanity check
29115 -------------------------------------------------------------------------*/
29116 if (( NULL == pEventData ) ||
29117 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29118 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29119 {
29120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029122 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029123 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029124 }
29125
29126 /*-----------------------------------------------------------------------
29127 Get message buffer
29128 -----------------------------------------------------------------------*/
29129 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29130 sizeof(gtkOffloadReqParams),
29131 &pSendBuffer, &usDataOffset, &usSendSize))||
29132 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29133 {
29134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029135 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029136 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29137 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029138 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029139 }
29140
29141 //
29142 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29143 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029144 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29145 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29146 &pBSSSes);
29147 if ( NULL == pBSSSes )
29148 {
29149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029150 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029151 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029152 }
29153
29154 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29155
Jeff Johnson295189b2012-06-20 16:38:30 -070029156 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29157 // Copy KCK
29158 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29159 // Copy KEK
29160 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29161 // Copy KeyReplayCounter
29162 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29163
29164 wpalMemoryCopy( pSendBuffer+usDataOffset,
29165 &gtkOffloadReqParams,
29166 sizeof(gtkOffloadReqParams));
29167
29168 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29169 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29170
29171 /*-------------------------------------------------------------------------
29172 Send Get STA Request to HAL
29173 -------------------------------------------------------------------------*/
29174 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29175 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029176
29177fail:
29178 // Release the message buffer so we don't leak
29179 wpalMemoryFree(pSendBuffer);
29180
29181failRequest:
29182 //WDA should have failure check to avoid the memory leak
29183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029184}
29185
29186
29187/**
29188 @brief Process GTK Offload Get Information Request function
29189
29190 @param pWDICtx: pointer to the WLAN DAL context
29191 pEventData: pointer to the event information structure
29192
29193 @see
29194 @return Result of the function call
29195*/
29196WDI_Status
29197WDI_ProcessGTKOffloadGetInfoReq
29198(
29199 WDI_ControlBlockType* pWDICtx,
29200 WDI_EventInfoType* pEventData
29201)
29202{
29203 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29204 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29205 wpt_uint8* pSendBuffer = NULL;
29206 wpt_uint16 usDataOffset = 0;
29207 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029208 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29209 wpt_uint8 ucCurrentSessionId = 0;
29210 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029211
29212 /*-------------------------------------------------------------------------
29213 Sanity check
29214 -------------------------------------------------------------------------*/
29215 if (( NULL == pEventData ) ||
29216 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29217 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29218 {
29219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029220 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029221 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029222 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029223 }
29224
29225 /*-----------------------------------------------------------------------
29226 Get message buffer
29227 -----------------------------------------------------------------------*/
29228 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029229 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029230 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029231 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029232 {
29233 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029234 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029235 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29236 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029237 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029238 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029239 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29240 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29241 &pBSSSes);
29242 if ( NULL == pBSSSes )
29243 {
29244 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029245 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029246 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029247 }
29248 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029249
29250 //
29251 // Don't need to fill send buffer other than header
29252 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029253 wpalMemoryCopy( pSendBuffer+usDataOffset,
29254 &halGtkOffloadGetInfoReqParams,
29255 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029256
29257 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29258 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29259
29260 /*-------------------------------------------------------------------------
29261 Send Get STA Request to HAL
29262 -------------------------------------------------------------------------*/
29263 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29264 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029265fail:
29266 // Release the message buffer so we don't leak
29267 wpalMemoryFree(pSendBuffer);
29268
29269failRequest:
29270 //WDA should have failure check to avoid the memory leak
29271 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029272}
29273
29274/**
29275 @brief Process host offload Rsp function (called when a
29276 response is being received over the bus from HAL)
29277
29278 @param pWDICtx: pointer to the WLAN DAL context
29279 pEventData: pointer to the event information structure
29280
29281 @see
29282 @return Result of the function call
29283*/
29284WDI_Status
29285WDI_ProcessGtkOffloadRsp
29286(
29287 WDI_ControlBlockType* pWDICtx,
29288 WDI_EventInfoType* pEventData
29289)
29290{
Jeff Johnson295189b2012-06-20 16:38:30 -070029291 eHalStatus halStatus;
29292 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029293 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29294 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029295
29296 /*-------------------------------------------------------------------------
29297 Sanity check
29298 -------------------------------------------------------------------------*/
29299 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29300 ( NULL == pEventData->pEventData))
29301 {
29302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029303 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029304 WDI_ASSERT(0);
29305 return WDI_STATUS_E_FAILURE;
29306 }
29307
Wilson Yang00256342013-10-10 23:13:38 -070029308 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29309
Jeff Johnson295189b2012-06-20 16:38:30 -070029310 /*-------------------------------------------------------------------------
29311 Extract response and send it to UMAC
29312 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029313 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29314 {
29315 wpalMemoryCopy( &halGtkOffloadRspParams,
29316 pEventData->pEventData,
29317 sizeof(halGtkOffloadRspParams));
29318
29319 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029320 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029321 wdiGtkOffloadRsparams.bssIdx =
29322 halGtkOffloadRspParams.bssIdx;
29323 }
29324 else
29325 {
29326 halStatus = *((eHalStatus*)pEventData->pEventData);
29327 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29328 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029329
29330 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029331 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029332
29333 return WDI_STATUS_SUCCESS;
29334}
29335
29336/**
29337 @brief Process GTK Offload Get Information Response function
29338
29339 @param pWDICtx: pointer to the WLAN DAL context
29340 pEventData: pointer to the event information structure
29341
29342 @see
29343 @return Result of the function call
29344*/
29345WDI_Status
29346WDI_ProcessGTKOffloadGetInfoRsp
29347(
29348 WDI_ControlBlockType* pWDICtx,
29349 WDI_EventInfoType* pEventData
29350)
29351{
Jeff Johnson295189b2012-06-20 16:38:30 -070029352 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029353 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029354 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29355 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029356 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029357
Jeff Johnson295189b2012-06-20 16:38:30 -070029358
29359 /*-------------------------------------------------------------------------
29360 Sanity check
29361 -------------------------------------------------------------------------*/
29362 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29363 ( NULL == pEventData->pEventData ))
29364 {
29365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029366 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029367 WDI_ASSERT(0);
29368 return WDI_STATUS_E_FAILURE;
29369 }
29370
Wilson Yang00256342013-10-10 23:13:38 -070029371 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29372
29373 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029374 Extract response and send it to UMAC
29375 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029376 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29377 {
29378 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29379 pEventData->pEventData,
29380 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029381
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029382 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029383 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029384 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29385 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29386 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29387 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29388 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29389 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29390 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29391 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029392
29393 wpalMutexAcquire(&pWDICtx->wptMutex);
29394 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29395 &pBSSSes);
29396
29397 if ( NULL == pBSSSes )
29398 {
29399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29400 "Association sequence for this BSS does not exist or "
29401 "association no longer in progress - mysterious HAL response");
29402 wpalMutexRelease(&pWDICtx->wptMutex);
29403 return WDI_STATUS_E_NOT_ALLOWED;
29404 }
29405
29406 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29407 sizeof (wpt_macAddr));
29408 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029409 }
29410 else
29411 {
29412 halStatus = *((eHalStatus*)pEventData->pEventData);
29413 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29414 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029415 /*Notify UMAC*/
29416 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29417 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029418 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029419
29420 return WDI_STATUS_SUCCESS;
29421}
29422#endif // WLAN_FEATURE_GTK_OFFLOAD
29423
29424#ifdef WLAN_WAKEUP_EVENTS
29425WDI_Status
29426WDI_ProcessWakeReasonInd
29427(
29428 WDI_ControlBlockType* pWDICtx,
29429 WDI_EventInfoType* pEventData
29430)
29431{
29432 WDI_LowLevelIndType *pWdiInd;
29433 tpWakeReasonParams pWakeReasonParams;
29434 wpt_uint32 allocSize = 0;
29435
29436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029437 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029438
29439 /*-------------------------------------------------------------------------
29440 Sanity check
29441 -------------------------------------------------------------------------*/
29442 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29443 ( NULL == pEventData->pEventData ))
29444 {
29445 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029446 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029447 WDI_ASSERT( 0 );
29448 return WDI_STATUS_E_FAILURE;
29449 }
29450
29451 /*-------------------------------------------------------------------------
29452 Extract indication and send it to UMAC
29453 -------------------------------------------------------------------------*/
29454 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29455
29456 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29457
29458 //Allocate memory for WDI_WakeReasonIndType structure
29459 pWdiInd = wpalMemoryAllocate(allocSize) ;
29460
29461 if(NULL == pWdiInd)
29462 {
29463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029464 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029465 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029466 WDI_ASSERT(0);
29467 return WDI_STATUS_E_FAILURE;
29468 }
29469
29470 wpalMemoryZero(pWdiInd, allocSize);
29471
29472 /* Fill in the indication parameters*/
29473 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29474 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29475 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29476 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29477 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29478 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29479 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29480 &(pWakeReasonParams->aDataStart[0]),
29481 pWakeReasonParams->ulStoredDataLen);
29482
ltimariub77f24b2013-01-24 18:54:33 -080029483
29484 if ( pWDICtx->wdiLowLevelIndCB )
29485 {
29486 /*Notify UMAC*/
29487 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29488 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029489
29490 //Free memory allocated for WDI_WakeReasonIndType structure
29491 wpalMemoryFree(pWdiInd);
29492
29493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029494 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029495
29496 return WDI_STATUS_SUCCESS;
29497}
29498#endif // WLAN_WAKEUP_EVENTS
29499
29500void WDI_GetWcnssCompiledApiVersion
29501(
29502 WDI_WlanVersionType *pWcnssApiVersion
29503)
29504{
29505 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29506 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29507 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29508 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29509}
29510
29511/**
29512 @brief Process Set TM Level Rsp function (called when a
29513 response is being received over the bus from HAL)
29514
29515 @param pWDICtx: pointer to the WLAN DAL context
29516 pEventData: pointer to the event information structure
29517
29518 @see
29519 @return Result of the function call
29520*/
29521WDI_Status
29522WDI_ProcessSetTmLevelRsp
29523(
29524 WDI_ControlBlockType* pWDICtx,
29525 WDI_EventInfoType* pEventData
29526)
29527{
29528 WDI_Status wdiStatus;
29529 eHalStatus halStatus;
29530 WDI_SetTmLevelCb wdiSetTmLevelCb;
29531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29532
29533 /*-------------------------------------------------------------------------
29534 Sanity check
29535 -------------------------------------------------------------------------*/
29536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29537 ( NULL == pEventData->pEventData ))
29538 {
29539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029541 WDI_ASSERT(0);
29542 return WDI_STATUS_E_FAILURE;
29543 }
29544
29545 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29546
29547 /*-------------------------------------------------------------------------
29548 Extract response and send it to UMAC
29549 -------------------------------------------------------------------------*/
29550 halStatus = *((eHalStatus*)pEventData->pEventData);
29551 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29552
29553 /*Notify UMAC*/
29554 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29555
29556 return WDI_STATUS_SUCCESS;
29557}/*WDI_ProcessSetTmLevelRsp*/
29558
29559/**
29560 @brief Process Set Thermal Mitigation level Changed request
29561
29562 @param pWDICtx: pointer to the WLAN DAL context
29563 pEventData: pointer to the event information structure
29564
29565 @see
29566 @return Result of the function call
29567*/
29568WDI_Status
29569WDI_ProcessSetTmLevelReq
29570(
29571 WDI_ControlBlockType* pWDICtx,
29572 WDI_EventInfoType* pEventData
29573)
29574{
29575 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29576 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29577 wpt_uint8* pSendBuffer = NULL;
29578 wpt_uint16 usDataOffset = 0;
29579 wpt_uint16 usSendSize = 0;
29580 tSetThermalMitgationType halTmMsg;
29581
29582 /*-------------------------------------------------------------------------
29583 Sanity check
29584 -------------------------------------------------------------------------*/
29585 if (( NULL == pEventData ) ||
29586 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29587 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29588 {
29589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029590 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029591 WDI_ASSERT(0);
29592 return WDI_STATUS_E_FAILURE;
29593 }
29594
29595 /*-----------------------------------------------------------------------
29596 Get message buffer
29597 -----------------------------------------------------------------------*/
29598 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29599 sizeof(halTmMsg),
29600 &pSendBuffer, &usDataOffset, &usSendSize))||
29601 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29602 {
29603 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029604 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029605 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29606 WDI_ASSERT(0);
29607 return WDI_STATUS_E_FAILURE;
29608 }
29609
29610 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29611 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29612
29613 wpalMemoryCopy( pSendBuffer+usDataOffset,
29614 &halTmMsg,
29615 sizeof(halTmMsg));
29616
29617 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29618 pWDICtx->pfncRspCB = NULL;
29619 /*-------------------------------------------------------------------------
29620 Send Get STA Request to HAL
29621 -------------------------------------------------------------------------*/
29622 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29623 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29624}
29625
29626/* Fill the value from the global features enabled array to the global capabilities
29627 * bitmap struct
29628 */
29629static void
29630FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29631{
29632 wpt_int8 i;
29633 for (i=0; i<len; i++)
29634 {
29635 setFeatCaps(fCaps, enabledFeat[i]);
29636 }
29637}
29638
29639/**
29640 @brief WDI_featureCapsExchangeReq
29641 Post feature capability bitmap exchange event.
29642 Host will send its own capability to FW in this req and
29643 expect FW to send its capability back as a bitmap in Response
29644
29645 @param
29646
29647 wdiFeatureCapsExchangeCb: callback called on getting the response.
29648 It is kept to mantain similarity between WDI reqs and if needed, can
29649 be used in future. Currently, It is set to NULL
29650
29651 pUserData: user data will be passed back with the
29652 callback
29653
29654 @see
29655 @return Result of the function call
29656*/
29657WDI_Status
29658WDI_featureCapsExchangeReq
29659(
29660 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29661 void* pUserData
29662)
29663{
29664 WDI_EventInfoType wdiEventData;
29665 wpt_int32 fCapsStructSize;
29666
29667 /*------------------------------------------------------------------------
29668 Sanity Check
29669 ------------------------------------------------------------------------*/
29670 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29671 {
29672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29673 "WDI API call before module is initialized - Fail request");
29674
29675 return WDI_STATUS_E_NOT_ALLOWED;
29676 }
29677
29678 /* Allocate memory separately for global variable carrying FW caps */
29679 fCapsStructSize = sizeof(tWlanFeatCaps);
29680 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29681 if ( NULL == gpHostWlanFeatCaps )
29682 {
29683 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029684 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029685 WDI_ASSERT(0);
29686 return WDI_STATUS_MEM_FAILURE;
29687 }
29688
29689 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29690
29691 /*------------------------------------------------------------------------
29692 Fill in Event data and post to the Main FSM
29693 ------------------------------------------------------------------------*/
29694 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29695 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029697 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029698 gpHostWlanFeatCaps->featCaps[0],
29699 gpHostWlanFeatCaps->featCaps[1],
29700 gpHostWlanFeatCaps->featCaps[2],
29701 gpHostWlanFeatCaps->featCaps[3]
29702 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029704 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029705 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29706 wdiEventData.pEventData = gpHostWlanFeatCaps;
29707 wdiEventData.uEventDataSize = fCapsStructSize;
29708 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29709 wdiEventData.pUserData = pUserData;
29710
29711 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29712}
29713
29714/**
Yathish9f22e662012-12-10 14:21:35 -080029715 @brief Disable Active mode offload in Host
29716
29717 @param void
29718 @see
29719 @return void
29720*/
29721void
29722WDI_disableCapablityFeature(wpt_uint8 feature_index)
29723{
29724 supportEnabledFeatures[feature_index] = 0;
29725 return;
29726}
29727
29728/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029729 @brief Process Host-FW Capability Exchange Request function
29730
29731 @param pWDICtx: pointer to the WLAN DAL context
29732 pEventData: pointer to the event information structure
29733
29734 @see
29735 @return Result of the function call
29736*/
29737WDI_Status
29738WDI_ProcessFeatureCapsExchangeReq
29739(
29740 WDI_ControlBlockType* pWDICtx,
29741 WDI_EventInfoType* pEventData
29742)
29743{
29744 wpt_uint8* pSendBuffer = NULL;
29745 wpt_uint16 usDataOffset = 0;
29746 wpt_uint16 usSendSize = 0;
29747 wpt_uint16 usLen = 0;
29748
29749 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29750
29751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029752 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029753
29754 /*-------------------------------------------------------------------------
29755 Sanity check
29756 -------------------------------------------------------------------------*/
29757 /* Call back function is NULL since not required for cap exchange req */
29758 if (( NULL == pEventData ) ||
29759 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29760 {
29761 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029762 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029763 WDI_ASSERT(0);
29764 return WDI_STATUS_E_FAILURE;
29765 }
29766
29767 /*-----------------------------------------------------------------------
29768 Get message buffer
29769 -----------------------------------------------------------------------*/
29770 usLen = sizeof(tWlanFeatCaps);
29771
29772 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29773 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29774 usLen,
29775 &pSendBuffer, &usDataOffset, &usSendSize))||
29776 ( usSendSize < (usDataOffset + usLen )))
29777 {
29778 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029779 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029780 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29781 WDI_ASSERT(0);
29782 return WDI_STATUS_E_FAILURE;
29783 }
29784
29785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029786 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029787 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29788 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29789 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29790 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29791 );
29792
29793 /* Copy host caps after the offset in the send buffer */
29794 wpalMemoryCopy( pSendBuffer+usDataOffset,
29795 (tWlanFeatCaps *)pEventData->pEventData,
29796 usLen);
29797
29798 /*-------------------------------------------------------------------------
29799 Send Start Request to HAL
29800 -------------------------------------------------------------------------*/
29801 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29802 (WDI_StartRspCb)pEventData->pCBfnc,
29803 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29804
29805}/*WDI_ProcessFeatureCapsExchangeReq*/
29806
29807/**
29808 @brief Process Host-FW Capability Exchange Response function
29809
29810 @param pWDICtx: pointer to the WLAN DAL context
29811 pEventData: pointer to the event information structure
29812
29813 @see
29814 @return Result of the function call
29815*/
29816WDI_Status
29817WDI_ProcessFeatureCapsExchangeRsp
29818(
29819 WDI_ControlBlockType* pWDICtx,
29820 WDI_EventInfoType* pEventData
29821)
29822{
29823 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29824 wpt_int32 fCapsStructSize;
29825 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29826
29827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029828 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029829
29830 /*-------------------------------------------------------------------------
29831 Sanity check
29832 -------------------------------------------------------------------------*/
29833 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29834 ( NULL == pEventData->pEventData ))
29835 {
29836 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029838 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029839 WDI_ASSERT(0);
29840 return WDI_STATUS_E_FAILURE;
29841 }
29842
29843 /* Allocate memory separately for global variable carrying FW caps */
29844 fCapsStructSize = sizeof(tWlanFeatCaps);
29845 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29846 if ( NULL == gpFwWlanFeatCaps )
29847 {
29848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029849 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029850 WDI_ASSERT(0);
29851 return WDI_STATUS_MEM_FAILURE;
29852 }
29853
29854 /*-------------------------------------------------------------------------
29855 Unpack HAL Response Message - the header was already extracted by the
29856 main Response Handling procedure
29857 -------------------------------------------------------------------------*/
29858 /*-------------------------------------------------------------------------
29859 Extract response and send it to UMAC
29860 -------------------------------------------------------------------------*/
29861
29862 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29863 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029865 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029866 gpFwWlanFeatCaps->featCaps[0],
29867 gpFwWlanFeatCaps->featCaps[1],
29868 gpFwWlanFeatCaps->featCaps[2],
29869 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029870 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053029871
Ratheesh S P36dbc932015-08-07 14:28:57 +053029872 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029873 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029874 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29875
29876 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29877 if (wdiFeatureCapsExchangeCb != NULL)
29878 wdiFeatureCapsExchangeCb(NULL, NULL);
29879
29880 return WDI_STATUS_SUCCESS;
29881}
29882
Mohit Khanna4a70d262012-09-11 16:30:12 -070029883#ifdef WLAN_FEATURE_11AC
29884WDI_Status
29885WDI_ProcessUpdateVHTOpModeRsp
29886(
29887 WDI_ControlBlockType* pWDICtx,
29888 WDI_EventInfoType* pEventData
29889)
29890{
29891 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29892 WDI_Status wdiStatus;
29893 eHalStatus halStatus;
29894
29895 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29896
29897 /*-------------------------------------------------------------------------
29898 Sanity check
29899 -------------------------------------------------------------------------*/
29900 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29901 ( NULL == pEventData->pEventData))
29902 {
29903 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029904 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029905 WDI_ASSERT(0);
29906 return WDI_STATUS_E_FAILURE;
29907 }
29908 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29909
29910 /*-------------------------------------------------------------------------
29911 Extract response and send it to UMAC
29912 -------------------------------------------------------------------------*/
29913 halStatus = *((eHalStatus*)pEventData->pEventData);
29914 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29915
29916 /*Notify UMAC*/
29917 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29918
29919 return WDI_STATUS_SUCCESS;
29920}
29921#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029922/**
29923 @brief WDI_getHostWlanFeatCaps
29924 WDI API that returns whether the feature passed to it as enum value in
29925 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29926 variable storing host capability bitmap to find this. This can be used by
29927 other moduels to decide certain things like call different APIs based on
29928 whether a particular feature is supported.
29929
29930 @param
29931
29932 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29933
29934 @see
29935 @return
29936 0 - if the feature is NOT supported in host
29937 any non-zero value - if the feature is SUPPORTED in host.
29938*/
29939wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29940{
29941 wpt_uint8 featSupported = 0;
29942 if (gpHostWlanFeatCaps != NULL)
29943 {
29944 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29945 }
29946 else
29947 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029949 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029950 }
29951 return featSupported;
29952}
29953
29954/**
29955 @brief WDI_getFwWlanFeatCaps
29956 WDI API that returns whether the feature passed to it as enum value in
29957 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29958 variable storing host capability bitmap to find this. This can be used by
29959 other moduels to decide certain things like call different APIs based on
29960 whether a particular feature is supported.
29961
29962 @param
29963
29964 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29965 in wlan_hal_msg.h.
29966
29967 @see
29968 @return
29969 0 - if the feature is NOT supported in FW
29970 any non-zero value - if the feature is SUPPORTED in FW.
29971*/
29972wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29973{
29974 wpt_uint8 featSupported = 0;
29975 if (gpFwWlanFeatCaps != NULL)
29976 {
29977 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29978 }
29979 else
29980 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029981 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029982 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029983 }
29984 return featSupported;
29985}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029986
Katya Nigamf0511f62015-05-05 16:40:57 +053029987wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29988{
29989 /* 5gHz Channel */
29990 if( channel >= 34 && channel <= 165 )
29991 {
29992 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29993 {
29994 if ( channel== 36 || channel == 52 || channel == 100 ||
29995 channel == 116 || channel == 149 )
29996 {
29997 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
29998 }
29999 else if ( channel == 40 || channel == 56 || channel == 104 ||
30000 channel == 120 || channel == 153 )
30001 {
30002 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
30003 }
30004 else if ( channel == 44 || channel == 60 || channel == 108 ||
30005 channel == 124 || channel == 157 )
30006 {
30007 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
30008 }
30009 else if ( channel == 48 || channel == 64 || channel == 112 ||
30010 channel == 128 || channel == 144 || channel == 161 )
30011 {
30012 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
30013 }
30014 else if ( channel == 165 )
30015 {
30016 return PHY_SINGLE_CHANNEL_CENTERED;
30017 }
30018 }
30019
30020 else
30021 {
30022 if ( channel== 40 || channel == 48 || channel == 56 ||
30023 channel == 64 || channel == 104 || channel == 112 ||
30024 channel == 120 || channel == 128 || channel == 136 ||
30025 channel == 144 || channel == 153 || channel == 161 )
30026 {
30027 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30028 }
30029 else if ( channel== 36 || channel == 44 || channel == 52 ||
30030 channel == 60 || channel == 100 || channel == 108 ||
30031 channel == 116 || channel == 124 || channel == 132 ||
30032 channel == 140 || channel == 149 || channel == 157 )
30033 {
30034 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30035 }
30036 else if ( channel == 165 )
30037 {
30038 return PHY_SINGLE_CHANNEL_CENTERED;
30039 }
30040 }
30041 }
30042
30043 /* 2.4Ghz Channel */
30044 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
30045 {
30046 if (channel >= 1 && channel <= 7)
30047 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30048 else if (channel >= 8 && channel <= 13)
30049 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30050 else if (channel ==14)
30051 return PHY_SINGLE_CHANNEL_CENTERED;
30052 }
30053 return PHY_SINGLE_CHANNEL_CENTERED;
30054}
30055
Mohit Khanna4a70d262012-09-11 16:30:12 -070030056#ifdef WLAN_FEATURE_11AC
30057WDI_Status
30058WDI_ProcessUpdateVHTOpModeReq
30059(
30060 WDI_ControlBlockType* pWDICtx,
30061 WDI_EventInfoType* pEventData
30062)
30063{
30064 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
30065 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30066 wpt_uint8* pSendBuffer = NULL;
30067 wpt_uint16 usDataOffset = 0;
30068 wpt_uint16 usSendSize = 0;
30069
30070 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30071
30072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030073 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030074
30075 /*-------------------------------------------------------------------------
30076 Sanity check
30077 -------------------------------------------------------------------------*/
30078 if (( NULL == pEventData ) ||
30079 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30080 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30081 {
30082 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030083 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030084 WDI_ASSERT(0);
30085 return WDI_STATUS_E_FAILURE;
30086 }
30087
30088 /*-----------------------------------------------------------------------
30089 Get message buffer
30090 -----------------------------------------------------------------------*/
30091 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30092 sizeof(WDI_UpdateVHTOpMode),
30093 &pSendBuffer, &usDataOffset, &usSendSize))||
30094 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30095 {
30096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30097 "Unable to get send buffer in update vht opMode req");
30098 WDI_ASSERT(0);
30099 return WDI_STATUS_E_FAILURE;
30100 }
30101
30102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030103 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030104
30105 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30106 sizeof(WDI_UpdateVHTOpMode));
30107
30108 /*-------------------------------------------------------------------------
30109 Send Start Request to HAL
30110 -------------------------------------------------------------------------*/
30111 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30112 wdiVHTOpModeCb,
30113 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30114
30115}
30116
30117WDI_Status
30118WDI_UpdateVHTOpModeReq
30119(
30120 WDI_UpdateVHTOpMode *pData,
30121 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30122 void* pUserData
30123)
30124{
30125 WDI_EventInfoType wdiEventData;
30126
30127 /*------------------------------------------------------------------------
30128 Sanity Check
30129 ------------------------------------------------------------------------*/
30130 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30131 {
30132 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30133 "WDI API call before module is initialized - Fail request");
30134
30135 return WDI_STATUS_E_NOT_ALLOWED;
30136 }
30137
30138 /*------------------------------------------------------------------------
30139 Fill in Event data and post to the Main FSM
30140 ------------------------------------------------------------------------*/
30141 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30142 wdiEventData.pEventData = pData;
30143 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30144 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30145 wdiEventData.pUserData = pUserData;
30146
30147 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030148 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030149
30150 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30151
30152}
30153#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030154
30155/**
30156 @brief WDI_TransportChannelDebug -
30157 Display DXE Channel debugging information
30158 User may request to display DXE channel snapshot
30159 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030160
Jeff Johnsonb88db982012-12-10 13:34:59 -080030161 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030162 @param debugFlags : Enable stall detect features
30163 defined by WPAL_DeviceDebugFlags
30164 These features may effect
30165 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030166 @see
30167 @return none
30168*/
30169void WDI_TransportChannelDebug
30170(
30171 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030172 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030173)
30174{
Mihir Shete40a55652014-03-02 14:14:47 +053030175 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030176 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030177}
Sravan Kumar Kairam6eac7522015-11-27 23:37:02 +053030178
30179/**
30180 @brief WDI_TransportKickDxe -
30181 Request Kick DXE when HDD TX time out happen
30182
30183 @param none
30184 @see
30185 @return none
30186*/
30187void WDI_TransportKickDxe()
30188{
30189 WDTS_ChannelKickDxe();
30190 return;
30191}
30192
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030193/**
30194 @brief WDI_SsrTimerCB
30195 Callback function for SSR timer, if this is called then the graceful
30196 shutdown for Riva did not happen.
30197
30198 @param pUserData : user data to timer
30199
30200 @see
30201 @return none
30202*/
30203void
30204WDI_SsrTimerCB
30205(
30206 void *pUserData
30207)
30208{
30209 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30210 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30211
30212 if (NULL == pWDICtx )
30213 {
30214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030215 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030216 WDI_ASSERT(0);
30217 return;
30218 }
30219 wpalRivaSubystemRestart();
30220
30221 return;
30222
30223}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030224
30225/**
30226 @brief WDI_SetEnableSSR -
30227 This API is called to enable/disable SSR on WDI timeout.
30228
30229 @param enableSSR : enable/disable SSR
30230
30231 @see
30232 @return none
30233*/
30234void WDI_SetEnableSSR(wpt_boolean enableSSR)
30235{
30236 gWDICb.bEnableSSR = enableSSR;
30237}
Leo Chang9056f462013-08-01 19:21:11 -070030238
30239
30240#ifdef FEATURE_WLAN_LPHB
30241/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030242 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030243 This function will be invoked when FW detects low power
30244 heart beat failure
30245
30246 @param pWDICtx : wdi context
30247 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030248 @see
30249 @return Result of the function call
30250*/
30251WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030252WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030253(
30254 WDI_ControlBlockType* pWDICtx,
30255 WDI_EventInfoType* pEventData
30256)
30257{
30258 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030259 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030260 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30261
30262 /*-------------------------------------------------------------------------
30263 Sanity check
30264 -------------------------------------------------------------------------*/
30265 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30266 (NULL == pEventData->pEventData))
30267 {
30268 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30269 "%s: Invalid parameters", __func__);
30270 WDI_ASSERT(0);
30271 return WDI_STATUS_E_FAILURE;
30272 }
30273
30274 /*-------------------------------------------------------------------------
30275 Extract indication and send it to UMAC
30276 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030277 wpalMemoryCopy(&lphbIndicationParam,
30278 pEventData->pEventData,
30279 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030280
Leo Changd9df8aa2013-09-26 13:32:26 -070030281 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030282 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030283 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030284 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030285 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030286 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030287 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030288 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030289 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030290 /*Notify UMAC*/
30291 if (pWDICtx->wdiLowLevelIndCB)
30292 {
30293 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30294 }
30295
30296 return WDI_STATUS_SUCCESS;
30297}
30298
30299/**
30300 @brief WDI_ProcessLphbCfgRsp -
30301 LPHB configuration response from FW
30302
30303 @param pWDICtx : wdi context
30304 pEventData : indication data
30305
30306 @see
30307 @return Result of the function call
30308*/
30309WDI_Status WDI_ProcessLphbCfgRsp
30310(
30311 WDI_ControlBlockType* pWDICtx,
30312 WDI_EventInfoType* pEventData
30313)
30314{
30315 WDI_Status wdiStatus;
30316 eHalStatus halStatus;
30317 WDI_LphbCfgCb wdiLphbCfgCb;
30318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30319
30320 /*-------------------------------------------------------------------------
30321 Sanity check
30322 -------------------------------------------------------------------------*/
30323 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30324 (NULL == pEventData->pEventData))
30325 {
30326 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30327 "%s: Invalid parameters", __func__);
30328 WDI_ASSERT(0);
30329 return WDI_STATUS_E_FAILURE;
30330 }
30331
30332 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30333
30334 /*-------------------------------------------------------------------------
30335 Extract response and send it to UMAC
30336 -------------------------------------------------------------------------*/
30337 halStatus = *((eHalStatus*)pEventData->pEventData);
30338 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30339
30340 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30341 "LPHB Cfg Rsp Return status %d", wdiStatus);
30342 /*Notify UMAC*/
30343 if (NULL != wdiLphbCfgCb)
30344 {
30345 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30346 }
30347
30348 return WDI_STATUS_SUCCESS;
30349}
30350
30351/**
30352 @brief WDI_ProcessLPHBConfReq -
30353 LPHB configuration request to FW
30354
30355 @param pWDICtx : wdi context
30356 pEventData : indication data
30357
30358 @see
30359 @return none
30360*/
30361WDI_Status WDI_ProcessLPHBConfReq
30362(
30363 WDI_ControlBlockType* pWDICtx,
30364 WDI_EventInfoType* pEventData
30365)
30366{
30367 WDI_LPHBReq *pLphbReqParams;
30368 WDI_Status wdiStatus;
30369 wpt_uint8* pSendBuffer = NULL;
30370 wpt_uint16 usDataOffset = 0;
30371 wpt_uint16 usSendSize = 0;
30372 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30374
30375 /*-------------------------------------------------------------------------
30376 Sanity check
30377 -------------------------------------------------------------------------*/
30378 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30379 {
30380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30381 "%s: Invalid parameters in Suspend ind",__func__);
30382 WDI_ASSERT(0);
30383 return WDI_STATUS_E_FAILURE;
30384 }
30385
30386 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30387
30388 /*-----------------------------------------------------------------------
30389 Get message buffer
30390 -----------------------------------------------------------------------*/
30391 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30392 WDI_LPHB_CFG_REQ,
30393 sizeof(tHalLowPowerHeartBeatReqMsg),
30394 &pSendBuffer, &usDataOffset, &usSendSize))||
30395 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30396 {
30397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30398 "Unable to get send buffer in LPHB Ind ");
30399 WDI_ASSERT(0);
30400 return WDI_STATUS_E_FAILURE;
30401 }
30402
30403 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30404 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30405
30406 halLphbReqRarams->lowPowerHeartBeatCmdType =
30407 (tANI_U16)(++pLphbReqParams->cmd);
30408 switch ((tANI_U16)pLphbReqParams->cmd)
30409 {
30410 case WDI_LPHB_SET_EN_PARAMS_INDID:
30411 halLphbReqRarams->sessionIdx =
30412 pLphbReqParams->params.lphbEnableReq.session;
30413 halLphbReqRarams->options.control.heartBeatEnable =
30414 pLphbReqParams->params.lphbEnableReq.enable;
30415 halLphbReqRarams->options.control.heartBeatType =
30416 pLphbReqParams->params.lphbEnableReq.item;
30417 break;
30418
30419 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30420 halLphbReqRarams->sessionIdx =
30421 pLphbReqParams->params.lphbTcpParamReq.session;
30422 halLphbReqRarams->options.tcpParams.timeOutSec =
30423 pLphbReqParams->params.lphbTcpParamReq.timeout;
30424 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30425 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30426 sizeof(v_U32_t));
30427 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30428 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30429 sizeof(v_U32_t));
30430
30431 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30432 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30433 WDI_MAC_ADDR_LEN);
30434
30435 halLphbReqRarams->options.tcpParams.hostPort =
30436 pLphbReqParams->params.lphbTcpParamReq.src_port;
30437 halLphbReqRarams->options.tcpParams.destPort =
30438 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030439 halLphbReqRarams->options.tcpParams.timePeriodSec =
30440 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30441 halLphbReqRarams->options.tcpParams.tcpSn =
30442 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030443 break;
30444
30445 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30446 halLphbReqRarams->sessionIdx =
30447 pLphbReqParams->params.lphbTcpFilterReq.session;
30448 halLphbReqRarams->options.tcpUdpFilter.offset =
30449 pLphbReqParams->params.lphbTcpFilterReq.offset;
30450 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30451 pLphbReqParams->params.lphbTcpFilterReq.length;
30452 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30453 pLphbReqParams->params.lphbTcpFilterReq.filter,
30454 WDI_LPHB_FILTER_LEN);
30455 break;
30456
30457 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30458 halLphbReqRarams->sessionIdx =
30459 pLphbReqParams->params.lphbUdpParamReq.session;
30460 halLphbReqRarams->options.udpParams.timeOutSec =
30461 pLphbReqParams->params.lphbUdpParamReq.timeout;
30462 halLphbReqRarams->options.udpParams.timePeriodSec =
30463 pLphbReqParams->params.lphbUdpParamReq.interval;
30464 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30465 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30466 sizeof(v_U32_t));
30467 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30468 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30469 sizeof(v_U32_t));
30470
30471 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30472 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30473 WDI_MAC_ADDR_LEN);
30474
30475 halLphbReqRarams->options.udpParams.hostPort =
30476 pLphbReqParams->params.lphbUdpParamReq.src_port;
30477 halLphbReqRarams->options.udpParams.destPort =
30478 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30479 break;
30480
30481 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30482 halLphbReqRarams->sessionIdx =
30483 pLphbReqParams->params.lphbUdpFilterReq.session;
30484 halLphbReqRarams->options.tcpUdpFilter.offset =
30485 pLphbReqParams->params.lphbUdpFilterReq.offset;
30486 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30487 pLphbReqParams->params.lphbUdpFilterReq.length;
30488 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30489 pLphbReqParams->params.lphbUdpFilterReq.filter,
30490 WDI_LPHB_FILTER_LEN);
30491 break;
30492
30493 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30494 /* NA */
30495 break;
30496
30497 default:
30498 break;
30499 }
30500
30501 /*-------------------------------------------------------------------------
30502 Send Suspend Request to HAL
30503 -------------------------------------------------------------------------*/
30504 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30505 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30506
30507 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30508 usSendSize, pWDICtx->pfncRspCB,
30509 pWDICtx->pReqStatusUserData,
30510 WDI_LPHB_CFG_RESP);
30511
30512 return wdiStatus;
30513}
30514
30515/**
30516 @brief WDI_LPHBConfReq -
30517 LPHB configuration request API
30518
30519 @param lphbconfParam : configuration parameter
30520 usrData : client context
30521 lphbCfgCb : callback function pointer
30522
30523 @see
30524 @return Success or fail status code
30525*/
30526WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30527 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30528{
30529 WDI_EventInfoType wdiEventData;
30530
30531 /*------------------------------------------------------------------------
30532 Sanity Check
30533 ------------------------------------------------------------------------*/
30534 if (eWLAN_PAL_FALSE == gWDIInitialized)
30535 {
30536 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30537 "WDI API call before module is initialized - Fail request");
30538
30539 return WDI_STATUS_E_NOT_ALLOWED;
30540 }
30541
30542 /*------------------------------------------------------------------------
30543 Fill in Event data and post to the Main FSM
30544 ------------------------------------------------------------------------*/
30545 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30546 wdiEventData.pEventData = lphbconfParam;
30547 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30548 wdiEventData.pCBfnc = lphbCfgCb;
30549 wdiEventData.pUserData = usrData;
30550
30551 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30552}
30553#endif /* FEATURE_WLAN_LPHB */
30554
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030555/**
30556 @brief WDI_ProcessIbssPeerInactivityInd
30557 Process peer inactivity indication coming from HAL
30558
30559 @param pWDICtx: pointer to the WLAN DAL context
30560 pEventData: pointer to the event information structure
30561 @see
30562 @return Result of the function call
30563*/
30564WDI_Status
30565WDI_ProcessIbssPeerInactivityInd
30566(
30567 WDI_ControlBlockType* pWDICtx,
30568 WDI_EventInfoType* pEventData
30569)
30570{
30571 WDI_LowLevelIndType wdiInd;
30572 tIbssPeerInactivityIndMsg halIbssIndMsg;
30573
30574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30575
30576 /*-------------------------------------------------------------------------
30577 Sanity check
30578 -------------------------------------------------------------------------*/
30579 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30580 ( NULL == pEventData->pEventData ))
30581 {
30582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30583 "%s: Invalid parameters", __func__);
30584 WDI_ASSERT( 0 );
30585 return WDI_STATUS_E_FAILURE;
30586 }
30587
30588 /*-------------------------------------------------------------------------
30589 Extract indication and send it to UMAC
30590 -------------------------------------------------------------------------*/
30591 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30592 pEventData->pEventData,
30593 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30594
30595 /*Fill in the indication parameters*/
30596 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30597
30598 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30599 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30600
30601 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30602 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30603
30604 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30605 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30606 sizeof(tSirMacAddr));
30607
30608 /*Notify UMAC*/
30609 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30610
30611 return WDI_STATUS_SUCCESS;
30612
30613} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030614
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030615/**
30616*@brief WDI_RateUpdateInd will be called when the upper MAC
30617 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030618
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030619
30620 @param wdiRateUpdateIndParams:
30621
30622
30623 @see
30624 @return Result of the function call
30625*/
30626WDI_Status
30627WDI_RateUpdateInd
30628(
30629 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30630)
30631{
30632 WDI_EventInfoType wdiEventData;
30633 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30634
30635 /*------------------------------------------------------------------------
30636 Sanity Check
30637 ------------------------------------------------------------------------*/
30638 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30639 {
30640 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30641 "WDI API call before module is initialized - Fail request");
30642
30643 return WDI_STATUS_E_NOT_ALLOWED;
30644 }
30645
30646 /*------------------------------------------------------------------------
30647 Fill in Event data and post to the Main FSM
30648 ------------------------------------------------------------------------*/
30649 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30650 wdiEventData.pEventData = wdiRateUpdateIndParams;
30651 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30652 wdiEventData.pCBfnc = NULL;
30653 wdiEventData.pUserData = NULL;
30654
30655 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30656
30657}/* WDI_RateUpdateInd */
30658
30659/**
30660 @brief Process Rate Update Indication and post it to HAL
30661
30662 @param pWDICtx: pointer to the WLAN DAL context
30663 pEventData: pointer to the event information structure
30664
30665 @see
30666 @return Result of the function call
30667*/
30668WDI_Status
30669WDI_ProcessRateUpdateInd
30670(
30671 WDI_ControlBlockType* pWDICtx,
30672 WDI_EventInfoType* pEventData
30673)
30674{
30675 wpt_uint8* pSendBuffer = NULL;
30676 wpt_uint16 usDataOffset = 0;
30677 wpt_uint16 usSendSize = 0;
30678 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30679 tHalRateUpdateInd *pRateUpdateInd;
30680 WDI_Status wdiStatus;
30681
30682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30683
30684 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30685 "%s", __func__);
30686
30687 /*-------------------------------------------------------------------------
30688 Sanity check
30689 -------------------------------------------------------------------------*/
30690 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30691 {
30692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30693 "%s: Invalid parameters", __func__);
30694 WDI_ASSERT(0);
30695 return WDI_STATUS_E_FAILURE;
30696 }
30697 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30698 /*-----------------------------------------------------------------------
30699 Get message buffer
30700 -----------------------------------------------------------------------*/
30701
30702 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30703 WDI_RATE_UPDATE_IND,
30704 sizeof(tHalRateUpdateParams),
30705 &pSendBuffer, &usDataOffset, &usSendSize))||
30706 ( usSendSize < (usDataOffset +
30707 sizeof(tHalRateUpdateParams) )))
30708 {
30709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30710 "Unable to get send buffer in Rate Update Indication %p ",
30711 pEventData);
30712 WDI_ASSERT(0);
30713 return WDI_STATUS_E_FAILURE;
30714 }
30715
30716 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30717
30718 /* Copy the bssid */
30719 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30720 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30721
30722 /* Copy the tx flags */
30723 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30724 pwdiRateUpdateInd->ucastDataRateTxFlag;
30725 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30726 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30727 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30728 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30729 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30730 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30731
30732 /* Copy the tx rates */
30733 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30734 pwdiRateUpdateInd->ucastDataRate;
30735 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30736 pwdiRateUpdateInd->reliableMcastDataRate;
30737 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30738 pwdiRateUpdateInd->mcastDataRate24GHz;
30739 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30740 pwdiRateUpdateInd->mcastDataRate5GHz;
30741
30742 /*-------------------------------------------------------------------------
30743 Send Rate Update Indication to HAL
30744 -------------------------------------------------------------------------*/
30745 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30746 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30747
30748 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30749
30750 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30751 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30752
30753} /* WDI_ProcessRateUpdateInd */
30754
30755#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030756/**
30757 @brief Process stop batch indication from WDA
30758
30759 @param pWDICtx: pointer to the WLAN DAL context
30760 pEventData: pointer to the event information structure
30761
30762 @see
30763 @return Result of the function call
30764*/
30765WDI_Status
30766WDI_ProcessStopBatchScanInd
30767(
30768 WDI_ControlBlockType* pWDICtx,
30769 WDI_EventInfoType* pEventData
30770)
30771{
30772 wpt_uint8* pSendBuffer = NULL;
30773 wpt_uint16 usDataOffset = 0;
30774 wpt_uint16 usSendSize = 0;
30775 WDI_Status wdiStatus;
30776 tHalBatchScanStopIndParam *pHalInd = NULL;
30777 WDI_StopBatchScanIndType *pWdiInd = NULL;
30778
30779
30780 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30781
30782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30783 "%s", __func__);
30784
30785 /*-------------------------------------------------------------------------
30786 Sanity check
30787 -------------------------------------------------------------------------*/
30788
30789 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30790 {
30791 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30792 "%s: Invalid parameters", __func__);
30793 WDI_ASSERT(0);
30794 return WDI_STATUS_E_FAILURE;
30795 }
30796 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30797 /*-----------------------------------------------------------------------
30798 Get message buffer
30799 -----------------------------------------------------------------------*/
30800
30801 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30802 WDI_STOP_BATCH_SCAN_IND,
30803 sizeof(tHalBatchScanStopIndParam),
30804 &pSendBuffer, &usDataOffset, &usSendSize))||
30805 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30806 {
30807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30808 "Unable to get send buffer in stop batch scan ind %p ",
30809 pEventData);
30810 WDI_ASSERT(0);
30811 return WDI_STATUS_E_FAILURE;
30812 }
30813
30814 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30815 pHalInd->param = pWdiInd->param;
30816
30817 pWDICtx->pReqStatusUserData = NULL;
30818 pWDICtx->pfncRspCB = NULL;
30819 /*-------------------------------------------------------------------------
30820 Send Stop batch scan indication to HAL
30821 -------------------------------------------------------------------------*/
30822 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30823 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30824}
30825
30826/**
30827 @brief This API is called to trigger batch scan results from FW
30828
30829 @param pWDICtx: pointer to the WLAN DAL context
30830 pEventData: pointer to the event information structure
30831
30832 @see
30833 @return Result of the function call
30834*/
30835WDI_Status
30836WDI_ProcessTriggerBatchScanResultInd
30837(
30838 WDI_ControlBlockType* pWDICtx,
30839 WDI_EventInfoType* pEventData
30840)
30841{
30842 WDI_Status wdiStatus;
30843 wpt_uint8* pSendBuffer = NULL;
30844 wpt_uint16 usDataOffset = 0;
30845 wpt_uint16 usSendSize = 0;
30846 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30847 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30848
30849
30850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30851
30852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30853 "%s", __func__);
30854
30855 /*-------------------------------------------------------------------------
30856 Sanity check
30857 -------------------------------------------------------------------------*/
30858
30859 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30860 {
30861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30862 "%s: Invalid parameters", __func__);
30863 WDI_ASSERT(0);
30864 return WDI_STATUS_E_FAILURE;
30865 }
30866 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30867 /*-----------------------------------------------------------------------
30868 Get message buffer
30869 -----------------------------------------------------------------------*/
30870
30871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30872 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30873 sizeof(tHalBatchScanTriggerResultParam),
30874 &pSendBuffer, &usDataOffset, &usSendSize))||
30875 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30876 {
30877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30878 "Unable to get send buffer in stop batch scan ind %p ",
30879 pEventData);
30880 WDI_ASSERT(0);
30881 return WDI_STATUS_E_FAILURE;
30882 }
30883
30884 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30885 pHalInd->param = pWdiInd->param;
30886
30887 pWDICtx->pReqStatusUserData = NULL;
30888 pWDICtx->pfncRspCB = NULL;
30889 /*-------------------------------------------------------------------------
30890 Send trigger batch scan result indication to HAL
30891 -------------------------------------------------------------------------*/
30892 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30893 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30894}
30895
30896
30897/**
30898 @brief Process set batch scan response from FW
30899
30900 @param pWDICtx: pointer to the WLAN DAL context
30901 pEventData: pointer to the event information structure
30902
30903 @see
30904 @return Result of the function call
30905*/
30906WDI_Status
30907WDI_ProcessSetBatchScanRsp
30908(
30909 WDI_ControlBlockType* pWDICtx,
30910 WDI_EventInfoType* pEventData
30911)
30912{
30913 WDI_SetBatchScanCb wdiSetBatchScanCb;
30914 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30915
30916 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30918
30919 /*sanity check*/
30920 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30921 ( NULL == pEventData->pEventData))
30922 {
30923 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30924 "%s: Invalid parameters", __func__);
30925 WDI_ASSERT(0);
30926 return WDI_STATUS_E_FAILURE;
30927 }
30928
30929 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30930 if ( NULL == wdiSetBatchScanCb)
30931 {
30932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30933 "%s: call back function is NULL", __func__);
30934 WDI_ASSERT(0);
30935 return WDI_STATUS_E_FAILURE;
30936 }
30937
30938 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30939
30940 if (NULL == pSetBatchScanRsp)
30941 {
30942 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030943 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030944 pWDICtx, pEventData, pEventData->pEventData);
30945 WDI_ASSERT(0);
30946 return WDI_STATUS_E_FAILURE;
30947 }
30948
Sunil Duttbd736ed2014-05-26 21:19:41 +053030949 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030950 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30951
30952 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30953
Sunil Duttbd736ed2014-05-26 21:19:41 +053030954 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030955 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30956
30957 wpalMemoryFree(pSetBatchScanRsp);
30958
30959 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030960}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030961
30962/**
30963 @brief Process batch scan result indication from FW
30964
30965 @param pWDICtx: pointer to the WLAN DAL context
30966 pEventData: pointer to the event information structure
30967
30968 @see
30969 @return Result of the function call
30970*/
30971WDI_Status
30972WDI_ProcessBatchScanResultInd
30973(
30974 WDI_ControlBlockType* pWDICtx,
30975 WDI_EventInfoType* pEventData
30976)
30977{
30978 void *pBatchScanResultInd;
30979 WDI_LowLevelIndType wdiInd;
30980 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30981
Sunil Duttbd736ed2014-05-26 21:19:41 +053030982 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030983 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30984 ( NULL == pEventData->pEventData))
30985 {
30986 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30987 "%s: Invalid parameters", __func__);
30988 WDI_ASSERT(0);
30989 return WDI_STATUS_E_FAILURE;
30990 }
30991
Sunil Duttbd736ed2014-05-26 21:19:41 +053030992 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030993 pBatchScanResultInd = (void *)pEventData->pEventData;
30994
Sunil Duttbd736ed2014-05-26 21:19:41 +053030995 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053030996 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
30997
30998 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
30999
Sunil Duttbd736ed2014-05-26 21:19:41 +053031000 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053031001 if (pWDICtx->wdiLowLevelIndCB)
31002 {
31003 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31004 }
31005 else
31006 {
31007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31008 "%s: WDILowLevelIndCb is null", __func__);
31009 WDI_ASSERT(0);
31010 return WDI_STATUS_E_FAILURE;
31011 }
31012
31013 return WDI_STATUS_SUCCESS;
31014} /*End of WDI_ProcessBatchScanResultInd*/
31015
Sunil Duttbd736ed2014-05-26 21:19:41 +053031016#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31017/**
31018 @brief Process Link Layer Statistics Result indication from FW
31019
31020 @param pWDICtx: pointer to the WLAN DAL context
31021 pEventData: pointer to the event information structure
31022
31023 @see
31024 @return Result of the function call
31025*/
31026WDI_Status
31027WDI_ProcessLinkLayerStatsResultsInd
31028(
31029 WDI_ControlBlockType* pWDICtx,
31030 WDI_EventInfoType* pEventData
31031)
31032{
31033 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053031034 WDI_LLstatsResultsType *halLLStatsResults;
31035 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031036 WDI_LowLevelIndType wdiInd;
31037 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31038
31039 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31040 "%s: Event RESULTS Indication", __func__);
31041
31042 /* sanity check */
31043 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31044 ( NULL == pEventData->pEventData))
31045 {
31046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31047 "%s: Invalid parameters", __func__);
31048 WDI_ASSERT(0);
31049 return WDI_STATUS_E_FAILURE;
31050 }
31051
31052 /* extract response and send it to UMAC */
31053 pLinkLayerStatsInd = (void *)pEventData->pEventData;
31054
31055 /* Fill in the indication parameters */
31056 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
31057
Dino Mycled3d50022014-07-07 12:58:25 +053031058 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
31059 = pLinkLayerStatsInd;
31060
31061 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
31062
31063
31064 /* Need to fill in the MAC address */
31065 if ( WDI_STATUS_SUCCESS !=
31066 WDI_STATableGetStaMacAddr(pWDICtx,
31067 halLLStatsResults->iface_id,
31068 &macAddr))
31069 {
31070 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31071 " ifaceId: %u does not exist in the WDI Station Table",
31072 halLLStatsResults->iface_id);
31073
31074 return WDI_STATUS_E_FAILURE;
31075 }
31076 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
31077 macAddr, WDI_MAC_ADDR_LEN);
31078
31079 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31080 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
31081 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053031082
31083 /* Notify UMAC */
31084 if (pWDICtx->wdiLowLevelIndCB)
31085 {
31086 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31087 }
31088 else
31089 {
31090 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31091 "%s: WDILowLevelIndCb is null", __func__);
31092 WDI_ASSERT(0);
31093 return WDI_STATUS_E_FAILURE;
31094 }
31095
31096 return WDI_STATUS_SUCCESS;
31097} /* End of WDI_ProcessLinkLayerStatsResultsInd */
31098#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
31099
Rajeev79dbe4c2013-10-05 11:03:42 +053031100/**
31101 @brief WDI_ProcessSetBatchScanReq -
31102 Set batch scan request to FW
31103
31104 @param pWDICtx : wdi context
31105 pEventData : indication data
31106
31107 @see
31108 @return none
31109*/
31110WDI_Status WDI_ProcessSetBatchScanReq
31111(
31112 WDI_ControlBlockType* pWDICtx,
31113 WDI_EventInfoType* pEventData
31114)
31115{
31116 WDI_SetBatchScanReqType *pWdiReq;
31117 WDI_Status wdiStatus;
31118 wpt_uint8* pSendBuffer = NULL;
31119 wpt_uint16 usDataOffset = 0;
31120 wpt_uint16 usSendSize = 0;
31121 tHalBatchScanSetParams *pHalReq;
31122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31123
31124 /*sanity check*/
31125 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31126 {
31127 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31128 "%s: Invalid parameters in set batch scan request", __func__);
31129 WDI_ASSERT(0);
31130 return WDI_STATUS_E_FAILURE;
31131 }
31132
31133
31134 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
31135
31136
31137 /*get message buffer*/
31138 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31139 WDI_SET_BATCH_SCAN_REQ,
31140 sizeof(tHalBatchScanSetParams),
31141 &pSendBuffer, &usDataOffset, &usSendSize))||
31142 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
31143 {
31144 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31145 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
31146 WDI_ASSERT(0);
31147 return WDI_STATUS_E_FAILURE;
31148 }
31149
31150 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
31151
31152 pHalReq->rtt = pWdiReq->rtt;
31153 pHalReq->rfBand = pWdiReq->rfBand;
31154 pHalReq->bestNetworks = pWdiReq->bestNetwork;
31155 pHalReq->scanInterval = pWdiReq->scanFrequency;
31156 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
31157
31158 /*send set batch scan request to fw*/
31159 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31160 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31161
31162 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31163 usSendSize, pWDICtx->pfncRspCB,
31164 pWDICtx->pReqStatusUserData,
31165 WDI_SET_BATCH_SCAN_RESP);
31166
31167 return wdiStatus;
31168}
31169
31170/**
31171 @brief WDI_SetBatchScanReq
31172 This API is called to set batch scan request in FW
31173
31174 @param pBatchScanReqParam : pointer to set batch scan re param
31175 usrData : Client context
31176 setBatchScanRspCb : set batch scan resp callback
31177 @see
31178 @return SUCCESS or FAIL
31179*/
31180WDI_Status WDI_SetBatchScanReq
31181(
31182 void *pBatchScanReqParam,
31183 void *usrData,
31184 WDI_SetBatchScanCb setBatchScanRspCb
31185)
31186{
31187 WDI_EventInfoType wdiEventData;
31188
31189 /*sanity check*/
31190 if (eWLAN_PAL_FALSE == gWDIInitialized)
31191 {
31192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31193 "WDI API call before module is initialized - Fail request");
31194
31195 return WDI_STATUS_E_NOT_ALLOWED;
31196 }
31197
31198 /* fill in event data and post to the main FSM */
31199 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
31200 wdiEventData.pEventData = pBatchScanReqParam;
31201 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
31202 wdiEventData.pCBfnc = setBatchScanRspCb;
31203 wdiEventData.pUserData = usrData;
31204
31205 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31206}
31207
31208/**
31209 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
31210
31211 @param None
31212
31213 @see
31214
31215 @return Status of the request
31216*/
31217WDI_Status
31218WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
31219{
31220 WDI_EventInfoType wdiEventData;
31221
31222 /*-------------------------------------------------------------------------
31223 Sanity Check
31224 ------------------------------------------------------------------------*/
31225 if (eWLAN_PAL_FALSE == gWDIInitialized)
31226 {
31227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31228 "WDI API call before module is initialized - Fail request!");
31229
31230 return WDI_STATUS_E_NOT_ALLOWED;
31231 }
31232
31233 /*-------------------------------------------------------------------------
31234 Fill in Event data and post to the Main FSM
31235 ------------------------------------------------------------------------*/
31236 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
31237 wdiEventData.pEventData = pWdiReq;
31238 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
31239 wdiEventData.pCBfnc = NULL;
31240 wdiEventData.pUserData = NULL;
31241
31242 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31243}
31244
31245/**
31246 @brief WDI_TriggerBatchScanResultInd
31247 This API is called to pull batch scan result from FW
31248
31249 @param pWdiReq : pointer to get batch scan ind param
31250 @see
31251 @return SUCCESS or FAIL
31252*/
31253WDI_Status WDI_TriggerBatchScanResultInd
31254(
31255 WDI_TriggerBatchScanResultIndType *pWdiReq
31256)
31257{
31258 WDI_EventInfoType wdiEventData;
31259 /*-------------------------------------------------------------------------
31260 Sanity Check
31261 ------------------------------------------------------------------------*/
31262 if (eWLAN_PAL_FALSE == gWDIInitialized)
31263 {
31264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31265 "WDI API call before module is initialized - Fail request!");
31266
31267 return WDI_STATUS_E_NOT_ALLOWED;
31268 }
31269
31270 /*-------------------------------------------------------------------------
31271 Fill in Event data and post to the Main FSM
31272 ------------------------------------------------------------------------*/
31273 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
31274 wdiEventData.pEventData = pWdiReq;
31275 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
31276 wdiEventData.pCBfnc = NULL;
31277 wdiEventData.pUserData = NULL;
31278
31279 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31280}
Rajeev79dbe4c2013-10-05 11:03:42 +053031281#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080031282
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080031283/**
31284 @brief Process Update Channel Rsp function (called when a response is
31285 being received over the bus from HAL)
31286
31287 @param pWDICtx: pointer to the WLAN DAL context
31288 pEventData: pointer to the event information structure
31289
31290 @see
31291 @return Result of the function call
31292*/
31293WDI_Status
31294WDI_ProcessUpdateChanRsp
31295(
31296 WDI_ControlBlockType* pWDICtx,
31297 WDI_EventInfoType* pEventData
31298)
31299{
31300 WDI_Status wdiStatus;
31301 eHalStatus halStatus;
31302 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
31303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31304
31305 /*-------------------------------------------------------------------------
31306 Sanity check
31307 -------------------------------------------------------------------------*/
31308 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31309 ( NULL == pEventData->pEventData))
31310 {
31311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31312 "%s: Invalid parameters", __func__);
31313 WDI_ASSERT(0);
31314 return WDI_STATUS_E_FAILURE;
31315 }
31316
31317 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
31318
31319 /*-------------------------------------------------------------------------
31320 Extract response and send it to UMAC
31321 -------------------------------------------------------------------------*/
31322 halStatus = *((eHalStatus*)pEventData->pEventData);
31323 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31324
31325 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
31326
31327 return WDI_STATUS_SUCCESS;
31328}/*WDI_ProcessUpdateChanRsp*/
31329
Leo Chang0b0e45a2013-12-15 15:18:55 -080031330#ifdef FEATURE_WLAN_CH_AVOID
31331/**
31332 @brief v -WDI_ProcessChAvoidInd
31333
31334
31335 @param pWDICtx : wdi context
31336 pEventData : indication data
31337 @see
31338 @return Result of the function call
31339*/
31340WDI_Status
31341WDI_ProcessChAvoidInd
31342(
31343 WDI_ControlBlockType* pWDICtx,
31344 WDI_EventInfoType* pEventData
31345)
31346{
31347 WDI_LowLevelIndType wdiInd;
31348 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31349 wpt_uint16 rangeLoop;
Abhishek Singhf5590652016-02-09 16:53:03 +053031350 wpt_uint32 dataSize;
Leo Chang0b0e45a2013-12-15 15:18:55 -080031351 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31352
31353 /*-------------------------------------------------------------------------
31354 Sanity check
31355 -------------------------------------------------------------------------*/
31356 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31357 (NULL == pEventData->pEventData))
31358 {
31359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31360 "%s: Invalid parameters", __func__);
31361 WDI_ASSERT(0);
31362 return WDI_STATUS_E_FAILURE;
31363 }
31364
Abhishek Singhf5590652016-02-09 16:53:03 +053031365 dataSize = sizeof(tHalAvoidFreqRangeIndParams);
31366 if (dataSize > pEventData->uEventDataSize)
31367 dataSize = pEventData->uEventDataSize;
31368
Leo Chang0b0e45a2013-12-15 15:18:55 -080031369 /*-------------------------------------------------------------------------
31370 Extract indication and send it to UMAC
31371 -------------------------------------------------------------------------*/
31372 wpalMemoryCopy(&chAvoidIndicationParam,
31373 pEventData->pEventData,
Abhishek Singhf5590652016-02-09 16:53:03 +053031374 dataSize);
Leo Chang0b0e45a2013-12-15 15:18:55 -080031375
Abhishek Singhe34eb552015-06-18 10:12:15 +053031376 /* Avoid Over flow */
31377 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31378 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31379
Leo Chang0b0e45a2013-12-15 15:18:55 -080031380 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31381 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31382 chAvoidIndicationParam.avoidCnt;
31383 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31384 (void *)chAvoidIndicationParam.avoidRange,
31385 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31386 sizeof(WDI_ChAvoidFreqType));
31387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31388 "%s: band count %d", __func__,
31389 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31390 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31391 {
31392 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31393 "%s: srart freq %d, end freq %d", __func__,
31394 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31395 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31396 }
31397
31398 /*Notify UMAC*/
31399 if (pWDICtx->wdiLowLevelIndCB)
31400 {
31401 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31402 }
31403
31404 return WDI_STATUS_SUCCESS;
31405}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031406
Leo Chang0b0e45a2013-12-15 15:18:55 -080031407#endif /* FEATURE_WLAN_CH_AVOID */
31408
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031409/**
31410 @brief Process OBSS Start scan result indication
31411
31412 @param pWDICtx: pointer to the WLAN DAL context
31413 pEventData: pointer to the event information structure
31414
31415 @see
31416 @return Result of the function call
31417*/
31418WDI_Status
31419WDI_ProcessHT40OBSSScanInd
31420(
31421 WDI_ControlBlockType* pWDICtx,
31422 WDI_EventInfoType* pEventData
31423)
31424{
31425 wpt_uint8* pSendBuffer = NULL;
31426 wpt_uint16 usDataOffset = 0;
31427 wpt_uint16 usSendSize = 0;
31428 wpt_uint16 usLen = 0;
31429 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31430 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31431 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31432 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31433
31434 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31435
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031437 "%s", __func__);
31438
31439 /*-------------------------------------------------------------------------
31440 Sanity check
31441 -------------------------------------------------------------------------*/
31442 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31443 {
31444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31445 "%s: Invalid parameters", __func__);
31446 WDI_ASSERT(0);
31447 return WDI_STATUS_E_FAILURE;
31448 }
31449 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31450
31451 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31452 /*-----------------------------------------------------------------------
31453 Get message buffer
31454 -----------------------------------------------------------------------*/
31455
31456 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31457 WDI_START_HT40_OBSS_SCAN_IND,
31458 sizeof(tHT40ObssScanIndType),
31459 &pSendBuffer, &usDataOffset, &usSendSize))||
31460 ( usSendSize < (usDataOffset + usLen )))
31461 {
31462 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31463 "Unable to get send buffer in HT40 OBSS Start req %p ",
31464 pEventData);
31465 WDI_ASSERT(0);
31466 return WDI_STATUS_E_FAILURE;
31467 }
31468 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31469 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31470 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31471 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31472 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31473 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31474 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31475 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31476 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31477 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31478 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31479 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31480 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31481 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31482 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31483 pHT40ObssScanInd->OBSSScanActivityThreshold =
31484 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31485 pHT40ObssScanInd->selfStaIdx =
31486 pwdiHT40OBSSScanInd->selfStaIdx;
31487 pHT40ObssScanInd->bssIdx =
31488 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031489 pHT40ObssScanInd->currentOperatingClass =
31490 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031491 pHT40ObssScanInd->fortyMHZIntolerent =
31492 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31493 pHT40ObssScanInd->channelCount =
31494 pwdiHT40OBSSScanInd->channelCount;
31495
31496 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31497 WDI_ROAM_SCAN_MAX_CHANNELS);
31498 pHT40ObssScanInd->ieFieldLen =
31499 pwdiHT40OBSSScanInd->ieFieldLen;
31500
31501 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31502 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31503 pWDICtx->pReqStatusUserData = NULL;
31504 pWDICtx->pfncRspCB = NULL;
31505
31506 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31507 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31508
31509 /*-------------------------------------------------------------------------
31510 Send OBSS Start Indication to HAL
31511 -------------------------------------------------------------------------*/
31512 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31513 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31514
31515} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31516
31517
31518/**
31519 @brief wdi_HT40OBSSScanInd
31520 This API is called to start OBSS scan
31521
31522 @param pWdiReq : pointer to get ind param
31523 @see
31524 @return SUCCESS or FAIL
31525*/
31526WDI_Status WDI_HT40OBSSScanInd
31527(
31528 WDI_HT40ObssScanParamsType *pWdiReq
31529)
31530{
31531 WDI_EventInfoType wdiEventData;
31532
31533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31534 "%s", __func__);
31535 /*-------------------------------------------------------------------------
31536 Sanity Check
31537 ------------------------------------------------------------------------*/
31538 if (eWLAN_PAL_FALSE == gWDIInitialized)
31539 {
31540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31541 "WDI API call before module is initialized - Fail request!");
31542
31543 return WDI_STATUS_E_NOT_ALLOWED;
31544 }
31545
31546 /*-------------------------------------------------------------------------
31547 Fill in Event data and post to the Main FSM
31548 ------------------------------------------------------------------------*/
31549 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31550 wdiEventData.pEventData = pWdiReq;
31551 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31552 wdiEventData.pCBfnc = NULL;
31553 wdiEventData.pUserData = NULL;
31554
31555
31556 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31557}
31558
31559/**
31560 @brief Process OBSS Stop scan result
31561
31562 @param pWDICtx: pointer to the WLAN DAL context
31563 pEventData: pointer to the event information structure
31564
31565 @see
31566 @return Result of the function call
31567*/
31568WDI_Status
31569WDI_ProcessHT40OBSSStopScanInd
31570(
31571 WDI_ControlBlockType* pWDICtx,
31572 WDI_EventInfoType* pEventData
31573)
31574{
31575 wpt_uint8* pSendBuffer = NULL;
31576 wpt_uint16 usDataOffset = 0;
31577 wpt_uint16 usSendSize = 0;
31578 wpt_uint16 usLen = 0;
31579 wpt_uint8 *wdiBssIdx = 0;
31580 tANI_U8 *bssIdx = 0;
31581 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31582
31583 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31584
31585 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31586 "%s", __func__);
31587
31588 /*-------------------------------------------------------------------------
31589 Sanity check
31590 -------------------------------------------------------------------------*/
31591 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31592 {
31593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31594 "%s: Invalid parameters", __func__);
31595 WDI_ASSERT(0);
31596 return WDI_STATUS_E_FAILURE;
31597 }
31598 bssIdx = (wpt_uint8*)pEventData->pEventData;
31599 /*-----------------------------------------------------------------------
31600 Get message buffer
31601 -----------------------------------------------------------------------*/
31602
31603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31604 WDI_STOP_HT40_OBSS_SCAN_IND,
31605 sizeof(tANI_U8),
31606 &pSendBuffer, &usDataOffset, &usSendSize))||
31607 ( usSendSize < (usDataOffset + usLen )))
31608 {
31609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31610 "Unable to get send buffer in HT40 OBSS Start req %p ",
31611 pEventData);
31612 WDI_ASSERT(0);
31613 return WDI_STATUS_E_FAILURE;
31614 }
31615
31616 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31617 bssIdx = wdiBssIdx;
31618
31619 pWDICtx->pReqStatusUserData = NULL;
31620 pWDICtx->pfncRspCB = NULL;
31621
31622 /*-------------------------------------------------------------------------
31623 Send DHCP Start Indication to HAL
31624 -------------------------------------------------------------------------*/
31625 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31626 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31627} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31628
31629/**
31630 @brief WDI_HT40OBSSStopScanInd
31631 This API is called to start OBSS scan
31632 @param pWdiReq : pointer to get ind param
31633 @see
31634 @return SUCCESS or FAIL
31635*/
31636WDI_Status WDI_HT40OBSSStopScanInd
31637(
31638 wpt_uint8 bssIdx
31639)
31640{
31641 WDI_EventInfoType wdiEventData;
31642
31643 /*-------------------------------------------------------------------------
31644 Sanity Check
31645 ------------------------------------------------------------------------*/
31646 if (eWLAN_PAL_FALSE == gWDIInitialized)
31647 {
31648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31649 "WDI API call before module is initialized - Fail request!");
31650
31651 return WDI_STATUS_E_NOT_ALLOWED;
31652 }
31653
31654 /*-------------------------------------------------------------------------
31655 Fill in Event data and post to the Main FSM
31656 ------------------------------------------------------------------------*/
31657 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31658 wdiEventData.pEventData = &bssIdx;
31659 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31660 wdiEventData.pCBfnc = NULL;
31661 wdiEventData.pUserData = NULL;
31662
31663 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31664}
31665
c_hpothu86041002014-04-14 19:06:51 +053031666WDI_Status
31667WDI_printRegInfo
31668(
31669 WDI_ControlBlockType* pWDICtx,
31670 WDI_EventInfoType* pEventData
31671)
31672{
31673 tHalRegDebugInfo *pRegTable;
31674 tHalRegDebugInfoParams *pRegParams;
31675 uint32 cnt=0;
31676
31677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31678 "%s: ", __func__);
31679 /*-------------------------------------------------------------------------
31680 Sanity check
31681 -------------------------------------------------------------------------*/
31682 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31683 ( NULL == pEventData->pEventData))
31684 {
31685 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31686 "%s: Invalid parameters", __func__);
31687 WDI_ASSERT(0);
31688 return WDI_STATUS_E_FAILURE;
31689 }
31690
31691 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31692
31693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31694 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31695 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31696
31697 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31698
31699 if (pRegParams->regCount <= 0)
31700 {
31701 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31702 "%s incorrect parameters passed", __func__);
31703 return WDI_STATUS_E_FAILURE;
31704 }
31705
31706 while(pRegParams->regCount--)
31707 {
31708 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31709 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31710 cnt++;
31711 }
31712
31713 return WDI_STATUS_SUCCESS;
31714}
c_hpothu92367912014-05-01 15:18:17 +053031715
31716/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031717 * FUNCTION: WDI_delBaInd
31718 * send the delBA to peer.
31719 */
31720
31721WDI_Status
31722WDI_delBaInd
31723(
31724 WDI_ControlBlockType* pWDICtx,
31725 WDI_EventInfoType* pEventData
31726
31727)
31728{
31729 tHalWlanDelBaIndMsg halDelBaInd;
31730 WDI_LowLevelIndType wdiInd;
31731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31732
31733 /*-------------------------------------------------------------------------
31734 Sanity check
31735 -------------------------------------------------------------------------*/
31736 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31737 ( NULL == pEventData->pEventData))
31738 {
31739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31740 "%s: Invalid parameters", __func__);
31741 WDI_ASSERT(0);
31742 return WDI_STATUS_E_FAILURE;
31743 }
31744
31745 /*-------------------------------------------------------------------------
31746 Extract indication and send it to UMAC
31747 -------------------------------------------------------------------------*/
31748
31749 /* Parameters need to be unpacked according to HAL struct*/
31750 wpalMemoryCopy( &halDelBaInd,
31751 pEventData->pEventData,
31752 sizeof(halDelBaInd));
31753
31754 /*Fill in the indication parameters*/
31755 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31756
31757 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31758 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31759 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31760
31761 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31762 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31763 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31764
31765 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31766 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31767 if ( pWDICtx->wdiLowLevelIndCB )
31768 {
31769 /*Notify UMAC*/
31770 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31771 }
31772
31773 return WDI_STATUS_SUCCESS;
31774
31775
31776}
31777
31778/*
c_hpothu92367912014-05-01 15:18:17 +053031779 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31780 * send the response to PE with beacon miss count
31781 * received from WDI.
31782 */
31783WDI_Status
31784WDI_ProcessGetBcnMissRateRsp
31785(
31786 WDI_ControlBlockType* pWDICtx,
31787 WDI_EventInfoType* pEventData
31788)
31789{
31790 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31791 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31792
31793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31794 "In %s",__func__);
31795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31796
31797 /*-------------------------------------------------------------------------
31798 Sanity check
31799 -------------------------------------------------------------------------*/
31800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31801 ( NULL == pEventData->pEventData))
31802 {
31803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31804 "%s: Invalid parameters", __func__);
31805 WDI_ASSERT(0);
31806 return WDI_STATUS_E_FAILURE;
31807 }
31808
31809 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31810 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31811
31812 /*Notify UMAC*/
31813 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31814 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31815 return WDI_STATUS_SUCCESS;
31816}
31817
31818/*
31819 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31820 * Request to WDI to get missed beacon rate.
31821 */
31822WDI_Status
31823WDI_ProcessGetBcnMissRateReq
31824(
31825 WDI_ControlBlockType* pWDICtx,
31826 WDI_EventInfoType* pEventData
31827)
31828{
31829 wpt_uint8* pSendBuffer = NULL;
31830 wpt_uint16 usDataOffset = 0;
31831 wpt_uint16 usSendSize = 0;
31832 wpt_uint8 ucCurrentBSSSesIdx = 0;
31833 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031834 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31835 tHalBcnMissRateReqParams halBcnMissRateReq;
31836
31837/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31838
31839 /*-------------------------------------------------------------------------
31840 Sanity check
31841 -------------------------------------------------------------------------*/
31842 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31843 ( NULL == pEventData->pCBfnc ) )
31844 {
31845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31846 "%s: Invalid parameters", __func__);
31847 WDI_ASSERT(0);
31848 return WDI_STATUS_E_FAILURE;
31849 }
31850
31851 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31852
31853 wpalMutexAcquire(&pWDICtx->wptMutex);
31854
31855 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31856 pEventData->pEventData, &pBSSSes);
31857 if ( NULL == pBSSSes )
31858 {
31859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31860 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031861 MAC_ADDRESS_STR, __func__,
31862 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031863 wpalMutexRelease(&pWDICtx->wptMutex);
31864 return WDI_STATUS_E_NOT_ALLOWED;
31865 }
31866 wpalMutexRelease(&pWDICtx->wptMutex);
31867
31868 /*-----------------------------------------------------------------------
31869 Get message buffer
31870 -----------------------------------------------------------------------*/
31871 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31872 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31873 sizeof(tHalBcnMissRateReqParams),
31874 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31875 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31876 {
31877 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31878 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31879 pEventData);
31880 WDI_ASSERT(0);
31881 return WDI_STATUS_E_FAILURE;
31882 }
31883
31884 pWDICtx->wdiReqStatusCB = NULL;
31885 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31886
31887 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31888
31889 wpalMemoryCopy( pSendBuffer+usDataOffset,
31890 &halBcnMissRateReq,
31891 sizeof(tHalBcnMissRateReqParams));
31892 /*-------------------------------------------------------------------------
31893 Send Get STA Request to HAL
31894 -------------------------------------------------------------------------*/
31895 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31896 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31897}
31898
31899/**
31900 @brief WDI_GetBcnMissRate
31901
31902 @param pUserData: user data will be passed back with the
31903 callback
31904 WDI_GetBcnMissRateCb: callback for passing back the response
31905 of the get stats operation received from the device
31906 bssid: bssid, to send bssIdx to FW
31907
31908 @return SUCCESS or FAIL
31909*/
31910WDI_Status WDI_GetBcnMissRate( void *pUserData,
31911 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31912 tANI_U8 *bssid )
31913{
31914 WDI_EventInfoType wdiEventData;
31915
31916 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31917
31918 /*------------------------------------------------------------------------
31919 Sanity Check
31920 ------------------------------------------------------------------------*/
31921 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31922 {
31923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31924 "WDI API call before module is initialized - Fail request");
31925
31926 return WDI_STATUS_E_NOT_ALLOWED;
31927 }
31928
31929 /*------------------------------------------------------------------------
31930 Fill in Event data and post to the Main FSM
31931 ------------------------------------------------------------------------*/
31932 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31933 wdiEventData.pEventData = bssid;
31934 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31935 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31936 wdiEventData.pUserData = pUserData;
31937
31938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31939}
Abhishek Singh85b74712014-10-08 11:38:19 +053031940
31941/*
31942 * FUNCTION: WDI_ProcessGetFwStatsRsp
31943 * send the response with FW stats asked.
31944 */
31945WDI_Status
31946 WDI_ProcessGetFwStatsRsp
31947(
31948 WDI_ControlBlockType* pWDICtx,
31949 WDI_EventInfoType* pEventData
31950)
31951{
31952 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31953 tpHalfwStatsRspParams pHalFwstatsRsp;
31954 WDI_FWStatsResults fwStats;
31955
31956 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31957
31958 /*-------------------------------------------------------------------------
31959 Sanity check
31960 -------------------------------------------------------------------------*/
31961 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31962 ( NULL == pEventData->pEventData))
31963 {
31964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31965 "%s: Invalid parameters", __func__);
31966 WDI_ASSERT(0);
31967 return WDI_STATUS_E_FAILURE;
31968 }
31969 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31970 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31971
31972 if(pHalFwstatsRsp->length)
31973 {
31974 switch( pHalFwstatsRsp->type )
31975 {
31976 case FW_UBSP_STATS:
31977 {
31978 ubspFwStats *ubspStatsfromFw;
31979
31980 fwStats.type = pHalFwstatsRsp->type;
31981 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31982 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31983 ubspStatsfromFw->ubsp_enter_cnt;
31984 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
31985 ubspStatsfromFw->ubsp_jump_ddr_cnt;
31986 }
31987 break;
31988 default:
31989 {
31990 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31991 "%s: No handling for stats type %d", __func__,
31992 pHalFwstatsRsp->type);
31993 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
31994 NULL, pWDICtx->pRspCBUserData);
31995 return WDI_STATUS_E_FAILURE;
31996 }
31997 }
31998 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
31999 }
32000 else
32001 {
32002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32003 "%s: Length = 0 for type %d return failure ", __func__,
32004 pHalFwstatsRsp->type);
32005 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
32006 NULL, pWDICtx->pRspCBUserData);
32007 return WDI_STATUS_E_FAILURE;
32008 }
32009 return WDI_STATUS_SUCCESS;
32010}
32011
32012/*
32013 * FUNCTION: WDI_ProcessGetFwStatsReq
32014 * Request to WDI to get FW Stats.
32015 */
32016WDI_Status
32017 WDI_ProcessGetFwStatsReq
32018(
32019 WDI_ControlBlockType* pWDICtx,
32020 WDI_EventInfoType* pEventData
32021)
32022{
32023 wpt_uint8* pSendBuffer = NULL;
32024 wpt_uint16 usDataOffset = 0;
32025 wpt_uint16 usSendSize = 0;
32026 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
32027 tHalfwStatsReqParams halFwStatsReq;
32028
32029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32030
32031 /*-------------------------------------------------------------------------
32032 Sanity check
32033 -------------------------------------------------------------------------*/
32034 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
32035 ( NULL == pEventData->pCBfnc ) )
32036 {
32037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32038 "%s: Invalid parameters", __func__);
32039 WDI_ASSERT(0);
32040 return WDI_STATUS_E_FAILURE;
32041 }
32042
32043 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
32044
32045 /*-----------------------------------------------------------------------
32046 Get message buffer
32047 -----------------------------------------------------------------------*/
32048 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32049 pWDICtx, WDI_GET_FW_STATS_REQ,
32050 sizeof(tHalfwStatsReqParams),
32051 &pSendBuffer, &usDataOffset, &usSendSize)) ||
32052 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
32053 {
32054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32055 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
32056 pEventData);
32057 WDI_ASSERT(0);
32058 return WDI_STATUS_E_FAILURE;
32059 }
32060
32061 pWDICtx->wdiReqStatusCB = NULL;
32062 pWDICtx->pReqStatusUserData = pEventData->pEventData;
32063 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
32064 wpalMemoryCopy( pSendBuffer+usDataOffset,
32065 &halFwStatsReq,
32066 sizeof(tHalfwStatsReqParams));
32067 /*-------------------------------------------------------------------------
32068 Send Get STA Request to HAL
32069 -------------------------------------------------------------------------*/
32070 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
32071 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
32072}
32073
Sunil Duttbd736ed2014-05-26 21:19:41 +053032074#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32075
32076/**
32077 @brief WDI_LLStatsSetReq
32078 This API is called to set link layer stats request in FW
32079
32080 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
32081 wdiLLStatsSetRspCb : set link layer stats resp callback
32082 usrData : Client context
32083 @see
32084 @return SUCCESS or FAIL
32085*/
32086WDI_Status
32087WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
32088 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
32089 void* pUserData)
32090{
32091 WDI_EventInfoType wdiEventData;
32092
32093 /*------------------------------------------------------------------------
32094 Sanity Check
32095 ------------------------------------------------------------------------*/
32096 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32097 {
32098 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32099 "WDI API call before module is initialized - Fail request");
32100
32101 return WDI_STATUS_E_NOT_ALLOWED;
32102 }
32103
32104 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
32105 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
32106 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
32107 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
32108 wdiEventData.pUserData = pUserData;
32109
32110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32111}
32112
32113/**
32114 @brief WDI_ProcessLLStatsSetReq -
32115 Set Link Layer Stats request to FW
32116
32117 @param pWDICtx : wdi context
32118 pEventData : indication data
32119
32120 @see
32121 @return none
32122*/
32123WDI_Status
32124WDI_ProcessLLStatsSetReq
32125(
32126 WDI_ControlBlockType* pWDICtx,
32127 WDI_EventInfoType* pEventData
32128)
32129{
32130 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
32131 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
32132 wpt_uint8* pSendBuffer = NULL;
32133 wpt_uint16 usSendSize = 0;
32134 wpt_uint16 usDataOffset = 0;
32135 tHalMacLlSetStatsReqParams halLLStatsSetParams;
32136
32137 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32138 ( NULL == pEventData->pCBfnc ))
32139 {
32140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32141 "%s: Invalid parameters", __func__);
32142 WDI_ASSERT(0);
32143 return WDI_STATUS_E_FAILURE;
32144 }
32145
32146 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
32147 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
32148
32149 /*-----------------------------------------------------------------------
32150 Get message buffer
32151 ! TO DO : proper conversion into the HAL Message Request Format
32152 -----------------------------------------------------------------------*/
32153 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32154 pWDICtx,
32155 WDI_LL_STATS_SET_REQ,
32156 sizeof(tHalMacLlSetStatsReqParams),
32157 &pSendBuffer, &usDataOffset,
32158 &usSendSize))||
32159 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
32160 {
32161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32162 "Unable to get send buffer in %s %p %p %p", __func__,
32163 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
32164 WDI_ASSERT(0);
32165 return WDI_STATUS_E_FAILURE;
32166 }
32167
32168
Dino Mycled3d50022014-07-07 12:58:25 +053032169 /* Need to fill in the self STA Index */
32170 if ( WDI_STATUS_SUCCESS !=
32171 WDI_STATableFindStaidByAddr(pWDICtx,
32172 pwdiLLStatsSetReqParams->macAddr,
32173 &halLLStatsSetParams.sta_id))
32174 {
32175 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32176 MAC_ADDRESS_STR
32177 ": This station does not exist in the WDI Station Table",
32178 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
32179
32180 wpalMemoryFree(pSendBuffer);
32181 return WDI_STATUS_E_FAILURE;
32182 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032183
32184 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032185 halLLStatsSetParams.mpdu_size_threshold =
32186 pwdiLLStatsSetReqParams->mpduSizeThreshold;
32187 halLLStatsSetParams.aggressive_statistics_gathering =
32188 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
32189
32190 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32191 " halLLStatsSetParams.req_id = %u",
32192 halLLStatsSetParams.req_id);
32193 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32194 " halLLStatsSetParams.sta_id = %u",
32195 halLLStatsSetParams.sta_id);
32196 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32197 " halLLStatsSetParams.mpdu_size_threshold = %u",
32198 halLLStatsSetParams.mpdu_size_threshold);
32199 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32200 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
32201 halLLStatsSetParams.aggressive_statistics_gathering);
32202
32203 wpalMemoryCopy(pSendBuffer+usDataOffset,
32204 &halLLStatsSetParams,
32205 sizeof(halLLStatsSetParams));
32206
32207 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32208
32209 /*-------------------------------------------------------------------------
32210 Send Clear Link Layer Stats Request to HAL
32211 -------------------------------------------------------------------------*/
32212 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32213 wdiLLStatsSetCb, pEventData->pUserData,
32214 WDI_LL_STATS_SET_RSP);
32215}
32216
32217/**
32218 @brief WDI_LLStatsGetReq
32219 This API is called to get link layer stats request in FW
32220
32221 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
32222 wdiLLStatsGetRspCb : get link layer stats resp callback
32223 usrData : Client context
32224 @see
32225 @return SUCCESS or FAIL
32226*/
32227WDI_Status
32228WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
32229 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
32230 void* pUserData)
32231{
32232 WDI_EventInfoType wdiEventData;
32233
32234 /*------------------------------------------------------------------------
32235 Sanity Check
32236 ------------------------------------------------------------------------*/
32237 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32238 {
32239 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32240 "WDI API call before module is initialized - Fail request");
32241
32242 return WDI_STATUS_E_NOT_ALLOWED;
32243 }
32244
32245 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
32246 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
32247 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
32248 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
32249 wdiEventData.pUserData = pUserData;
32250
32251 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32252}
32253
32254/**
32255 @brief WDI_ProcessLLStatsGetReq -
32256 Get Link Layer Stats request to FW
32257
32258 @param pWDICtx : wdi context
32259 pEventData : indication data
32260
32261 @see
32262 @return none
32263*/
32264WDI_Status
32265WDI_ProcessLLStatsGetReq
32266(
32267 WDI_ControlBlockType* pWDICtx,
32268 WDI_EventInfoType* pEventData
32269)
32270{
32271 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
32272 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
32273 wpt_uint8* pSendBuffer = NULL;
32274 wpt_uint16 usSendSize = 0;
32275 wpt_uint16 usDataOffset = 0;
32276 tHalMacLlGetStatsReqParams halLLStatsGetParams;
32277
32278 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32279 ( NULL == pEventData->pCBfnc ))
32280 {
32281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32282 "%s: Invalid parameters", __func__);
32283 WDI_ASSERT(0);
32284 return WDI_STATUS_E_FAILURE;
32285 }
32286
32287 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
32288 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
32289
32290 /*-----------------------------------------------------------------------
32291 Get message buffer
32292 ! TO DO : proper conversion into the HAL Message Request Format
32293 -----------------------------------------------------------------------*/
32294 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32295 pWDICtx,
32296 WDI_LL_STATS_GET_REQ,
32297 sizeof(tHalMacLlGetStatsReqParams),
32298 &pSendBuffer, &usDataOffset,
32299 &usSendSize))||
32300 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
32301 {
32302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32303 "Unable to get send buffer in %s %p %p %p", __func__,
32304 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
32305 WDI_ASSERT(0);
32306 return WDI_STATUS_E_FAILURE;
32307 }
Dino Mycled3d50022014-07-07 12:58:25 +053032308 /* Need to fill in the self STA Index */
32309 if ( WDI_STATUS_SUCCESS !=
32310 WDI_STATableFindStaidByAddr(pWDICtx,
32311 pwdiLLStatsGetReqParams->macAddr,
32312 &halLLStatsGetParams.sta_id))
32313 {
32314 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32315 MAC_ADDRESS_STR
32316 ": This station does not exist in the WDI Station Table",
32317 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
32318
32319 wpalMemoryFree(pSendBuffer);
32320 return WDI_STATUS_E_FAILURE;
32321 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032322
32323 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032324 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
32325
32326 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32327 " halLLStatsGetParams.req_id = %u",
32328 halLLStatsGetParams.req_id);
32329 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32330 " halLLStatsGetParams.staId = %u",
32331 halLLStatsGetParams.sta_id);
32332 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32333 " halLLStatsGetParams.Mask = %u",
32334 halLLStatsGetParams.param_id_mask);
32335
32336 wpalMemoryCopy(pSendBuffer+usDataOffset,
32337 &halLLStatsGetParams,
32338 sizeof(halLLStatsGetParams));
32339
32340 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32341
32342 /*-------------------------------------------------------------------------
32343 Send Clear Link Layer Stats Request to HAL
32344 -------------------------------------------------------------------------*/
32345 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32346 wdiLLStatsGetCb, pEventData->pUserData,
32347 WDI_LL_STATS_GET_RSP);
32348}
32349
32350/**
32351 @brief WDI_LLStatsClearReq
32352 This API is called to clear link layer stats request in FW
32353
32354 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32355 wdiLLStatsSetRspCb : clear link layer stats resp callback
32356 usrData : Client context
32357 @see
32358 @return SUCCESS or FAIL
32359*/
32360WDI_Status
32361WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32362 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32363 void* pUserData)
32364{
32365 WDI_EventInfoType wdiEventData;
32366
32367 /*------------------------------------------------------------------------
32368 Sanity Check
32369 ------------------------------------------------------------------------*/
32370 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32371 {
32372 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32373 "WDI API call before module is initialized - Fail request");
32374
32375 return WDI_STATUS_E_NOT_ALLOWED;
32376 }
32377
32378 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32379 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32380 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32381 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32382 wdiEventData.pUserData = pUserData;
32383
32384 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32385 "%s:%d Enter", __func__, __LINE__);
32386
32387 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32388}
32389
32390/**
32391 @brief WDI_ProcessLLStatsClearReq -
32392 Clear Link Layer Stats request to FW
32393
32394 @param pWDICtx : wdi context
32395 pEventData : indication data
32396
32397 @see
32398 @return none
32399*/
32400WDI_Status
32401WDI_ProcessLLStatsClearReq
32402(
32403 WDI_ControlBlockType* pWDICtx,
32404 WDI_EventInfoType* pEventData
32405)
32406{
32407 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32408 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32409 wpt_uint8* pSendBuffer = NULL;
32410 wpt_uint16 usSendSize = 0;
32411 wpt_uint16 usDataOffset = 0;
32412 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32413
32414 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32415 ( NULL == pEventData->pCBfnc ))
32416 {
32417 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32418 "%s: Invalid parameters", __func__);
32419 WDI_ASSERT(0);
32420 return WDI_STATUS_E_FAILURE;
32421 }
32422
32423 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32424 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32425
32426 /*-----------------------------------------------------------------------
32427 Get message buffer
32428 ! TO DO : proper conversion into the HAL Message Request Format
32429 -----------------------------------------------------------------------*/
32430 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32431 pWDICtx,
32432 WDI_LL_STATS_CLEAR_REQ,
32433 sizeof(tHalMacLlClearStatsReqParams),
32434 &pSendBuffer, &usDataOffset,
32435 &usSendSize))||
32436 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32437 {
32438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32439 "Unable to get send buffer in %s %p %p %p", __func__,
32440 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32441 WDI_ASSERT(0);
32442 return WDI_STATUS_E_FAILURE;
32443 }
Dino Mycled3d50022014-07-07 12:58:25 +053032444 /* Need to fill in the self STA Index */
32445 if ( WDI_STATUS_SUCCESS !=
32446 WDI_STATableFindStaidByAddr(pWDICtx,
32447 pwdiLLStatsClearReqParams->macAddr,
32448 &halLLStatsClearParams.sta_id))
32449 {
32450 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32451 MAC_ADDRESS_STR
32452 ": This station does not exist in the WDI Station Table",
32453 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32454
32455 wpalMemoryFree(pSendBuffer);
32456 return WDI_STATUS_E_FAILURE;
32457 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032458
32459 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032460 halLLStatsClearParams.stats_clear_req_mask =
32461 pwdiLLStatsClearReqParams->statsClearReqMask;
32462 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32463
32464 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32465 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32466 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32467 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32468 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32469 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32470 halLLStatsClearParams.stats_clear_req_mask);
32471 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32472 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32473
32474 wpalMemoryCopy(pSendBuffer+usDataOffset,
32475 &halLLStatsClearParams,
32476 sizeof(halLLStatsClearParams));
32477
32478 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32479
32480 /*-------------------------------------------------------------------------
32481 Send Clear Link Layer Stats Request to HAL
32482 -------------------------------------------------------------------------*/
32483 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32484 wdiLLStatsClearCb, pEventData->pUserData,
32485 WDI_LL_STATS_CLEAR_RSP);
32486}
32487#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032488
Abhishek Singh85b74712014-10-08 11:38:19 +053032489WDI_Status WDI_FWStatsGetReq( void* pUserData,
32490 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32491 wpt_uint32 stats)
32492{
32493 WDI_EventInfoType wdiEventData;
32494
32495 /*------------------------------------------------------------------------
32496 Sanity Check
32497 ------------------------------------------------------------------------*/
32498 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32499 {
32500 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32501 "WDI API call before module is initialized - Fail request");
32502 return WDI_STATUS_E_NOT_ALLOWED;
32503 }
32504 /*------------------------------------------------------------------------
32505 Fill in Event data and post to the Main FSM
32506 ------------------------------------------------------------------------*/
32507 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32508 wdiEventData.pEventData = (void *)&stats;
32509 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32510 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32511 wdiEventData.pUserData = pUserData;
32512
32513 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32514
32515}
32516
Katya Nigamf0511f62015-05-05 16:40:57 +053032517WDI_Status
32518WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032519 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032520 void* pUserData)
32521{
32522 WDI_EventInfoType wdiEventData;
32523
32524 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32525 "%s", __func__);
32526
32527 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32528 {
32529 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32530 "WDI API call before module is initialized - Fail request");
32531
32532 return WDI_STATUS_E_NOT_ALLOWED;
32533 }
32534
32535 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32536 wdiEventData.pEventData = pwdiMonStartReqParams;
32537 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032538 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032539 wdiEventData.pUserData = pUserData;
32540
32541 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32542}
32543
32544WDI_Status
32545WDI_ProcessMonStartReq
32546(
32547 WDI_ControlBlockType* pWDICtx,
32548 WDI_EventInfoType* pEventData
32549)
32550{
32551 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032552 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032553 wpt_uint8* pSendBuffer = NULL;
32554 wpt_uint16 usSendSize = 0;
32555 wpt_uint16 usDataOffset = 0;
32556 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32557
32558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32559 "%s", __func__);
32560
32561 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32562 ( NULL == pEventData->pCBfnc ))
32563 {
32564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32565 "%s: Invalid parameters", __func__);
32566 WDI_ASSERT(0);
32567 return WDI_STATUS_E_FAILURE;
32568 }
32569
32570 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032571 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032572
32573 /*-----------------------------------------------------------------------
32574 Get message buffer
32575 ! TO DO : proper conversion into the HAL Message Request Format
32576 -----------------------------------------------------------------------*/
32577 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32578 pWDICtx,
32579 WDI_MON_START_REQ,
32580 sizeof(tHalEnableMonitorModeReqParams),
32581 &pSendBuffer, &usDataOffset,
32582 &usSendSize))||
32583 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32584 {
32585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32586 "Unable to get send buffer in %s %p %p %p", __func__,
32587 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32588 WDI_ASSERT(0);
32589 return WDI_STATUS_E_FAILURE;
32590 }
32591
32592 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32593 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32594 pwdiMonStartReqParams->ChannelBW);
32595 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32596 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32597 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32598 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32599 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32600 pwdiMonStartReqParams->mmFilters[0].macAddr,
32601 sizeof( wpt_macAddr ));
32602 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32603 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32604 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32605 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32606
32607 wpalMemoryCopy(pSendBuffer+usDataOffset,
32608 &halEnableMonitorModeParams,
32609 sizeof(halEnableMonitorModeParams));
32610
32611 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32612
32613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32614 wdiMonStartCb, pEventData->pUserData,
32615 WDI_MON_START_RSP);
32616}
32617
32618WDI_Status
32619WDI_ProcessMonStartRsp
32620(
32621 WDI_ControlBlockType* pWDICtx,
32622 WDI_EventInfoType* pEventData
32623)
32624{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032625 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032626
32627 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32628 "%s: Enter ", __func__);
32629 /*-------------------------------------------------------------------------
32630 Sanity check
32631 -------------------------------------------------------------------------*/
32632 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32633 ( NULL == pEventData->pEventData))
32634 {
32635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32636 "%s: Invalid parameters", __func__);
32637 WDI_ASSERT(0);
32638 return WDI_STATUS_E_FAILURE;
32639 }
32640
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032641 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032642
32643 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32644
32645 return WDI_STATUS_SUCCESS;
32646}
32647
32648WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032649WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032650 void* pUserData)
32651{
32652 WDI_EventInfoType wdiEventData;
32653
32654 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32655 "%s", __func__);
32656
32657 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32658 {
32659 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32660 "WDI API call before module is initialized - Fail request");
32661
32662 return WDI_STATUS_E_NOT_ALLOWED;
32663 }
32664
32665 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32666 wdiEventData.pEventData = NULL;
32667 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032668 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032669 wdiEventData.pUserData = pUserData;
32670
32671 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32672}
32673
32674WDI_Status
32675WDI_ProcessMonStopReq
32676(
32677 WDI_ControlBlockType* pWDICtx,
32678 WDI_EventInfoType* pEventData
32679)
32680{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032681 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032682 wpt_uint8* pSendBuffer = NULL;
32683 wpt_uint16 usSendSize = 0;
32684 wpt_uint16 usDataOffset = 0;
32685 wpt_uint8 resetConfiguration;
32686
32687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32688 "%s", __func__);
32689
32690 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32691 {
32692 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32693 "%s: Invalid parameters", __func__);
32694 WDI_ASSERT(0);
32695 return WDI_STATUS_E_FAILURE;
32696 }
32697
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032698 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032699
32700 /*-----------------------------------------------------------------------
32701 Get message buffer
32702 ! TO DO : proper conversion into the HAL Message Request Format
32703 -----------------------------------------------------------------------*/
32704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32705 pWDICtx,
32706 WDI_MON_STOP_REQ,
32707 sizeof(wpt_uint8),
32708 &pSendBuffer, &usDataOffset,
32709 &usSendSize))||
32710 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32711 {
32712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32713 "Unable to get send buffer in %s %p %p", __func__,
32714 pEventData, wdiMonStopCb);
32715 WDI_ASSERT(0);
32716 return WDI_STATUS_E_FAILURE;
32717 }
32718
32719 wpalMemoryCopy(pSendBuffer+usDataOffset,
32720 &resetConfiguration,
32721 sizeof(wpt_uint8));
32722
32723 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32724
32725 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32726 wdiMonStopCb, pEventData->pUserData,
32727 WDI_MON_STOP_RSP);
32728}
32729
32730WDI_Status
32731WDI_ProcessMonStopRsp
32732(
32733 WDI_ControlBlockType* pWDICtx,
32734 WDI_EventInfoType* pEventData
32735)
32736{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032737 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032738
32739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32740 "%s: Enter ", __func__);
32741 /*-------------------------------------------------------------------------
32742 Sanity check
32743 -------------------------------------------------------------------------*/
32744 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32745 {
32746 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32747 "%s: Invalid parameters", __func__);
32748 WDI_ASSERT(0);
32749 return WDI_STATUS_E_FAILURE;
32750 }
32751
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032752 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032753
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032754 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053032755
32756 return WDI_STATUS_SUCCESS;
32757}
32758
Dino Mycle41bdc942014-06-10 11:30:24 +053032759#ifdef WLAN_FEATURE_EXTSCAN
32760
32761/**
32762 @brief Process EXTSCAN BUffer full indication from FW
32763
32764 @param pWDICtx: pointer to the WLAN DAL context
32765 pEventData: pointer to the event information structure
32766
32767 @see
32768 @return Result of the function call
32769*/
32770WDI_Status
32771WDI_ProcessEXTScanProgressInd
32772(
32773 WDI_ControlBlockType* pWDICtx,
32774 WDI_EventInfoType* pEventData
32775)
32776{
32777 WDI_LowLevelIndType wdiInd;
32778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32779
32780 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32781 "%s: ", __func__);
32782
32783 /* sanity check */
32784 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32785 ( NULL == pEventData->pEventData))
32786 {
32787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32788 "%s: Invalid parameters", __func__);
32789 WDI_ASSERT(0);
32790 return WDI_STATUS_E_FAILURE;
32791 }
32792
32793 /* Fill in the indication parameters */
32794 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32795
32796 /* extract response and send it to UMAC */
32797 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32798
32799 /* Notify UMAC */
32800 if (pWDICtx->wdiLowLevelIndCB)
32801 {
32802 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32803 }
32804 else
32805 {
Dino Mycled3d50022014-07-07 12:58:25 +053032806 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032807 "%s: WDILowLevelIndCb is null", __func__);
32808 WDI_ASSERT(0);
32809 return WDI_STATUS_E_FAILURE;
32810 }
32811 return WDI_STATUS_SUCCESS;
32812
32813} /* End of WDI_ProcessEXTScanProgressInd */
32814
32815
32816/**
32817 @brief Process EXTScan Scan Available indication from FW
32818
32819 @param pWDICtx: pointer to the WLAN DAL context
32820 pEventData: pointer to the event information structure
32821
32822 @see
32823 @return Result of the function call
32824*/
32825WDI_Status
32826WDI_ProcessEXTScanScanAvailableInd
32827(
32828 WDI_ControlBlockType* pWDICtx,
32829 WDI_EventInfoType* pEventData
32830)
32831{
32832 WDI_LowLevelIndType wdiInd;
32833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32834
32835 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32836 "%s: ", __func__);
32837
32838 /* sanity check */
32839 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32840 ( NULL == pEventData->pEventData))
32841 {
32842 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32843 "%s: Invalid parameters", __func__);
32844 WDI_ASSERT(0);
32845 return WDI_STATUS_E_FAILURE;
32846 }
32847
32848
32849
32850 /* Fill in the indication parameters */
32851 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32852
32853 /* extract response and send it to UMAC */
32854 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32855
32856 /* Notify UMAC */
32857 if (pWDICtx->wdiLowLevelIndCB)
32858 {
32859 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32860 }
32861 else
32862 {
32863 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32864 "%s: WDILowLevelIndCb is null", __func__);
32865 WDI_ASSERT(0);
32866 return WDI_STATUS_E_FAILURE;
32867 }
32868 return WDI_STATUS_SUCCESS;
32869} /* End of WDI_ProcessEXTScanScanDoneInd */
32870
32871/**
32872 @brief Process EXTScan Result Indication indication from FW
32873
32874 @param pWDICtx: pointer to the WLAN DAL context
32875 pEventData: pointer to the event information structure
32876
32877 @see
32878 @return Result of the function call
32879*/
32880WDI_Status
32881WDI_ProcessEXTScanResultInd
32882(
32883 WDI_ControlBlockType* pWDICtx,
32884 WDI_EventInfoType* pEventData
32885)
32886{
32887 WDI_LowLevelIndType wdiInd;
32888 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32889
32890 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32891 "%s: ", __func__);
32892
32893 /* sanity check */
32894 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32895 ( NULL == pEventData->pEventData))
32896 {
32897 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32898 "%s: Invalid parameters", __func__);
32899 WDI_ASSERT(0);
32900 return WDI_STATUS_E_FAILURE;
32901 }
32902
32903 /* Fill in the indication parameters */
32904 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32905
32906 /* extract response and send it to UMAC */
32907 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32908
32909 /* Notify UMAC */
32910 if (pWDICtx->wdiLowLevelIndCB)
32911 {
32912 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32913 }
32914 else
32915 {
32916 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32917 "%s: WDILowLevelIndCb is null", __func__);
32918 WDI_ASSERT(0);
32919 return WDI_STATUS_E_FAILURE;
32920 }
32921 return WDI_STATUS_SUCCESS;
32922} /* End of WDI_ProcessEXTScanResultInd */
32923
32924/**
32925 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32926
32927 @param pWDICtx: pointer to the WLAN DAL context
32928 pEventData: pointer to the event information structure
32929
32930 @see
32931 @return Result of the function call
32932*/
32933WDI_Status
32934WDI_ProcessEXTScanBssidHotListResultInd
32935(
32936 WDI_ControlBlockType* pWDICtx,
32937 WDI_EventInfoType* pEventData
32938)
32939{
32940 WDI_LowLevelIndType wdiInd;
32941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32942
32943 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32944 "%s: ", __func__);
32945
32946 /* sanity check */
32947 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32948 ( NULL == pEventData->pEventData))
32949 {
32950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32951 "%s: Invalid parameters", __func__);
32952 WDI_ASSERT(0);
32953 return WDI_STATUS_E_FAILURE;
32954 }
32955
32956 /* Fill in the indication parameters */
32957 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32958
32959 /* extract response and send it to UMAC */
32960 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32961
32962 /* Notify UMAC */
32963 if (pWDICtx->wdiLowLevelIndCB)
32964 {
32965 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32966 }
32967 else
32968 {
32969 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32970 "%s: WDILowLevelIndCb is null", __func__);
32971 WDI_ASSERT(0);
32972 return WDI_STATUS_E_FAILURE;
32973 }
32974 return WDI_STATUS_SUCCESS;
32975} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32976
32977/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053032978 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
32979
32980 @param pWDICtx: pointer to the WLAN DAL context
32981 pEventData: pointer to the event information structure
32982
32983 @see
32984 @return Result of the function call
32985*/
32986WDI_Status
32987WDI_ProcessEXTScanSsidHotListResultInd
32988(
32989 WDI_ControlBlockType* pWDICtx,
32990 WDI_EventInfoType* pEventData
32991)
32992{
32993 WDI_LowLevelIndType wdiInd;
32994 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32995
32996 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32997 "%s: ", __func__);
32998
32999 /* sanity check */
33000 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33001 ( NULL == pEventData->pEventData))
33002 {
33003 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33004 "%s: Invalid parameters", __func__);
33005 WDI_ASSERT(0);
33006 return WDI_STATUS_E_FAILURE;
33007 }
33008
33009 /* Fill in the indication parameters */
33010 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
33011
33012 /* extract response and send it to UMAC */
33013 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
33014
33015 /* Notify UMAC */
33016 if (pWDICtx->wdiLowLevelIndCB)
33017 {
33018 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
33019 }
33020 else
33021 {
33022 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33023 "%s: WDILowLevelIndCb is null", __func__);
33024 WDI_ASSERT(0);
33025 return WDI_STATUS_E_FAILURE;
33026 }
33027 return WDI_STATUS_SUCCESS;
33028} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
33029
33030
33031/**
Dino Mycle41bdc942014-06-10 11:30:24 +053033032 @brief WDI_EXTScanGetCapabilitiesReq
33033
33034 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
33035 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
33036 of the Req operation received from the device
33037 pUserData: user data will be passed back with the callback
33038
33039 @return SUCCESS or FAIL
33040*/
33041WDI_Status
33042WDI_EXTScanGetCapabilitiesReq(
33043 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
33044 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
33045 void* pUserData)
33046{
33047 WDI_EventInfoType wdiEventData;
33048
33049 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33050 "%s: %d ",__func__, __LINE__);
33051 /*------------------------------------------------------------------------
33052 Sanity Check
33053 ------------------------------------------------------------------------*/
33054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33055 {
33056 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33057 "WDI API call before module is initialized - Fail request");
33058
33059 return WDI_STATUS_E_NOT_ALLOWED;
33060 }
33061
33062 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
33063 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
33064 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
33065 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
33066 wdiEventData.pUserData = pUserData;
33067
33068 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33069}
33070
33071/**
33072 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
33073 Extended Scan Get Capability request to FW
33074
33075 @param pWDICtx : wdi context
33076 pEventData : indication data
33077
33078 @see
33079 @return none
33080*/
33081WDI_Status
33082WDI_ProcessEXTScanGetCapabilitiesReq
33083(
33084 WDI_ControlBlockType* pWDICtx,
33085 WDI_EventInfoType* pEventData
33086)
33087{
33088 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
33089 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33090 wpt_uint8* pSendBuffer = NULL;
33091 wpt_uint16 usSendSize = 0;
33092 wpt_uint16 usDataOffset = 0;
33093 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
33094
33095 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33096 "%s: %d Enter",__func__, __LINE__);
33097
33098 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33099 ( NULL == pEventData->pCBfnc ))
33100 {
33101 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33102 "%s: Invalid parameters", __func__);
33103 WDI_ASSERT(0);
33104 return WDI_STATUS_E_FAILURE;
33105 }
33106
33107 pwdiEXTScanGetCapabilitiesReqParams =
33108 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
33109 wdiEXTScanGetCapabilitiesRspCb =
33110 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
33111
33112 /*-----------------------------------------------------------------------
33113 Get message buffer
33114 ! TO DO : proper conversion into the HAL Message Request Format
33115 -----------------------------------------------------------------------*/
33116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33117 pWDICtx,
33118 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
33119 sizeof(halEXTScanGetCapReqParams),
33120 &pSendBuffer, &usDataOffset,
33121 &usSendSize))||
33122 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
33123 {
33124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33125 "Unable to get send buffer in %s %p %p %p", __func__,
33126 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
33127 wdiEXTScanGetCapabilitiesRspCb);
33128 WDI_ASSERT(0);
33129 return WDI_STATUS_E_FAILURE;
33130 }
33131
33132 halEXTScanGetCapReqParams.requestId =
33133 pwdiEXTScanGetCapabilitiesReqParams->requestId;
33134 halEXTScanGetCapReqParams.sessionId =
33135 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
33136
33137 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33138 " requestId %u "
33139 " sessionId %u ",
33140 halEXTScanGetCapReqParams.requestId,
33141 halEXTScanGetCapReqParams.sessionId);
33142
33143 wpalMemoryCopy(pSendBuffer+usDataOffset,
33144 &halEXTScanGetCapReqParams,
33145 sizeof(halEXTScanGetCapReqParams));
33146
33147 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33148
33149
33150 /*-------------------------------------------------------------------------
33151 Send EXTScan Stop Request to HAL
33152 -------------------------------------------------------------------------*/
33153 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33154 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
33155 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
33156}
33157
33158/**
33159 @brief WDI_EXTScanGetCachedResultsReq
33160
33161 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
33162 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
33163 of the Req operation received from the device
33164 pUserData: user data will be passed back with the callback
33165
33166 @return SUCCESS or FAIL
33167*/
33168
33169WDI_Status
33170WDI_EXTScanGetCachedResultsReq(
33171 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
33172 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
33173 void* pUserData)
33174{
33175 WDI_EventInfoType wdiEventData;
33176
33177 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33178 "%s: %d Enter",__func__, __LINE__);
33179 /*------------------------------------------------------------------------
33180 Sanity Check
33181 ------------------------------------------------------------------------*/
33182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33183 {
33184 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33185 "WDI API call before module is initialized - Fail request");
33186
33187 return WDI_STATUS_E_NOT_ALLOWED;
33188 }
33189
33190 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
33191 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
33192 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
33193 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
33194 wdiEventData.pUserData = pUserData;
33195
33196 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33197}
33198
33199/**
33200 @brief WDI_ProcessEXTScanGetCachedResultsReq -
33201 Extended Scan Get Cached Result request to FW
33202
33203 @param pWDICtx : wdi context
33204 pEventData : indication data
33205
33206 @see
33207 @return none
33208*/
33209WDI_Status
33210WDI_ProcessEXTScanGetCachedResultsReq
33211(
33212 WDI_ControlBlockType* pWDICtx,
33213 WDI_EventInfoType* pEventData
33214)
33215{
33216 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
33217 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
33218 wpt_uint8* pSendBuffer = NULL;
33219 wpt_uint16 usSendSize = 0;
33220 wpt_uint16 usDataOffset = 0;
33221 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
33222
33223 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33224 "%s: %d Enter",__func__, __LINE__);
33225
33226 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33227 ( NULL == pEventData->pCBfnc ))
33228 {
33229 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33230 "%s: Invalid parameters", __func__);
33231 WDI_ASSERT(0);
33232 return WDI_STATUS_E_FAILURE;
33233 }
33234
33235 pwdiEXTScanGetCachedResultsReqParams =
33236 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
33237 wdiEXTScanGetCachedResultsCb =
33238 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
33239
33240 /*-----------------------------------------------------------------------
33241 Get message buffer
33242 ! TO DO : proper conversion into the HAL Message Request Format
33243 -----------------------------------------------------------------------*/
33244 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33245 pWDICtx,
33246 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
33247 sizeof(tHalExtScanGetScanReq),
33248 &pSendBuffer, &usDataOffset,
33249 &usSendSize))||
33250 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
33251 {
33252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33253 "Unable to get send buffer in %s %p %p %p", __func__,
33254 pEventData, pwdiEXTScanGetCachedResultsReqParams,
33255 wdiEXTScanGetCachedResultsCb);
33256 WDI_ASSERT(0);
33257 return WDI_STATUS_E_FAILURE;
33258 }
33259
33260 halEXTScanGetScanReqParams.requestId =
33261 pwdiEXTScanGetCachedResultsReqParams->requestId;
33262 halEXTScanGetScanReqParams.sessionId =
33263 pwdiEXTScanGetCachedResultsReqParams->sessionId;
33264 halEXTScanGetScanReqParams.flush =
33265 pwdiEXTScanGetCachedResultsReqParams->flush;
33266
33267 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33268 " requestId %u "
33269 " sessionId %u "
33270 " flush %u ",
33271 halEXTScanGetScanReqParams.requestId,
33272 halEXTScanGetScanReqParams.sessionId,
33273 halEXTScanGetScanReqParams.flush);
33274
33275 wpalMemoryCopy(pSendBuffer+usDataOffset,
33276 &halEXTScanGetScanReqParams,
33277 sizeof(halEXTScanGetScanReqParams));
33278
33279 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33280
33281
33282 /*-------------------------------------------------------------------------
33283 Send EXTScan Stop Request to HAL
33284 -------------------------------------------------------------------------*/
33285 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33286 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
33287 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
33288}
33289
33290/**
33291 @brief WDI_EXTScanStopReq
33292
33293 @param WDI_EXTScanStopReqParams: Req parameter for the FW
33294 WDI_EXTScanStopRspCb: callback for passing back the response
33295 of the Req operation received from the device
33296 pUserData: user data will be passed back with the callback
33297
33298 @return SUCCESS or FAIL
33299*/
33300WDI_Status
33301WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
33302 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
33303 void* pUserData)
33304{
33305 WDI_EventInfoType wdiEventData;
33306
33307 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33308 "%s: %d ",__func__, __LINE__);
33309 /*------------------------------------------------------------------------
33310 Sanity Check
33311 ------------------------------------------------------------------------*/
33312 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33313 {
33314 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33315 "WDI API call before module is initialized - Fail request");
33316
33317 return WDI_STATUS_E_NOT_ALLOWED;
33318 }
33319
33320 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
33321 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
33322 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
33323 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
33324 wdiEventData.pUserData = pUserData;
33325
33326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33327}
33328
33329/**
33330 @brief WDI_ProcessEXTScanStopReq -
33331 Extended Scan Stop request to FW
33332
33333 @param pWDICtx : wdi context
33334 pEventData : indication data
33335
33336 @see
33337 @return none
33338*/
33339WDI_Status
33340WDI_ProcessEXTScanStopReq
33341(
33342 WDI_ControlBlockType* pWDICtx,
33343 WDI_EventInfoType* pEventData
33344)
33345{
33346 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33347 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33348 wpt_uint8* pSendBuffer = NULL;
33349 wpt_uint16 usSendSize = 0;
33350 wpt_uint16 usDataOffset = 0;
33351 tHalExtScanStopReq halEXTScanStopReqParams;
33352
33353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33354 "%s: %d ",__func__, __LINE__);
33355
33356 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33357 ( NULL == pEventData->pCBfnc ))
33358 {
33359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33360 "%s: Invalid parameters", __func__);
33361 WDI_ASSERT(0);
33362 return WDI_STATUS_E_FAILURE;
33363 }
33364
33365 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33366 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33367
33368 /*-----------------------------------------------------------------------
33369 Get message buffer
33370 ! TO DO : proper conversion into the HAL Message Request Format
33371 -----------------------------------------------------------------------*/
33372 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33373 pWDICtx,
33374 WDI_EXTSCAN_STOP_REQ,
33375 sizeof(tHalExtScanStopReq),
33376 &pSendBuffer, &usDataOffset,
33377 &usSendSize))||
33378 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33379 {
33380 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33381 "Unable to get send buffer in %s %p %p %p", __func__,
33382 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33383 WDI_ASSERT(0);
33384 return WDI_STATUS_E_FAILURE;
33385 }
33386
33387 halEXTScanStopReqParams.requestId =
33388 pwdiEXTScanStopReqParams->requestId;
33389 halEXTScanStopReqParams.sessionId =
33390 pwdiEXTScanStopReqParams->sessionId;
33391
33392 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33393 " halEXTScanStopReqParams.requestId %u "
33394 " halEXTScanStopReqParams.sessionId %u ",
33395 halEXTScanStopReqParams.requestId,
33396 halEXTScanStopReqParams.sessionId);
33397
33398 wpalMemoryCopy(pSendBuffer+usDataOffset,
33399 &halEXTScanStopReqParams,
33400 sizeof(halEXTScanStopReqParams));
33401
33402 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33403
33404
33405 /*-------------------------------------------------------------------------
33406 Send EXTScan Stop Request to HAL
33407 -------------------------------------------------------------------------*/
33408 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33409 wdiEXTScanStopCb, pEventData->pUserData,
33410 WDI_EXTSCAN_STOP_RSP);
33411}
33412
33413/**
33414 @brief WDI_EXTScanStartReq
33415
33416 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33417 WDI_EXTScanStartRspCb: callback for passing back the response
33418 of the Req operation received from the device
33419 pUserData: user data will be passed back with the callback
33420
33421 @return SUCCESS or FAIL
33422*/
33423WDI_Status
33424WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33425 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33426 void* pUserData)
33427{
33428 WDI_EventInfoType wdiEventData;
33429
33430 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33431 "%s: %d Enter",__func__, __LINE__);
33432 /*------------------------------------------------------------------------
33433 Sanity Check
33434 ------------------------------------------------------------------------*/
33435 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33436 {
33437 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33438 "WDI API call before module is initialized - Fail request");
33439
33440 return WDI_STATUS_E_NOT_ALLOWED;
33441 }
33442
33443 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33444 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33445 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33446 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33447 wdiEventData.pUserData = pUserData;
33448
33449 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33450}
33451
33452/**
33453 @brief WDI_ProcessEXTScanStartReq -
33454 Extended Scan Start Request to FW
33455
33456 @param pWDICtx : wdi context
33457 pEventData : indication data
33458
33459 @see
33460 @return none
33461*/
33462WDI_Status
33463WDI_ProcessEXTScanStartReq
33464(
33465 WDI_ControlBlockType* pWDICtx,
33466 WDI_EventInfoType* pEventData
33467)
33468{
33469 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33470 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33471 wpt_uint8* pSendBuffer = NULL;
33472 wpt_uint16 usSendSize = 0;
33473 wpt_uint16 usDataOffset = 0;
33474 tpHalExtScanStartReq pHalExtScanStartReqParams;
33475 int i = 0;
33476 int j = 0;
33477
33478 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33479 "%s: %d Enter",__func__, __LINE__);
33480
33481 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33482 ( NULL == pEventData->pCBfnc ))
33483 {
33484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33485 "%s: Invalid parameters", __func__);
33486 WDI_ASSERT(0);
33487 return WDI_STATUS_E_FAILURE;
33488 }
33489
33490 pwdiEXTScanStartReqParams =
33491 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33492 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33493
33494 /*-----------------------------------------------------------------------
33495 Get message buffer
33496 ! TO DO : proper conversion into the HAL Message Request Format
33497 -----------------------------------------------------------------------*/
33498 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33499 pWDICtx,
33500 WDI_EXTSCAN_START_REQ,
33501 sizeof(tHalExtScanStartReq),
33502 &pSendBuffer, &usDataOffset,
33503 &usSendSize))||
33504 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33505 {
33506 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33507 "Unable to get send buffer in %s %p %p %p", __func__,
33508 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33509 WDI_ASSERT(0);
33510 return WDI_STATUS_E_FAILURE;
33511 }
33512
33513 pHalExtScanStartReqParams =
33514 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33515
33516 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33517 pHalExtScanStartReqParams->maxApPerScan =
33518 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033519 pHalExtScanStartReqParams->reportThresholdPercent =
33520 pwdiEXTScanStartReqParams->reportThresholdPercent;
33521 pHalExtScanStartReqParams->reportThresholdNumScans =
33522 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053033523 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33524 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33525 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033526 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053033527
33528 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33529 {
33530 pHalExtScanStartReqParams->bucketData[i].bucketId =
33531 pwdiEXTScanStartReqParams->buckets[i].bucket;
33532 pHalExtScanStartReqParams->bucketData[i].channelBand =
33533 pwdiEXTScanStartReqParams->buckets[i].band;
33534 pHalExtScanStartReqParams->bucketData[i].period =
33535 pwdiEXTScanStartReqParams->buckets[i].period;
33536 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33537 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033538 pHalExtScanStartReqParams->bucketData[i].max_period =
33539 pwdiEXTScanStartReqParams->buckets[i].max_period;
33540 pHalExtScanStartReqParams->bucketData[i].exponent =
33541 pwdiEXTScanStartReqParams->buckets[i].exponent;
33542 pHalExtScanStartReqParams->bucketData[i].step_count =
33543 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053033544 pHalExtScanStartReqParams->bucketData[i].numChannels =
33545 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33546
33547 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33548 {
33549 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33550 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33551 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33552 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33553 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33554 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33555 }
33556
33557 }
33558
33559
33560 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033561 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
33562 "reportThresholdNumScans %u requestId %u"
33563 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033564 pHalExtScanStartReqParams->basePeriod,
33565 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033566 pHalExtScanStartReqParams->reportThresholdPercent,
33567 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053033568 pHalExtScanStartReqParams->requestId,
33569 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033570 pHalExtScanStartReqParams->numBuckets,
33571 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053033572
33573 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33574 {
33575 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33576 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033577 " reportEvents %u numChannels %u "
33578 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053033579 pHalExtScanStartReqParams->bucketData[i].bucketId,
33580 pHalExtScanStartReqParams->bucketData[i].channelBand,
33581 pHalExtScanStartReqParams->bucketData[i].period,
33582 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033583 pHalExtScanStartReqParams->bucketData[i].numChannels,
33584 pHalExtScanStartReqParams->bucketData[i].max_period,
33585 pHalExtScanStartReqParams->bucketData[i].exponent,
33586 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053033587
33588 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33589 {
33590 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33591 "%d) channel %u dwellTimeMs %u passive %u ",j,
33592 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33593 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33594 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33595 }
33596
33597 }
33598
Dino Mycle41bdc942014-06-10 11:30:24 +053033599 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33600
33601 /*-------------------------------------------------------------------------
33602 Send EXTSCAN Start Request to HAL
33603 -------------------------------------------------------------------------*/
33604 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33605 wdiEXTScanStartCb, pEventData->pUserData,
33606 WDI_EXTSCAN_START_RSP);
33607}
33608
33609/**
33610 @brief WDI_EXTScanSetBSSIDHotlistReq
33611
33612 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33613 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33614 of the Req operation received from the device
33615 pUserData: user data will be passed back with the callback
33616
33617 @return SUCCESS or FAIL
33618*/
33619WDI_Status
33620WDI_EXTScanSetBSSIDHotlistReq(
33621 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33622 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33623 void* pUserData)
33624{
33625 WDI_EventInfoType wdiEventData;
33626
33627 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33628 "%s: %d Enter ",__func__, __LINE__);
33629 /*------------------------------------------------------------------------
33630 Sanity Check
33631 ------------------------------------------------------------------------*/
33632 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33633 {
33634 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33635 "WDI API call before module is initialized - Fail request");
33636
33637 return WDI_STATUS_E_NOT_ALLOWED;
33638 }
33639
33640 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33641 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33642 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33643 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33644 wdiEventData.pUserData = pUserData;
33645
33646 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33647}
33648
33649/**
33650 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33651 Extended Scan Set BSSSID Hotlist Request to FW
33652
33653 @param pWDICtx : wdi context
33654 pEventData : indication data
33655
33656 @see
33657 @return none
33658*/
33659WDI_Status
33660WDI_ProcessEXTScanSetBSSIDHotlistReq
33661(
33662 WDI_ControlBlockType* pWDICtx,
33663 WDI_EventInfoType* pEventData
33664)
33665{
33666 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33667 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33668 wpt_uint8* pSendBuffer = NULL;
33669 wpt_uint16 usSendSize = 0;
33670 wpt_uint16 usDataOffset = 0;
33671 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33672 int i;
33673
33674 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33675 "%s: %d Enter",__func__, __LINE__);
33676
33677 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33678 ( NULL == pEventData->pCBfnc ))
33679 {
33680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33681 "%s: Invalid parameters", __func__);
33682 WDI_ASSERT(0);
33683 return WDI_STATUS_E_FAILURE;
33684 }
33685
33686 pwdiEXTScanSetBSSIDHotlistReqParams =
33687 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33688 wdiEXTScanSetBSSIDHotlistRspCb =
33689 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33690
33691 /*-----------------------------------------------------------------------
33692 Get message buffer
33693 ! TO DO : proper conversion into the HAL Message Request Format
33694 -----------------------------------------------------------------------*/
33695 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33696 pWDICtx,
33697 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33698 sizeof(tHalBssidHotlistSetReq),
33699 &pSendBuffer, &usDataOffset,
33700 &usSendSize))||
33701 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33702 {
33703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33704 "Unable to get send buffer in %s %p %p %p", __func__,
33705 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33706 wdiEXTScanSetBSSIDHotlistRspCb);
33707 WDI_ASSERT(0);
33708 return WDI_STATUS_E_FAILURE;
33709 }
33710 pHalBssidHotlistSetReqParams =
33711 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33712
33713 pHalBssidHotlistSetReqParams->requestId =
33714 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33715
33716 pHalBssidHotlistSetReqParams->sessionId =
33717 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33718
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033719 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
33720 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
33721
33722 pHalBssidHotlistSetReqParams->numBssid =
33723 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053033724
33725 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33726
33727 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33728 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33729 WDI_MAC_ADDR_LEN);
33730
33731 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33732 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33733
33734 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33735 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33736
Dino Mycle41bdc942014-06-10 11:30:24 +053033737 }
33738
33739 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033740 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033741 pHalBssidHotlistSetReqParams->requestId,
33742 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033743 pHalBssidHotlistSetReqParams->numBssid,
33744 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053033745
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033746 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053033747
33748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033749 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053033750 __func__, __LINE__, i,
33751 pHalBssidHotlistSetReqParams->ap[i].bssid,
33752 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033753 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053033754
33755 }
33756
33757 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33758
33759
33760 /*-------------------------------------------------------------------------
33761 Send EXTScan Stop Request to HAL
33762 -------------------------------------------------------------------------*/
33763 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33764 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33765 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33766}
33767
33768/**
33769 @brief WDI_EXTScanResetBSSIDHotlistReq
33770
33771 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33772 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33773 of the Req operation received from the device
33774 pUserData: user data will be passed back with the callback
33775
33776 @return SUCCESS or FAIL
33777*/
33778WDI_Status
33779WDI_EXTScanResetBSSIDHotlistReq(
33780 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33781 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33782 void* pUserData)
33783{
33784 WDI_EventInfoType wdiEventData;
33785
33786 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33787 "%s: %d",__func__, __LINE__);
33788 /*------------------------------------------------------------------------
33789 Sanity Check
33790 ------------------------------------------------------------------------*/
33791 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33792 {
33793 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33794 "WDI API call before module is initialized - Fail request");
33795
33796 return WDI_STATUS_E_NOT_ALLOWED;
33797 }
33798
33799 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33800 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33801 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33802 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33803 wdiEventData.pUserData = pUserData;
33804
33805 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33806}
33807
33808/**
33809 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33810 Extended Scan reset BSSID hotlist Request to FW
33811
33812 @param pWDICtx : wdi context
33813 pEventData : indication data
33814
33815 @see
33816 @return none
33817*/
33818WDI_Status
33819WDI_ProcessEXTScanResetBSSIDHotlistReq
33820(
33821 WDI_ControlBlockType* pWDICtx,
33822 WDI_EventInfoType* pEventData
33823)
33824{
33825 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33826 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33827 wpt_uint8* pSendBuffer = NULL;
33828 wpt_uint16 usSendSize = 0;
33829 wpt_uint16 usDataOffset = 0;
33830 tpHalHotlistResetReq pHalHotlistResetReqParams;
33831
33832 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33833 "%s: %d",__func__, __LINE__);
33834
33835 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33836 ( NULL == pEventData->pCBfnc ))
33837 {
33838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33839 "%s: Invalid parameters", __func__);
33840 WDI_ASSERT(0);
33841 return WDI_STATUS_E_FAILURE;
33842 }
33843
33844 pwdiEXTScanResetBSSIDHotlistReqParams =
33845 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33846 wdiEXTScanResetBSSIDHotlistRspCb =
33847 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33848
33849 /*-----------------------------------------------------------------------
33850 Get message buffer
33851 ! TO DO : proper conversion into the HAL Message Request Format
33852 -----------------------------------------------------------------------*/
33853 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33854 pWDICtx,
33855 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33856 sizeof(tHalHotlistResetReq),
33857 &pSendBuffer, &usDataOffset,
33858 &usSendSize))||
33859 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33860 {
33861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33862 "Unable to get send buffer in %s %p %p %p", __func__,
33863 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33864 wdiEXTScanResetBSSIDHotlistRspCb);
33865 WDI_ASSERT(0);
33866 return WDI_STATUS_E_FAILURE;
33867 }
33868 pHalHotlistResetReqParams =
33869 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33870
33871 pHalHotlistResetReqParams->requestId =
33872 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33873
33874 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33875
33876 /*-------------------------------------------------------------------------
33877 Send EXTScan Stop Request to HAL
33878 -------------------------------------------------------------------------*/
33879 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33880 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33881 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33882}
33883
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053033884
33885/**
33886 @brief WDI_EXTScanSetSSIDHotlistReq
33887
33888 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
33889 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
33890 of the Req operation received from the device
33891 pUserData: user data will be passed back with the callback
33892
33893 @return SUCCESS or FAIL
33894*/
33895WDI_Status
33896WDI_EXTScanSetSSIDHotlistReq(
33897 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
33898 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
33899 void* pUserData)
33900{
33901 WDI_EventInfoType wdiEventData;
33902
33903 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33904 "%s: %d Enter ",__func__, __LINE__);
33905 /*------------------------------------------------------------------------
33906 Sanity Check
33907 ------------------------------------------------------------------------*/
33908 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33909 {
33910 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33911 "WDI API call before module is initialized - Fail request");
33912
33913 return WDI_STATUS_E_NOT_ALLOWED;
33914 }
33915
33916 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
33917 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
33918 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
33919 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
33920 wdiEventData.pUserData = pUserData;
33921
33922 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33923}
33924
33925/**
33926 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
33927 Extended Scan Set SSSID Hotlist Request to FW
33928
33929 @param pWDICtx : wdi context
33930 pEventData : indication data
33931
33932 @see
33933 @return none
33934*/
33935WDI_Status
33936WDI_ProcessEXTScanSetSSIDHotlistReq
33937(
33938 WDI_ControlBlockType* pWDICtx,
33939 WDI_EventInfoType* pEventData
33940)
33941{
33942 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
33943 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
33944 wpt_uint8* pSendBuffer = NULL;
33945 wpt_uint16 usSendSize = 0;
33946 wpt_uint16 usDataOffset = 0;
33947 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
33948 int i;
33949
33950 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33951 "%s: %d Enter",__func__, __LINE__);
33952
33953 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33954 ( NULL == pEventData->pCBfnc ))
33955 {
33956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33957 "%s: Invalid parameters", __func__);
33958 WDI_ASSERT(0);
33959 return WDI_STATUS_E_FAILURE;
33960 }
33961
33962 pwdiEXTScanSetSSIDHotlistReqParams =
33963 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
33964 wdiEXTScanSetSSIDHotlistRspCb =
33965 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
33966
33967 /*-----------------------------------------------------------------------
33968 Get message buffer
33969 ! TO DO : proper conversion into the HAL Message Request Format
33970 -----------------------------------------------------------------------*/
33971 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33972 pWDICtx,
33973 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
33974 sizeof(tHalSsidHotlistSetReq),
33975 &pSendBuffer, &usDataOffset,
33976 &usSendSize))||
33977 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
33978 {
33979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33980 "Unable to get send buffer in %s %p %p %p", __func__,
33981 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
33982 wdiEXTScanSetSSIDHotlistRspCb);
33983 WDI_ASSERT(0);
33984 return WDI_STATUS_E_FAILURE;
33985 }
33986 pHalSsidHotlistSetReqParams =
33987 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
33988
33989 pHalSsidHotlistSetReqParams->requestId =
33990 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
33991
33992 pHalSsidHotlistSetReqParams->sessionId =
33993 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
33994
33995 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
33996 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
33997
33998 pHalSsidHotlistSetReqParams->numSsid =
33999 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
34000
34001 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
34002
34003 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
34004 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
34005 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
34006 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
34007
34008 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
34009 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
34010
34011 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
34012 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
34013
34014 pHalSsidHotlistSetReqParams->ssid[i].band =
34015 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
34016 }
34017
34018 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34019 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
34020 pHalSsidHotlistSetReqParams->requestId,
34021 pHalSsidHotlistSetReqParams->sessionId,
34022 pHalSsidHotlistSetReqParams->numSsid,
34023 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
34024
34025 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
34026
34027 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34028 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
34029 __func__, __LINE__, i,
34030 pHalSsidHotlistSetReqParams->ssid[i].ssid,
34031 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
34032 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
34033 pHalSsidHotlistSetReqParams->ssid[i].band);
34034 }
34035
34036 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34037
34038
34039 /*-------------------------------------------------------------------------
34040 Send EXTScan Stop Request to HAL
34041 -------------------------------------------------------------------------*/
34042 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34043 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
34044 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
34045}
34046
34047/**
34048 @brief WDI_EXTScanResetSSIDHotlistReq
34049
34050 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
34051 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
34052 of the Req operation received from the device
34053 pUserData: user data will be passed back with the callback
34054
34055 @return SUCCESS or FAIL
34056*/
34057WDI_Status
34058WDI_EXTScanResetSSIDHotlistReq(
34059 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
34060 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
34061 void* pUserData)
34062{
34063 WDI_EventInfoType wdiEventData;
34064
34065 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34066 "%s: %d",__func__, __LINE__);
34067 /*------------------------------------------------------------------------
34068 Sanity Check
34069 ------------------------------------------------------------------------*/
34070 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34071 {
34072 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34073 "WDI API call before module is initialized - Fail request");
34074
34075 return WDI_STATUS_E_NOT_ALLOWED;
34076 }
34077
34078 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
34079 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
34080 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
34081 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
34082 wdiEventData.pUserData = pUserData;
34083
34084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34085}
34086
34087/**
34088 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
34089 Extended Scan reset SSID hotlist Request to FW
34090
34091 @param pWDICtx : wdi context
34092 pEventData : indication data
34093
34094 @see
34095 @return none
34096*/
34097WDI_Status
34098WDI_ProcessEXTScanResetSSIDHotlistReq
34099(
34100 WDI_ControlBlockType* pWDICtx,
34101 WDI_EventInfoType* pEventData
34102)
34103{
34104 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
34105 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34106 wpt_uint8* pSendBuffer = NULL;
34107 wpt_uint16 usSendSize = 0;
34108 wpt_uint16 usDataOffset = 0;
34109 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
34110
34111 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34112 "%s: %d",__func__, __LINE__);
34113
34114 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34115 ( NULL == pEventData->pCBfnc ))
34116 {
34117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34118 "%s: Invalid parameters", __func__);
34119 WDI_ASSERT(0);
34120 return WDI_STATUS_E_FAILURE;
34121 }
34122
34123 pwdiEXTScanResetSSIDHotlistReqParams =
34124 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
34125 wdiEXTScanResetSSIDHotlistRspCb =
34126 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
34127
34128 /*-----------------------------------------------------------------------
34129 Get message buffer
34130 ! TO DO : proper conversion into the HAL Message Request Format
34131 -----------------------------------------------------------------------*/
34132 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34133 pWDICtx,
34134 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
34135 sizeof(tHalSsidHotlistResetReq),
34136 &pSendBuffer, &usDataOffset,
34137 &usSendSize))||
34138 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
34139 {
34140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34141 "Unable to get send buffer in %s %p %p %p", __func__,
34142 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
34143 wdiEXTScanResetSSIDHotlistRspCb);
34144 WDI_ASSERT(0);
34145 return WDI_STATUS_E_FAILURE;
34146 }
34147 pHalSsidHotlistResetReqParams =
34148 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
34149
34150 pHalSsidHotlistResetReqParams->requestId =
34151 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
34152
34153 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34154
34155 /*-------------------------------------------------------------------------
34156 Send RESET_HOTLIST_SSID Request to HAL
34157 -------------------------------------------------------------------------*/
34158 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34159 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
34160 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
34161}
34162
34163
Dino Mycle41bdc942014-06-10 11:30:24 +053034164/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053034165 @brief WDI_HighPriorityDataInfoInd
34166
34167 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
34168
34169 @return SUCCESS or FAIL
34170*/
34171WDI_Status
34172WDI_HighPriorityDataInfoInd
34173(
34174 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
34175)
34176{
34177 WDI_EventInfoType wdiEventData;
34178
34179 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34180 "%s: %d",__func__, __LINE__);
34181 /*------------------------------------------------------------------------
34182 Sanity Check
34183 ------------------------------------------------------------------------*/
34184 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34185 {
34186 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34187 "WDI API call before module is initialized - Fail request");
34188
34189 return WDI_STATUS_E_NOT_ALLOWED;
34190 }
34191
34192 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
34193 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
34194 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
34195 wdiEventData.pCBfnc = NULL;
34196 wdiEventData.pUserData = NULL;
34197
34198 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34199}
34200
34201/**
34202 @brief WDI_ProcessHighPriorityDataInfoInd -
34203 Send WFD indication to FW
34204
34205 @param pWDICtx : wdi context
34206 pEventData : indication data
34207
34208 @see
34209 @return none
34210*/
34211WDI_Status
34212WDI_ProcessHighPriorityDataInfoInd
34213(
34214 WDI_ControlBlockType* pWDICtx,
34215 WDI_EventInfoType* pEventData
34216)
34217{
34218 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
34219 wpt_uint8* pSendBuffer = NULL;
34220 wpt_uint16 usSendSize = 0;
34221 wpt_uint16 usDataOffset = 0;
34222 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
34223 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34224
34225 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34226 "%s: %d",__func__, __LINE__);
34227
34228 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34229 ( NULL == pEventData->pEventData))
34230 {
34231 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34232 "%s: Invalid parameters", __func__);
34233 WDI_ASSERT(0);
34234 return WDI_STATUS_E_FAILURE;
34235 }
34236
34237 pHighPriorityDataInfoIndParams =
34238 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
34239
34240 /*-----------------------------------------------------------------------
34241 Get message buffer
34242 -----------------------------------------------------------------------*/
34243 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34244 pWDICtx,
34245 WDI_HIGH_PRIORITY_DATA_INFO_IND,
34246 sizeof(tHalHighPriorityDataInfoInd),
34247 &pSendBuffer, &usDataOffset,
34248 &usSendSize))||
34249 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
34250 {
34251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34252 "Unable to get send buffer in %s %p %p", __func__,
34253 pEventData, pHighPriorityDataInfoIndParams);
34254 WDI_ASSERT(0);
34255 return WDI_STATUS_E_FAILURE;
34256 }
34257 pHalHighPriorityDataInfoIndParams =
34258 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
34259
34260 pHalHighPriorityDataInfoIndParams->pause =
34261 pHighPriorityDataInfoIndParams->pause;
34262
34263 pWDICtx->pReqStatusUserData = NULL;
34264 pWDICtx->pfncRspCB = NULL;
34265
34266 /*-------------------------------------------------------------------------
34267 Send HIGH_PRIORITY_DATA_INFO Request to HAL
34268 -------------------------------------------------------------------------*/
34269 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34270 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34271}
34272
34273/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034274 @brief Process Extended Scan Start Rsp function (called when a response
34275 is being received over the bus from HAL)
34276
34277 @param pWDICtx: pointer to the WLAN DAL context
34278 pEventData: pointer to the event information structure
34279
34280 @see
34281 @return Result of the function call
34282*/
34283WDI_Status
34284WDI_ProcessEXTScanStartRsp
34285(
34286 WDI_ControlBlockType* pWDICtx,
34287 WDI_EventInfoType* pEventData
34288)
34289{
34290 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
34291
34292 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34293 "%s: %d",__func__, __LINE__);
34294 /*-------------------------------------------------------------------------
34295 Sanity check
34296 -------------------------------------------------------------------------*/
34297 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34298 ( NULL == pEventData->pEventData))
34299 {
34300 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34301 "%s: Invalid parameters", __func__);
34302 WDI_ASSERT(0);
34303 return WDI_STATUS_E_FAILURE;
34304 }
34305
34306 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34307 if ( NULL == wdiEXTScanStartRspCb)
34308 {
34309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34310 "%s: Callback function Invalid", __func__);
34311 WDI_ASSERT(0);
34312 return WDI_STATUS_E_FAILURE;
34313 }
34314
34315 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
34316
34317 return WDI_STATUS_SUCCESS;
34318}
34319
34320
34321/**
34322 @brief Process Extended Scan Stop Rsp function (called when a response
34323 is being received over the bus from HAL)
34324
34325 @param pWDICtx: pointer to the WLAN DAL context
34326 pEventData: pointer to the event information structure
34327
34328 @see
34329 @return Result of the function call
34330*/
34331WDI_Status
34332WDI_ProcessEXTScanStopRsp
34333(
34334 WDI_ControlBlockType* pWDICtx,
34335 WDI_EventInfoType* pEventData
34336)
34337{
34338 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
34339
34340 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34341 "%s: %d",__func__, __LINE__);
34342
34343
34344 /*-------------------------------------------------------------------------
34345 Sanity check
34346 -------------------------------------------------------------------------*/
34347 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34348 ( NULL == pEventData->pEventData))
34349 {
34350 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34351 "%s: Invalid parameters", __func__);
34352 WDI_ASSERT(0);
34353 return WDI_STATUS_E_FAILURE;
34354 }
34355
34356 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34357 if ( NULL == wdiEXTScanStopRspCb)
34358 {
34359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34360 "%s: Callback function Invalid", __func__);
34361 WDI_ASSERT(0);
34362 return WDI_STATUS_E_FAILURE;
34363 }
34364
34365 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34366
34367 return WDI_STATUS_SUCCESS;
34368}
34369
34370/**
34371 @brief Process Extended Scan Get Cached Rsp function (called when a response
34372 is being received over the bus from HAL)
34373
34374 @param pWDICtx: pointer to the WLAN DAL context
34375 pEventData: pointer to the event information structure
34376
34377 @see
34378 @return Result of the function call
34379*/
34380WDI_Status
34381WDI_ProcessEXTScanGetCachedResultsRsp
34382(
34383 WDI_ControlBlockType* pWDICtx,
34384 WDI_EventInfoType* pEventData
34385)
34386{
34387 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
34388
34389 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34390 "%s: %d Enter",__func__, __LINE__);
34391
34392
34393 /*-------------------------------------------------------------------------
34394 Sanity check
34395 -------------------------------------------------------------------------*/
34396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34397 ( NULL == pEventData->pEventData))
34398 {
34399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34400 "%s: Invalid parameters", __func__);
34401 WDI_ASSERT(0);
34402 return WDI_STATUS_E_FAILURE;
34403 }
34404
34405 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34406 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
34407 {
34408 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34409 "%s: Callback function Invalid", __func__);
34410 WDI_ASSERT(0);
34411 return WDI_STATUS_E_FAILURE;
34412 }
34413
34414 wdiEXTScanGetCachedResultsRspCb(
34415 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34416
34417 return WDI_STATUS_SUCCESS;
34418}
34419
34420/**
34421 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
34422 is being received over the bus from HAL)
34423
34424 @param pWDICtx: pointer to the WLAN DAL context
34425 pEventData: pointer to the event information structure
34426
34427 @see
34428 @return Result of the function call
34429*/
34430WDI_Status
34431WDI_ProcessEXTScanGetCapabilitiesRsp
34432(
34433 WDI_ControlBlockType* pWDICtx,
34434 WDI_EventInfoType* pEventData
34435)
34436{
34437 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34438
34439 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34440 "%s: %d ",__func__, __LINE__);
34441
34442
34443 /*-------------------------------------------------------------------------
34444 Sanity check
34445 -------------------------------------------------------------------------*/
34446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34447 ( NULL == pEventData->pEventData))
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 wdiEXTScanGetCapabilitiesRspCb =
34456 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34457 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34458 {
34459 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34460 "%s: Callback function Invalid", __func__);
34461 WDI_ASSERT(0);
34462 return WDI_STATUS_E_FAILURE;
34463 }
34464
34465 wdiEXTScanGetCapabilitiesRspCb(
34466 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34467
34468 return WDI_STATUS_SUCCESS;
34469}
34470
34471/**
34472 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34473 response is being received over the bus from HAL)
34474
34475 @param pWDICtx: pointer to the WLAN DAL context
34476 pEventData: pointer to the event information structure
34477
34478 @see
34479 @return Result of the function call
34480*/
34481WDI_Status
34482WDI_ProcessEXTScanSetHotlistBSSIDRsp
34483(
34484 WDI_ControlBlockType* pWDICtx,
34485 WDI_EventInfoType* pEventData
34486)
34487{
34488 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34489
34490 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34491 "%s: %d ",__func__, __LINE__);
34492
34493
34494 /*-------------------------------------------------------------------------
34495 Sanity check
34496 -------------------------------------------------------------------------*/
34497 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34498 ( NULL == pEventData->pEventData))
34499 {
34500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34501 "%s: Invalid parameters", __func__);
34502 WDI_ASSERT(0);
34503 return WDI_STATUS_E_FAILURE;
34504 }
34505
34506 wdiEXTScanSetBSSIDHotlistRspCb =
34507 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34508 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34509 {
34510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34511 "%s: Callback function Invalid", __func__);
34512 WDI_ASSERT(0);
34513 return WDI_STATUS_E_FAILURE;
34514 }
34515
34516 wdiEXTScanSetBSSIDHotlistRspCb(
34517 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34518
34519 return WDI_STATUS_SUCCESS;
34520}
34521
34522/**
34523 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34524 when a response is being received over the bus from HAL)
34525
34526 @param pWDICtx: pointer to the WLAN DAL context
34527 pEventData: pointer to the event information structure
34528
34529 @see
34530 @return Result of the function call
34531*/
34532WDI_Status
34533WDI_ProcessEXTScanResetHotlistBSSIDRsp
34534(
34535 WDI_ControlBlockType* pWDICtx,
34536 WDI_EventInfoType* pEventData
34537)
34538{
34539 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34540
34541 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34542 "%s: %d ",__func__, __LINE__);
34543
34544
34545 /*-------------------------------------------------------------------------
34546 Sanity check
34547 -------------------------------------------------------------------------*/
34548 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34549 ( NULL == pEventData->pEventData))
34550 {
34551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34552 "%s: Invalid parameters", __func__);
34553 WDI_ASSERT(0);
34554 return WDI_STATUS_E_FAILURE;
34555 }
34556
34557 wdiEXTScanResetBSSIDHotlistRspCb =
34558 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34559 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34560 {
34561 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34562 "%s: Callback function Invalid", __func__);
34563 WDI_ASSERT(0);
34564 return WDI_STATUS_E_FAILURE;
34565 }
34566
34567 wdiEXTScanResetBSSIDHotlistRspCb(
34568 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34569
34570 return WDI_STATUS_SUCCESS;
34571}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034572
34573/**
34574 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
34575 response is being received over the bus from HAL)
34576
34577 @param pWDICtx: pointer to the WLAN DAL context
34578 pEventData: pointer to the event information structure
34579
34580 @see
34581 @return Result of the function call
34582*/
34583WDI_Status
34584WDI_ProcessEXTScanSetHotlistSSIDRsp
34585(
34586 WDI_ControlBlockType* pWDICtx,
34587 WDI_EventInfoType* pEventData
34588)
34589{
34590 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
34591
34592 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34593 "%s: %d ",__func__, __LINE__);
34594
34595
34596 /*-------------------------------------------------------------------------
34597 Sanity check
34598 -------------------------------------------------------------------------*/
34599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34600 ( NULL == pEventData->pEventData))
34601 {
34602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34603 "%s: Invalid parameters", __func__);
34604 WDI_ASSERT(0);
34605 return WDI_STATUS_E_FAILURE;
34606 }
34607
34608 wdiEXTScanSetSSIDHotlistRspCb =
34609 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34610 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
34611 {
34612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34613 "%s: Callback function Invalid", __func__);
34614 WDI_ASSERT(0);
34615 return WDI_STATUS_E_FAILURE;
34616 }
34617
34618 wdiEXTScanSetSSIDHotlistRspCb(
34619 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34620
34621 return WDI_STATUS_SUCCESS;
34622}
34623
34624
34625/**
34626 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34627 when a response is being received over the bus from HAL)
34628
34629 @param pWDICtx: pointer to the WLAN DAL context
34630 pEventData: pointer to the event information structure
34631
34632 @see
34633 @return Result of the function call
34634*/
34635WDI_Status
34636WDI_ProcessEXTScanResetHotlistSSIDRsp
34637(
34638 WDI_ControlBlockType* pWDICtx,
34639 WDI_EventInfoType* pEventData
34640)
34641{
34642 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34643
34644 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34645 "%s: %d ",__func__, __LINE__);
34646
34647
34648 /*-------------------------------------------------------------------------
34649 Sanity check
34650 -------------------------------------------------------------------------*/
34651 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34652 ( NULL == pEventData->pEventData))
34653 {
34654 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34655 "%s: Invalid parameters", __func__);
34656 WDI_ASSERT(0);
34657 return WDI_STATUS_E_FAILURE;
34658 }
34659
34660 wdiEXTScanResetSSIDHotlistRspCb =
34661 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34662 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
34663 {
34664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34665 "%s: Callback function Invalid", __func__);
34666 WDI_ASSERT(0);
34667 return WDI_STATUS_E_FAILURE;
34668 }
34669
34670 wdiEXTScanResetSSIDHotlistRspCb(
34671 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34672
34673 return WDI_STATUS_SUCCESS;
34674}
Dino Mycle41bdc942014-06-10 11:30:24 +053034675#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034676
34677/**
34678 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34679
34680 @param None
34681
34682 @see
34683
34684 @return Status of the request
34685*/
34686WDI_Status
34687WDI_SetSpoofMacAddrReq
34688(
34689 WDI_SpoofMacAddrInfoType* pWdiReq,
34690 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34691 void* pUserData)
34692{
34693 WDI_EventInfoType wdiEventData;
34694
34695 /*-------------------------------------------------------------------------
34696 Sanity Check
34697 ------------------------------------------------------------------------*/
34698 if (eWLAN_PAL_FALSE == gWDIInitialized)
34699 {
34700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34701 "WDI API call before module is initialized - Fail request!");
34702
34703 return WDI_STATUS_E_NOT_ALLOWED;
34704 }
34705
34706 /*-------------------------------------------------------------------------
34707 Fill in Event data and post to the Main FSM
34708 ------------------------------------------------------------------------*/
34709 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34710 wdiEventData.pEventData = pWdiReq;
34711 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34712 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34713 wdiEventData.pUserData = pUserData;
34714
34715 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34716}
34717
34718/**
34719 @brief Process SpoofMacAddr Request
34720
34721 @param pWDICtx: pointer to the WLAN DAL context
34722 pEventData: pointer to the event information structure
34723
34724 @see
34725 @return Result of the function call
34726*/
34727WDI_Status
34728WDI_ProcessSpoofMacAddrReq
34729(
34730 WDI_ControlBlockType* pWDICtx,
34731 WDI_EventInfoType* pEventData
34732)
34733{
34734 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34735 wpt_uint8* pSendBuffer = NULL;
34736 wpt_uint16 usDataOffset = 0;
34737 wpt_uint16 usSendSize = 0;
34738 WDI_Status wdiStatus;
34739 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34740 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34741
34742
34743 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34744 "%s: %d Enter",__func__, __LINE__);
34745
34746 /*-------------------------------------------------------------------------
34747 Sanity check
34748 -------------------------------------------------------------------------*/
34749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34750 ( NULL == pEventData->pEventData))
34751 {
34752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34753 "%s: Invalid parameters", __func__);
34754 WDI_ASSERT(0);
34755 return WDI_STATUS_E_FAILURE;
34756 }
34757 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34758
34759 /*-----------------------------------------------------------------------
34760 Get message buffer
34761 -----------------------------------------------------------------------*/
34762 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34763 WDI_SPOOF_MAC_ADDR_REQ,
34764 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34765 &pSendBuffer, &usDataOffset, &usSendSize))||
34766 (usSendSize < (usDataOffset +
34767 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34768 {
34769 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34770 "Unable to get send buffer in Process Spoof Mac Addr Req");
34771 WDI_ASSERT(0);
34772 return WDI_STATUS_E_FAILURE;
34773 }
34774
34775 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34776 wdiSpoofMacAddr->macAddr,
34777 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34778
34779 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34780
34781 wpalMemoryCopy( pSendBuffer+usDataOffset,
34782 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34783 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34784
34785 /*-------------------------------------------------------------------------
34786 Send Suspend Request to HAL
34787 -------------------------------------------------------------------------*/
34788 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34789 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34790
34791 return wdiStatus;
34792}
34793
34794/**
34795 @brief Process Spoof Mac Address Rsp function
34796 (called when a response is being received over the bus from HAL)
34797
34798 @param pWDICtx: pointer to the WLAN DAL context
34799 pEventData: pointer to the event information structure
34800
34801 @see
34802 @return Result of the function call
34803*/
34804WDI_Status
34805WDI_ProcessSpoofMacAddrRsp
34806(
34807 WDI_ControlBlockType* pWDICtx,
34808 WDI_EventInfoType* pEventData
34809)
34810{
34811 tMacSpoofedScanResp halRsp;
34812 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34813 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34814
34815 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34816 "%s: %d Enter",__func__, __LINE__);
34817
34818 /*-------------------------------------------------------------------------
34819 Sanity check
34820 -------------------------------------------------------------------------*/
34821 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34822 ( NULL == pEventData->pEventData))
34823 {
34824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34825 "%s: Invalid parameters", __func__);
34826 WDI_ASSERT(0);
34827 return WDI_STATUS_E_FAILURE;
34828 }
34829 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34830
34831 /*-------------------------------------------------------------------------
34832 Extract response and send it to UMAC
34833 -------------------------------------------------------------------------*/
34834 wpalMemoryCopy( &halRsp,
34835 pEventData->pEventData, sizeof(halRsp));
34836
34837 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34838
34839 /*Notify UMAC*/
34840 wdiSpoofMacAddrRspCb(
34841 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34842
34843 return WDI_STATUS_SUCCESS;
34844}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034845
34846/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034847 @brief Process Get Frame Log Rsp function
34848 (called when a response is being received over the bus from HAL)
34849
34850 @param pWDICtx: pointer to the WLAN DAL context
34851 pEventData: pointer to the event information structure
34852
34853 @see
34854 @return Result of the function call
34855*/
34856WDI_Status
34857WDI_ProcessGetFrameLogRsp
34858(
34859 WDI_ControlBlockType* pWDICtx,
34860 WDI_EventInfoType* pEventData
34861)
34862{
34863 tGetFrameLogResp halRsp;
34864 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34865 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34866
34867 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34868 "%s: %d Enter",__func__, __LINE__);
34869
34870 /*-------------------------------------------------------------------------
34871 Sanity check
34872 -------------------------------------------------------------------------*/
34873 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34874 ( NULL == pEventData->pEventData))
34875 {
34876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34877 "%s: Invalid parameters", __func__);
34878 WDI_ASSERT(0);
34879 return WDI_STATUS_E_FAILURE;
34880 }
34881
34882 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34883
34884 /*-------------------------------------------------------------------------
34885 Extract response and send it to UMAC
34886 -------------------------------------------------------------------------*/
34887 wpalMemoryCopy( &halRsp,
34888 pEventData->pEventData, sizeof(halRsp));
34889
34890 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34891
34892 /*Notify UMAC*/
34893 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34894
34895 return WDI_STATUS_SUCCESS;
34896}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053034897
34898/**
34899 @brief Process RssiMonitorStartReq Request
34900
34901 @param pWDICtx: pointer to the WLAN DAL context
34902 pEventData: pointer to the event information structure
34903
34904 @see
34905 @return Result of the function call
34906*/
34907WDI_Status
34908WDI_ProcessRssiMonitorStartReq
34909(
34910 WDI_ControlBlockType* pWDICtx,
34911 WDI_EventInfoType* pEventData
34912)
34913{
34914 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
34915 wpt_uint8* pSendBuffer = NULL;
34916 wpt_uint16 usDataOffset = 0;
34917 wpt_uint16 usSendSize = 0;
34918 WDI_Status wdiStatus;
34919 tHalStartRssimonitoringReq halStartRssiMonitorReq;
34920 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
34921
34922
34923 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34924 "%s: %d Enter",__func__, __LINE__);
34925
34926 /*-------------------------------------------------------------------------
34927 Sanity check
34928 ------------------------------------------------------------------------*/
34929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34930 ( NULL == pEventData->pEventData))
34931 {
34932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34933 "%s: Invalid parameters", __func__);
34934 WDI_ASSERT(0);
34935 return WDI_STATUS_E_FAILURE;
34936 }
34937
34938 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34939
34940 /*-----------------------------------------------------------------------
34941 Get message buffer
34942 -----------------------------------------------------------------------*/
34943 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34944 WDI_START_RSSI_MONITOR_REQ,
34945 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
34946 &pSendBuffer, &usDataOffset, &usSendSize))||
34947 (usSendSize < (usDataOffset +
34948 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
34949 {
34950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34951 "Unable to get send buffer in GetFrameLog Req");
34952 WDI_ASSERT(0);
34953 return WDI_STATUS_E_FAILURE;
34954 }
34955
34956 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
34957 wdiRssiMonitorStartReq->requestId;
34958
34959 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
34960 wdiRssiMonitorStartReq->minRssi;
34961
34962 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
34963 wdiRssiMonitorStartReq->maxRssi;
34964 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
34965 &(wdiRssiMonitorStartReq->currentBssId),
34966 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
34967
34968 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
34969
34970 wpalMemoryCopy(pSendBuffer+usDataOffset,
34971 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
34972 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
34973
34974 /*-------------------------------------------------------------------------
34975 Send Suspend Request to HAL
34976 ------------------------------------------------------------------------*/
34977 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34978 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
34979
34980 return wdiStatus;
34981}
34982
34983
34984/**
34985 @brief Process FWLoggingInit Request
34986
34987 @param pWDICtx: pointer to the WLAN DAL context
34988 pEventData: pointer to the event information structure
34989
34990 @see
34991 @return Result of the function call
34992*/
34993WDI_Status
34994WDI_ProcessRssiMonitorStopReq
34995(
34996 WDI_ControlBlockType* pWDICtx,
34997 WDI_EventInfoType* pEventData
34998)
34999{
35000 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
35001 wpt_uint8* pSendBuffer = NULL;
35002 wpt_uint16 usDataOffset = 0;
35003 wpt_uint16 usSendSize = 0;
35004 WDI_Status wdiStatus;
35005 tHalStopRssimonitoringReq halStopRssiMonitorReq;
35006 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
35007
35008
35009 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35010 "%s: %d Enter",__func__, __LINE__);
35011
35012 /*-------------------------------------------------------------------------
35013 Sanity check
35014 ------------------------------------------------------------------------*/
35015 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35016 ( NULL == pEventData->pEventData))
35017 {
35018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35019 "%s: Invalid parameters", __func__);
35020 WDI_ASSERT(0);
35021 return WDI_STATUS_E_FAILURE;
35022 }
35023 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
35024
35025 /*-----------------------------------------------------------------------
35026 Get message buffer
35027 -----------------------------------------------------------------------*/
35028 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35029 WDI_STOP_RSSI_MONITOR_REQ,
35030 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
35031 &pSendBuffer, &usDataOffset, &usSendSize))||
35032 (usSendSize < (usDataOffset +
35033 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
35034 {
35035 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35036 "Unable to get send buffer in GetFrameLog Req");
35037 WDI_ASSERT(0);
35038 return WDI_STATUS_E_FAILURE;
35039 }
35040
35041 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
35042 wdiRssiMonitorStopReq->requestId;
35043
35044 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
35045 &(wdiRssiMonitorStopReq->currentBssId),
35046 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
35047
35048 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
35049
35050 wpalMemoryCopy(pSendBuffer+usDataOffset,
35051 &halStopRssiMonitorReq.stopRssiMonitoringParams,
35052 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
35053
35054 /*-------------------------------------------------------------------------
35055 Send Suspend Request to HAL
35056 ------------------------------------------------------------------------*/
35057 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35058 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
35059
35060 return wdiStatus;
35061}
35062
35063/**
35064 @brief Process MgmtFrame Logging Init Rsp function
35065 (called when a response is being received over the bus from HAL)
35066
35067 @param pWDICtx: pointer to the WLAN DAL context
35068 pEventData: pointer to the event information structure
35069
35070 @see
35071 @return Result of the function call
35072*/
35073WDI_Status
35074WDI_ProcessRssiMonitorStopRsp
35075(
35076 WDI_ControlBlockType* pWDICtx,
35077 WDI_EventInfoType* pEventData
35078)
35079{
35080 tHalStopRssimonitoringRspParams halRsp;
35081 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
35082 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
35083
35084 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35085 "%s: %d Enter",__func__, __LINE__);
35086
35087 /*-------------------------------------------------------------------------
35088 Sanity check
35089 -------------------------------------------------------------------------*/
35090 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35091 ( NULL == pEventData->pEventData))
35092 {
35093 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35094 "%s: Invalid parameters", __func__);
35095 WDI_ASSERT(0);
35096 return WDI_STATUS_E_FAILURE;
35097 }
35098 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35099
35100 /*-------------------------------------------------------------------------
35101 Extract response and send it to UMAC
35102 -------------------------------------------------------------------------*/
35103 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35104
35105 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35106
35107 /*Notify UMAC*/
35108 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
35109
35110 return WDI_STATUS_SUCCESS;
35111}
35112
35113
35114/**
35115 @brief Process MgmtFrame Logging Init Rsp function
35116 (called when a response is being received over the bus from HAL)
35117
35118 @param pWDICtx: pointer to the WLAN DAL context
35119 pEventData: pointer to the event information structure
35120
35121 @see
35122 @return Result of the function call
35123*/
35124WDI_Status
35125WDI_ProcessRssiMonitorStartRsp
35126(
35127 WDI_ControlBlockType* pWDICtx,
35128 WDI_EventInfoType* pEventData
35129)
35130{
35131 tHalStartRssimonitoringRspParams halRsp;
35132 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
35133 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
35134
35135 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35136 "%s: %d Enter",__func__, __LINE__);
35137
35138 /*-------------------------------------------------------------------------
35139 Sanity check
35140 -------------------------------------------------------------------------*/
35141 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35142 ( NULL == pEventData->pEventData))
35143 {
35144 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35145 "%s: Invalid parameters", __func__);
35146 WDI_ASSERT(0);
35147 return WDI_STATUS_E_FAILURE;
35148 }
35149 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35150
35151 /*-------------------------------------------------------------------------
35152 Extract response and send it to UMAC
35153 -------------------------------------------------------------------------*/
35154 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35155
35156 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35157
35158 /*Notify UMAC*/
35159 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
35160
35161 return WDI_STATUS_SUCCESS;
35162}
35163
Siddharth Bhal64246172015-02-27 01:04:37 +053035164/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035165 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053035166
35167 @param pWDICtx: pointer to the WLAN DAL context
35168 pEventData: pointer to the event information structure
35169
35170 @see
35171 @return Result of the function call
35172*/
35173WDI_Status
35174WDI_ProcessGetFrameLogReq
35175(
35176 WDI_ControlBlockType* pWDICtx,
35177 WDI_EventInfoType* pEventData
35178)
35179{
35180 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
35181 wpt_uint8* pSendBuffer = NULL;
35182 wpt_uint16 usDataOffset = 0;
35183 wpt_uint16 usSendSize = 0;
35184 WDI_Status wdiStatus;
35185 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035186 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053035187
35188
35189 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35190 "%s: %d Enter",__func__, __LINE__);
35191
35192 /*-------------------------------------------------------------------------
35193 Sanity check
35194 ------------------------------------------------------------------------*/
35195 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35196 ( NULL == pEventData->pEventData))
35197 {
35198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35199 "%s: Invalid parameters", __func__);
35200 WDI_ASSERT(0);
35201 return WDI_STATUS_E_FAILURE;
35202 }
35203
35204 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
35205
35206 /*-----------------------------------------------------------------------
35207 Get message buffer
35208 -----------------------------------------------------------------------*/
35209 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35210 WDI_GET_FRAME_LOG_REQ,
35211 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
35212 &pSendBuffer, &usDataOffset, &usSendSize))||
35213 (usSendSize < (usDataOffset +
35214 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
35215 {
35216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35217 "Unable to get send buffer in GetFrameLog Req");
35218 WDI_ASSERT(0);
35219 return WDI_STATUS_E_FAILURE;
35220 }
35221
35222 halGetFrameLogReq.tGetFrameLogReqParams.flags =
35223 wdiGetFrameLogReq->flags;
35224
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035225 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053035226
35227 wpalMemoryCopy( pSendBuffer+usDataOffset,
35228 &halGetFrameLogReq.tGetFrameLogReqParams,
35229 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
35230
35231 /*-------------------------------------------------------------------------
35232 Send Suspend Request to HAL
35233 ------------------------------------------------------------------------*/
35234 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35235 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
35236
35237 return wdiStatus;
35238}
35239/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035240 @brief Process MgmtFrame Logging Init Rsp function
35241 (called when a response is being received over the bus from HAL)
35242
35243 @param pWDICtx: pointer to the WLAN DAL context
35244 pEventData: pointer to the event information structure
35245
35246 @see
35247 @return Result of the function call
35248*/
35249WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035250WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035251(
35252 WDI_ControlBlockType* pWDICtx,
35253 WDI_EventInfoType* pEventData
35254)
35255{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035256 tFWLoggingInitResp halRsp;
35257 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
35258 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035259
35260 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35261 "%s: %d Enter",__func__, __LINE__);
35262
35263 /*-------------------------------------------------------------------------
35264 Sanity check
35265 -------------------------------------------------------------------------*/
35266 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35267 ( NULL == pEventData->pEventData))
35268 {
35269 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35270 "%s: Invalid parameters", __func__);
35271 WDI_ASSERT(0);
35272 return WDI_STATUS_E_FAILURE;
35273 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035274 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035275
35276 /*-------------------------------------------------------------------------
35277 Extract response and send it to UMAC
35278 -------------------------------------------------------------------------*/
35279 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35280
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035281 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053035282 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035283
35284 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035285 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035286
35287 return WDI_STATUS_SUCCESS;
35288}
35289
c_manjeecfd1efb2015-09-25 19:32:34 +053035290/**
35291 @brief Process Fwr Mem Dump Rsp function
35292 (called when a response is being received over the bus from HAL)
35293
35294 @param pWDICtx: pointer to the WLAN DAL context
35295 pEventData: pointer to the event information structure
35296
35297 @see
35298 @return Result of the function call
35299*/
35300WDI_Status
35301 WDI_ProcessFwrMemDumpRsp
35302
35303(
35304 WDI_ControlBlockType* pWDICtx,
35305 WDI_EventInfoType* pEventData
35306)
35307{
35308 tHalFwMemoryDumpRespMsg halRsp;
35309 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35310 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
35311
35312 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35313 "%s: %d Enter",__func__, __LINE__);
35314
35315 /*-------------------------------------------------------------------------
35316 Sanity check
35317 -------------------------------------------------------------------------*/
35318 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35319 ( NULL == pEventData->pEventData))
35320 {
35321 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35322 "%s: Invalid parameters", __func__);
35323 WDI_ASSERT(0);
35324 return WDI_STATUS_E_FAILURE;
35325 }
35326 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
35327
35328 /*-------------------------------------------------------------------------
35329 Extract response and send it to UMAC
35330 -------------------------------------------------------------------------*/
c_manjee107ae7a2015-11-13 22:28:50 +053035331 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp.tFwMemoryDumpResp));
c_manjeecfd1efb2015-09-25 19:32:34 +053035332
35333 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
35334
35335 /*Notify UMAC*/
35336 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
35337
35338 return WDI_STATUS_SUCCESS;
35339}
35340
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035341WDI_Status
35342WDI_ProcessFWLoggingDXEdoneInd
35343(
35344 WDI_ControlBlockType* pWDICtx,
35345 WDI_EventInfoType* pEventData
35346)
35347{
35348 wpt_uint8* pSendBuffer = NULL;
35349 wpt_uint16 usDataOffset = 0;
35350 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035351 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053035352 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035353 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035354 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035355
35356
35357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35358
35359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35360 "%s", __func__);
35361
35362 /*-------------------------------------------------------------------------
35363 Sanity check
35364 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035365 if (NULL == pEventData ||
35366 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035367 {
35368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35369 "%s: Invalid parameters", __func__);
35370 WDI_ASSERT(0);
35371 return WDI_STATUS_E_FAILURE;
35372 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035373 pLogType = (wpt_uint32 *)pEventData->pEventData;
35374
Mihir Shete5affadc2015-05-29 20:54:57 +053035375 pLoggingSession = (WDI_DS_LoggingSessionType *)
35376 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
35377 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035378 /*-----------------------------------------------------------------------
35379 Get message buffer
35380 -----------------------------------------------------------------------*/
35381
35382 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35383 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053035384 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035385 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053035386 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035387 {
35388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35389 "Unable to get send buffer in RTS CTS ind %p ",
35390 pEventData);
35391 WDI_ASSERT(0);
35392 return WDI_STATUS_E_FAILURE;
35393 }
35394 FWLoggingDxeDoneIndParams =
35395 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
35396
35397 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053035398 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035399 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053035400
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053035401 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035402 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053035403
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035404 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053035405 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035406 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
35407
35408 pWDICtx->pReqStatusUserData = NULL;
35409 pWDICtx->pfncRspCB = NULL;
35410 /*-------------------------------------------------------------------------
35411 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
35412 -------------------------------------------------------------------------*/
35413 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35414 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35415}
35416
Sachin Ahuja715aafc2015-07-21 23:35:10 +053035417
35418/**
35419 @brief Process Fatal Event Logs Rsp function
35420 (called when a response is being received over the bus from HAL)
35421
35422 @param pWDICtx: pointer to the WLAN DAL context
35423 pEventData: pointer to the event information structure
35424
35425 @see
35426 @return Result of the function call
35427*/
35428WDI_Status
35429WDI_ProcessFatalEventLogsRsp
35430(
35431 WDI_ControlBlockType* pWDICtx,
35432 WDI_EventInfoType* pEventData
35433)
35434{
35435 tHalFatalEventLoggingRspParams halRsp;
35436 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35437 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
35438
35439 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35440 "%s: %d Enter",__func__, __LINE__);
35441
35442 /*-------------------------------------------------------------------------
35443 Sanity check
35444 -------------------------------------------------------------------------*/
35445 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35446 ( NULL == pEventData->pEventData))
35447 {
35448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35449 "%s: Invalid parameters", __func__);
35450 WDI_ASSERT(0);
35451 return WDI_STATUS_E_FAILURE;
35452 }
35453 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
35454
35455 /*-------------------------------------------------------------------------
35456 Extract response and send it to UMAC
35457 -------------------------------------------------------------------------*/
35458 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35459
35460 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
35461
35462 /*Notify UMAC*/
35463 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
35464 pWDICtx->pRspCBUserData);
35465
35466 return WDI_STATUS_SUCCESS;
35467}
35468
35469/**
35470 @brief Process FatalEventLogs Request
35471
35472 @param pWDICtx: pointer to the WLAN DAL context
35473 pEventData: pointer to the event information structure
35474
35475 @see
35476 @return Result of the function call
35477*/
35478
35479WDI_Status
35480WDI_ProcessFatalEventLogsReq
35481
35482(
35483 WDI_ControlBlockType* pWDICtx,
35484 WDI_EventInfoType* pEventData
35485)
35486{
35487 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
35488 wpt_uint8* pSendBuffer = NULL;
35489 wpt_uint16 usDataOffset = 0;
35490 wpt_uint16 usSendSize = 0;
35491 WDI_Status wdiStatus;
35492 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
35493 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35494
35495
35496 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35497 "%s: %d Enter",__func__, __LINE__);
35498
35499 /*-------------------------------------------------------------------------
35500 Sanity check
35501 ------------------------------------------------------------------------*/
35502 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35503 ( NULL == pEventData->pEventData))
35504 {
35505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35506 "%s: Invalid parameters", __func__);
35507 WDI_ASSERT(0);
35508 return WDI_STATUS_E_FAILURE;
35509 }
35510 wdiFatalEventLogsReq =
35511 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
35512
35513 /*-----------------------------------------------------------------------
35514 Get message buffer
35515 -----------------------------------------------------------------------*/
35516 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35517 WDI_FATAL_EVENT_LOGGING_REQ,
35518 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
35519 &pSendBuffer, &usDataOffset, &usSendSize))||
35520 (usSendSize < (usDataOffset +
35521 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
35522 {
35523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35524 "Unable to get send buffer in Fatal Event Req");
35525 WDI_ASSERT(0);
35526 return WDI_STATUS_E_FAILURE;
35527 }
35528 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
35529 wdiFatalEventLogsReq->reason_code;
35530
35531 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
35532
35533 wpalMemoryCopy( pSendBuffer+usDataOffset,
35534 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
35535 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
35536
35537 /*-------------------------------------------------------------------------
35538 Send Mgmt Logging Init Request to HAL
35539 ------------------------------------------------------------------------*/
35540 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35541 wdiFatalEventLogsRspCb, pEventData->pUserData,
35542 WDI_FATAL_EVENT_LOGGING_RSP);
35543
35544 return wdiStatus;
35545
35546
35547}
35548
35549
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035550/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035551 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035552
35553 @param pWDICtx: pointer to the WLAN DAL context
35554 pEventData: pointer to the event information structure
35555
35556 @see
35557 @return Result of the function call
35558*/
35559WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035560WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035561(
35562 WDI_ControlBlockType* pWDICtx,
35563 WDI_EventInfoType* pEventData
35564)
35565{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035566 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035567 wpt_uint8* pSendBuffer = NULL;
35568 wpt_uint16 usDataOffset = 0;
35569 wpt_uint16 usSendSize = 0;
35570 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035571 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
35572 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035573
35574
35575 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35576 "%s: %d Enter",__func__, __LINE__);
35577
35578 /*-------------------------------------------------------------------------
35579 Sanity check
35580 ------------------------------------------------------------------------*/
35581 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35582 ( NULL == pEventData->pEventData))
35583 {
35584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35585 "%s: Invalid parameters", __func__);
35586 WDI_ASSERT(0);
35587 return WDI_STATUS_E_FAILURE;
35588 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035589 wdiFWLoggingInitReq =
35590 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035591
35592 /*-----------------------------------------------------------------------
35593 Get message buffer
35594 -----------------------------------------------------------------------*/
35595 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035596 WDI_FW_LOGGING_INIT_REQ,
35597 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035598 &pSendBuffer, &usDataOffset, &usSendSize))||
35599 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035600 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035601 {
35602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35603 "Unable to get send buffer in Process Mgmt Logging Init Req");
35604 WDI_ASSERT(0);
35605 return WDI_STATUS_E_FAILURE;
35606 }
35607
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035608 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
35609 wdiFWLoggingInitReq->enableFlag;
35610 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
35611 wdiFWLoggingInitReq->frameSize;
35612 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
35613 wdiFWLoggingInitReq->frameType;
35614 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
35615 wdiFWLoggingInitReq->bufferMode;
35616 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
35617 wdiFWLoggingInitReq->continuousFrameLogging;
35618 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
35619 wdiFWLoggingInitReq->minLogBufferSize;
35620 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
35621 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053035622 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
35623 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
35624 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
35625 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035626
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035627 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035628
35629 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035630 &halFWLoggingInitReq.tFWLoggingInitReqParams,
35631 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035632
35633 /*-------------------------------------------------------------------------
35634 Send Mgmt Logging Init Request to HAL
35635 ------------------------------------------------------------------------*/
35636 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035637 wdiFWLoggingInitRspCb, pEventData->pUserData,
35638 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035639
35640 return wdiStatus;
35641}
35642
35643/**
c_manjeecfd1efb2015-09-25 19:32:34 +053035644 @brief Process FwrMemDumpReq Request
35645
35646 @param pWDICtx: pointer to the WLAN DAL context
35647 pEventData: pointer to the event information structure
35648
35649 @see
35650 @return Result of the function call
35651*/
35652WDI_Status
35653 WDI_ProcessFwrMemDumpReq
35654
35655(
35656 WDI_ControlBlockType* pWDICtx,
35657 WDI_EventInfoType* pEventData
35658)
35659{
35660 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
35661 wpt_uint8* pSendBuffer = NULL;
35662 wpt_uint16 usDataOffset = 0;
35663 wpt_uint16 usSendSize = 0;
35664 WDI_Status wdiStatus;
35665 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
35666 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35667
35668 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35669 "%s: %d Enter",__func__, __LINE__);
35670
35671 /*-------------------------------------------------------------------------
35672 Sanity check
35673 ------------------------------------------------------------------------*/
35674 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35675 ( NULL == pEventData->pEventData))
35676 {
35677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35678 "%s: Invalid parameters", __func__);
35679 WDI_ASSERT(0);
35680 return WDI_STATUS_E_FAILURE;
35681 }
35682
35683 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
35684
35685 /*-----------------------------------------------------------------------
35686 Get message buffer
35687 -----------------------------------------------------------------------*/
35688 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35689 WDI_FWR_MEM_DUMP_REQ,
35690 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
35691 &pSendBuffer, &usDataOffset, &usSendSize))||
35692 (usSendSize < (usDataOffset +
35693 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
35694 {
35695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35696 "Unable to get send buffer in Process Fwr Mem Dump Req");
35697 WDI_ASSERT(0);
35698 return WDI_STATUS_E_FAILURE;
35699 }
35700
35701 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
35702 wpalMemoryCopy( pSendBuffer+usDataOffset,
35703 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
35704 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
35705
35706 /*-------------------------------------------------------------------------
35707 Send Fwr Mem Dump Request to HAL
35708 ------------------------------------------------------------------------*/
35709 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35710 wdiFwrMemDumpRspCb, pEventData->pUserData,
35711 WDI_FWR_MEM_DUMP_RSP);
35712 return wdiStatus;
35713}
35714
35715/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053035716 @brief WDI_EncryptMsgReq
35717
35718 @param pwdiEncryptMsgParams: Req parameter for the FW
35719 wdiEncryptMsgCbRsp: callback for passing back the response
35720 of the Req operation received from the device
35721 pUserData: user data will be passed back with the callback
35722
35723 @return SUCCESS or FAIL
35724*/
35725WDI_Status
35726WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
35727 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
35728 void* pUserData)
35729{
35730 WDI_EventInfoType wdiEventData;
35731
35732 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35733 "%s: %d Enter" ,__func__, __LINE__);
35734 /*------------------------------------------------------------------------
35735 Sanity Check
35736 ------------------------------------------------------------------------*/
35737 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35738 {
35739 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35740 "WDI API call before module is initialized - Fail request");
35741
35742 return WDI_STATUS_E_NOT_ALLOWED;
35743 }
35744
35745 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
35746 wdiEventData.pEventData = pwdiEncryptMsgParams;
35747 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
35748 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
35749 wdiEventData.pUserData = pUserData;
35750
35751 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35752}
35753
35754/*
35755 * FUNCTION: WDI_ProcessEncryptMsgReq
35756 * Request to WDI to encrypt the given message.
35757 *
35758 * @param pWDICtx: pointer to the WLAN DAL context
35759 * pEventData: pointer to the event information structure
35760 *
35761 * @return Result of the function call
35762 */
35763
35764WDI_Status
35765WDI_ProcessEncryptMsgReq
35766(
35767 WDI_ControlBlockType* pWDICtx,
35768 WDI_EventInfoType* pEventData
35769)
35770{
35771 wpt_uint8* pSendBuffer = NULL;
35772 wpt_uint16 usDataOffset = 0;
35773 wpt_uint16 usSendSize = 0;
35774 WDI_EncryptMsgRspCb* wdiEncMsgCb;
35775 tSetEncryptedDataParams *pHalEncryptDataReq;
35776 wpt_pkt80211 *pkt = NULL;
35777
35778 /*-------------------------------------------------------------------------
35779 Sanity check
35780 -------------------------------------------------------------------------*/
35781 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
35782 ( NULL == pEventData->pCBfnc ) )
35783 {
35784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35785 "%s: Invalid parameters", __func__);
35786 WDI_ASSERT(0);
35787 return WDI_STATUS_E_FAILURE;
35788 }
35789
35790 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
35791
35792 /*-----------------------------------------------------------------------
35793 Get message buffer
35794 -----------------------------------------------------------------------*/
35795 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35796 pWDICtx, WDI_ENCRYPT_MSG_REQ,
35797 sizeof(tSetEncryptedDataReqMsg),
35798 &pSendBuffer, &usDataOffset, &usSendSize)) ||
35799 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
35800 {
35801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35802 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
35803 pEventData);
35804 WDI_ASSERT(0);
35805 return WDI_STATUS_E_FAILURE;
35806 }
35807
35808 pWDICtx->wdiReqStatusCB = NULL;
35809 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35810 pkt = (wpt_pkt80211 *)pEventData->pEventData;
35811
35812 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
35813 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
35814
35815 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
35816
35817 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
35818 pkt->encParams.keyParams.key[0].keyId;
35819
35820 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
35821 &pkt->encParams.keyParams.key[0].key[0], 16);
35822
35823 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
35824
35825 pHalEncryptDataReq->data.length = pkt->data.length;
35826 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
35827
35828 /*-------------------------------------------------------------------------
35829 Send Get STA Request to HAL
35830 -------------------------------------------------------------------------*/
35831 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
35832 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
35833}
35834
35835/*
35836 * FUNCTION: WDI_ProcessEncryptMsgRsp
35837 * Receives the encrypted message from the firmware
35838 * @param pWDICtx: pointer to the WLAN DAL context
35839 * pEventData: pointer to the event information structure
35840 *
35841 * @return Result of the function call
35842 */
35843WDI_Status
35844WDI_ProcessEncryptMsgRsp
35845(
35846 WDI_ControlBlockType* pWDICtx,
35847 WDI_EventInfoType* pEventData
35848)
35849{
35850 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
35851 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35852
35853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35854 "In %s",__func__);
35855
35856 /*-------------------------------------------------------------------------
35857 Sanity check
35858 -------------------------------------------------------------------------*/
35859 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35860 ( NULL == pEventData->pEventData))
35861 {
35862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35863 "%s: Invalid parameters", __func__);
35864 WDI_ASSERT(0);
35865 return WDI_STATUS_E_FAILURE;
35866 }
35867
35868 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35869
35870 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35871
35872 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35873 pEventData->pEventData,
35874 pWDICtx->pRspCBUserData);
35875 return WDI_STATUS_SUCCESS;
35876}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035877
35878WDI_Status
35879WDI_NanRequest
35880(
35881 WDI_NanRequestType *pwdiNanRequest,
35882 void *usrData
35883)
35884{
35885 WDI_EventInfoType wdiEventData;
35886
35887 /*------------------------------------------------------------------------
35888 Sanity Check
35889 ------------------------------------------------------------------------*/
35890 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35891 {
35892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35893 "WDI API call before module is initialized - Fail request");
35894
35895 return WDI_STATUS_E_NOT_ALLOWED;
35896 }
35897
35898 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35899 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35900 pwdiNanRequest->request_data_len);
35901
35902 /*------------------------------------------------------------------------
35903 Fill in Event data and post to the Main FSM
35904 ------------------------------------------------------------------------*/
35905 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35906 wdiEventData.pEventData = pwdiNanRequest;
35907 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35908 + pwdiNanRequest->request_data_len;
35909 wdiEventData.pUserData = usrData;
35910 wdiEventData.pCBfnc = NULL;
35911
35912
35913 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35914}
35915
35916WDI_Status
35917WDI_ProcessNanRequest
35918(
35919 WDI_ControlBlockType* pWDICtx,
35920 WDI_EventInfoType* pEventData
35921)
35922{
35923 WDI_NanRequestType *pwdiNanRequest = NULL;
35924 wpt_uint8* pSendBuffer = NULL;
35925 wpt_uint16 usDataOffset = 0;
35926 wpt_uint16 usSendSize = 0;
35927
35928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35929 "WDI_ProcessNanRequest");
35930
35931 /*-------------------------------------------------------------------------
35932 Sanity check
35933 -------------------------------------------------------------------------*/
35934 if (( NULL == pEventData ) ||
35935 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35936 {
35937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35938 "%s: Invalid parameters", __FUNCTION__);
35939 WDI_ASSERT(0);
35940 return WDI_STATUS_E_FAILURE;
35941 }
35942
35943 /*-----------------------------------------------------------------------
35944 Get message buffer
35945 -----------------------------------------------------------------------*/
35946 if (( WDI_STATUS_SUCCESS
35947 != WDI_GetMessageBuffer( pWDICtx,
35948 WDI_NAN_REQUEST,
35949 pwdiNanRequest->request_data_len,
35950 &pSendBuffer,
35951 &usDataOffset,
35952 &usSendSize))||
35953 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35954 {
35955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35956 "Unable to get send buffer in NAN request %p %p",
35957 pEventData, pwdiNanRequest);
35958 WDI_ASSERT(0);
35959 return WDI_STATUS_E_FAILURE;
35960 }
35961
35962 wpalMemoryCopy( pSendBuffer+usDataOffset,
35963 pwdiNanRequest->request_data,
35964 pwdiNanRequest->request_data_len);
35965
35966 pWDICtx->pReqStatusUserData = NULL;
35967 pWDICtx->pfncRspCB = NULL;
35968 vos_mem_free( pEventData->pUserData);
35969
35970 /*-------------------------------------------------------------------------
35971 Send NAN Request to HAL
35972 -------------------------------------------------------------------------*/
35973 return WDI_SendMsg( pWDICtx,
35974 pSendBuffer,
35975 usSendSize,
35976 NULL,
35977 NULL,
35978 WDI_NAN_RESPONSE);
35979}
35980
35981/**
35982 @brief Process NAN Response function (called when a
35983 response is being received over the bus from HAL)
35984
35985 @param pWDICtx: pointer to the WLAN DAL context
35986 pEventData: pointer to the event information structure
35987
35988 @see
35989 @return Result of the function call
35990*/
35991WDI_Status
35992WDI_ProcessNanResponse
35993(
35994 WDI_ControlBlockType* pWDICtx,
35995 WDI_EventInfoType* pEventData
35996)
35997{
35998 WDI_Status wdiStatus;
35999 eHalStatus halStatus;
36000
36001 /*-------------------------------------------------------------------------
36002 Sanity check
36003 -------------------------------------------------------------------------*/
36004 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36005 ( NULL == pEventData->pEventData))
36006 {
36007 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36008 "%s: Invalid parameters", __func__);
36009 WDI_ASSERT(0);
36010 return WDI_STATUS_E_FAILURE;
36011 }
36012
36013 halStatus = *((eHalStatus*)pEventData->pEventData);
36014 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
36015
36016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36017 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
36018
36019 return WDI_STATUS_SUCCESS;
36020}/*WDI_ProcessNanResponse*/
36021
36022
36023/**
36024 @brief Process NAN Event function (called when
36025 an indication is being received over the
36026 bus from HAL)
36027
36028 @param pWDICtx: pointer to the WLAN DAL context
36029 pEventData: pointer to the event information structure
36030
36031 @see
36032 @return Result of the function call
36033*/
36034WDI_Status
36035WDI_ProcessNanEvent
36036(
36037 WDI_ControlBlockType* pWDICtx,
36038 WDI_EventInfoType* pEventData
36039)
36040{
36041 WDI_LowLevelIndType wdiInd;
36042
36043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36044
36045 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36046 ( NULL == pEventData->pEventData ))
36047 {
36048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36049 "%s: Invalid parameters", __func__);
36050 WDI_ASSERT( 0 );
36051 return WDI_STATUS_E_FAILURE;
36052 }
36053
36054 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36055 "%s: Received NAN event", __func__);
36056 /*-------------------------------------------------------------------------
36057 Extract indication and send it to UMAC
36058 -------------------------------------------------------------------------*/
36059 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
36060 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
36061 pEventData->uEventDataSize;
36062 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
36063 pEventData->pEventData;
36064
36065 /*Notify UMAC*/
36066 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36067
36068 return WDI_STATUS_SUCCESS;
36069}/*WDI_ProcessNanEvent*/
36070
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036071
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036072WDI_Status
36073WDI_Process_RssiBreachedInd
36074(
36075 WDI_ControlBlockType* pWDICtx,
36076 WDI_EventInfoType* pEventData
36077)
36078{
36079 WDI_LowLevelIndType wdiInd;
36080 tHalRssiMonitorIndParams halRssiBreachedInd;
36081 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36082
36083 /*-------------------------------------------------------------------------
36084 Sanity check
36085 -------------------------------------------------------------------------*/
36086 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36087 ( NULL == pEventData->pEventData))
36088 {
36089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36090 "%s: Invalid parameters", __func__);
36091 WDI_ASSERT(0);
36092 return WDI_STATUS_E_FAILURE;
36093 }
36094
36095 /*-------------------------------------------------------------------------
36096 Extract indication and send it to UMAC
36097 -------------------------------------------------------------------------*/
36098 wpalMemoryCopy( &halRssiBreachedInd,
36099 pEventData->pEventData,
36100 sizeof(halRssiBreachedInd));
36101
36102
36103 /*Fill in the indication parameters*/
36104 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
36105 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiRssiBreachedInd,
36106 (void *)&halRssiBreachedInd,
36107 sizeof(WDI_RssiBreachedIndType));
36108 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36109 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
36110 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
36111 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
36112 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
36113 /*Notify UMAC*/
36114 if (pWDICtx->wdiLowLevelIndCB)
36115 {
36116 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36117 }
36118
36119 return WDI_STATUS_SUCCESS;
36120
36121}
36122
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036123
36124WDI_Status
36125WDI_Process_LostLinkParamInd
36126(
36127 WDI_ControlBlockType* pWDICtx,
36128 WDI_EventInfoType* pEventData
36129)
36130{
36131 WDI_LowLevelIndType wdiInd;
36132 tHalLostLinkParametersIndParams halLostLinkParamInd;
36133 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36134
36135 /*-------------------------------------------------------------------------
36136 Sanity check
36137 -------------------------------------------------------------------------*/
36138 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36139 ( NULL == pEventData->pEventData))
36140 {
36141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36142 "%s: Invalid parameters", __func__);
36143 WDI_ASSERT(0);
36144 return WDI_STATUS_E_FAILURE;
36145 }
36146
36147 /*-------------------------------------------------------------------------
36148 Extract indication and send it to UMAC
36149 -------------------------------------------------------------------------*/
36150 wpalMemoryCopy( (void *)&halLostLinkParamInd,
36151 pEventData->pEventData,
36152 sizeof(tHalLostLinkParametersIndParams));
36153
36154
36155 /*Fill in the indication parameters*/
36156 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
36157 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
36158 (void *)&halLostLinkParamInd,
36159 sizeof(WDI_LostLinkParamsIndType));
36160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36161 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
36162 "linkFlTx : %d,lastDataRate : %d", __func__,
36163 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
36164 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
36165 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
36166 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
36167 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
36168 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
36169 /*Notify UMAC*/
36170 if (pWDICtx->wdiLowLevelIndCB)
36171 {
36172 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36173 }
36174
36175 return WDI_STATUS_SUCCESS;
36176
36177}
36178
Abhishek Singh41988ba2015-05-25 19:42:29 +053036179WDI_Status
36180WDI_ProcessSetRtsCtsHtvhtInd
36181(
36182 WDI_ControlBlockType* pWDICtx,
36183 WDI_EventInfoType* pEventData
36184)
36185{
36186 wpt_uint8* pSendBuffer = NULL;
36187 wpt_uint16 usDataOffset = 0;
36188 wpt_uint16 usSendSize = 0;
36189 wpt_uint32 *rtsCtsVal;
36190 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
36191 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36192
36193
36194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36195
36196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36197 "%s", __func__);
36198
36199 /*-------------------------------------------------------------------------
36200 Sanity check
36201 -------------------------------------------------------------------------*/
36202 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36203 {
36204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36205 "%s: Invalid parameters", __func__);
36206 WDI_ASSERT(0);
36207 return WDI_STATUS_E_FAILURE;
36208 }
36209 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
36210 /*-----------------------------------------------------------------------
36211 Get message buffer
36212 -----------------------------------------------------------------------*/
36213
36214 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36215 WDI_SET_RTS_CTS_HTVHT_IND,
36216 sizeof(tHalRtsCtsHtvhtIndParams),
36217 &pSendBuffer, &usDataOffset, &usSendSize))||
36218 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
36219 {
36220 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36221 "Unable to get send buffer in RTS CTS ind %p ",
36222 pEventData);
36223 WDI_ASSERT(0);
36224 return WDI_STATUS_E_FAILURE;
36225 }
36226 rtsCtsHtvhtIndParams =
36227 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
36228 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
36229
36230 pWDICtx->pReqStatusUserData = NULL;
36231 pWDICtx->pfncRspCB = NULL;
36232 /*-------------------------------------------------------------------------
36233 Send SET_RTS_CTS_HTVHT Indication to HAL
36234 -------------------------------------------------------------------------*/
36235 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36236 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36237}
36238
36239WDI_Status
36240WDI_SetRtsCtsHTVhtInd
36241(
36242 wpt_uint32 rtsCtsVal
36243)
36244{
36245 WDI_EventInfoType wdiEventData;
36246 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36247
36248 /*------------------------------------------------------------------------
36249 Sanity Check
36250 ------------------------------------------------------------------------*/
36251 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36252 {
36253 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36254 "WDI API call before module is initialized - Fail request");
36255 return WDI_STATUS_E_NOT_ALLOWED;
36256 }
36257
36258 /*------------------------------------------------------------------------
36259 Fill in Event data and post to the Main FSM
36260 ------------------------------------------------------------------------*/
36261 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
36262 wdiEventData.pEventData = (void *) &rtsCtsVal;
36263 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36264 wdiEventData.pCBfnc = NULL;
36265 wdiEventData.pUserData = NULL;
36266
36267 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36268
36269}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053036270
36271WDI_Status
36272WDI_ProcessEnableDisableCAEventInd
36273(
36274 WDI_ControlBlockType* pWDICtx,
36275 WDI_EventInfoType* pEventData
36276)
36277{
36278 wpt_uint8* pSendBuffer = NULL;
36279 wpt_uint16 usDataOffset = 0;
36280 wpt_uint16 usSendSize = 0;
36281 wpt_uint32 *val;
36282 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
36283 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36284
36285
36286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36287
36288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36289 "%s", __func__);
36290
36291 /*-------------------------------------------------------------------------
36292 Sanity check
36293 -------------------------------------------------------------------------*/
36294 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36295 {
36296 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36297 "%s: Invalid parameters", __func__);
36298 WDI_ASSERT(0);
36299 return WDI_STATUS_E_FAILURE;
36300 }
36301 val = (wpt_uint32*)pEventData->pEventData;
36302 /*-----------------------------------------------------------------------
36303 Get message buffer
36304 -----------------------------------------------------------------------*/
36305
36306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36307 WDI_SEND_FREQ_RANGE_CONTROL_IND,
36308 sizeof(tHalAvoidFreqRangeCtrlParam),
36309 &pSendBuffer, &usDataOffset, &usSendSize))||
36310 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
36311 {
36312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36313 "Unable to get send buffer in Channel Avoidance Ind %p ",
36314 pEventData);
36315 WDI_ASSERT(0);
36316 return WDI_STATUS_E_FAILURE;
36317 }
36318 avoidFreqRangeCtrlParam =
36319 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
36320 avoidFreqRangeCtrlParam->status = *val;
36321
36322 pWDICtx->pReqStatusUserData = NULL;
36323 pWDICtx->pfncRspCB = NULL;
36324 /*-------------------------------------------------------------------------
36325 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
36326 -------------------------------------------------------------------------*/
36327 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36328 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36329}
36330
36331WDI_Status
36332WDI_EnableDisableCAEventInd
36333(
36334 wpt_uint32 val
36335)
36336{
36337 WDI_EventInfoType wdiEventData;
36338 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36339
36340 /*------------------------------------------------------------------------
36341 Sanity Check
36342 ------------------------------------------------------------------------*/
36343 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36344 {
36345 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36346 "WDI API call before module is initialized - Fail request");
36347 return WDI_STATUS_E_NOT_ALLOWED;
36348 }
36349
36350 /*------------------------------------------------------------------------
36351 Fill in Event data and post to the Main FSM
36352 ------------------------------------------------------------------------*/
36353 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
36354 wdiEventData.pEventData = (void *) &val;
36355 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36356 wdiEventData.pCBfnc = NULL;
36357 wdiEventData.pUserData = NULL;
36358
36359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36360
36361} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053036362
36363/**
36364 @brief WDI_WifiConfigSetReq
36365 This API is called to set WifiConfig params request in FW
36366
36367 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
36368 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
36369 usrData : Client context
36370 @see
36371 @return SUCCESS or FAIL
36372*/
36373WDI_Status
36374WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
36375 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
36376 void* pUserData)
36377{
36378 WDI_EventInfoType wdiEventData;
36379
36380 /*------------------------------------------------------------------------
36381 Sanity Check
36382 ------------------------------------------------------------------------*/
36383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36384 {
36385 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36386 "WDI API call before module is initialized - Fail request");
36387
36388 return WDI_STATUS_E_NOT_ALLOWED;
36389 }
36390
36391 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
36392 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
36393 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
36394 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
36395 wdiEventData.pUserData = pUserData;
36396
36397 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36398}
36399
36400/**
36401 @brief WDI_ProcessWifiConfigReq -
36402 Set WifiConfig request to FW
36403
36404 @param pWDICtx : wdi context
36405 pEventData : indication data
36406
36407 @see
36408 @return none
36409*/
36410 WDI_Status
36411 WDI_ProcessWifiConfigReq
36412 (
36413 WDI_ControlBlockType* pWDICtx,
36414 WDI_EventInfoType* pEventData
36415 )
36416 {
36417 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
36418 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36419 wpt_uint8* pSendBuffer = NULL;
36420 wpt_uint16 usSendSize = 0;
36421 wpt_uint16 usDataOffset = 0;
36422 tSetWifiConfigParamsReq halWifiConfigSetParams;
36423
36424 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
36425 ( NULL == pEventData->pCBfnc ))
36426 {
36427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36428 "%s: Invalid parameters", __func__);
36429 WDI_ASSERT(0);
36430 return WDI_STATUS_E_FAILURE;
36431 }
36432 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
36433 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
36434
36435 /*-----------------------------------------------------------------------
36436 Get message buffer
36437 ! TO DO : proper conversion into the HAL Message Request Format
36438 -----------------------------------------------------------------------*/
36439 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36440 pWDICtx,
36441 WDI_WIFI_CONFIG_SET_REQ,
36442 sizeof(halWifiConfigSetParams.wifiConfigParams),
36443 &pSendBuffer, &usDataOffset,
36444 &usSendSize))||
36445 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
36446 {
36447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36448 "Unable to get send buffer in %s %p %p %p", __func__,
36449 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
36450 WDI_ASSERT(0);
36451 return WDI_STATUS_E_FAILURE;
36452 }
36453
36454 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
36455 halWifiConfigSetParams.wifiConfigParams.paramValue =
36456 pwdiWifiConfigSetReqParams->paramValue;
36457 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
36458 sizeof(tSirMacAddr));
36459
36460 wpalMemoryCopy(pSendBuffer+usDataOffset,
36461 &halWifiConfigSetParams.wifiConfigParams,
36462 sizeof(halWifiConfigSetParams.wifiConfigParams));
36463
36464 pWDICtx->pReqStatusUserData = pEventData->pUserData;
36465
36466 /*-------------------------------------------------------------------------
36467 Send Clear Link Layer Stats Request to HAL
36468 -------------------------------------------------------------------------*/
36469 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36470 wdiWifiConfigSetRspCb, pEventData->pUserData,
36471 WDI_WIFI_CONFIG_SET_RSP);
36472 }
36473
36474WDI_Status
36475WDI_ProcessWificonfigSetRsp
36476( WDI_ControlBlockType* pWDICtx,
36477 WDI_EventInfoType* pEventData )
36478
36479{
36480 tHalSetWifiConfigRspParams halRsp;
36481 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36482 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
36483
36484 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36485 "%s: %d Enter",__func__, __LINE__);
36486
36487 /*-------------------------------------------------------------------------
36488 Sanity check
36489 -------------------------------------------------------------------------*/
36490 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36491 ( NULL == pEventData->pEventData))
36492 {
36493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36494 "%s: Invalid parameters", __func__);
36495 WDI_ASSERT(0);
36496 return WDI_STATUS_E_FAILURE;
36497 }
36498 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
36499
36500 /*-------------------------------------------------------------------------
36501 Extract response and send it to UMAC
36502 -------------------------------------------------------------------------*/
36503 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
36504
36505 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36506
36507 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36508 "WifiConfig RSP status = %d",
36509 wdiWifconfigSetRsp.wificonfigset_status);
36510 /*Notify UMAC*/
36511 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
36512
36513 return WDI_STATUS_SUCCESS;
36514}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036515
36516#ifdef FEATURE_OEM_DATA_SUPPORT
36517
36518/**
36519 @brief WDI_StartOemDataReqIndNew
36520
36521 @param pOemDataReqNewConfig: Req parameter for the FW
36522
36523 @return SUCCESS or FAIL
36524*/
36525WDI_Status
36526WDI_StartOemDataReqIndNew
36527(
36528 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
36529)
36530{
36531 WDI_EventInfoType wdiEventData;
36532
36533 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36534 "%s: %d",__func__, __LINE__);
36535 /*------------------------------------------------------------------------
36536 Sanity Check
36537 ------------------------------------------------------------------------*/
36538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36539 {
36540 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36541 "WDI API call before module is initialized - Fail request");
36542
36543 return WDI_STATUS_E_NOT_ALLOWED;
36544 }
36545
36546 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
36547 wdiEventData.pEventData = pOemDataReqNewConfig;
36548 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
36549 wdiEventData.pCBfnc = NULL;
36550 wdiEventData.pUserData = NULL;
36551
36552 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36553}
36554
36555/**
36556 @brief WDI_ProcessStartOemDataReqIndNew -
36557 Send OEM Data request new indication to FW
36558
36559 @param pWDICtx : wdi context
36560 pEventData : indication data
36561
36562 @see
36563 @return none
36564*/
36565WDI_Status
36566WDI_ProcessStartOemDataReqIndNew
36567(
36568 WDI_ControlBlockType* pWDICtx,
36569 WDI_EventInfoType* pEventData
36570)
36571{
36572 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
36573 wpt_uint8* pSendBuffer = NULL;
36574 wpt_uint16 usSendSize = 0;
36575 wpt_uint16 usDataOffset = 0;
36576 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
36577 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36578
36579 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36580 "%s: %d",__func__, __LINE__);
36581
36582 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36583 ( NULL == pEventData->pEventData))
36584 {
36585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36586 "%s: Invalid parameters", __func__);
36587 WDI_ASSERT(0);
36588 return WDI_STATUS_E_FAILURE;
36589 }
36590
36591 wdiOemDataReqNewConfig =
36592 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
36593
36594 /*-----------------------------------------------------------------------
36595 Get message buffer
36596 -----------------------------------------------------------------------*/
36597 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36598 pWDICtx,
36599 WDI_START_OEM_DATA_REQ_IND_NEW,
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036600 sizeof(*pHalStartOemDataReqParamsNew),
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036601 &pSendBuffer, &usDataOffset,
36602 &usSendSize))||
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036603 ( usSendSize < (usDataOffset + sizeof(*pHalStartOemDataReqParamsNew) )))
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036604 {
36605 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36606 "Unable to get send buffer in %s %p %p", __func__,
36607 pEventData, wdiOemDataReqNewConfig);
36608 WDI_ASSERT(0);
36609 return WDI_STATUS_E_FAILURE;
36610 }
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036611
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036612 pHalStartOemDataReqParamsNew =
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036613 (tpStartOemDataReqParamsNew) (pSendBuffer + usDataOffset);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036614
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036615 wpalMemoryCopy(pHalStartOemDataReqParamsNew,
36616 wdiOemDataReqNewConfig,
36617 sizeof(*pHalStartOemDataReqParamsNew));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036618
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036619 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36620 "%s: selfMacAddr: " MAC_ADDRESS_STR" ", __func__,
36621 MAC_ADDR_ARRAY(pHalStartOemDataReqParamsNew->selfMacAddr));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036622
36623 pWDICtx->pReqStatusUserData = NULL;
36624 pWDICtx->pfncRspCB = NULL;
36625
36626 /*-------------------------------------------------------------------------
36627 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
36628 -------------------------------------------------------------------------*/
36629 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36630 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36631}
36632
36633/**
36634 @brief Process OemDataRsp New Indication indication from FW
36635
36636 @param pWDICtx: pointer to the WLAN DAL context
36637 pEventData: pointer to the event information structure
36638
36639 @see
36640 @return Result of the function call
36641*/
36642WDI_Status
36643WDI_ProcessStartOemDataRspIndNew
36644(
36645 WDI_ControlBlockType* pWDICtx,
36646 WDI_EventInfoType* pEventData
36647)
36648{
36649 WDI_LowLevelIndType wdiInd;
36650 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36651
36652 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36653 "%s: ", __func__);
36654
36655 /* sanity check */
36656 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36657 ( NULL == pEventData->pEventData))
36658 {
36659 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36660 "%s: Invalid parameters", __func__);
36661 WDI_ASSERT(0);
36662 return WDI_STATUS_E_FAILURE;
36663 }
36664
36665 /* Fill in the indication parameters */
36666 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
36667
Padma, Santhosh Kumarf75c37b2016-01-25 10:36:08 +053036668 wdiInd.wdiIndicationData.wdiOemDataRspNew.pOemRspNewIndData =
36669 (void *)pEventData->pEventData;
36670 wdiInd.wdiIndicationData.wdiOemDataRspNew.OemRspNewLen =
36671 pEventData->uEventDataSize;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036672 /* Notify UMAC */
36673 if (pWDICtx->wdiLowLevelIndCB)
36674 {
36675 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36676 }
36677 else
36678 {
36679 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36680 "%s: WDILowLevelIndCb is null", __func__);
36681 WDI_ASSERT(0);
36682 return WDI_STATUS_E_FAILURE;
36683 }
36684 return WDI_STATUS_SUCCESS;
36685} /* End of WDI_ProcessEXTScanResultInd */
36686
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053036687/**
36688 @brief Process Current Antenna Index information from FW
36689
36690 @param pWDICtx: pointer to the WLAN DAL context
36691 pEventData: pointer to the event information structure
36692
36693 @see
36694 @return Result of the function call
36695*/
36696WDI_Status
36697WDI_ProcessGetCurrentAntennaIndexRsp
36698(
36699 WDI_ControlBlockType* pWDICtx,
36700 WDI_EventInfoType* pEventData
36701)
36702{
36703 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
36704 tHalAntennaDiversitySelectionRspParams *pHalAntDivSelRsp;
36705
36706 /*-------------------------------------------------------------------------
36707 Sanity check
36708 -------------------------------------------------------------------------*/
36709 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36710 ( NULL == pEventData->pEventData))
36711 {
36712 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36713 "%s: Invalid parameters", __func__);
36714 WDI_ASSERT(0);
36715 return WDI_STATUS_E_FAILURE;
36716 }
36717 pHalAntDivSelRsp =
36718 (tHalAntennaDiversitySelectionRspParams*)pEventData->pEventData;
36719 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pWDICtx->pfncRspCB;
36720
36721 if (pHalAntDivSelRsp->status != 0)
36722 {
36723 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_E_FAILURE,
36724 (void *)pHalAntDivSelRsp, pWDICtx->pRspCBUserData);
36725 }
36726 else
36727 {
36728 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_SUCCESS,
36729 (void *)pHalAntDivSelRsp,
36730 pWDICtx->pRspCBUserData);
36731 }
36732
36733 return WDI_STATUS_SUCCESS;
36734}
36735
36736/**
36737 @brief Process Get Current Antenna Index request command
36738
36739 @param pWDICtx: pointer to the WLAN DAL context
36740 pEventData: pointer to the event information structure
36741
36742 @see
36743 @return Result of the function call
36744*/
36745WDI_Status
36746WDI_ProcessGetCurrentAntennaIndex
36747(
36748 WDI_ControlBlockType* pWDICtx,
36749 WDI_EventInfoType* pEventData
36750)
36751{
36752 wpt_uint8* pSendBuffer = NULL;
36753 wpt_uint16 usDataOffset = 0;
36754 wpt_uint16 usSendSize = 0;
36755 tHalAntennaDiversitySelectionReqParams halAntDivSelReq;
36756 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
36757
36758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36759 "%s", __func__);
36760
36761 /*-------------------------------------------------------------------------
36762 Sanity check
36763 -------------------------------------------------------------------------*/
36764 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
36765 ( NULL == pEventData->pCBfnc ))
36766 {
36767 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36768 "%s: Invalid parameters", __func__);
36769 WDI_ASSERT(0);
36770 return WDI_STATUS_E_FAILURE;
36771 }
36772 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pEventData->pCBfnc;
36773
36774 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36775 WDI_ANTENNA_DIVERSITY_SELECTION_REQ,
36776 sizeof(tHalAntennaDiversitySelectionReqParams),
36777 &pSendBuffer, &usDataOffset, &usSendSize))||
36778 ( usSendSize < (usDataOffset +
36779 sizeof(tHalAntennaDiversitySelectionReqParams) )))
36780 {
36781 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36782 "Unable to get send buffer in GetCurrentAntennaIndex %p",
36783 pEventData);
36784 WDI_ASSERT(0);
36785 return WDI_STATUS_E_FAILURE;
36786 }
36787 pWDICtx->wdiReqStatusCB = NULL;
36788 pWDICtx->pReqStatusUserData = pEventData->pEventData;
36789 halAntDivSelReq.reserved = *((wpt_uint32 *)(pEventData->pEventData));
36790 wpalMemoryCopy( pSendBuffer+usDataOffset,
36791 &halAntDivSelReq,
36792 sizeof(tHalAntennaDiversitySelectionReqParams));
36793
36794 /*-------------------------------------------------------------------------
36795 Send Get STA Request to HAL
36796 -------------------------------------------------------------------------*/
36797 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36798 wdiGetCurrentAntennaIndexRspCb,
36799 pEventData->pUserData,
36800 WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
36801}
36802
36803/**
36804 @brief WDI_GetCurrentAntennaIndex
36805
36806 @param pOemDataReqNewConfig: Req parameter for the FW
36807
36808 @return SUCCESS or FAIL
36809*/
36810WDI_Status
36811WDI_GetCurrentAntennaIndex
36812(
36813 void *pUserData,
36814 WDI_AntennaDivSelRspCb wdiAntennaDivSelRspCb,
36815 wpt_uint32 reserved
36816)
36817{
36818 WDI_EventInfoType wdiEventData;
36819
36820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36821
36822 /*------------------------------------------------------------------------
36823 Sanity Check
36824 ------------------------------------------------------------------------*/
36825 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36826 {
36827 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36828 "WDI API call before module is initialized - Fail request");
36829 return WDI_STATUS_E_NOT_ALLOWED;
36830 }
36831 /*------------------------------------------------------------------------
36832 Fill in Event data and post to the Main FSM
36833 ------------------------------------------------------------------------*/
36834 wdiEventData.wdiRequest = WDI_ANTENNA_DIVERSITY_SELECTION_REQ;
36835 wdiEventData.pEventData = (void *)&reserved;
36836 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36837 wdiEventData.pCBfnc = wdiAntennaDivSelRspCb;
36838 wdiEventData.pUserData = pUserData;
36839
36840 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36841}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036842#endif