blob: 20e8f4d7d07ed756a935cca814140de324621ef0 [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 */
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +0530552 WDI_ProcessBcnMissPenaltyCount, /* WDI_MODIFY_ROAM_PARAMS_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700553};
554
555
Jeff Johnsone7245742012-09-05 17:12:55 -0700556/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700557 DAL Request Processing Array - the functions in this table will only be
558 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700559 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700560 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700561WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700562{
563 /*INIT*/
564 WDI_ProcessStartRsp, /* WDI_START_RESP */
565 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
566 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
567
568 /*SCAN*/
569 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
570 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
571 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
572 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
573
574 /* ASSOCIATION*/
575 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
576 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
577 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
578 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
579 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
580
581 /* Security */
582 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
583 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
584 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
585 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
586
587 /* QoS and BA APIs */
588 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
589 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
590 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
591 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
592 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
593
594 /* Miscellaneous Control APIs */
595 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
596 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
597 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
598 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
599 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
600
601 /* BA APIs*/
602 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
603 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700604
Jeff Johnson295189b2012-06-20 16:38:30 -0700605 /* IBSS APIs*/
606 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
607 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
608
609 /*Soft AP APIs*/
610 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
611 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
612 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
613 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
614
615 /* PowerSave APIs */
616 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
617 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
618 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
619 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
620 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
621 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
622 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
623 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
624 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
625 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
626 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
627 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
628 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
629 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
630 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
631 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
632 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
633 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700634
Jeff Johnson295189b2012-06-20 16:38:30 -0700635
636 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
637
638 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
639 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
640#ifdef WLAN_FEATURE_VOWIFI_11R
641 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
642#else
643 NULL,
644#endif /* WLAN_FEATURE_VOWIFI_11R */
645 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
646 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700647#ifdef FEATURE_OEM_DATA_SUPPORT
648 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
649#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700650 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700651#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700652 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
653
Jeff Johnson295189b2012-06-20 16:38:30 -0700654 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700655
Jeff Johnson295189b2012-06-20 16:38:30 -0700656 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700657
Jeff Johnsone7245742012-09-05 17:12:55 -0700658 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
659
Jeff Johnson295189b2012-06-20 16:38:30 -0700660#ifdef FEATURE_WLAN_SCAN_PNO
661 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
662 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
663 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
664#else
665 NULL,
666 NULL,
667 NULL,
668#endif // FEATURE_WLAN_SCAN_PNO
669
670 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700671 /*---------------------------------------------------------------------
672 Indications
673 ---------------------------------------------------------------------*/
674#ifdef WLAN_FEATURE_PACKET_FILTERING
675 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700676 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700677 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700678 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700679 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700680 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700681 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700682 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700683#else
684 NULL,
685 NULL,
686 NULL,
687 NULL,
688#endif // WLAN_FEATURE_PACKET_FILTERING
689
690 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
691 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
692
693 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800694#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700695 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
696#else
697 NULL,
698#endif
699
700#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700701 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
702 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700703#else
704 NULL,
705 NULL,
706#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700707 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
708 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700709#ifdef WLAN_FEATURE_11AC
710 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700711#else
712 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700713#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800714#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800715 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
716#else
717 NULL,
718#endif
schang86c22c42013-03-13 18:41:24 -0700719 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700720#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700721 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700722#else
723 NULL,
724#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530725#ifdef FEATURE_WLAN_TDLS
726 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
727#else
728 NULL,
729#endif
Leo Chang9056f462013-08-01 19:21:11 -0700730#ifdef FEATURE_WLAN_LPHB
731 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
732#else
733 NULL,
734#endif /* FEATURE_WLAN_LPHB */
Rajeev79dbe4c2013-10-05 11:03:42 +0530735
736#ifdef FEATURE_WLAN_BATCH_SCAN
737 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
738#else
739 NULL,
740#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800741 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530742
c_hpothu92367912014-05-01 15:18:17 +0530743 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800744
c_hpothu92367912014-05-01 15:18:17 +0530745 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
746
747 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800748
Sunil Duttbd736ed2014-05-26 21:19:41 +0530749
750#ifdef WLAN_FEATURE_LINK_LAYER_STATS
751 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
752 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
753 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
754#else
755 NULL,
756 NULL,
757 NULL,
758#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530759#ifdef WLAN_FEATURE_EXTSCAN
760 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
761 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
762 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
763 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
764 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
765 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530766 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
767 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530768#else
769 NULL,
770 NULL,
771 NULL,
772 NULL,
773 NULL,
774 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530775 NULL,
776 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530777#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530778 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530779
780 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530781
782 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530783 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530784 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530785
Srinivas Dasari32a79262015-02-19 13:04:49 +0530786 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
787
Katya Nigamf0511f62015-05-05 16:40:57 +0530788 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
789 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530790 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530791 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530792 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
793 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530794
795 WDI_ProcessWificonfigSetRsp, /* /WDI_WIFI_CONFIG_SET_RSP*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700796 /*---------------------------------------------------------------------
797 Indications
798 ---------------------------------------------------------------------*/
799 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
800 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
801 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
802 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
803 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
804 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
805
806 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
807
808 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
809
Jeff Johnson295189b2012-06-20 16:38:30 -0700810 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700811
812#ifdef FEATURE_WLAN_SCAN_PNO
813 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
814#else
815 NULL,
816#endif // FEATURE_WLAN_SCAN_PNO
817
818#ifdef WLAN_WAKEUP_EVENTS
819 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
820#else // WLAN_WAKEUP_EVENTS
821 NULL,
822#endif // WLAN_WAKEUP_EVENTS
823
824 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800825
Viral Modid86bde22012-12-10 13:09:21 -0800826 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530827#ifdef FEATURE_WLAN_TDLS
828 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
829#else
830 NULL,
831#endif
Leo Chang9056f462013-08-01 19:21:11 -0700832
833#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700834 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700835#else
836 NULL,
837#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700838
839 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700840
841 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530842
843#ifdef FEATURE_WLAN_BATCH_SCAN
844 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
845#else
846 NULL,
847#endif
848
Leo Chang0b0e45a2013-12-15 15:18:55 -0800849#ifdef FEATURE_WLAN_CH_AVOID
850 WDI_ProcessChAvoidInd, /* WDI_LBP_UPDATE_IND_TO_HOST */
851#else
852 NULL,
853#endif /* FEATURE_WLAN_CH_AVOID */
854
Sunil Duttbd736ed2014-05-26 21:19:41 +0530855 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
856#ifdef WLAN_FEATURE_LINK_LAYER_STATS
857 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
858#else
859 NULL,
860#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530861#ifdef WLAN_FEATURE_EXTSCAN
862 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
863 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
864 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
865 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530866 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530867#else
868 NULL,
869 NULL,
870 NULL,
871 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530872 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530873#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530874#ifdef FEATURE_WLAN_TDLS
875 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
876#else
877 NULL,
878#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530879 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530880 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530881 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530882 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530883#ifdef FEATURE_OEM_DATA_SUPPORT
884 WDI_ProcessStartOemDataRspIndNew, /* WDI_HAL_START_OEM_DATA_RSP_IND_NEW */
885#else
886 NULL,
887#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530888 WDI_ProcessGetCurrentAntennaIndexRsp, /* WDI_ANTENNA_DIVERSITY_SELECTION_RSP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700889};
890
891
Jeff Johnsone7245742012-09-05 17:12:55 -0700892/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700893 WLAN DAL Global Control Block
894 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700895WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700896static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
897
Jeff Johnsone7245742012-09-05 17:12:55 -0700898const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700899
900/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700901WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700902void* WDI_GET_PAL_CTX( void )
903{
Jeff Johnsone7245742012-09-05 17:12:55 -0700904 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700905}/*WDI_GET_PAL_CTX*/
906
Jeff Johnsone7245742012-09-05 17:12:55 -0700907/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700908 Helper inline converters
909 ============================================================================*/
910/*Convert WDI driver type into HAL driver type*/
911WPT_STATIC WPT_INLINE WDI_Status
912WDI_HAL_2_WDI_STATUS
913(
914 eHalStatus halStatus
915);
916
917/*Convert WDI request type into HAL request type*/
918WPT_STATIC WPT_INLINE tHalHostMsgType
919WDI_2_HAL_REQ_TYPE
920(
921 WDI_RequestEnumType wdiReqType
922);
923
924/*Convert WDI response type into HAL response type*/
925WPT_STATIC WPT_INLINE WDI_ResponseEnumType
926HAL_2_WDI_RSP_TYPE
927(
928 tHalHostMsgType halMsg
929);
930
931/*Convert WDI driver type into HAL driver type*/
932WPT_STATIC WPT_INLINE tDriverType
933WDI_2_HAL_DRV_TYPE
934(
935 WDI_DriverType wdiDriverType
936);
937
938/*Convert WDI stop reason into HAL stop reason*/
939WPT_STATIC WPT_INLINE tHalStopType
940WDI_2_HAL_STOP_REASON
941(
942 WDI_StopType wdiStopType
943);
944
945/*Convert WDI scan mode type into HAL scan mode type*/
946WPT_STATIC WPT_INLINE eHalSysMode
947WDI_2_HAL_SCAN_MODE
948(
949 WDI_ScanMode wdiScanMode
950);
951
952/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700953WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -0700954WDI_2_HAL_SEC_CH_OFFSET
955(
956 WDI_HTSecondaryChannelOffset wdiSecChOffset
957);
958
959/*Convert WDI BSS type into HAL BSS type*/
960WPT_STATIC WPT_INLINE tSirBssType
961WDI_2_HAL_BSS_TYPE
962(
963 WDI_BssType wdiBSSType
964);
965
966/*Convert WDI NW type into HAL NW type*/
967WPT_STATIC WPT_INLINE tSirNwType
968WDI_2_HAL_NW_TYPE
969(
970 WDI_NwType wdiNWType
971);
972
973/*Convert WDI chanel bonding type into HAL cb type*/
974WPT_STATIC WPT_INLINE ePhyChanBondState
975WDI_2_HAL_CB_STATE
976(
977 WDI_PhyChanBondState wdiCbState
978);
979
980/*Convert WDI chanel bonding type into HAL cb type*/
981WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
982WDI_2_HAL_HT_OPER_MODE
983(
984 WDI_HTOperatingMode wdiHTOperMode
985);
986
987/*Convert WDI mimo PS type into HAL mimo PS type*/
988WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
989WDI_2_HAL_MIMO_PS
990(
991 WDI_HTMIMOPowerSaveState wdiHTOperMode
992);
993
994/*Convert WDI ENC type into HAL ENC type*/
995WPT_STATIC WPT_INLINE tAniEdType
996WDI_2_HAL_ENC_TYPE
997(
998 WDI_EncryptType wdiEncType
999);
1000
1001/*Convert WDI WEP type into HAL WEP type*/
1002WPT_STATIC WPT_INLINE tAniWepType
1003WDI_2_HAL_WEP_TYPE
1004(
1005 WDI_WepType wdiWEPType
1006);
1007
1008/*Convert WDI Link State into HAL Link State*/
1009WPT_STATIC WPT_INLINE tSirLinkState
1010WDI_2_HAL_LINK_STATE
1011(
1012 WDI_LinkStateType wdiLinkState
1013);
1014
Jeff Johnsone7245742012-09-05 17:12:55 -07001015/*Translate a STA Context from WDI into HAL*/
1016WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -07001017void
1018WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -07001019(
Jeff Johnson295189b2012-06-20 16:38:30 -07001020 tConfigStaParams* phalConfigSta,
1021 WDI_ConfigStaReqInfoType* pwdiConfigSta
1022);
Jeff Johnsone7245742012-09-05 17:12:55 -07001023
1024/*Translate a Rate set info from WDI into HAL*/
1025WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -07001026WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -07001027(
Jeff Johnson295189b2012-06-20 16:38:30 -07001028 tSirMacRateSet* pHalRateSet,
1029 WDI_RateSet* pwdiRateSet
1030);
1031
1032/*Translate an EDCA Parameter Record from WDI into HAL*/
1033WPT_STATIC WPT_INLINE void
1034WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -07001035(
Jeff Johnson295189b2012-06-20 16:38:30 -07001036 tSirMacEdcaParamRecord* phalEdcaParam,
1037 WDI_EdcaParamRecord* pWDIEdcaParam
1038);
1039
1040/*Copy a management frame header from WDI fmt into HAL fmt*/
1041WPT_STATIC WPT_INLINE void
1042WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1043(
1044 tSirMacMgmtHdr* pmacMgmtHdr,
1045 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1046);
1047
1048/*Copy config bss parameters from WDI fmt into HAL fmt*/
1049WPT_STATIC WPT_INLINE void
1050WDI_CopyWDIConfigBSSToHALConfigBSS
1051(
1052 tConfigBssParams* phalConfigBSS,
1053 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1054);
1055
Jeff Johnsone7245742012-09-05 17:12:55 -07001056/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001057 pointed to by user data */
1058WPT_STATIC WPT_INLINE void
1059WDI_ExtractRequestCBFromEvent
1060(
1061 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001062 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001063 void** ppUserData
1064);
1065
1066wpt_uint8
1067WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001068(
Jeff Johnson295189b2012-06-20 16:38:30 -07001069 WDI_ControlBlockType* pWDICtx,
1070 WDI_BSSSessionType** ppSession
1071);
1072
1073void
1074WDI_AddBcastSTAtoSTATable
1075(
1076 WDI_ControlBlockType* pWDICtx,
1077 WDI_AddStaParams * staParams,
1078 wpt_uint16 usBcastStaIdx
1079);
1080
1081WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001082(
Jeff Johnson295189b2012-06-20 16:38:30 -07001083 WDI_ControlBlockType* pWDICtx,
1084 WDI_EventInfoType* pEventData
1085);
1086
1087void
1088WDI_SetPowerStateCb
1089(
1090 wpt_status status,
1091 unsigned int dxePhyAddr,
1092 void *pContext
1093);
1094
Jeff Johnson295189b2012-06-20 16:38:30 -07001095/**
1096 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001097
1098 @param wdiReqMsgId: WDI Message request Id
1099
1100 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001101 @return Result of the function call
1102*/
1103static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1104{
1105 switch (wdiReqMsgId)
1106 {
1107 CASE_RETURN_STRING( WDI_START_REQ );
1108 CASE_RETURN_STRING( WDI_STOP_REQ );
1109 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1110 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1111 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1112 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1113 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1114 CASE_RETURN_STRING( WDI_JOIN_REQ );
1115 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1116 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1117 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1118 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1119 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1120 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1121 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1122 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1123 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1124 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1125 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1126 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1127 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1128 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001129 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001130 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1131 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1132 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1133 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1134 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1135 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1136 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1137 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1138 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1139 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1140 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1141 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001142 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001143 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301144#ifdef FEATURE_WLAN_TDLS
1145 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301146 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301147#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001148 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1149 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1150 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1151 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1152 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1153 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1154 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1155 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1156 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1157 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1158 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1159 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1160 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1161 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1162 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1163 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1164 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1165 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1166 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1167 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1168 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1169 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1170 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1171 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1172 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001173 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001174 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1175 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1176 #ifdef FEATURE_WLAN_SCAN_PNO
1177 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1178 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1179 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1180 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001181#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001182 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001183#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001184 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1185 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1186 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1187 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1188 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1189 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1190 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1191 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1192 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301193 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001194 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001195 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001196#ifdef WLAN_FEATURE_11W
1197 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1198#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301199#ifdef FEATURE_WLAN_BATCH_SCAN
1200 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1201 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1202 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1203#endif
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301204 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1205 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001206 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301207#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1208 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1209 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1210 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1211#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301212#ifdef WLAN_FEATURE_EXTSCAN
1213 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1214 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1215 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1216 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1217 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1218 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301219 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1220 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +05301221 CASE_RETURN_STRING( WDI_HIGH_PRIORITY_DATA_INFO_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301222#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301223 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301224 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301225 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301226 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301227 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301228 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301229 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301230 CASE_RETURN_STRING( WDI_MON_START_REQ );
1231 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301232 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301233 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301234 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301235 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1236 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301237 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ_IND_NEW );
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301238 CASE_RETURN_STRING( WDI_ANTENNA_DIVERSITY_SELECTION_REQ );
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +05301239 CASE_RETURN_STRING( WDI_MODIFY_ROAM_PARAMS_IND );
Jeff Johnson295189b2012-06-20 16:38:30 -07001240 default:
1241 return "Unknown WDI MessageId";
1242 }
1243}
1244
1245
1246
1247/**
1248 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001249
1250 @param wdiRespMsgId: WDI Message response Id
1251
1252 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001253 @return Result of the function call
1254*/
1255static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1256{
1257 switch (wdiRespMsgId)
1258 {
1259 CASE_RETURN_STRING( WDI_START_RESP );
1260 CASE_RETURN_STRING( WDI_STOP_RESP );
1261 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1262 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1263 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1264 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1265 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1266 CASE_RETURN_STRING( WDI_JOIN_RESP );
1267 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1268 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1269 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1270 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1271 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1272 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1273 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1274 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1275 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1276 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1277 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1278 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1279 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1280 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1281 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1282 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1283 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1284 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1285 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1286 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1287 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1288 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1289 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1290 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1291 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1292 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1293 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301294#ifdef FEATURE_WLAN_TDLS
1295 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301296 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301297 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1298#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001299 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1300 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1301 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1302 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1303 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1304 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1305 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1306 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1307 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1308 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1309 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1310 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1311 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1312 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1313 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1314 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1315 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1316 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1317 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1318 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1319 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1320 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1321 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1322 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1323 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001324 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001325 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1326 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1327 #ifdef FEATURE_WLAN_SCAN_PNO
1328 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1329 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1330 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1331 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001332#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001333 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001334#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001335 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1336 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1337 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1338 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1339 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1340 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1341 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1342 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001343 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Rajeev79dbe4c2013-10-05 11:03:42 +05301344#ifdef FEATURE_WLAN_BATCH_SCAN
1345 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1346#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001347 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301348 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301349 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301350#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1351 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1352 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1353 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1354#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301355#ifdef WLAN_FEATURE_EXTSCAN
1356 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1357 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1358 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1359 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1360 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1361 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301362 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1363 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301364 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1365 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1366 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1367 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301368 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301369#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301370 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301371 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301372 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301373 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301374 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301375 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301376 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1377 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Arun Khandavalli7eeb1592015-10-19 21:36:57 +05301378 CASE_RETURN_STRING( WDI_WIFI_CONFIG_SET_RSP);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301379#ifdef FEATURE_OEM_DATA_SUPPORT
1380 CASE_RETURN_STRING (WDI_HAL_START_OEM_DATA_RSP_IND_NEW);
1381#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301382 CASE_RETURN_STRING (WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
Jeff Johnson295189b2012-06-20 16:38:30 -07001383 default:
1384 return "Unknown WDI MessageId";
1385 }
1386}
1387
1388/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301389 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1390 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301391 @param capabilityBitmap - Base address of a 4 element Bitmap array
1392 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301393 @see
1394 @returns None
1395 */
1396void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1397{
Abhishek Singh08b60122014-02-04 18:05:23 +05301398 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301399 char *pTempCapStr = NULL;
1400 char *pCapStr = NULL;
1401 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1402 if (NULL == pTempCapStr)
1403 {
1404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1405 "Memory allocation failed for CapStr");
1406 return;
1407 }
1408
1409 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301410 for (j = 0; j < 4; j++) {
1411 for (i = 0; i < 32; i++) {
1412 if ((*(capabilityBitmap + j) & (1 << i))) {
1413 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301414 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1415 pCapStr += strlen("MCC");
1416 break;
1417 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1418 pCapStr += strlen("P2P");
1419 break;
1420 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1421 pCapStr += strlen("DOT11AC");
1422 break;
1423 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1424 pCapStr += strlen("SLM_SESSIONIZATION");
1425 break;
1426 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1427 pCapStr += strlen("DOT11AC_OPMODE");
1428 break;
1429 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1430 pCapStr += strlen("SAP32STA");
1431 break;
1432 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1433 pCapStr += strlen("TDLS");
1434 break;
1435 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1436 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1437 break;
1438 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1439 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1440 break;
1441 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1442 pCapStr += strlen("BEACON_OFFLOAD");
1443 break;
1444 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1445 pCapStr += strlen("SCAN_OFFLOAD");
1446 break;
1447 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1448 pCapStr += strlen("ROAM_OFFLOAD");
1449 break;
1450 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1451 pCapStr += strlen("BCN_MISS_OFFLOAD");
1452 break;
1453 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1454 pCapStr += strlen("STA_POWERSAVE");
1455 break;
1456 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1457 pCapStr += strlen("AP_UAPSD");
1458 break;
1459 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1460 pCapStr += strlen("AP_DFS");
1461 break;
1462 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1463 pCapStr += strlen("BLOCKACK");
1464 break;
1465 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1466 pCapStr += strlen("PHY_ERR");
1467 break;
1468 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1469 pCapStr += strlen("BCN_FILTER");
1470 break;
1471 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1472 pCapStr += strlen("RTT");
1473 break;
1474 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1475 pCapStr += strlen("RATECTRL");
1476 break;
1477 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1478 pCapStr += strlen("WOW");
1479 break;
1480 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1481 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1482 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301483 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1484 pCapStr += strlen("FW_IN_TX_PATH");
1485 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301486 case HT40_OBSS_SCAN:
1487 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1488 "%s", "HT40_OBSS_SCAN");
1489 pCapStr += strlen("HT40_OBSS_SCAN");
1490 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301491 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1492 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1493 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1494 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1495 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301496 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1497 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1498 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301499 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1500 pCapStr += strlen("CH_SWITCH_V1");
1501 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301502#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1503 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1504 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1505 break;
1506#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301507#ifdef WLAN_FEATURE_EXTSCAN
1508 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1509 pCapStr += strlen("EXTENDED_SCAN");
1510 break;
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +05301511 case EXT_SCAN_ENHANCED: snprintf(pCapStr, sizeof("EXT_SCAN_ENHANCED"), "%s", "EXT_SCAN_ENHANCED");
1512 pCapStr += strlen("EXT_SCAN_ENHANCED");
1513 break;
Dino Myclee8843b32014-07-04 14:21:45 +05301514#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301515 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1516 pCapStr += strlen("MU_MIMO");
1517 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301518
Mihir Shetec34258c2014-07-30 17:50:27 +05301519 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1520 pCapStr += strlen("DYNAMIC_WMM_PS");
1521 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301522 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1523 pCapStr += strlen("FW_STATS");
1524 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301525 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1526 pCapStr += strlen("MAC_SPOOFED_SCAN");
1527 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301528 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1529 pCapStr += strlen("WPS_PRBRSP_TMPL");
1530 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301531 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1532 pCapStr += strlen("BCN_IE_FLT_DELTA");
1533 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301534 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1535 pCapStr += strlen("MGMT_FRAME_LOGGING");
1536 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301537 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1538 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1539 break;
1540
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301541 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1542 pCapStr += strlen("DISA");
1543 break;
1544
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301545 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1546 pCapStr += strlen("TDLS_OFF_CHANNEL");
1547 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301548 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1549 pCapStr += strlen("LOGGING_ENHANCEMENT");
1550 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301551 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1552 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1553 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301554 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1555 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1556 break;
Mukul Sharmaf1bd9322015-10-20 16:03:42 +05301557 case EXT_LL_STAT: snprintf(pCapStr, sizeof("EXT_LL_STAT"), "%s", "EXT_LL_STAT");
1558 pCapStr += strlen("EXT_LL_STAT");
1559 break;
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +05301560 case RTT3: snprintf(pCapStr, sizeof("RTT3"), "%s", "RTT3");
1561 pCapStr += strlen("RTT3");
1562 break;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301563 case ANTENNA_DIVERSITY_SELECTION:
1564 snprintf(pCapStr,
1565 sizeof("ANTENNA_DIVERSITY_SELECTION"), "%s",
1566 "ANTENNA_DIVERSITY_SELECTION");
1567 pCapStr += strlen("ANTENNA_DIVERSITY_SELECTION");
1568 break;
Abhishek Singh08b60122014-02-04 18:05:23 +05301569 }
1570 *pCapStr++ = ',';
1571 *pCapStr++ = ' ';
1572 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301573 }
1574 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301575 pCapStr -= 2;
1576 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301578 if (pTempCapStr)
1579 {
1580 vos_mem_free(pTempCapStr);
1581 pTempCapStr = NULL;
1582 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301583}
1584
1585/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001586 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001587
1588 @param halStatusId: HAL status Id
1589
1590 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001591 @return Result of the function call
1592*/
1593static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1594{
1595 switch (halStatusId)
1596 {
1597 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1598 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1599 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1600 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1601 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1602 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1603 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1604 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1605 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1606 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1607 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1608 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1609 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1610 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1611 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1612 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1613 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1614 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1615 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1616 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1617 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1618 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1619 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1620 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1621 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1622 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1623 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1624 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1625 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1626 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1627 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1628 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1629 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1630 default:
1631 return "Unknown HAL status";
1632 }
1633}
1634
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301635/**
1636 * wdi_state_info_dump() - prints state information of wdi layer
1637 */
1638static void wdi_state_info_dump(void)
1639{
1640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1641 "%s pending commands: %d", __func__,
1642 gWDICb.wptPendingQueue.count);
1643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1644 "uGlobalState %d wdiExpectedResponse: %d",
1645 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1646}
1647
1648
1649/**
1650 * wdi_register_debug_callback() - registration function for wdi layer
1651 * to print WDI state information
1652 */
1653static void wdi_register_debug_callback(void)
1654{
1655 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1656}
1657
1658
Jeff Johnsone7245742012-09-05 17:12:55 -07001659/*========================================================================
1660
Jeff Johnson295189b2012-06-20 16:38:30 -07001661 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001662
Jeff Johnson295189b2012-06-20 16:38:30 -07001663==========================================================================*/
1664
1665/**
1666 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001667
Jeff Johnson295189b2012-06-20 16:38:30 -07001668 DAL will allocate all the resources it needs. It will open PAL, it will also
1669 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001670 DXE/SMD or any other drivers that they need.
1671
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301672 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001673 ppWDIGlobalCtx: output pointer of Global Context
1674 pWdiDevCapability: output pointer of device capability
1675
1676 @return Result of the function call
1677*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001678WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001679WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001680(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301681 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001682 void** ppWDIGlobalCtx,
1683 WDI_DeviceCapabilityType* pWdiDevCapability,
1684 unsigned int driverType
1685)
1686{
1687 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001688 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001689 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001690 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001691 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1692
1693 /*---------------------------------------------------------------------
1694 Sanity check
1695 ---------------------------------------------------------------------*/
1696 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1697 {
1698 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1699 "Invalid input parameters in WDI_Init");
1700
Jeff Johnsone7245742012-09-05 17:12:55 -07001701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001702 }
1703
1704 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001705 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001706 ---------------------------------------------------------------------*/
1707 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1708 {
1709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1710 "WDI module already initialized - return");
1711
Jeff Johnsone7245742012-09-05 17:12:55 -07001712 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001713 }
1714
1715 /*Module is now initialized - this flag is to ensure the fact that multiple
1716 init will not happen on WDI
1717 !! - potential race does exist because read and set are not atomic,
1718 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001719 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001720
1721 /*Setup the control block */
1722 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301723 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001724
1725 /*Setup the STA Table*/
1726 wdiStatus = WDI_STATableInit(&gWDICb);
1727 if ( WDI_STATUS_SUCCESS != wdiStatus )
1728 {
1729 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1730 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001731 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001732 goto fail_STATableInit;
1733 }
1734
1735 /*------------------------------------------------------------------------
1736 Open the PAL
1737 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301738 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001739 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1740 {
1741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1742 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001743 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001744 goto fail_wpalOpen;
1745 }
1746
1747 /*Initialize main synchro mutex - it will be used to ensure integrity of
1748 the main WDI Control Block*/
1749 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1750 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1751 {
1752 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1753 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001754 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 goto fail_mutex;
1756 }
1757
1758 /*Initialize the response timer - it will be used to time all messages
1759 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001760 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1761 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001762 &gWDICb);
1763 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1764 {
1765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1766 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001767 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001768 goto fail_timer;
1769 }
1770
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001771 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1772 WDI_SsrTimerCB,
1773 &gWDICb);
1774 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1775 {
1776 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1777 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001778 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001779 goto fail_timer2;
1780 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001781 /* Initialize the WDI Pending Request Queue*/
1782 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1783 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1784 {
1785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1786 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001787 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001788 goto fail_pend_queue;
1789 }
1790
1791 /*Init WDI Pending Assoc Id Queue */
1792 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1793 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1794 {
1795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1796 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001797 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001798 goto fail_assoc_queue;
1799 }
1800
1801 /*Initialize the BSS sessions pending Queue */
1802 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1803 {
1804 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1805 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1806 {
1807 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1808 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001809 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001810 goto fail_bss_queue;
1811 }
1812 }
1813
1814 /*Indicate the control block is sufficiently initialized for callbacks*/
1815 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1816
1817 /*------------------------------------------------------------------------
1818 Initialize the Data Path Utility Module
1819 ------------------------------------------------------------------------*/
1820 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1821 if ( WDI_STATUS_SUCCESS != wdiStatus )
1822 {
1823 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1824 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001825 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001826 goto fail_dp_util_init;
1827 }
1828
1829 /* Init Set power state event */
1830 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001831 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001832 {
1833 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1834 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001835 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001836 goto fail_power_event;
1837 }
1838
1839 /* Init WCTS action event */
1840 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001841 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 {
1843 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1844 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001845 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001846 goto fail_wcts_event;
1847 }
1848
1849 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001850 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001851 ------------------------------------------------------------------------*/
1852 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1853 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001854 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001855 wctsCBs.wctsRxMsgCBData = &gWDICb;
1856
Jeff Johnsone7245742012-09-05 17:12:55 -07001857 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001858 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001859 WDI_CT_CHANNEL_SIZE,
1860 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001861
1862 if ( NULL == gWDICb.wctsHandle )
1863 {
1864 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001865 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001866 goto fail_wcts_open;
1867 }
1868
1869 gWDICb.driverMode = (tDriverType)driverType;
1870 /* FTM mode not need to open Transport Driver */
1871 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001872 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001873 /*------------------------------------------------------------------------
1874 Open the Data Transport
1875 ------------------------------------------------------------------------*/
1876 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1877 {
1878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001879 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001880 goto fail_wdts_open;
1881 }
1882 }
1883
1884 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001885 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301886 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001887 /*Send the context as a ptr to the global WDI Control Block*/
1888 *ppWDIGlobalCtx = &gWDICb;
1889
1890 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001891 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001892 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1893 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301894
1895 wdi_register_debug_callback();
1896
Jeff Johnson295189b2012-06-20 16:38:30 -07001897 return WDI_STATUS_SUCCESS;
1898
1899 /* ERROR handlers
1900 Undo everything that completed successfully */
1901
1902 fail_wdts_open:
1903 {
1904 wpt_status eventStatus;
1905
1906 /* Closing WCTS in this scenario is tricky since it has to close
1907 the SMD channel and then we get notified asynchronously when
1908 the channel has been closed. So we take some of the logic from
1909 the "normal" close procedure in WDI_Close()
1910 */
1911
1912 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001913 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001914 {
1915 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001916 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001917 }
1918
1919 WCTS_CloseTransport(gWDICb.wctsHandle);
1920
1921 /* Wait for WCTS to close the control transport. If we were able
1922 to reset the event flag, then we'll wait for the event,
1923 otherwise we'll wait for a maximum amount of time required for
1924 the channel to be closed */
1925 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
1926 {
Jeff Johnsone7245742012-09-05 17:12:55 -07001927 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07001928 WDI_WCTS_ACTION_TIMEOUT);
1929 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
1930 {
1931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001932 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001933 }
1934 }
1935 else
1936 {
1937 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
1938 }
1939 }
1940 fail_wcts_open:
1941 wpalEventDelete(&gWDICb.wctsActionEvent);
1942 fail_wcts_event:
1943 wpalEventDelete(&gWDICb.setPowerStateEvent);
1944 fail_power_event:
1945 WDI_DP_UtilsExit(&gWDICb);
1946 fail_dp_util_init:
1947 gWDICb.magic = 0;
1948 fail_bss_queue:
1949 /* entries 0 thru i-1 were successfully initialized */
1950 while (0 < i)
1951 {
1952 i--;
1953 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1954 }
1955 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
1956 fail_assoc_queue:
1957 wpal_list_destroy(&(gWDICb.wptPendingQueue));
1958 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001959 wpalTimerDelete(&gWDICb.ssrTimer);
1960 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07001961 wpalTimerDelete(&gWDICb.wptResponseTimer);
1962 fail_timer:
1963 wpalMutexDelete(&gWDICb.wptMutex);
1964 fail_mutex:
1965 wpalClose(gWDICb.pPALContext);
1966 fail_wpalOpen:
1967 WDI_STATableClose(&gWDICb);
1968 fail_STATableInit:
1969 gWDIInitialized = eWLAN_PAL_FALSE;
1970
1971 return WDI_STATUS_E_FAILURE;
1972
1973}/*WDI_Init*/;
1974
1975/**
1976 @brief WDI_Start will be called when the upper MAC is ready to
1977 commence operation with the WLAN Device. Upon the call
1978 of this API the WLAN DAL will pack and send a HAL Start
1979 message to the lower RIVA sub-system if the SMD channel
1980 has been fully opened and the RIVA subsystem is up.
1981
1982 If the RIVA sub-system is not yet up and running DAL
1983 will queue the request for Open and will wait for the
1984 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07001985 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07001986
1987 WDI_Init must have been called.
1988
Jeff Johnsone7245742012-09-05 17:12:55 -07001989 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07001990 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07001991
Jeff Johnson295189b2012-06-20 16:38:30 -07001992 wdiStartRspCb: callback for passing back the response of
1993 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07001994
Jeff Johnson295189b2012-06-20 16:38:30 -07001995 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07001996 callback
1997
Jeff Johnson295189b2012-06-20 16:38:30 -07001998 @see WDI_Start
1999 @return Result of the function call
2000*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002001WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002002WDI_Start
2003(
2004 WDI_StartReqParamsType* pwdiStartParams,
2005 WDI_StartRspCb wdiStartRspCb,
2006 void* pUserData
2007)
2008{
2009 WDI_EventInfoType wdiEventData;
2010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2011
2012 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002013 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002014 ------------------------------------------------------------------------*/
2015 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2016 {
2017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2018 "WDI API call before module is initialized - Fail request");
2019
Jeff Johnsone7245742012-09-05 17:12:55 -07002020 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002021 }
2022
2023 /*------------------------------------------------------------------------
2024 Fill in Event data and post to the Main FSM
2025 ------------------------------------------------------------------------*/
2026 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002027 wdiEventData.pEventData = pwdiStartParams;
2028 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
2029 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002030 wdiEventData.pUserData = pUserData;
2031
2032 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2033
2034}/*WDI_Start*/
2035
2036/**
2037 @brief WDI_Stop will be called when the upper MAC is ready to
2038 stop any operation with the WLAN Device. Upon the call
2039 of this API the WLAN DAL will pack and send a HAL Stop
2040 message to the lower RIVA sub-system if the DAL Core is
2041 in started state.
2042
2043 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07002044
2045 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002046
2047 WDI_Start must have been called.
2048
Jeff Johnsone7245742012-09-05 17:12:55 -07002049 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002050 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002051
Jeff Johnson295189b2012-06-20 16:38:30 -07002052 wdiStopRspCb: callback for passing back the response of
2053 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002054
Jeff Johnson295189b2012-06-20 16:38:30 -07002055 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002056 callback
2057
Jeff Johnson295189b2012-06-20 16:38:30 -07002058 @see WDI_Start
2059 @return Result of the function call
2060*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002061WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002062WDI_Stop
2063(
2064 WDI_StopReqParamsType* pwdiStopParams,
2065 WDI_StopRspCb wdiStopRspCb,
2066 void* pUserData
2067)
2068{
2069 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002070 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002071 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2072
2073 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002074 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002075 ------------------------------------------------------------------------*/
2076 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2077 {
2078 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2079 "WDI API call before module is initialized - Fail request");
2080
Jeff Johnsone7245742012-09-05 17:12:55 -07002081 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002082 }
2083
Jeff Johnson43971f52012-07-17 12:26:56 -07002084 /*Access to the global state must be locked before cleaning */
2085 wpalMutexAcquire(&pWDICtx->wptMutex);
2086
2087 /*Clear all pending request*/
2088 WDI_ClearPendingRequests(pWDICtx);
2089
2090 /*We have completed cleaning unlock now*/
2091 wpalMutexRelease(&pWDICtx->wptMutex);
2092
Jeff Johnson295189b2012-06-20 16:38:30 -07002093 /* Free the global variables */
2094 wpalMemoryFree(gpHostWlanFeatCaps);
2095 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002096 gpHostWlanFeatCaps = NULL;
2097 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002098
2099 /*------------------------------------------------------------------------
2100 Fill in Event data and post to the Main FSM
2101 ------------------------------------------------------------------------*/
2102 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002103 wdiEventData.pEventData = pwdiStopParams;
2104 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2105 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002106 wdiEventData.pUserData = pUserData;
2107
2108 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2109
2110}/*WDI_Stop*/
2111
2112
2113
2114/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002115 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002116 needs to interact with DAL. DAL will free its control
2117 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002118
2119 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002120
2121 WDI_Stop must have been called.
2122
2123 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002124
Jeff Johnson295189b2012-06-20 16:38:30 -07002125 @see WDI_Stop
2126 @return Result of the function call
2127*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002128WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002129WDI_Close
2130(
2131 void
2132)
2133{
2134 wpt_uint8 i;
2135 WDI_EventInfoType wdiEventData;
2136 wpt_status wptStatus;
2137 wpt_status eventStatus;
2138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2139
2140 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002141 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002142 ------------------------------------------------------------------------*/
2143 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2144 {
2145 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2146 "WDI API call before module is initialized - Fail request");
2147
Jeff Johnsone7245742012-09-05 17:12:55 -07002148 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002149 }
2150
2151 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2152 (the control transport will be closed by the FSM and we'll want
2153 to wait until that completes)*/
2154 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002155 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002156 {
2157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002158 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002159 /* fall through and try to finish closing via the FSM */
2160 }
2161
2162 /*------------------------------------------------------------------------
2163 Fill in Event data and post to the Main FSM
2164 ------------------------------------------------------------------------*/
2165 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002166 wdiEventData.pEventData = NULL;
2167 wdiEventData.uEventDataSize = 0;
2168 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002169 wdiEventData.pUserData = NULL;
2170
2171 gWDIInitialized = eWLAN_PAL_FALSE;
2172
2173 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2174
2175 /*Wait for WCTS to close the control transport
2176 (but only if we were able to reset the event flag*/
2177 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2178 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002179 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 WDI_WCTS_ACTION_TIMEOUT);
2181 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2182 {
2183 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002184 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002185 }
2186 }
2187
2188 /* Destroy the WCTS action event */
2189 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2190 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2191 {
2192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2193 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002194 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002195 }
2196
2197 /* Destroy the Set Power State event */
2198 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2199 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2200 {
2201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2202 "WDI Close failed to destroy an event");
2203
Jeff Johnsone7245742012-09-05 17:12:55 -07002204 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002205 }
2206
2207 /*------------------------------------------------------------------------
2208 Closes the Data Path Utility Module
2209 ------------------------------------------------------------------------*/
2210 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2211 {
2212 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2213 "WDI Init failed to close the DP Util Module");
2214
Jeff Johnsone7245742012-09-05 17:12:55 -07002215 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002216 }
2217
2218 /*destroy the BSS sessions pending Queue */
2219 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2220 {
2221 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2222 }
2223
2224 /* destroy the WDI Pending Assoc Id Request Queue*/
2225 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2226
2227 /* destroy the WDI Pending Request Queue*/
2228 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002229
Jeff Johnson295189b2012-06-20 16:38:30 -07002230 /*destroy the response timer */
2231 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2232
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002233 /*destroy the SSR timer */
2234 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2235
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 /*invalidate the main synchro mutex */
2237 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2238 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2239 {
2240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2241 "Failed to delete mutex %d", wptStatus);
2242 WDI_ASSERT(0);
2243 }
2244
2245 /*Clear control block. note that this will clear the "magic"
2246 which will inhibit all asynchronous callbacks*/
2247 WDI_CleanCB(&gWDICb);
2248
2249 return wptStatus;
2250
2251}/*WDI_Close*/
2252
2253/**
2254 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2255 This will do most of the WDI stop & close
2256 operations without doing any handshake with Riva
2257
2258 This will also make sure that the control transport
2259 will NOT be closed.
2260
2261 This request will not be queued.
2262
2263
2264 WDI_Start must have been called.
2265
2266 @param closeTransport: Close control channel if this is set
2267
2268 @return Result of the function call
2269*/
2270WDI_Status
2271WDI_Shutdown
2272(
2273 wpt_boolean closeTransport
2274)
2275{
2276 WDI_EventInfoType wdiEventData;
2277 wpt_status wptStatus;
2278 int i = 0;
2279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2280
2281 /*------------------------------------------------------------------------
2282 Sanity Check
2283 ------------------------------------------------------------------------*/
2284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2285 {
2286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2287 "WDI API call before module is initialized - Fail request");
2288
2289 return WDI_STATUS_E_NOT_ALLOWED;
2290 }
2291
2292 /*------------------------------------------------------------------------
2293 Fill in Event data and post to the Main FSM
2294 ------------------------------------------------------------------------*/
2295 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2296 wdiEventData.pEventData = NULL;
2297 wdiEventData.uEventDataSize = 0;
2298
2299 /* Shutdown will not be queued, if the state is busy timer will be
2300 * stopped & this message will be processed.*/
2301 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2302 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2303 {
2304 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002305 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002306 }
2307 /* Destroy the Set Power State event */
2308 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2309 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2310 {
2311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2312 "WDI Close failed to destroy an event");
2313
2314 WDI_ASSERT(0);
2315 }
2316 /*------------------------------------------------------------------------
2317 Closes the Data Path Utility Module
2318 ------------------------------------------------------------------------*/
2319 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2320 {
2321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2322 "WDI Init failed to close the DP Util Module");
2323
2324 WDI_ASSERT(0);
2325 }
2326 if ( closeTransport )
2327 {
2328 /* Close control transport, called from module unload */
2329 WCTS_CloseTransport(gWDICb.wctsHandle);
2330 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002331 else
2332 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002333 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002334 the pending messages in the transport queue */
2335 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2336 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002337 /*destroy the BSS sessions pending Queue */
2338 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2339 {
2340 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2341 }
2342
2343 /* destroy the WDI Pending Assoc Id Request Queue*/
2344 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2345 /* destroy the WDI Pending Request Queue*/
2346 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2347 /*destroy the response timer */
2348 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002349 /*destroy the SSR timer */
2350 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002351
2352 /*invalidate the main synchro mutex */
2353 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2354 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2355 {
2356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002357 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002358 WDI_ASSERT(0);
2359 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002360 /* Free the global variables */
2361 wpalMemoryFree(gpHostWlanFeatCaps);
2362 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002363 gpHostWlanFeatCaps = NULL;
2364 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002365 /*Clear control block. note that this will clear the "magic"
2366 which will inhibit all asynchronous callbacks*/
2367 WDI_CleanCB(&gWDICb);
2368 return wptStatus;
2369
2370}/*WDI_Shutdown*/
2371
2372
Jeff Johnsone7245742012-09-05 17:12:55 -07002373/*========================================================================
2374
Jeff Johnson295189b2012-06-20 16:38:30 -07002375 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002376
Jeff Johnson295189b2012-06-20 16:38:30 -07002377==========================================================================*/
2378
2379/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002380 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002381 the WLAN Device to get ready for a scan procedure. Upon
2382 the call of this API the WLAN DAL will pack and send a
2383 HAL Init Scan request message to the lower RIVA
2384 sub-system if DAL is in state STARTED.
2385
2386 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002387 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002388
2389 WDI_Start must have been called.
2390
2391 @param wdiInitScanParams: the init scan parameters as specified
2392 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002393
Jeff Johnson295189b2012-06-20 16:38:30 -07002394 wdiInitScanRspCb: callback for passing back the response
2395 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002396
Jeff Johnson295189b2012-06-20 16:38:30 -07002397 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002398 callback
2399
Jeff Johnson295189b2012-06-20 16:38:30 -07002400 @see WDI_Start
2401 @return Result of the function call
2402*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002403WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002404WDI_InitScanReq
2405(
2406 WDI_InitScanReqParamsType* pwdiInitScanParams,
2407 WDI_InitScanRspCb wdiInitScanRspCb,
2408 void* pUserData
2409)
2410{
2411 WDI_EventInfoType wdiEventData;
2412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2413
2414 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002415 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002416 ------------------------------------------------------------------------*/
2417 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2418 {
2419 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2420 "WDI API call before module is initialized - Fail request");
2421
Jeff Johnsone7245742012-09-05 17:12:55 -07002422 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002423 }
2424
2425 /*------------------------------------------------------------------------
2426 Fill in Event data and post to the Main FSM
2427 ------------------------------------------------------------------------*/
2428 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002429 wdiEventData.pEventData = pwdiInitScanParams;
2430 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2431 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002432 wdiEventData.pUserData = pUserData;
2433
2434 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2435
2436}/*WDI_InitScanReq*/
2437
2438/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002439 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002440 wishes to change the Scan channel on the WLAN Device.
2441 Upon the call of this API the WLAN DAL will pack and
2442 send a HAL Start Scan request message to the lower RIVA
2443 sub-system if DAL is in state STARTED.
2444
2445 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002446 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002447
2448 WDI_InitScanReq must have been called.
2449
Jeff Johnsone7245742012-09-05 17:12:55 -07002450 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002451 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002452
Jeff Johnson295189b2012-06-20 16:38:30 -07002453 wdiStartScanRspCb: callback for passing back the
2454 response of the start scan operation received from the
2455 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002456
Jeff Johnson295189b2012-06-20 16:38:30 -07002457 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002458 callback
2459
Jeff Johnson295189b2012-06-20 16:38:30 -07002460 @see WDI_InitScanReq
2461 @return Result of the function call
2462*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002463WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002464WDI_StartScanReq
2465(
2466 WDI_StartScanReqParamsType* pwdiStartScanParams,
2467 WDI_StartScanRspCb wdiStartScanRspCb,
2468 void* pUserData
2469)
2470{
2471 WDI_EventInfoType wdiEventData;
2472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2473
2474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002475 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002476 ------------------------------------------------------------------------*/
2477 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2478 {
2479 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2480 "WDI API call before module is initialized - Fail request");
2481
Jeff Johnsone7245742012-09-05 17:12:55 -07002482 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002483 }
2484
2485 /*------------------------------------------------------------------------
2486 Fill in Event data and post to the Main FSM
2487 ------------------------------------------------------------------------*/
2488 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002489 wdiEventData.pEventData = pwdiStartScanParams;
2490 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2491 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002492 wdiEventData.pUserData = pUserData;
2493
2494 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2495
2496}/*WDI_StartScanReq*/
2497
2498
2499/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002500 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002501 wants to end scanning for a particular channel that it
2502 had set before by calling Scan Start on the WLAN Device.
2503 Upon the call of this API the WLAN DAL will pack and
2504 send a HAL End Scan request message to the lower RIVA
2505 sub-system if DAL is in state STARTED.
2506
2507 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002508 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002509
2510 WDI_StartScanReq must have been called.
2511
Jeff Johnsone7245742012-09-05 17:12:55 -07002512 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002513 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002514
Jeff Johnson295189b2012-06-20 16:38:30 -07002515 wdiEndScanRspCb: callback for passing back the response
2516 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002517
Jeff Johnson295189b2012-06-20 16:38:30 -07002518 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002519 callback
2520
Jeff Johnson295189b2012-06-20 16:38:30 -07002521 @see WDI_StartScanReq
2522 @return Result of the function call
2523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002525WDI_EndScanReq
2526(
2527 WDI_EndScanReqParamsType* pwdiEndScanParams,
2528 WDI_EndScanRspCb wdiEndScanRspCb,
2529 void* pUserData
2530)
2531{
2532 WDI_EventInfoType wdiEventData;
2533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2534
2535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002537 ------------------------------------------------------------------------*/
2538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2539 {
2540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2541 "WDI API call before module is initialized - Fail request");
2542
Jeff Johnsone7245742012-09-05 17:12:55 -07002543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 }
2545
2546 /*------------------------------------------------------------------------
2547 Fill in Event data and post to the Main FSM
2548 ------------------------------------------------------------------------*/
2549 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002550 wdiEventData.pEventData = pwdiEndScanParams;
2551 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2552 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002553 wdiEventData.pUserData = pUserData;
2554
2555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2556
2557}/*WDI_EndScanReq*/
2558
2559
2560/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002561 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002562 completed the scan process on the WLAN Device. Upon the
2563 call of this API the WLAN DAL will pack and send a HAL
2564 Finish Scan Request request message to the lower RIVA
2565 sub-system if DAL is in state STARTED.
2566
2567 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002568 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002569
2570 WDI_InitScanReq must have been called.
2571
Jeff Johnsone7245742012-09-05 17:12:55 -07002572 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002573 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002574
Jeff Johnson295189b2012-06-20 16:38:30 -07002575 wdiFinishScanRspCb: callback for passing back the
2576 response of the finish scan operation received from the
2577 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002578
Jeff Johnson295189b2012-06-20 16:38:30 -07002579 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002580 callback
2581
Jeff Johnson295189b2012-06-20 16:38:30 -07002582 @see WDI_InitScanReq
2583 @return Result of the function call
2584*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002585WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002586WDI_FinishScanReq
2587(
2588 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2589 WDI_FinishScanRspCb wdiFinishScanRspCb,
2590 void* pUserData
2591)
2592{
2593 WDI_EventInfoType wdiEventData;
2594 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2595
2596 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002597 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002598 ------------------------------------------------------------------------*/
2599 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2600 {
2601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2602 "WDI API call before module is initialized - Fail request");
2603
Jeff Johnsone7245742012-09-05 17:12:55 -07002604 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002605 }
2606
2607 /*------------------------------------------------------------------------
2608 Fill in Event data and post to the Main FSM
2609 ------------------------------------------------------------------------*/
2610 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002611 wdiEventData.pEventData = pwdiFinishScanParams;
2612 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2613 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002614 wdiEventData.pUserData = pUserData;
2615
2616 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2617
2618}/*WDI_FinishScanReq*/
2619
Jeff Johnsone7245742012-09-05 17:12:55 -07002620/*========================================================================
2621
Jeff Johnson295189b2012-06-20 16:38:30 -07002622 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002623
Jeff Johnson295189b2012-06-20 16:38:30 -07002624==========================================================================*/
2625
2626/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002627 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002628 to start an association procedure to a BSS. Upon the
2629 call of this API the WLAN DAL will pack and send a HAL
2630 Join request message to the lower RIVA sub-system if
2631 DAL is in state STARTED.
2632
2633 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002634 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002635
2636 WDI_Start must have been called.
2637
Jeff Johnsone7245742012-09-05 17:12:55 -07002638 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002639 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002640
Jeff Johnson295189b2012-06-20 16:38:30 -07002641 wdiJoinRspCb: callback for passing back the response of
2642 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002643
Jeff Johnson295189b2012-06-20 16:38:30 -07002644 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002645 callback
2646
Jeff Johnson295189b2012-06-20 16:38:30 -07002647 @see WDI_Start
2648 @return Result of the function call
2649*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002650WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002651WDI_JoinReq
2652(
2653 WDI_JoinReqParamsType* pwdiJoinParams,
2654 WDI_JoinRspCb wdiJoinRspCb,
2655 void* pUserData
2656)
2657{
2658 WDI_EventInfoType wdiEventData;
2659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2660
2661 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002662 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002663 ------------------------------------------------------------------------*/
2664 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2665 {
2666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2667 "WDI API call before module is initialized - Fail request");
2668
Jeff Johnsone7245742012-09-05 17:12:55 -07002669 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002670 }
2671
2672 /*------------------------------------------------------------------------
2673 Fill in Event data and post to the Main FSM
2674 ------------------------------------------------------------------------*/
2675 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002676 wdiEventData.pEventData = pwdiJoinParams;
2677 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2678 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002679 wdiEventData.pUserData = pUserData;
2680
2681 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2682
2683}/*WDI_JoinReq*/
2684
2685/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002686 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002687 wishes to configure the newly acquired or in process of
2688 being acquired BSS to the HW . Upon the call of this API
2689 the WLAN DAL will pack and send a HAL Config BSS request
2690 message to the lower RIVA sub-system if DAL is in state
2691 STARTED.
2692
2693 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002694 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002695
2696 WDI_JoinReq must have been called.
2697
Jeff Johnsone7245742012-09-05 17:12:55 -07002698 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002699 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002700
Jeff Johnson295189b2012-06-20 16:38:30 -07002701 wdiConfigBSSRspCb: callback for passing back the
2702 response of the config BSS operation received from the
2703 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002704
Jeff Johnson295189b2012-06-20 16:38:30 -07002705 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002706 callback
2707
Jeff Johnson295189b2012-06-20 16:38:30 -07002708 @see WDI_JoinReq
2709 @return Result of the function call
2710*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002711WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002712WDI_ConfigBSSReq
2713(
2714 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2715 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2716 void* pUserData
2717)
2718{
2719 WDI_EventInfoType wdiEventData;
2720 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2721
2722 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002723 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002724 ------------------------------------------------------------------------*/
2725 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2726 {
2727 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2728 "WDI API call before module is initialized - Fail request");
2729
Jeff Johnsone7245742012-09-05 17:12:55 -07002730 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002731 }
2732
2733 /*------------------------------------------------------------------------
2734 Fill in Event data and post to the Main FSM
2735 ------------------------------------------------------------------------*/
2736 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002737 wdiEventData.pEventData = pwdiConfigBSSParams;
2738 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2739 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002740 wdiEventData.pUserData = pUserData;
2741
2742 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2743
2744}/*WDI_ConfigBSSReq*/
2745
2746/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002747 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002748 disassociating from the BSS and wishes to notify HW.
2749 Upon the call of this API the WLAN DAL will pack and
2750 send a HAL Del BSS request message to the lower RIVA
2751 sub-system if DAL is in state STARTED.
2752
2753 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002754 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002755
2756 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2757
Jeff Johnsone7245742012-09-05 17:12:55 -07002758 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002759 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002760
Jeff Johnson295189b2012-06-20 16:38:30 -07002761 wdiDelBSSRspCb: callback for passing back the response
2762 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002763
Jeff Johnson295189b2012-06-20 16:38:30 -07002764 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002765 callback
2766
2767 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002768 @return Result of the function call
2769*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002770WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002771WDI_DelBSSReq
2772(
2773 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2774 WDI_DelBSSRspCb wdiDelBSSRspCb,
2775 void* pUserData
2776)
2777{
2778 WDI_EventInfoType wdiEventData;
2779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2780
2781 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002782 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002783 ------------------------------------------------------------------------*/
2784 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2785 {
2786 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2787 "WDI API call before module is initialized - Fail request");
2788
Jeff Johnsone7245742012-09-05 17:12:55 -07002789 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002790 }
2791
2792 /*------------------------------------------------------------------------
2793 Fill in Event data and post to the Main FSM
2794 ------------------------------------------------------------------------*/
2795 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002796 wdiEventData.pEventData = pwdiDelBSSParams;
2797 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2798 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002799 wdiEventData.pUserData = pUserData;
2800
2801 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2802
2803}/*WDI_DelBSSReq*/
2804
2805/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002806 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002807 associated to a BSS and wishes to configure HW for
2808 associated state. Upon the call of this API the WLAN DAL
2809 will pack and send a HAL Post Assoc request message to
2810 the lower RIVA sub-system if DAL is in state STARTED.
2811
2812 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002813 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002814
2815 WDI_JoinReq must have been called.
2816
2817 @param wdiPostAssocReqParams: the assoc parameters as specified
2818 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002819
Jeff Johnson295189b2012-06-20 16:38:30 -07002820 wdiPostAssocRspCb: callback for passing back the
2821 response of the post assoc operation received from the
2822 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002823
Jeff Johnson295189b2012-06-20 16:38:30 -07002824 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002825 callback
2826
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 @see WDI_JoinReq
2828 @return Result of the function call
2829*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002831WDI_PostAssocReq
2832(
2833 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2834 WDI_PostAssocRspCb wdiPostAssocRspCb,
2835 void* pUserData
2836)
2837{
2838 WDI_EventInfoType wdiEventData;
2839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2840
2841 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002842 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002843 ------------------------------------------------------------------------*/
2844 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2845 {
2846 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2847 "WDI API call before module is initialized - Fail request");
2848
Jeff Johnsone7245742012-09-05 17:12:55 -07002849 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002850 }
2851
2852 /*------------------------------------------------------------------------
2853 Fill in Event data and post to the Main FSM
2854 ------------------------------------------------------------------------*/
2855 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002856 wdiEventData.pEventData = pwdiPostAssocReqParams;
2857 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2858 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002859 wdiEventData.pUserData = pUserData;
2860
2861 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2862
2863}/*WDI_PostAssocReq*/
2864
2865/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002866 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002867 association with another STA has ended and the station
2868 must be deleted from HW. Upon the call of this API the
2869 WLAN DAL will pack and send a HAL Del STA request
2870 message to the lower RIVA sub-system if DAL is in state
2871 STARTED.
2872
2873 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002874 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002875
2876 WDI_PostAssocReq must have been called.
2877
Jeff Johnsone7245742012-09-05 17:12:55 -07002878 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002879 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002880
Jeff Johnson295189b2012-06-20 16:38:30 -07002881 wdiDelSTARspCb: callback for passing back the response
2882 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002883
Jeff Johnson295189b2012-06-20 16:38:30 -07002884 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002885 callback
2886
Jeff Johnson295189b2012-06-20 16:38:30 -07002887 @see WDI_PostAssocReq
2888 @return Result of the function call
2889*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002890WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002891WDI_DelSTAReq
2892(
2893 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2894 WDI_DelSTARspCb wdiDelSTARspCb,
2895 void* pUserData
2896)
2897{
2898 WDI_EventInfoType wdiEventData;
2899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2900
2901 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002903 ------------------------------------------------------------------------*/
2904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2905 {
2906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2907 "WDI API call before module is initialized - Fail request");
2908
Jeff Johnsone7245742012-09-05 17:12:55 -07002909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002910 }
2911
2912 /*------------------------------------------------------------------------
2913 Fill in Event data and post to the Main FSM
2914 ------------------------------------------------------------------------*/
2915 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002916 wdiEventData.pEventData = pwdiDelSTAParams;
2917 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
2918 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002919 wdiEventData.pUserData = pUserData;
2920
2921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2922
2923}/*WDI_DelSTAReq*/
2924
Jeff Johnsone7245742012-09-05 17:12:55 -07002925/*========================================================================
2926
Jeff Johnson295189b2012-06-20 16:38:30 -07002927 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002928
Jeff Johnson295189b2012-06-20 16:38:30 -07002929==========================================================================*/
2930
2931/**
2932 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
2933 install a BSS encryption key on the HW. Upon the call of this
2934 API the WLAN DAL will pack and send a Set BSS Key request
2935 message to the lower RIVA sub-system if DAL is in state
2936 STARTED.
2937
2938 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002939 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002940
2941 WDI_PostAssocReq must have been called.
2942
Jeff Johnsone7245742012-09-05 17:12:55 -07002943 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002944 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002945
Jeff Johnson295189b2012-06-20 16:38:30 -07002946 wdiSetBSSKeyRspCb: callback for passing back the
2947 response of the set BSS Key operation received from the
2948 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002949
Jeff Johnson295189b2012-06-20 16:38:30 -07002950 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002951 callback
2952
Jeff Johnson295189b2012-06-20 16:38:30 -07002953 @see WDI_PostAssocReq
2954 @return Result of the function call
2955*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002956WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002957WDI_SetBSSKeyReq
2958(
2959 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
2960 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
2961 void* pUserData
2962)
2963{
2964 WDI_EventInfoType wdiEventData;
2965 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2966
2967 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002968 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002969 ------------------------------------------------------------------------*/
2970 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2971 {
2972 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2973 "WDI API call before module is initialized - Fail request");
2974
Jeff Johnsone7245742012-09-05 17:12:55 -07002975 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002976 }
2977
2978 /*------------------------------------------------------------------------
2979 Fill in Event data and post to the Main FSM
2980 ------------------------------------------------------------------------*/
2981 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002982 wdiEventData.pEventData = pwdiSetBSSKeyParams;
2983 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
2984 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002985 wdiEventData.pUserData = pUserData;
2986
2987 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2988
2989}/*WDI_SetBSSKeyReq*/
2990
2991/**
2992 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
2993 uninstall a BSS key from HW. Upon the call of this API the
2994 WLAN DAL will pack and send a HAL Remove BSS Key request
2995 message to the lower RIVA sub-system if DAL is in state
2996 STARTED.
2997
2998 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002999 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003000
3001 WDI_SetBSSKeyReq must have been called.
3002
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003004 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003005
Jeff Johnson295189b2012-06-20 16:38:30 -07003006 wdiRemoveBSSKeyRspCb: callback for passing back the
3007 response of the remove BSS key operation received from
3008 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003009
Jeff Johnson295189b2012-06-20 16:38:30 -07003010 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003011 callback
3012
Jeff Johnson295189b2012-06-20 16:38:30 -07003013 @see WDI_SetBSSKeyReq
3014 @return Result of the function call
3015*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003016WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003017WDI_RemoveBSSKeyReq
3018(
3019 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
3020 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
3021 void* pUserData
3022)
3023{
3024 WDI_EventInfoType wdiEventData;
3025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3026
3027 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003028 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003029 ------------------------------------------------------------------------*/
3030 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3031 {
3032 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3033 "WDI API call before module is initialized - Fail request");
3034
Jeff Johnsone7245742012-09-05 17:12:55 -07003035 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003036 }
3037
3038 /*------------------------------------------------------------------------
3039 Fill in Event data and post to the Main FSM
3040 ------------------------------------------------------------------------*/
3041 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003042 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
3043 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
3044 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003045 wdiEventData.pUserData = pUserData;
3046
3047 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3048
3049}/*WDI_RemoveBSSKeyReq*/
3050
3051
3052/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003053 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003054 ready to install a STA(ast) encryption key in HW. Upon
3055 the call of this API the WLAN DAL will pack and send a
3056 HAL Set STA Key request message to the lower RIVA
3057 sub-system if DAL is in state STARTED.
3058
3059 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003060 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003061
3062 WDI_PostAssocReq must have been called.
3063
Jeff Johnsone7245742012-09-05 17:12:55 -07003064 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003065 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003066
Jeff Johnson295189b2012-06-20 16:38:30 -07003067 wdiSetSTAKeyRspCb: callback for passing back the
3068 response of the set STA key operation received from the
3069 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003070
Jeff Johnson295189b2012-06-20 16:38:30 -07003071 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003072 callback
3073
Jeff Johnson295189b2012-06-20 16:38:30 -07003074 @see WDI_PostAssocReq
3075 @return Result of the function call
3076*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003077WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003078WDI_SetSTAKeyReq
3079(
3080 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3081 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3082 void* pUserData
3083)
3084{
3085 WDI_EventInfoType wdiEventData;
3086 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3087
3088 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003089 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003090 ------------------------------------------------------------------------*/
3091 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3092 {
3093 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3094 "WDI API call before module is initialized - Fail request");
3095
Jeff Johnsone7245742012-09-05 17:12:55 -07003096 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003097 }
3098
3099 /*------------------------------------------------------------------------
3100 Fill in Event data and post to the Main FSM
3101 ------------------------------------------------------------------------*/
3102 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003103 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3104 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3105 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003106 wdiEventData.pUserData = pUserData;
3107
3108 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3109
3110}/*WDI_SetSTAKeyReq*/
3111
3112
3113/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003114 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003115 wants to uninstall a previously set STA key in HW. Upon
3116 the call of this API the WLAN DAL will pack and send a
3117 HAL Remove STA Key request message to the lower RIVA
3118 sub-system if DAL is in state STARTED.
3119
3120 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003121 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003122
3123 WDI_SetSTAKeyReq must have been called.
3124
Jeff Johnsone7245742012-09-05 17:12:55 -07003125 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003126 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003127
Jeff Johnson295189b2012-06-20 16:38:30 -07003128 wdiRemoveSTAKeyRspCb: callback for passing back the
3129 response of the remove STA key operation received from
3130 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003131
Jeff Johnson295189b2012-06-20 16:38:30 -07003132 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003133 callback
3134
Jeff Johnson295189b2012-06-20 16:38:30 -07003135 @see WDI_SetSTAKeyReq
3136 @return Result of the function call
3137*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003138WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003139WDI_RemoveSTAKeyReq
3140(
3141 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3142 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3143 void* pUserData
3144)
3145{
3146 WDI_EventInfoType wdiEventData;
3147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3148
3149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003150 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003151 ------------------------------------------------------------------------*/
3152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3153 {
3154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3155 "WDI API call before module is initialized - Fail request");
3156
Jeff Johnsone7245742012-09-05 17:12:55 -07003157 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003158 }
3159
3160 /*------------------------------------------------------------------------
3161 Fill in Event data and post to the Main FSM
3162 ------------------------------------------------------------------------*/
3163 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003164 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3165 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3166 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003167 wdiEventData.pUserData = pUserData;
3168
3169 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3170
3171}/*WDI_RemoveSTAKeyReq*/
3172
3173
3174/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003175 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003176 wants to install a STA Bcast encryption key on the HW.
3177 Upon the call of this API the WLAN DAL will pack and
3178 send a HAL Start request message to the lower RIVA
3179 sub-system if DAL is in state STARTED.
3180
3181 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003182 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003183
3184 WDI_PostAssocReq must have been called.
3185
Jeff Johnsone7245742012-09-05 17:12:55 -07003186 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003187 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003188
Jeff Johnson295189b2012-06-20 16:38:30 -07003189 wdiSetSTABcastKeyRspCb: callback for passing back the
3190 response of the set BSS Key operation received from the
3191 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003192
Jeff Johnson295189b2012-06-20 16:38:30 -07003193 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003194 callback
3195
Jeff Johnson295189b2012-06-20 16:38:30 -07003196 @see WDI_PostAssocReq
3197 @return Result of the function call
3198*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003199WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003200WDI_SetSTABcastKeyReq
3201(
3202 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3203 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3204 void* pUserData
3205)
3206
3207{
3208 WDI_EventInfoType wdiEventData;
3209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3210
3211 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 ------------------------------------------------------------------------*/
3214 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3215 {
3216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3217 "WDI API call before module is initialized - Fail request");
3218
Jeff Johnsone7245742012-09-05 17:12:55 -07003219 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003220 }
3221
3222 /*------------------------------------------------------------------------
3223 Fill in Event data and post to the Main FSM
3224 ------------------------------------------------------------------------*/
3225 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003226 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3227 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3228 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003229 wdiEventData.pUserData = pUserData;
3230
3231 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3232
3233}/*WDI_SetSTABcastKeyReq*/
3234
3235/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003236 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003237 MAC wants to uninstall a STA Bcast key from HW. Upon the
3238 call of this API the WLAN DAL will pack and send a HAL
3239 Remove STA Bcast Key request message to the lower RIVA
3240 sub-system if DAL is in state STARTED.
3241
3242 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003243 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003244
3245 WDI_SetSTABcastKeyReq must have been called.
3246
Jeff Johnsone7245742012-09-05 17:12:55 -07003247 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003248 parameters as specified by the Device
3249 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003250
Jeff Johnson295189b2012-06-20 16:38:30 -07003251 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3252 response of the remove STA Bcast key operation received
3253 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003254
Jeff Johnson295189b2012-06-20 16:38:30 -07003255 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003256 callback
3257
Jeff Johnson295189b2012-06-20 16:38:30 -07003258 @see WDI_SetSTABcastKeyReq
3259 @return Result of the function call
3260*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003261WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003262WDI_RemoveSTABcastKeyReq
3263(
3264 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3265 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3266 void* pUserData
3267)
3268{
3269 WDI_EventInfoType wdiEventData;
3270 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3271
3272 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 ------------------------------------------------------------------------*/
3275 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3276 {
3277 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3278 "WDI API call before module is initialized - Fail request");
3279
Jeff Johnsone7245742012-09-05 17:12:55 -07003280 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003281 }
3282
3283 /*------------------------------------------------------------------------
3284 Fill in Event data and post to the Main FSM
3285 ------------------------------------------------------------------------*/
3286 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003287 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3288 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3289 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003290 wdiEventData.pUserData = pUserData;
3291
3292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3293
3294}/*WDI_RemoveSTABcastKeyReq*/
3295
3296/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003297 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003298 MAC wants to set Max Tx Power to HW. Upon the
3299 call of this API the WLAN DAL will pack and send a HAL
3300 Remove STA Bcast Key request message to the lower RIVA
3301 sub-system if DAL is in state STARTED.
3302
3303 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003304 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003305
3306 WDI_SetSTABcastKeyReq must have been called.
3307
Jeff Johnsone7245742012-09-05 17:12:55 -07003308 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003309 parameters as specified by the Device
3310 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003311
Jeff Johnson295189b2012-06-20 16:38:30 -07003312 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3313 response of the remove STA Bcast key operation received
3314 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003315
Jeff Johnson295189b2012-06-20 16:38:30 -07003316 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003317 callback
3318
Jeff Johnson295189b2012-06-20 16:38:30 -07003319 @see WDI_SetMaxTxPowerReq
3320 @return Result of the function call
3321*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003322WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003323WDI_SetMaxTxPowerReq
3324(
3325 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3326 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3327 void* pUserData
3328)
3329{
3330 WDI_EventInfoType wdiEventData;
3331 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3332
3333 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003334 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003335 ------------------------------------------------------------------------*/
3336 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3337 {
3338 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3339 "WDI API call before module is initialized - Fail request");
3340
Jeff Johnsone7245742012-09-05 17:12:55 -07003341 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 }
3343
3344 /*------------------------------------------------------------------------
3345 Fill in Event data and post to the Main FSM
3346 ------------------------------------------------------------------------*/
3347 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003348 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3349 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3350 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003351 wdiEventData.pUserData = pUserData;
3352
3353 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3354}
3355
schang86c22c42013-03-13 18:41:24 -07003356/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003357 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3358 MAC wants to set Max Tx Power to HW for specific band.
3359
3360 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3361
3362 wdiReqStatusCb: callback for passing back the
3363 response msg from the device
3364
3365 pUserData: user data will be passed back with the
3366 callback
3367
3368 @see WDI_SetMaxTxPowerPerBandReq
3369 @return Result of the function call
3370*/
3371WDI_Status
3372WDI_SetMaxTxPowerPerBandReq
3373(
3374 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3375 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3376 void* pUserData
3377)
3378{
3379 WDI_EventInfoType wdiEventData;
3380 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3381
3382 /*------------------------------------------------------------------------
3383 Sanity Check
3384 ------------------------------------------------------------------------*/
3385 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3386 {
3387 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3388 "WDI API call before module is initialized - Fail request");
3389
3390 return WDI_STATUS_E_NOT_ALLOWED;
3391 }
3392
3393 /*------------------------------------------------------------------------
3394 Fill in Event data and post to the Main FSM
3395 ------------------------------------------------------------------------*/
3396 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3397 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3398 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3399 wdiEventData.pCBfnc = wdiReqStatusCb;
3400 wdiEventData.pUserData = pUserData;
3401
3402 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3403}
3404
3405/**
schang86c22c42013-03-13 18:41:24 -07003406 @brief WDI_SetTxPowerReq will be called when the upper
3407 MAC wants to set Tx Power to HW.
3408 In state BUSY this request will be queued. Request won't
3409 be allowed in any other state.
3410
3411
3412 @param pwdiSetTxPowerParams: set TS Power parameters
3413 BSSID and target TX Power with dbm included
3414
3415 wdiReqStatusCb: callback for passing back the response
3416
3417 pUserData: user data will be passed back with the
3418 callback
3419
3420 @return Result of the function call
3421*/
3422WDI_Status
3423WDI_SetTxPowerReq
3424(
3425 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3426 WDA_SetTxPowerRspCb wdiReqStatusCb,
3427 void* pUserData
3428)
3429{
3430 WDI_EventInfoType wdiEventData;
3431 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3432
3433 /*------------------------------------------------------------------------
3434 Sanity Check
3435 ------------------------------------------------------------------------*/
3436 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3437 {
3438 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3439 "WDI API call before module is initialized - Fail request");
3440
3441 return WDI_STATUS_E_NOT_ALLOWED;
3442 }
3443
3444 /*------------------------------------------------------------------------
3445 Fill in Event data and post to the Main FSM
3446 ------------------------------------------------------------------------*/
3447 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3448 wdiEventData.pEventData = pwdiSetTxPowerParams;
3449 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3450 wdiEventData.pCBfnc = wdiReqStatusCb;
3451 wdiEventData.pUserData = pUserData;
3452
3453 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3454}
3455
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003456#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003457WDI_Status
3458WDI_TSMStatsReq
3459(
3460 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3461 WDI_TsmRspCb wdiReqStatusCb,
3462 void* pUserData
3463)
3464{
3465 WDI_EventInfoType wdiEventData;
3466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003467 /*------------------------------------------------------------------------
3468 Sanity Check
3469 ------------------------------------------------------------------------*/
3470 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3471 {
3472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3473 "WDI API call before module is initialized - Fail request");
3474
3475 return WDI_STATUS_E_NOT_ALLOWED;
3476 }
3477
3478 /*------------------------------------------------------------------------
3479 Fill in Event data and post to the Main FSM
3480 ------------------------------------------------------------------------*/
3481 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3482 wdiEventData.pEventData = pwdiTsmReqParams;
3483 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3484 wdiEventData.pCBfnc = wdiReqStatusCb;
3485 wdiEventData.pUserData = pUserData;
3486
3487 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3488
3489}
3490#endif
3491
3492/*========================================================================
3493
3494 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003495
Jeff Johnson295189b2012-06-20 16:38:30 -07003496==========================================================================*/
3497
3498/**
3499 @brief WDI_AddTSReq will be called when the upper MAC to inform
3500 the device of a successful add TSpec negotiation. HW
3501 needs to receive the TSpec Info from the UMAC in order
3502 to configure properly the QoS data traffic. Upon the
3503 call of this API the WLAN DAL will pack and send a HAL
3504 Add TS request message to the lower RIVA sub-system if
3505 DAL is in state STARTED.
3506
3507 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003508 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003509
3510 WDI_PostAssocReq must have been called.
3511
3512 @param wdiAddTsReqParams: the add TS parameters as specified by
3513 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003514
Jeff Johnson295189b2012-06-20 16:38:30 -07003515 wdiAddTsRspCb: callback for passing back the response of
3516 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003517
Jeff Johnson295189b2012-06-20 16:38:30 -07003518 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003519 callback
3520
Jeff Johnson295189b2012-06-20 16:38:30 -07003521 @see WDI_PostAssocReq
3522 @return Result of the function call
3523*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003525WDI_AddTSReq
3526(
3527 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3528 WDI_AddTsRspCb wdiAddTsRspCb,
3529 void* pUserData
3530)
3531{
3532 WDI_EventInfoType wdiEventData;
3533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3534
3535 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003537 ------------------------------------------------------------------------*/
3538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3539 {
3540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3541 "WDI API call before module is initialized - Fail request");
3542
Jeff Johnsone7245742012-09-05 17:12:55 -07003543 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003544 }
3545
3546 /*------------------------------------------------------------------------
3547 Fill in Event data and post to the Main FSM
3548 ------------------------------------------------------------------------*/
3549 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003550 wdiEventData.pEventData = pwdiAddTsReqParams;
3551 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3552 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003553 wdiEventData.pUserData = pUserData;
3554
3555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3556
3557}/*WDI_AddTSReq*/
3558
3559
3560
3561/**
3562 @brief WDI_DelTSReq will be called when the upper MAC has ended
3563 admission on a specific AC. This is to inform HW that
3564 QoS traffic parameters must be rest. Upon the call of
3565 this API the WLAN DAL will pack and send a HAL Del TS
3566 request message to the lower RIVA sub-system if DAL is
3567 in state STARTED.
3568
3569 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003570 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003571
3572 WDI_AddTSReq must have been called.
3573
3574 @param wdiDelTsReqParams: the del TS parameters as specified by
3575 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003576
Jeff Johnson295189b2012-06-20 16:38:30 -07003577 wdiDelTsRspCb: callback for passing back the response of
3578 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003579
Jeff Johnson295189b2012-06-20 16:38:30 -07003580 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003581 callback
3582
Jeff Johnson295189b2012-06-20 16:38:30 -07003583 @see WDI_AddTSReq
3584 @return Result of the function call
3585*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003586WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003587WDI_DelTSReq
3588(
3589 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3590 WDI_DelTsRspCb wdiDelTsRspCb,
3591 void* pUserData
3592)
3593{
3594 WDI_EventInfoType wdiEventData;
3595 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3596
3597 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003598 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003599 ------------------------------------------------------------------------*/
3600 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3601 {
3602 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3603 "WDI API call before module is initialized - Fail request");
3604
Jeff Johnsone7245742012-09-05 17:12:55 -07003605 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003606 }
3607
3608 /*------------------------------------------------------------------------
3609 Fill in Event data and post to the Main FSM
3610 ------------------------------------------------------------------------*/
3611 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003612 wdiEventData.pEventData = pwdiDelTsReqParams;
3613 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3614 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003615 wdiEventData.pUserData = pUserData;
3616
3617 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3618
3619}/*WDI_DelTSReq*/
3620
3621
3622
3623/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003624 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003625 wishes to update the EDCA parameters used by HW for QoS
3626 data traffic. Upon the call of this API the WLAN DAL
3627 will pack and send a HAL Update EDCA Params request
3628 message to the lower RIVA sub-system if DAL is in state
3629 STARTED.
3630
3631 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003632 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003633
3634 WDI_PostAssocReq must have been called.
3635
Jeff Johnsone7245742012-09-05 17:12:55 -07003636 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003637 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003638
Jeff Johnson295189b2012-06-20 16:38:30 -07003639 wdiUpdateEDCAParamsRspCb: callback for passing back the
3640 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003641
Jeff Johnson295189b2012-06-20 16:38:30 -07003642 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003643 callback
3644
Jeff Johnson295189b2012-06-20 16:38:30 -07003645 @see WDI_PostAssocReq
3646 @return Result of the function call
3647*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003648WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003649WDI_UpdateEDCAParams
3650(
3651 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3652 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3653 void* pUserData
3654)
3655{
3656 WDI_EventInfoType wdiEventData;
3657 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3658
3659 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003660 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003661 ------------------------------------------------------------------------*/
3662 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3663 {
3664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3665 "WDI API call before module is initialized - Fail request");
3666
Jeff Johnsone7245742012-09-05 17:12:55 -07003667 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003668 }
3669
3670 /*------------------------------------------------------------------------
3671 Fill in Event data and post to the Main FSM
3672 ------------------------------------------------------------------------*/
3673 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003674 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3675 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3676 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003677 wdiEventData.pUserData = pUserData;
3678
3679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3680
3681}/*WDI_UpdateEDCAParams*/
3682
3683
3684/**
3685 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3686 successfully a BA session and needs to notify the HW for
3687 the appropriate settings to take place. Upon the call of
3688 this API the WLAN DAL will pack and send a HAL Add BA
3689 request message to the lower RIVA sub-system if DAL is
3690 in state STARTED.
3691
3692 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003693 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003694
3695 WDI_PostAssocReq must have been called.
3696
3697 @param wdiAddBAReqParams: the add BA parameters as specified by
3698 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003699
Jeff Johnson295189b2012-06-20 16:38:30 -07003700 wdiAddBARspCb: callback for passing back the response of
3701 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003702
Jeff Johnson295189b2012-06-20 16:38:30 -07003703 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003704 callback
3705
Jeff Johnson295189b2012-06-20 16:38:30 -07003706 @see WDI_PostAssocReq
3707 @return Result of the function call
3708*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003709WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003710WDI_AddBASessionReq
3711(
3712 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3713 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3714 void* pUserData
3715)
3716{
3717 WDI_EventInfoType wdiEventData;
3718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3719
3720 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003721 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003722 ------------------------------------------------------------------------*/
3723 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3724 {
3725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3726 "WDI API call before module is initialized - Fail request");
3727
Jeff Johnsone7245742012-09-05 17:12:55 -07003728 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003729 }
3730
3731 /*------------------------------------------------------------------------
3732 Fill in Event data and post to the Main FSM
3733 ------------------------------------------------------------------------*/
3734 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003735 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3736 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3737 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003738 wdiEventData.pUserData = pUserData;
3739
3740 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3741
3742}/*WDI_AddBASessionReq*/
3743
3744/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003745 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003746 inform HW that it has deleted a previously created BA
3747 session. Upon the call of this API the WLAN DAL will
3748 pack and send a HAL Del BA request message to the lower
3749 RIVA sub-system if DAL is in state STARTED.
3750
3751 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003752 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003753
3754 WDI_AddBAReq must have been called.
3755
3756 @param wdiDelBAReqParams: the del BA parameters as specified by
3757 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003758
Jeff Johnson295189b2012-06-20 16:38:30 -07003759 wdiDelBARspCb: callback for passing back the response of
3760 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003761
Jeff Johnson295189b2012-06-20 16:38:30 -07003762 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003763 callback
3764
Jeff Johnson295189b2012-06-20 16:38:30 -07003765 @see WDI_AddBAReq
3766 @return Result of the function call
3767*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003768WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003769WDI_DelBAReq
3770(
3771 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3772 WDI_DelBARspCb wdiDelBARspCb,
3773 void* pUserData
3774)
3775{
3776 WDI_EventInfoType wdiEventData;
3777 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3778
3779 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003781 ------------------------------------------------------------------------*/
3782 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3783 {
3784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3785 "WDI API call before module is initialized - Fail request");
3786
Jeff Johnsone7245742012-09-05 17:12:55 -07003787 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003788 }
3789
3790 /*------------------------------------------------------------------------
3791 Fill in Event data and post to the Main FSM
3792 ------------------------------------------------------------------------*/
3793 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003794 wdiEventData.pEventData = pwdiDelBAReqParams;
3795 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3796 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003797 wdiEventData.pUserData = pUserData;
3798
3799 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3800
3801}/*WDI_DelBAReq*/
3802
Jeff Johnsone7245742012-09-05 17:12:55 -07003803/*========================================================================
3804
Jeff Johnson295189b2012-06-20 16:38:30 -07003805 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003806
Jeff Johnson295189b2012-06-20 16:38:30 -07003807==========================================================================*/
3808
3809/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003810 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003811 wants to set the power save related configurations of
3812 the WLAN Device. Upon the call of this API the WLAN DAL
3813 will pack and send a HAL Update CFG request message to
3814 the lower RIVA sub-system if DAL is in state STARTED.
3815
3816 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003817 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003818
3819 WDI_Start must have been called.
3820
Jeff Johnsone7245742012-09-05 17:12:55 -07003821 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003822 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003823
Jeff Johnson295189b2012-06-20 16:38:30 -07003824 wdiSetPwrSaveCfgCb: callback for passing back the
3825 response of the set power save cfg operation received
3826 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003827
Jeff Johnson295189b2012-06-20 16:38:30 -07003828 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003829 callback
3830
Jeff Johnson295189b2012-06-20 16:38:30 -07003831 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003832 @return Result of the function call
3833*/
3834WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003835WDI_SetPwrSaveCfgReq
3836(
3837 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3838 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3839 void* pUserData
3840)
3841{
3842 WDI_EventInfoType wdiEventData;
3843 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3844
3845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003846 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003847 ------------------------------------------------------------------------*/
3848 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3849 {
3850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3851 "WDI API call before module is initialized - Fail request");
3852
Jeff Johnsone7245742012-09-05 17:12:55 -07003853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003854 }
3855
3856 /*------------------------------------------------------------------------
3857 Fill in Event data and post to the Main FSM
3858 ------------------------------------------------------------------------*/
3859 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003860 wdiEventData.pEventData = pwdiPowerSaveCfg;
3861 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3862 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003863 wdiEventData.pUserData = pUserData;
3864
3865 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3866
3867}/*WDI_SetPwrSaveCfgReq*/
3868
3869/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003870 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003871 request the device to get into IMPS power state. Upon
3872 the call of this API the WLAN DAL will send a HAL Enter
3873 IMPS request message to the lower RIVA sub-system if DAL
3874 is in state STARTED.
3875
3876 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003877 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003878
Jeff Johnsone7245742012-09-05 17:12:55 -07003879
3880 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003881 response of the Enter IMPS operation received from the
3882 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003883
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003885 callback
3886
Jeff Johnson295189b2012-06-20 16:38:30 -07003887 @see WDI_Start
3888 @return Result of the function call
3889*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003890WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003891WDI_EnterImpsReq
3892(
Mihir Shetea4306052014-03-25 00:02:54 +05303893 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003894 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3895 void* pUserData
3896)
3897{
3898 WDI_EventInfoType wdiEventData;
3899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3900
3901 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003902 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003903 ------------------------------------------------------------------------*/
3904 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3905 {
3906 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3907 "WDI API call before module is initialized - Fail request");
3908
Jeff Johnsone7245742012-09-05 17:12:55 -07003909 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003910 }
3911
3912 /*------------------------------------------------------------------------
3913 Fill in Event data and post to the Main FSM
3914 ------------------------------------------------------------------------*/
3915 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05303916 wdiEventData.pEventData = pwdiEnterImpsReqParams;
3917 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003918 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003919 wdiEventData.pUserData = pUserData;
3920
3921 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3922
3923}/*WDI_EnterImpsReq*/
3924
3925/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003926 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003927 request the device to get out of IMPS power state. Upon
3928 the call of this API the WLAN DAL will send a HAL Exit
3929 IMPS request message to the lower RIVA sub-system if DAL
3930 is in state STARTED.
3931
3932 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003934
Jeff Johnson295189b2012-06-20 16:38:30 -07003935
Jeff Johnsone7245742012-09-05 17:12:55 -07003936
3937 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07003938 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003939
Jeff Johnson295189b2012-06-20 16:38:30 -07003940 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003941 callback
3942
Jeff Johnson295189b2012-06-20 16:38:30 -07003943 @see WDI_Start
3944 @return Result of the function call
3945*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003946WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003947WDI_ExitImpsReq
3948(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303949 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 WDI_ExitImpsRspCb wdiExitImpsRspCb,
3951 void* pUserData
3952)
3953{
3954 WDI_EventInfoType wdiEventData;
3955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3956
3957 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003958 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003959 ------------------------------------------------------------------------*/
3960 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3961 {
3962 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3963 "WDI API call before module is initialized - Fail request");
3964
Jeff Johnsone7245742012-09-05 17:12:55 -07003965 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003966 }
3967
3968 /*------------------------------------------------------------------------
3969 Fill in Event data and post to the Main FSM
3970 ------------------------------------------------------------------------*/
3971 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05303972 wdiEventData.pEventData = pwdiExitImpsReqParams;
3973 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07003974 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003975 wdiEventData.pUserData = pUserData;
3976
3977 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3978
3979}/*WDI_ExitImpsReq*/
3980
3981/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003982 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003983 request the device to get into BMPS power state. Upon
3984 the call of this API the WLAN DAL will pack and send a
3985 HAL Enter BMPS request message to the lower RIVA
3986 sub-system if DAL is in state STARTED.
3987
3988 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003989 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003990
3991 WDI_PostAssocReq must have been called.
3992
Jeff Johnsone7245742012-09-05 17:12:55 -07003993 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003994 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003995
Jeff Johnson295189b2012-06-20 16:38:30 -07003996 wdiEnterBmpsRspCb: callback for passing back the
3997 response of the Enter BMPS operation received from the
3998 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003999
Jeff Johnson295189b2012-06-20 16:38:30 -07004000 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004001 callback
4002
Jeff Johnson295189b2012-06-20 16:38:30 -07004003 @see WDI_PostAssocReq
4004 @return Result of the function call
4005*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004006WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004007WDI_EnterBmpsReq
4008(
4009 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
4010 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
4011 void* pUserData
4012)
4013{
4014 WDI_EventInfoType wdiEventData;
4015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4016
4017 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004018 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004019 ------------------------------------------------------------------------*/
4020 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4021 {
4022 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4023 "WDI API call before module is initialized - Fail request");
4024
Jeff Johnsone7245742012-09-05 17:12:55 -07004025 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004026 }
4027
4028 /*------------------------------------------------------------------------
4029 Fill in Event data and post to the Main FSM
4030 ------------------------------------------------------------------------*/
4031 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004032 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
4033 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
4034 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004035 wdiEventData.pUserData = pUserData;
4036
4037 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4038
4039}/*WDI_EnterBmpsReq*/
4040
4041/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004042 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004043 request the device to get out of BMPS power state. Upon
4044 the call of this API the WLAN DAL will pack and send a
4045 HAL Exit BMPS request message to the lower RIVA
4046 sub-system if DAL is in state STARTED.
4047
4048 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004049 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004050
4051 WDI_PostAssocReq must have been called.
4052
Jeff Johnsone7245742012-09-05 17:12:55 -07004053 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004054 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004055
Jeff Johnson295189b2012-06-20 16:38:30 -07004056 wdiExitBmpsRspCb: callback for passing back the response
4057 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004058
Jeff Johnson295189b2012-06-20 16:38:30 -07004059 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004060 callback
4061
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 @see WDI_PostAssocReq
4063 @return Result of the function call
4064*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004065WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004066WDI_ExitBmpsReq
4067(
4068 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4069 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4070 void* pUserData
4071)
4072{
4073 WDI_EventInfoType wdiEventData;
4074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4075
4076 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004077 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004078 ------------------------------------------------------------------------*/
4079 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4080 {
4081 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4082 "WDI API call before module is initialized - Fail request");
4083
Jeff Johnsone7245742012-09-05 17:12:55 -07004084 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004085 }
4086
4087 /*------------------------------------------------------------------------
4088 Fill in Event data and post to the Main FSM
4089 ------------------------------------------------------------------------*/
4090 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004091 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4092 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4093 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004094 wdiEventData.pUserData = pUserData;
4095
4096 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4097
4098}/*WDI_ExitBmpsReq*/
4099
4100/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004101 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004102 request the device to get into UAPSD power state. Upon
4103 the call of this API the WLAN DAL will pack and send a
4104 HAL Enter UAPSD request message to the lower RIVA
4105 sub-system if DAL is in state STARTED.
4106
4107 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004108 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004109
4110 WDI_PostAssocReq must have been called.
4111 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004112
4113 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004114 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004115
Jeff Johnson295189b2012-06-20 16:38:30 -07004116 wdiEnterUapsdRspCb: callback for passing back the
4117 response of the Enter UAPSD operation received from the
4118 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004119
Jeff Johnson295189b2012-06-20 16:38:30 -07004120 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004121 callback
4122
Jeff Johnson295189b2012-06-20 16:38:30 -07004123 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4124 @return Result of the function call
4125*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004126WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004127WDI_EnterUapsdReq
4128(
4129 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4130 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4131 void* pUserData
4132)
4133{
4134 WDI_EventInfoType wdiEventData;
4135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4136
4137 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004138 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004139 ------------------------------------------------------------------------*/
4140 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4141 {
4142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4143 "WDI API call before module is initialized - Fail request");
4144
Jeff Johnsone7245742012-09-05 17:12:55 -07004145 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 }
4147
4148 /*------------------------------------------------------------------------
4149 Fill in Event data and post to the Main FSM
4150 ------------------------------------------------------------------------*/
4151 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004152 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4153 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4154 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004155 wdiEventData.pUserData = pUserData;
4156
4157 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4158
4159}/*WDI_EnterUapsdReq*/
4160
4161/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004162 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004163 request the device to get out of UAPSD power state. Upon
4164 the call of this API the WLAN DAL will send a HAL Exit
4165 UAPSD request message to the lower RIVA sub-system if
4166 DAL is in state STARTED.
4167
4168 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004169 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004170
4171 WDI_PostAssocReq must have been called.
4172
Jeff Johnsone7245742012-09-05 17:12:55 -07004173 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004174 response of the Exit UAPSD operation received from the
4175 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004176
Jeff Johnson295189b2012-06-20 16:38:30 -07004177 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 callback
4179
Jeff Johnson295189b2012-06-20 16:38:30 -07004180 @see WDI_PostAssocReq
4181 @return Result of the function call
4182*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004183WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004184WDI_ExitUapsdReq
4185(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004186 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004187 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4188 void* pUserData
4189)
4190{
4191 WDI_EventInfoType wdiEventData;
4192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4193
4194 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004195 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004196 ------------------------------------------------------------------------*/
4197 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4198 {
4199 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4200 "WDI API call before module is initialized - Fail request");
4201
Jeff Johnsone7245742012-09-05 17:12:55 -07004202 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004203 }
4204
4205 /*------------------------------------------------------------------------
4206 Fill in Event data and post to the Main FSM
4207 ------------------------------------------------------------------------*/
4208 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004209 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4210 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004211 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004212 wdiEventData.pUserData = pUserData;
4213
4214 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4215
4216}/*WDI_ExitUapsdReq*/
4217
4218/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004219 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004220 MAC wants to set the UAPSD related configurations
4221 of an associated STA (while acting as an AP) to the WLAN
4222 Device. Upon the call of this API the WLAN DAL will pack
4223 and send a HAL Update UAPSD params request message to
4224 the lower RIVA sub-system if DAL is in state STARTED.
4225
4226 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004227 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004228
4229 WDI_ConfigBSSReq must have been called.
4230
Jeff Johnsone7245742012-09-05 17:12:55 -07004231 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004232 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004233
Jeff Johnson295189b2012-06-20 16:38:30 -07004234 wdiUpdateUapsdParamsCb: callback for passing back the
4235 response of the update UAPSD params operation received
4236 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004237
Jeff Johnson295189b2012-06-20 16:38:30 -07004238 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 callback
4240
Jeff Johnson295189b2012-06-20 16:38:30 -07004241 @see WDI_ConfigBSSReq
4242 @return Result of the function call
4243*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004244WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004245WDI_UpdateUapsdParamsReq
4246(
4247 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4248 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4249 void* pUserData
4250)
4251{
4252 WDI_EventInfoType wdiEventData;
4253 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4254
4255 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004256 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004257 ------------------------------------------------------------------------*/
4258 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4259 {
4260 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4261 "WDI API call before module is initialized - Fail request");
4262
Jeff Johnsone7245742012-09-05 17:12:55 -07004263 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 }
4265
4266 /*------------------------------------------------------------------------
4267 Fill in Event data and post to the Main FSM
4268 ------------------------------------------------------------------------*/
4269 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004270 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004271 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004272 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004273 wdiEventData.pUserData = pUserData;
4274
4275 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4276
4277}/*WDI_UpdateUapsdParamsReq*/
4278
4279/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004280 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004281 MAC wants to set the UAPSD related configurations before
4282 requesting for enter UAPSD power state to the WLAN
4283 Device. Upon the call of this API the WLAN DAL will pack
4284 and send a HAL Set UAPSD params request message to
4285 the lower RIVA sub-system if DAL is in state STARTED.
4286
4287 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004288 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004289
4290 WDI_PostAssocReq must have been called.
4291
4292 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4293 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004294
Jeff Johnson295189b2012-06-20 16:38:30 -07004295 wdiSetUapsdAcParamsCb: callback for passing back the
4296 response of the set UAPSD params operation received from
4297 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004298
Jeff Johnson295189b2012-06-20 16:38:30 -07004299 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004300 callback
4301
Jeff Johnson295189b2012-06-20 16:38:30 -07004302 @see WDI_PostAssocReq
4303 @return Result of the function call
4304*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004305WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004306WDI_SetUapsdAcParamsReq
4307(
4308 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4309 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4310 void* pUserData
4311)
4312{
4313 WDI_EventInfoType wdiEventData;
4314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4315
4316 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004317 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004318 ------------------------------------------------------------------------*/
4319 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4320 {
4321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4322 "WDI API call before module is initialized - Fail request");
4323
Jeff Johnsone7245742012-09-05 17:12:55 -07004324 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004325 }
4326
4327 /*------------------------------------------------------------------------
4328 Fill in Event data and post to the Main FSM
4329 ------------------------------------------------------------------------*/
4330 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004331 wdiEventData.pEventData = pwdiUapsdInfo;
4332 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4333 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004334 wdiEventData.pUserData = pUserData;
4335
4336 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4337
4338}/*WDI_SetUapsdAcParamsReq*/
4339
4340/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304341 @brief WDI_FWLoggingDXEdoneInd
4342
4343 FW Logging DXE done Indication from the upper layer will be sent
4344 down to HAL
4345
4346 @param WDI_FWLoggingDXEdoneIndInfoType
4347
4348 @see
4349
4350 @return Status of the request
4351*/
4352WDI_Status
4353WDI_FWLoggingDXEdoneInd
4354(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304355 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304356)
4357{
4358
4359 WDI_EventInfoType wdiEventData;
4360 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4361
4362 /*------------------------------------------------------------------------
4363 Sanity Check
4364 ------------------------------------------------------------------------*/
4365 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4366 {
4367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4368 "WDI API call before module is initialized - Fail request");
4369
4370 return WDI_STATUS_E_NOT_ALLOWED;
4371 }
4372
4373 /*------------------------------------------------------------------------
4374 Fill in Event data and post to the Main FSM
4375 ------------------------------------------------------------------------*/
4376 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304377 wdiEventData.pEventData = (void *)&data;
4378 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304379 wdiEventData.pCBfnc = NULL;
4380 wdiEventData.pUserData = NULL;
4381
4382 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4383
4384}/*WDI_FWLoggingDXEdoneInd*/
4385
4386/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304387 @brief WDI_GetFrameLogReq will be called when the upper
4388 MAC wants to initialize frame logging. Upon the call of
4389 this API the WLAN DAL will pack and send a HAL
4390 Frame logging init request message to
4391 the lower RIVA sub-system.
4392
4393 In state BUSY this request will be queued. Request won't
4394 be allowed in any other state.
4395
4396
4397 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4398 as specified by the Device Interface
4399
4400 wdiGetFrameLogRspCb: callback for passing back the
4401 response of the frame logging init operation received
4402 from the device
4403
4404 pUserData: user data will be passed back with the
4405 callback
4406
4407 @return Result of the function call
4408*/
4409WDI_Status
4410WDI_GetFrameLogReq
4411(
4412 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4413 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4414 void* pUserData
4415)
4416{
4417 WDI_EventInfoType wdiEventData;
4418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4419
4420 /*------------------------------------------------------------------------
4421 Sanity Check
4422 ------------------------------------------------------------------------*/
4423 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4424 {
4425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4426 "WDI API call before module is initialized - Fail request");
4427
4428 return WDI_STATUS_E_NOT_ALLOWED;
4429 }
4430
4431 /*------------------------------------------------------------------------
4432 Fill in Event data and post to the Main FSM
4433 ------------------------------------------------------------------------*/
4434 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4435 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4436 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4437 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4438 wdiEventData.pUserData = pUserData;
4439
4440 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4441}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304442
4443
4444/**
4445 @brief WDI_FatalEventLogsReq will be called when the upper
4446 MAC wants to send the flush command. Upon the call of
4447 this API the WLAN DAL will pack and send a HAL
4448 Fatal Event Req message to the lower RIVA sub-system.
4449
4450 In state BUSY this request will be queued. Request won't
4451 be allowed in any other state.
4452
4453
4454 @param pwdiFlushLogsReqInfo: the Flush Logs params
4455 as specified by the Device Interface
4456
4457 wdiFlushLogsRspCb: callback for passing back the
4458 response of the Flush Logs operation received
4459 from the device
4460
4461 pUserData: user data will be passed back with the
4462 callback
4463
4464 @return Result of the function call
4465*/
4466
4467WDI_Status
4468WDI_FatalEventLogsReq
4469(
4470 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4471 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4472 void* pUserData
4473)
4474{
4475 WDI_EventInfoType wdiEventData;
4476
4477 /*------------------------------------------------------------------------
4478 Sanity Check
4479 ------------------------------------------------------------------------*/
4480 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4481 {
4482 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4483 "WDI API call before module is initialized - Fail request");
4484
4485 return WDI_STATUS_E_NOT_ALLOWED;
4486 }
4487
4488 /*------------------------------------------------------------------------
4489 Fill in Event data and post to the Main FSM
4490 ------------------------------------------------------------------------*/
4491 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4492 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4493 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4494 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4495 wdiEventData.pUserData = pUserData;
4496
4497 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4498
4499}
4500
4501
Siddharth Bhal64246172015-02-27 01:04:37 +05304502/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304503 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304504 MAC wants to initialize frame logging. Upon the call of
4505 this API the WLAN DAL will pack and send a HAL
4506 Frame logging init request message to
4507 the lower RIVA sub-system.
4508
4509 In state BUSY this request will be queued. Request won't
4510 be allowed in any other state.
4511
4512
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304513 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304514 as specified by the Device Interface
4515
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304516 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304517 response of the frame logging init operation received
4518 from the device
4519
4520 pUserData: user data will be passed back with the
4521 callback
4522
4523 @return Result of the function call
4524*/
4525WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304526WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304527(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304528 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4529 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304530 void* pUserData
4531)
4532{
4533 WDI_EventInfoType wdiEventData;
4534
4535 /*------------------------------------------------------------------------
4536 Sanity Check
4537 ------------------------------------------------------------------------*/
4538 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4539 {
4540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4541 "WDI API call before module is initialized - Fail request");
4542
4543 return WDI_STATUS_E_NOT_ALLOWED;
4544 }
4545
4546 /*------------------------------------------------------------------------
4547 Fill in Event data and post to the Main FSM
4548 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304549 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4550 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4551 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4552 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304553 wdiEventData.pUserData = pUserData;
4554
4555 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4556}
4557
c_manjeecfd1efb2015-09-25 19:32:34 +05304558
4559/**
4560 @brief WDI_FwrMemDumpReq will be called when the upper
4561 MAC wants to get fwr mem dump. Upon the call of
4562 this API the WLAN DAL will pack and send a HAL
4563 Frame logging init request message to
4564 the lower RIVA sub-system.
4565
4566 In state BUSY this request will be queued. Request won't
4567 be allowed in any other state.
4568
4569
4570 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4571 as specified by the Device Interface
4572
4573 wdiFWLoggingInitReqCb: callback for passing back the
4574 response of the frame logging init operation received
4575 from the device
4576
4577 pUserData: user data will be passed back with the
4578 callback
4579
4580 @return Result of the function call
4581*/
4582
4583WDI_Status
4584WDI_FwrMemDumpReq
4585
4586(
4587 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4588 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4589 void* pUserData
4590)
4591{
4592 WDI_EventInfoType wdiEventData;
4593
4594 /*------------------------------------------------------------------------
4595 Sanity Check
4596 ------------------------------------------------------------------------*/
4597 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4598 {
4599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4600 "WDI API call before module is initialized - Fail request");
4601
4602 return WDI_STATUS_E_NOT_ALLOWED;
4603 }
4604
4605 /*------------------------------------------------------------------------
4606 Fill in Event data and post to the Main FSM
4607 ------------------------------------------------------------------------*/
4608 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4609 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4610 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4611 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4612 wdiEventData.pUserData = pUserData;
4613
4614 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4615}
4616
4617
4618
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304619/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304620 @brief WDI_StartRssiMonitorReq will be called when the upper
4621 MAC wants to initialize Rssi Monitor on a bssid.
4622 Upon the call of this API the WLAN DAL will pack and
4623 send a HAL Rssi Monitor init request message to
4624 the lower RIVA sub-system.
4625
4626 In state BUSY this request will be queued. Request won't
4627 be allowed in any other state.
4628
4629
4630 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4631 as specified by the Device Interface
4632
4633 wdiRssiMonitorStartRspCb: callback for passing back the
4634 response of the rssi monitor operation received
4635 from the device
4636
4637 pUserData: user data will be passed back with the
4638 callback
4639
4640 @return Result of the function call
4641*/
4642WDI_Status
4643WDI_StartRssiMonitorReq
4644(
4645 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4646 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4647 void* pUserData
4648)
4649{
4650 WDI_EventInfoType wdiEventData;
4651
4652 /*------------------------------------------------------------------------
4653 Sanity Check
4654 ------------------------------------------------------------------------*/
4655 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4656 {
4657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4658 "WDI API call before module is initialized - Fail request");
4659
4660 return WDI_STATUS_E_NOT_ALLOWED;
4661 }
4662
4663 /*------------------------------------------------------------------------
4664 Fill in Event data and post to the Main FSM
4665 ------------------------------------------------------------------------*/
4666 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4667 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4668 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4669 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4670 wdiEventData.pUserData = pUserData;
4671
4672 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4673}
4674
4675/**
4676 @brief WDI_StopRssiMonitorReq will be called when the upper
4677 MAC wants to stop Rssi Monitor on a bssid.
4678 Upon the call of this API the WLAN DAL will pack and
4679 send a HAL Rssi Monitor stop request message to
4680 the lower RIVA sub-system.
4681
4682 In state BUSY this request will be queued. Request won't
4683 be allowed in any other state.
4684
4685
4686 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4687 as specified by the Device Interface
4688
4689 wdiRssiMonitorStopRspCb: callback for passing back the
4690 response of the rssi monitor operation received
4691 from the device
4692
4693 pUserData: user data will be passed back with the
4694 callback
4695
4696 @return Result of the function call
4697*/
4698WDI_Status
4699WDI_StopRssiMonitorReq
4700(
4701 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4702 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4703 void* pUserData
4704)
4705{
4706 WDI_EventInfoType wdiEventData;
4707
4708 /*------------------------------------------------------------------------
4709 Sanity Check
4710 ------------------------------------------------------------------------*/
4711 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4712 {
4713 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4714 "WDI API call before module is initialized - Fail request");
4715
4716 return WDI_STATUS_E_NOT_ALLOWED;
4717 }
4718
4719 /*------------------------------------------------------------------------
4720 Fill in Event data and post to the Main FSM
4721 ------------------------------------------------------------------------*/
4722 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4723 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4724 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4725 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4726 wdiEventData.pUserData = pUserData;
4727
4728 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4729}
4730
4731
4732/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004733 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004734 MAC wants to set/reset the RXP filters for received pkts
4735 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4736 and send a HAL configure RXP filter request message to
4737 the lower RIVA sub-system.
4738
4739 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004740 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004741
Jeff Johnsone7245742012-09-05 17:12:55 -07004742
4743 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004744 filter as specified by the Device
4745 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004746
Jeff Johnson295189b2012-06-20 16:38:30 -07004747 wdiConfigureRxpFilterCb: callback for passing back the
4748 response of the configure RXP filter operation received
4749 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004750
Jeff Johnson295189b2012-06-20 16:38:30 -07004751 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004752 callback
4753
Jeff Johnson295189b2012-06-20 16:38:30 -07004754 @return Result of the function call
4755*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004756WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004757WDI_ConfigureRxpFilterReq
4758(
4759 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4760 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4761 void* pUserData
4762)
4763{
4764 WDI_EventInfoType wdiEventData;
4765 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4766
4767 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004768 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004769 ------------------------------------------------------------------------*/
4770 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4771 {
4772 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4773 "WDI API call before module is initialized - Fail request");
4774
Jeff Johnsone7245742012-09-05 17:12:55 -07004775 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004776 }
4777
4778 /*------------------------------------------------------------------------
4779 Fill in Event data and post to the Main FSM
4780 ------------------------------------------------------------------------*/
4781 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004782 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4783 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4784 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004785 wdiEventData.pUserData = pUserData;
4786
4787 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4788}/*WDI_ConfigureRxpFilterReq*/
4789
4790/**
4791 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4792 wants to set the beacon filters while in power save.
4793 Upon the call of this API the WLAN DAL will pack and
4794 send a Beacon filter request message to the
4795 lower RIVA sub-system.
4796
4797 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004798 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004799
Jeff Johnsone7245742012-09-05 17:12:55 -07004800
4801 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004802 filter as specified by the Device
4803 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004804
Jeff Johnson295189b2012-06-20 16:38:30 -07004805 wdiBeaconFilterCb: callback for passing back the
4806 response of the set beacon filter operation received
4807 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004808
Jeff Johnson295189b2012-06-20 16:38:30 -07004809 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004810 callback
4811
Jeff Johnson295189b2012-06-20 16:38:30 -07004812 @return Result of the function call
4813*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004814WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004815WDI_SetBeaconFilterReq
4816(
4817 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4818 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4819 void* pUserData
4820)
4821{
4822 WDI_EventInfoType wdiEventData;
4823 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4824
4825 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004826 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004827 ------------------------------------------------------------------------*/
4828 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4829 {
4830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4831 "WDI API call before module is initialized - Fail request");
4832
Jeff Johnsone7245742012-09-05 17:12:55 -07004833 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 }
4835
4836 /*------------------------------------------------------------------------
4837 Fill in Event data and post to the Main FSM
4838 ------------------------------------------------------------------------*/
4839 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004840 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004841 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004842 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004843 wdiEventData.pUserData = pUserData;
4844
4845 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4846}/*WDI_SetBeaconFilterReq*/
4847
4848/**
4849 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4850 wants to remove the beacon filter for particular IE
4851 while in power save. Upon the call of this API the WLAN
4852 DAL will pack and send a remove Beacon filter request
4853 message to the lower RIVA sub-system.
4854
4855 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004856 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004857
Jeff Johnsone7245742012-09-05 17:12:55 -07004858
4859 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004860 filter as specified by the Device
4861 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004862
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 wdiBeaconFilterCb: callback for passing back the
4864 response of the remove beacon filter operation received
4865 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004866
Jeff Johnson295189b2012-06-20 16:38:30 -07004867 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004868 callback
4869
Jeff Johnson295189b2012-06-20 16:38:30 -07004870 @return Result of the function call
4871*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004872WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004873WDI_RemBeaconFilterReq
4874(
4875 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4876 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4877 void* pUserData
4878)
4879{
4880 WDI_EventInfoType wdiEventData;
4881 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4882
4883 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004884 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004885 ------------------------------------------------------------------------*/
4886 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4887 {
4888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4889 "WDI API call before module is initialized - Fail request");
4890
Jeff Johnsone7245742012-09-05 17:12:55 -07004891 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004892 }
4893
4894 /*------------------------------------------------------------------------
4895 Fill in Event data and post to the Main FSM
4896 ------------------------------------------------------------------------*/
4897 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004898 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004899 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004900 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004901 wdiEventData.pUserData = pUserData;
4902
4903 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4904}/*WDI_RemBeaconFilterReq*/
4905
4906/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004907 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004908 MAC wants to set the RSSI thresholds related
4909 configurations while in power save. Upon the call of
4910 this API the WLAN DAL will pack and send a HAL Set RSSI
4911 thresholds request message to the lower RIVA
4912 sub-system if DAL is in state STARTED.
4913
4914 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004915 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004916
4917 WDI_PostAssocReq must have been called.
4918
4919 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4920 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004921
Jeff Johnson295189b2012-06-20 16:38:30 -07004922 wdiSetUapsdAcParamsCb: callback for passing back the
4923 response of the set UAPSD params operation received from
4924 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004925
Jeff Johnson295189b2012-06-20 16:38:30 -07004926 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004927 callback
4928
Jeff Johnson295189b2012-06-20 16:38:30 -07004929 @see WDI_PostAssocReq
4930 @return Result of the function call
4931*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004932WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004933WDI_SetRSSIThresholdsReq
4934(
4935 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
4936 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
4937 void* pUserData
4938)
4939{
4940 WDI_EventInfoType wdiEventData;
4941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4942
4943 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004944 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004945 ------------------------------------------------------------------------*/
4946 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4947 {
4948 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4949 "WDI API call before module is initialized - Fail request");
4950
Jeff Johnsone7245742012-09-05 17:12:55 -07004951 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004952 }
4953
4954 /*------------------------------------------------------------------------
4955 Fill in Event data and post to the Main FSM
4956 ------------------------------------------------------------------------*/
4957 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004958 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004959 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004960 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004961 wdiEventData.pUserData = pUserData;
4962
4963 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4964}/* WDI_SetRSSIThresholdsReq*/
4965
4966/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004967 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07004968 wants to set the filter to minimize unnecessary host
4969 wakeup due to broadcast traffic while in power save.
4970 Upon the call of this API the WLAN DAL will pack and
4971 send a HAL host offload request message to the
4972 lower RIVA sub-system if DAL is in state STARTED.
4973
4974 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004975 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004976
4977 WDI_PostAssocReq must have been called.
4978
Jeff Johnsone7245742012-09-05 17:12:55 -07004979 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07004980 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004981
Jeff Johnson295189b2012-06-20 16:38:30 -07004982 wdiHostOffloadCb: callback for passing back the response
4983 of the host offload operation received from the
4984 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004985
Jeff Johnson295189b2012-06-20 16:38:30 -07004986 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004987 callback
4988
Jeff Johnson295189b2012-06-20 16:38:30 -07004989 @see WDI_PostAssocReq
4990 @return Result of the function call
4991*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004992WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004993WDI_HostOffloadReq
4994(
4995 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
4996 WDI_HostOffloadCb wdiHostOffloadCb,
4997 void* pUserData
4998)
4999{
5000 WDI_EventInfoType wdiEventData;
5001 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5002
5003 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005004 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005005 ------------------------------------------------------------------------*/
5006 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5007 {
5008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5009 "WDI API call before module is initialized - Fail request");
5010
Jeff Johnsone7245742012-09-05 17:12:55 -07005011 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005012 }
5013
5014 /*------------------------------------------------------------------------
5015 Fill in Event data and post to the Main FSM
5016 ------------------------------------------------------------------------*/
5017 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005018 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005019 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005020 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005021 wdiEventData.pUserData = pUserData;
5022
5023 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5024}/*WDI_HostOffloadReq*/
5025
5026/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005027 @brief WDI_KeepAliveReq will be called when the upper MAC
5028 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07005029 and minimize unnecessary host wakeups due to while in power save.
5030 Upon the call of this API the WLAN DAL will pack and
5031 send a HAL Keep Alive request message to the
5032 lower RIVA sub-system if DAL is in state STARTED.
5033
5034 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005035 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005036
5037 WDI_PostAssocReq must have been called.
5038
Jeff Johnsone7245742012-09-05 17:12:55 -07005039 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005040 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005041
Jeff Johnson295189b2012-06-20 16:38:30 -07005042 wdiKeepAliveCb: callback for passing back the response
5043 of the Keep Alive operation received from the
5044 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005045
Jeff Johnson295189b2012-06-20 16:38:30 -07005046 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005047 callback
5048
Jeff Johnson295189b2012-06-20 16:38:30 -07005049 @see WDI_PostAssocReq
5050 @return Result of the function call
5051*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005052WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005053WDI_KeepAliveReq
5054(
5055 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5056 WDI_KeepAliveCb wdiKeepAliveCb,
5057 void* pUserData
5058)
5059{
5060 WDI_EventInfoType wdiEventData;
5061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5062
5063 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005064 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005065 ------------------------------------------------------------------------*/
5066 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5067 {
5068 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5069 "WDI_KeepAliveReq: WDI API call before module "
5070 "is initialized - Fail request");
5071
Jeff Johnsone7245742012-09-05 17:12:55 -07005072 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005073 }
5074
5075 /*------------------------------------------------------------------------
5076 Fill in Event data and post to the Main FSM
5077 ------------------------------------------------------------------------*/
5078 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005079 wdiEventData.pEventData = pwdiKeepAliveParams;
5080 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5081 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005082 wdiEventData.pUserData = pUserData;
5083
5084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5085}/*WDI_KeepAliveReq*/
5086
5087/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005088 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005089 wants to set the Wowl Bcast ptrn to minimize unnecessary
5090 host wakeup due to broadcast traffic while in power
5091 save. Upon the call of this API the WLAN DAL will pack
5092 and send a HAL Wowl Bcast ptrn request message to the
5093 lower RIVA sub-system if DAL is in state STARTED.
5094
5095 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005096 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005097
5098 WDI_PostAssocReq must have been called.
5099
Jeff Johnsone7245742012-09-05 17:12:55 -07005100 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005101 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005102
Jeff Johnson295189b2012-06-20 16:38:30 -07005103 wdiWowlAddBcPtrnCb: callback for passing back the
5104 response of the add Wowl bcast ptrn operation received
5105 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005106
Jeff Johnson295189b2012-06-20 16:38:30 -07005107 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005108 callback
5109
Jeff Johnson295189b2012-06-20 16:38:30 -07005110 @see WDI_PostAssocReq
5111 @return Result of the function call
5112*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005113WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005114WDI_WowlAddBcPtrnReq
5115(
5116 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5117 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5118 void* pUserData
5119)
5120{
5121 WDI_EventInfoType wdiEventData;
5122 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5123
5124 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005125 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005126 ------------------------------------------------------------------------*/
5127 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5128 {
5129 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5130 "WDI API call before module is initialized - Fail request");
5131
Jeff Johnsone7245742012-09-05 17:12:55 -07005132 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005133 }
5134
5135 /*------------------------------------------------------------------------
5136 Fill in Event data and post to the Main FSM
5137 ------------------------------------------------------------------------*/
5138 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005139 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005140 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005141 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005142 wdiEventData.pUserData = pUserData;
5143
5144 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5145}/*WDI_WowlAddBcPtrnReq*/
5146
5147/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005148 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005149 wants to clear the Wowl Bcast ptrn. Upon the call of
5150 this API the WLAN DAL will pack and send a HAL delete
5151 Wowl Bcast ptrn request message to the lower RIVA
5152 sub-system if DAL is in state STARTED.
5153
5154 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005155 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005156
5157 WDI_WowlAddBcPtrnReq must have been called.
5158
Jeff Johnsone7245742012-09-05 17:12:55 -07005159 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005161
Jeff Johnson295189b2012-06-20 16:38:30 -07005162 wdiWowlDelBcPtrnCb: callback for passing back the
5163 response of the del Wowl bcast ptrn operation received
5164 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005165
Jeff Johnson295189b2012-06-20 16:38:30 -07005166 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005167 callback
5168
Jeff Johnson295189b2012-06-20 16:38:30 -07005169 @see WDI_WowlAddBcPtrnReq
5170 @return Result of the function call
5171*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005172WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005173WDI_WowlDelBcPtrnReq
5174(
5175 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5176 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5177 void* pUserData
5178)
5179{
5180 WDI_EventInfoType wdiEventData;
5181 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5182
5183 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005184 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005185 ------------------------------------------------------------------------*/
5186 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5187 {
5188 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5189 "WDI API call before module is initialized - Fail request");
5190
Jeff Johnsone7245742012-09-05 17:12:55 -07005191 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005192 }
5193
5194 /*------------------------------------------------------------------------
5195 Fill in Event data and post to the Main FSM
5196 ------------------------------------------------------------------------*/
5197 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005198 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005199 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005200 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005201 wdiEventData.pUserData = pUserData;
5202
5203 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5204}/*WDI_WowlDelBcPtrnReq*/
5205
5206/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005207 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005208 wants to enter the Wowl state to minimize unnecessary
5209 host wakeup while in power save. Upon the call of this
5210 API the WLAN DAL will pack and send a HAL Wowl enter
5211 request message to the lower RIVA sub-system if DAL is
5212 in state STARTED.
5213
5214 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005215 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005216
5217 WDI_PostAssocReq must have been called.
5218
Jeff Johnsone7245742012-09-05 17:12:55 -07005219 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005221
Jeff Johnson295189b2012-06-20 16:38:30 -07005222 wdiWowlEnterReqCb: callback for passing back the
5223 response of the enter Wowl operation received from the
5224 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005225
Jeff Johnson295189b2012-06-20 16:38:30 -07005226 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005227 callback
5228
Jeff Johnson295189b2012-06-20 16:38:30 -07005229 @see WDI_PostAssocReq
5230 @return Result of the function call
5231*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005232WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005233WDI_WowlEnterReq
5234(
5235 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5236 WDI_WowlEnterReqCb wdiWowlEnterCb,
5237 void* pUserData
5238)
5239{
5240 WDI_EventInfoType wdiEventData;
5241 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5242
5243 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005244 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005245 ------------------------------------------------------------------------*/
5246 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5247 {
5248 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5249 "WDI API call before module is initialized - Fail request");
5250
Jeff Johnsone7245742012-09-05 17:12:55 -07005251 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005252 }
5253
5254 /*------------------------------------------------------------------------
5255 Fill in Event data and post to the Main FSM
5256 ------------------------------------------------------------------------*/
5257 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005258 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005259 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005260 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005261 wdiEventData.pUserData = pUserData;
5262
5263 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5264}/*WDI_WowlEnterReq*/
5265
5266/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005267 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005268 wants to exit the Wowl state. Upon the call of this API
5269 the WLAN DAL will pack and send a HAL Wowl exit request
5270 message to the lower RIVA sub-system if DAL is in state
5271 STARTED.
5272
5273 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005274 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005275
5276 WDI_WowlEnterReq must have been called.
5277
Jeff Johnsone7245742012-09-05 17:12:55 -07005278 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005280
Jeff Johnson295189b2012-06-20 16:38:30 -07005281 wdiWowlExitReqCb: callback for passing back the response
5282 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005283
Jeff Johnson295189b2012-06-20 16:38:30 -07005284 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 callback
5286
Jeff Johnson295189b2012-06-20 16:38:30 -07005287 @see WDI_WowlEnterReq
5288 @return Result of the function call
5289*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005290WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005291WDI_WowlExitReq
5292(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005293 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005294 WDI_WowlExitReqCb wdiWowlExitCb,
5295 void* pUserData
5296)
5297{
5298 WDI_EventInfoType wdiEventData;
5299 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5300
5301 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005302 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005303 ------------------------------------------------------------------------*/
5304 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5305 {
5306 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5307 "WDI API call before module is initialized - Fail request");
5308
Jeff Johnsone7245742012-09-05 17:12:55 -07005309 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005310 }
5311
5312 /*------------------------------------------------------------------------
5313 Fill in Event data and post to the Main FSM
5314 ------------------------------------------------------------------------*/
5315 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005316 wdiEventData.pEventData = pwdiWowlExitParams;
5317 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005318 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005319 wdiEventData.pUserData = pUserData;
5320
5321 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5322}/*WDI_WowlExitReq*/
5323
5324/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005325 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005326 the upper MAC wants to dynamically adjusts the listen
5327 interval based on the WLAN/MSM activity. Upon the call
5328 of this API the WLAN DAL will pack and send a HAL
5329 configure Apps Cpu Wakeup State request message to the
5330 lower RIVA sub-system.
5331
5332 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005333 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005334
Jeff Johnsone7245742012-09-05 17:12:55 -07005335
5336 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005337 Apps Cpu Wakeup State as specified by the
5338 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005339
Jeff Johnson295189b2012-06-20 16:38:30 -07005340 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5341 back the response of the configure Apps Cpu Wakeup State
5342 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005343
Jeff Johnson295189b2012-06-20 16:38:30 -07005344 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005345 callback
5346
Jeff Johnson295189b2012-06-20 16:38:30 -07005347 @return Result of the function call
5348*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005349WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005350WDI_ConfigureAppsCpuWakeupStateReq
5351(
5352 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5353 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5354 void* pUserData
5355)
5356{
5357 WDI_EventInfoType wdiEventData;
5358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5359
5360 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005361 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005362 ------------------------------------------------------------------------*/
5363 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5364 {
5365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5366 "WDI API call before module is initialized - Fail request");
5367
Jeff Johnsone7245742012-09-05 17:12:55 -07005368 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005369 }
5370
5371 /*------------------------------------------------------------------------
5372 Fill in Event data and post to the Main FSM
5373 ------------------------------------------------------------------------*/
5374 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005375 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5376 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5377 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005378 wdiEventData.pUserData = pUserData;
5379
5380 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5381}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5382/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005383 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005384 to to perform a flush operation on a given AC. Upon the
5385 call of this API the WLAN DAL will pack and send a HAL
5386 Flush AC request message to the lower RIVA sub-system if
5387 DAL is in state STARTED.
5388
5389 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005390 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005391
5392 WDI_AddBAReq must have been called.
5393
Jeff Johnsone7245742012-09-05 17:12:55 -07005394 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005395 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005396
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 wdiFlushAcRspCb: callback for passing back the response
5398 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005399
Jeff Johnson295189b2012-06-20 16:38:30 -07005400 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005401 callback
5402
Jeff Johnson295189b2012-06-20 16:38:30 -07005403 @see WDI_AddBAReq
5404 @return Result of the function call
5405*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005406WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005407WDI_FlushAcReq
5408(
5409 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5410 WDI_FlushAcRspCb wdiFlushAcRspCb,
5411 void* pUserData
5412)
5413{
5414 WDI_EventInfoType wdiEventData;
5415 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5416
5417 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005418 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005419 ------------------------------------------------------------------------*/
5420 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5421 {
5422 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5423 "WDI API call before module is initialized - Fail request");
5424
Jeff Johnsone7245742012-09-05 17:12:55 -07005425 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005426 }
5427
5428 /*------------------------------------------------------------------------
5429 Fill in Event data and post to the Main FSM
5430 ------------------------------------------------------------------------*/
5431 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005432 wdiEventData.pEventData = pwdiFlushAcReqParams;
5433 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5434 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005435 wdiEventData.pUserData = pUserData;
5436
5437 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5438
5439}/*WDI_FlushAcReq*/
5440
5441/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005442 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005443 wants to notify the lower mac on a BT AMP event. This is
5444 to inform BTC-SLM that some BT AMP event occurred. Upon
5445 the call of this API the WLAN DAL will pack and send a
5446 HAL BT AMP event request message to the lower RIVA
5447 sub-system if DAL is in state STARTED.
5448
5449 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005450 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005451
Jeff Johnsone7245742012-09-05 17:12:55 -07005452
5453 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005454 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005455
Jeff Johnson295189b2012-06-20 16:38:30 -07005456 wdiBtAmpEventRspCb: callback for passing back the
5457 response of the BT AMP event operation received from the
5458 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005459
Jeff Johnson295189b2012-06-20 16:38:30 -07005460 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005461 callback
5462
Jeff Johnson295189b2012-06-20 16:38:30 -07005463 @return Result of the function call
5464*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005465WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005466WDI_BtAmpEventReq
5467(
5468 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5469 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5470 void* pUserData
5471)
5472{
5473 WDI_EventInfoType wdiEventData;
5474 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5475
5476 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005477 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005478 ------------------------------------------------------------------------*/
5479 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5480 {
5481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5482 "WDI API call before module is initialized - Fail request");
5483
Jeff Johnsone7245742012-09-05 17:12:55 -07005484 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005485 }
5486
5487 /*------------------------------------------------------------------------
5488 Fill in Event data and post to the Main FSM
5489 ------------------------------------------------------------------------*/
5490 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005491 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5492 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5493 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005494 wdiEventData.pUserData = pUserData;
5495
5496 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5497
5498}/*WDI_BtAmpEventReq*/
5499
Jeff Johnsone7245742012-09-05 17:12:55 -07005500#ifdef FEATURE_OEM_DATA_SUPPORT
5501/**
5502 @brief WDI_Start Oem Data Req will be called when the upper MAC
5503 wants to notify the lower mac on a oem data Req event.Upon
5504 the call of this API the WLAN DAL will pack and send a
5505 HAL OEM Data Req event request message to the lower RIVA
5506 sub-system if DAL is in state STARTED.
5507
5508 In state BUSY this request will be queued. Request won't
5509 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005510
5511
Jeff Johnsone7245742012-09-05 17:12:55 -07005512
5513 @param pwdiOemDataReqParams: the Oem Data Req as
5514 specified by the Device Interface
5515
5516 wdiStartOemDataRspCb: callback for passing back the
5517 response of the Oem Data Req received from the
5518 device
5519
5520 pUserData: user data will be passed back with the
5521 callback
5522
5523 @return Result of the function call
5524*/
5525WDI_Status
5526WDI_StartOemDataReq
5527(
5528 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5529 WDI_oemDataRspCb wdiOemDataRspCb,
5530 void* pUserData
5531)
5532{
5533 WDI_EventInfoType wdiEventData;
5534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5535
5536 /*------------------------------------------------------------------------
5537 Sanity Check
5538 ------------------------------------------------------------------------*/
5539 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5540 {
5541 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5542 "WDI API call before module is initialized - Fail request");
5543
5544 return WDI_STATUS_E_NOT_ALLOWED;
5545 }
5546
5547 /*------------------------------------------------------------------------
5548 Fill in Event data and post to the Main FSM
5549 ------------------------------------------------------------------------*/
5550 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5551 wdiEventData.pEventData = pwdiOemDataReqParams;
5552 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5553 wdiEventData.pCBfnc = wdiOemDataRspCb;
5554 wdiEventData.pUserData = pUserData;
5555
5556 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5557
5558
5559}
5560
5561#endif
5562
5563
5564/*========================================================================
5565
Jeff Johnson295189b2012-06-20 16:38:30 -07005566 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005567
Jeff Johnson295189b2012-06-20 16:38:30 -07005568==========================================================================*/
5569/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005570 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005571 the WLAN HW to change the current channel of operation.
5572 Upon the call of this API the WLAN DAL will pack and
5573 send a HAL Start request message to the lower RIVA
5574 sub-system if DAL is in state STARTED.
5575
5576 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005577 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005578
5579 WDI_Start must have been called.
5580
Jeff Johnsone7245742012-09-05 17:12:55 -07005581 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005582 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005583
Jeff Johnson295189b2012-06-20 16:38:30 -07005584 wdiSwitchChRspCb: callback for passing back the response
5585 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005586
Jeff Johnson295189b2012-06-20 16:38:30 -07005587 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005588 callback
5589
Jeff Johnson295189b2012-06-20 16:38:30 -07005590 @see WDI_Start
5591 @return Result of the function call
5592*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005593WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005594WDI_SwitchChReq
5595(
5596 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5597 WDI_SwitchChRspCb wdiSwitchChRspCb,
5598 void* pUserData
5599)
5600{
5601 WDI_EventInfoType wdiEventData;
5602 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5603
5604 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005605 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005606 ------------------------------------------------------------------------*/
5607 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5608 {
5609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5610 "WDI API call before module is initialized - Fail request");
5611
Jeff Johnsone7245742012-09-05 17:12:55 -07005612 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005613 }
5614
5615 /*------------------------------------------------------------------------
5616 Fill in Event data and post to the Main FSM
5617 ------------------------------------------------------------------------*/
5618 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005619 wdiEventData.pEventData = pwdiSwitchChReqParams;
5620 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5621 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005622 wdiEventData.pUserData = pUserData;
5623
5624 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5625
5626}/*WDI_SwitchChReq*/
5627
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005628/**
5629 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5630 the WLAN HW to change the current channel of operation.
5631 Upon the call of this API the WLAN DAL will pack and
5632 send a HAL Start request message to the lower RIVA
5633 sub-system if DAL is in state STARTED.
5634 This request message also includes source of channel switch,
5635 like CSA,
5636
5637 In state BUSY this request will be queued. Request won't
5638 be allowed in any other state.
5639
5640 WDI_Start must have been called.
5641
5642 @param wdiSwitchChReqParams: the switch ch parameters as
5643 specified by the Device Interface
5644
5645 wdiSwitchChRspCb: callback for passing back the response
5646 of the switch ch operation received from the device
5647
5648 pUserData: user data will be passed back with the
5649 callback
5650
5651 @see WDI_Start
5652 @return Result of the function call
5653*/
5654WDI_Status
5655WDI_SwitchChReq_V1
5656(
5657 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5658 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5659 void* pUserData
5660)
5661{
5662 WDI_EventInfoType wdiEventData;
5663 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5665 "WDI API call WDI_SwitchChReq_V1");
5666 /*------------------------------------------------------------------------
5667 Sanity Check
5668 ------------------------------------------------------------------------*/
5669 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5670 {
5671 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5672 "WDI API call before module is initialized - Fail request");
5673
5674 return WDI_STATUS_E_NOT_ALLOWED;
5675 }
5676
5677 /*------------------------------------------------------------------------
5678 Fill in Event data and post to the Main FSM
5679 ------------------------------------------------------------------------*/
5680 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5681 wdiEventData.pEventData = pwdiSwitchChReqParams;
5682 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5683 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5684 wdiEventData.pUserData = pUserData;
5685
5686 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5687
5688}/*WDI_SwitchChReq_V1*/
5689
Jeff Johnson295189b2012-06-20 16:38:30 -07005690
5691/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005693 wishes to add or update a STA in HW. Upon the call of
5694 this API the WLAN DAL will pack and send a HAL Start
5695 message request message to the lower RIVA sub-system if
5696 DAL is in state STARTED.
5697
5698 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005699 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005700
5701 WDI_Start must have been called.
5702
Jeff Johnsone7245742012-09-05 17:12:55 -07005703 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005704 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005705
Jeff Johnson295189b2012-06-20 16:38:30 -07005706 wdiConfigSTARspCb: callback for passing back the
5707 response of the config STA operation received from the
5708 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005709
Jeff Johnson295189b2012-06-20 16:38:30 -07005710 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005711 callback
5712
Jeff Johnson295189b2012-06-20 16:38:30 -07005713 @see WDI_Start
5714 @return Result of the function call
5715*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005716WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005717WDI_ConfigSTAReq
5718(
5719 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5720 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5721 void* pUserData
5722)
5723{
5724 WDI_EventInfoType wdiEventData;
5725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5726
5727 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005728 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005729 ------------------------------------------------------------------------*/
5730 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5731 {
5732 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5733 "WDI API call before module is initialized - Fail request");
5734
Jeff Johnsone7245742012-09-05 17:12:55 -07005735 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005736 }
5737
5738 /*------------------------------------------------------------------------
5739 Fill in Event data and post to the Main FSM
5740 ------------------------------------------------------------------------*/
5741 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005742 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5743 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5744 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005745 wdiEventData.pUserData = pUserData;
5746
5747 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5748
5749}/*WDI_ConfigSTAReq*/
5750
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005751 /**
5752 @brief WDI_UpdateChannelReq will be called when the upper MAC
5753 wants to update the channel list on change in country code.
5754
5755 In state BUSY this request will be queued. Request won't
5756 be allowed in any other state.
5757
5758 WDI_UpdateChannelReq must have been called.
5759
5760 @param wdiUpdateChannelReqParams: the updated channel parameters
5761 as specified by the Device Interface
5762
5763 wdiUpdateChannelRspCb: callback for passing back the
5764 response of the update channel operation received from
5765 the device
5766
5767 pUserData: user data will be passed back with the
5768 callback
5769
5770 @return Result of the function call
5771*/
5772WDI_Status
5773WDI_UpdateChannelReq
5774(
5775 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5776 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5777 void* pUserData
5778)
5779{
5780 WDI_EventInfoType wdiEventData = {{0}};
5781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5782
5783 /*------------------------------------------------------------------------
5784 Sanity Check
5785 ------------------------------------------------------------------------*/
5786 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5787 {
5788 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5789 "WDI API call before module is initialized - Fail request");
5790
5791 return WDI_STATUS_E_NOT_ALLOWED;
5792 }
5793
5794 /*------------------------------------------------------------------------
5795 Fill in Event data and post to the Main FSM
5796 ------------------------------------------------------------------------*/
5797 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5798 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5799 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5800 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5801 wdiEventData.pUserData = pUserData;
5802
5803 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5804
5805}/*WDI_UpdateChannelReq*/
5806
Jeff Johnson295189b2012-06-20 16:38:30 -07005807/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005808 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005809 wants to change the state of an ongoing link. Upon the
5810 call of this API the WLAN DAL will pack and send a HAL
5811 Start message request message to the lower RIVA
5812 sub-system if DAL is in state STARTED.
5813
5814 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005815 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005816
5817 WDI_JoinStartReq must have been called.
5818
Jeff Johnsone7245742012-09-05 17:12:55 -07005819 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005820 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005821
Jeff Johnson295189b2012-06-20 16:38:30 -07005822 wdiSetLinkStateRspCb: callback for passing back the
5823 response of the set link state operation received from
5824 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005825
Jeff Johnson295189b2012-06-20 16:38:30 -07005826 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005827 callback
5828
Jeff Johnson295189b2012-06-20 16:38:30 -07005829 @see WDI_JoinStartReq
5830 @return Result of the function call
5831*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005832WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005833WDI_SetLinkStateReq
5834(
5835 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5836 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5837 void* pUserData
5838)
5839{
5840 WDI_EventInfoType wdiEventData;
5841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5842
5843 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005844 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005845 ------------------------------------------------------------------------*/
5846 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5847 {
5848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5849 "WDI API call before module is initialized - Fail request");
5850
Jeff Johnsone7245742012-09-05 17:12:55 -07005851 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005852 }
5853
5854 /*------------------------------------------------------------------------
5855 Fill in Event data and post to the Main FSM
5856 ------------------------------------------------------------------------*/
5857 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005858 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5859 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5860 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005861 wdiEventData.pUserData = pUserData;
5862
5863 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5864
5865}/*WDI_SetLinkStateReq*/
5866
5867
5868/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005869 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005870 to get statistics (MIB counters) from the device. Upon
5871 the call of this API the WLAN DAL will pack and send a
5872 HAL Start request message to the lower RIVA sub-system
5873 if DAL is in state STARTED.
5874
5875 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005876 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005877
5878 WDI_Start must have been called.
5879
Jeff Johnsone7245742012-09-05 17:12:55 -07005880 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005881 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005882
Jeff Johnson295189b2012-06-20 16:38:30 -07005883 wdiGetStatsRspCb: callback for passing back the response
5884 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005885
Jeff Johnson295189b2012-06-20 16:38:30 -07005886 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005887 callback
5888
Jeff Johnson295189b2012-06-20 16:38:30 -07005889 @see WDI_Start
5890 @return Result of the function call
5891*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005892WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005893WDI_GetStatsReq
5894(
5895 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5896 WDI_GetStatsRspCb wdiGetStatsRspCb,
5897 void* pUserData
5898)
5899{
5900 WDI_EventInfoType wdiEventData;
5901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5902
5903 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005905 ------------------------------------------------------------------------*/
5906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5907 {
5908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5909 "WDI API call before module is initialized - Fail request");
5910
Jeff Johnsone7245742012-09-05 17:12:55 -07005911 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005912 }
5913
5914 /*------------------------------------------------------------------------
5915 Fill in Event data and post to the Main FSM
5916 ------------------------------------------------------------------------*/
5917 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005918 wdiEventData.pEventData = pwdiGetStatsReqParams;
5919 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
5920 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005921 wdiEventData.pUserData = pUserData;
5922
5923 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5924
5925}/*WDI_GetStatsReq*/
5926
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08005927#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08005928/**
5929 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
5930 to get roam rssi from the device. Upon
5931 the call of this API the WLAN DAL will pack and send a
5932 HAL Start request message to the lower RIVA sub-system
5933 if DAL is in state STARTED.
5934
5935 In state BUSY this request will be queued. Request won't
5936 be allowed in any other state.
5937
5938 WDI_Start must have been called.
5939
5940 @param wdiGetRoamRssiReqParams: the stats parameters to get as
5941 specified by the Device Interface
5942
5943 wdiGetRoamRssiRspCb: callback for passing back the response
5944 of the get stats operation received from the device
5945
5946 pUserData: user data will be passed back with the
5947 callback
5948
5949 @see WDI_Start
5950 @return Result of the function call
5951*/
5952WDI_Status
5953WDI_GetRoamRssiReq
5954(
5955 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
5956 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
5957 void* pUserData
5958)
5959{
5960 WDI_EventInfoType wdiEventData;
5961 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5962
5963 /*------------------------------------------------------------------------
5964 Sanity Check
5965 ------------------------------------------------------------------------*/
5966 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5967 {
5968 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5969 "WDI API call before module is initialized - Fail request");
5970
5971 return WDI_STATUS_E_NOT_ALLOWED;
5972 }
5973 /*------------------------------------------------------------------------
5974 Fill in Event data and post to the Main FSM
5975 ------------------------------------------------------------------------*/
5976 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
5977 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
5978 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
5979 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
5980 wdiEventData.pUserData = pUserData;
5981
5982 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5983
5984}/*WDI_GetRoamRssiReq*/
5985#endif
5986
Jeff Johnson295189b2012-06-20 16:38:30 -07005987
5988/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005989 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07005990 it wishes to change the configuration of the WLAN
5991 Device. Upon the call of this API the WLAN DAL will pack
5992 and send a HAL Update CFG request message to the lower
5993 RIVA sub-system if DAL is in state STARTED.
5994
5995 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005996 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005997
5998 WDI_Start must have been called.
5999
Jeff Johnsone7245742012-09-05 17:12:55 -07006000 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006001 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006002
Jeff Johnson295189b2012-06-20 16:38:30 -07006003 wdiUpdateCfgsRspCb: callback for passing back the
6004 response of the update cfg operation received from the
6005 device
Jeff Johnsone7245742012-09-05 17:12:55 -07006006
Jeff Johnson295189b2012-06-20 16:38:30 -07006007 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006008 callback
6009
Jeff Johnson295189b2012-06-20 16:38:30 -07006010 @see WDI_Start
6011 @return Result of the function call
6012*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006013WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006014WDI_UpdateCfgReq
6015(
6016 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
6017 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
6018 void* pUserData
6019)
6020{
6021 WDI_EventInfoType wdiEventData;
6022 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6023
6024 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006025 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006026 ------------------------------------------------------------------------*/
6027 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6028 {
6029 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6030 "WDI API call before module is initialized - Fail request");
6031
Jeff Johnsone7245742012-09-05 17:12:55 -07006032 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006033 }
6034
6035 /*------------------------------------------------------------------------
6036 Fill in Event data and post to the Main FSM
6037 ------------------------------------------------------------------------*/
6038 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006039 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
6040 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
6041 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006042 wdiEventData.pUserData = pUserData;
6043
6044 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6045
6046}/*WDI_UpdateCfgReq*/
6047
6048
6049
6050/**
6051 @brief WDI_AddBAReq will be called when the upper MAC has setup
6052 successfully a BA session and needs to notify the HW for
6053 the appropriate settings to take place. Upon the call of
6054 this API the WLAN DAL will pack and send a HAL Add BA
6055 request message to the lower RIVA sub-system if DAL is
6056 in state STARTED.
6057
6058 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006059 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006060
6061 WDI_PostAssocReq must have been called.
6062
6063 @param wdiAddBAReqParams: the add BA parameters as specified by
6064 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006065
Jeff Johnson295189b2012-06-20 16:38:30 -07006066 wdiAddBARspCb: callback for passing back the response of
6067 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006068
Jeff Johnson295189b2012-06-20 16:38:30 -07006069 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006070 callback
6071
Jeff Johnson295189b2012-06-20 16:38:30 -07006072 @see WDI_PostAssocReq
6073 @return Result of the function call
6074*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006076WDI_AddBAReq
6077(
6078 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6079 WDI_AddBARspCb wdiAddBARspCb,
6080 void* pUserData
6081)
6082{
6083 WDI_EventInfoType wdiEventData;
6084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6085
6086 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006087 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006088 ------------------------------------------------------------------------*/
6089 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6090 {
6091 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6092 "WDI API call before module is initialized - Fail request");
6093
Jeff Johnsone7245742012-09-05 17:12:55 -07006094 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006095 }
6096
6097 /*------------------------------------------------------------------------
6098 Fill in Event data and post to the Main FSM
6099 ------------------------------------------------------------------------*/
6100 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006101 wdiEventData.pEventData = pwdiAddBAReqParams;
6102 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6103 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006104 wdiEventData.pUserData = pUserData;
6105
6106 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6107
6108}/*WDI_AddBAReq*/
6109
6110
6111/**
6112 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6113 successfully a BA session and needs to notify the HW for
6114 the appropriate settings to take place. Upon the call of
6115 this API the WLAN DAL will pack and send a HAL Add BA
6116 request message to the lower RIVA sub-system if DAL is
6117 in state STARTED.
6118
6119 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006120 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006121
6122 WDI_PostAssocReq must have been called.
6123
6124 @param wdiAddBAReqParams: the add BA parameters as specified by
6125 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006126
Abhishek Singhe5066502016-02-05 18:07:41 +05306127 baReqParamUserDataSize: user data size of wdiAddBAReqParams
Jeff Johnson295189b2012-06-20 16:38:30 -07006128 wdiAddBARspCb: callback for passing back the response of
6129 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006130
Jeff Johnson295189b2012-06-20 16:38:30 -07006131 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006132 callback
6133
Jeff Johnson295189b2012-06-20 16:38:30 -07006134 @see WDI_PostAssocReq
6135 @return Result of the function call
6136*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006137WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006138WDI_TriggerBAReq
6139(
6140 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
Abhishek Singhe5066502016-02-05 18:07:41 +05306141 wpt_uint8 baReqParamUserDataSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006142 WDI_TriggerBARspCb wdiTriggerBARspCb,
6143 void* pUserData
6144)
6145{
6146 WDI_EventInfoType wdiEventData;
6147 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6148
6149 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006150 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006151 ------------------------------------------------------------------------*/
6152 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6153 {
6154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6155 "WDI API call before module is initialized - Fail request");
6156
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006158 }
6159
6160 /*------------------------------------------------------------------------
6161 Fill in Event data and post to the Main FSM
6162 ------------------------------------------------------------------------*/
6163 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006164 wdiEventData.pEventData = pwdiTriggerBAReqParams;
Abhishek Singhe5066502016-02-05 18:07:41 +05306165 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams)
6166 + baReqParamUserDataSize;
Jeff Johnsone7245742012-09-05 17:12:55 -07006167 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006168 wdiEventData.pUserData = pUserData;
6169
6170 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6171
6172}/*WDI_AddBAReq*/
6173
6174/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006175 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006176 wishes to update any of the Beacon parameters used by HW.
6177 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6178 message to the lower RIVA sub-system if DAL is in state
6179 STARTED.
6180
6181 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006182 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006183
6184 WDI_PostAssocReq must have been called.
6185
Jeff Johnsone7245742012-09-05 17:12:55 -07006186 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006187 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006188
Jeff Johnson295189b2012-06-20 16:38:30 -07006189 wdiUpdateBeaconParamsRspCb: callback for passing back the
6190 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006191
Jeff Johnson295189b2012-06-20 16:38:30 -07006192 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006193 callback
6194
Jeff Johnson295189b2012-06-20 16:38:30 -07006195 @see WDI_PostAssocReq
6196 @return Result of the function call
6197*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006198WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006199WDI_UpdateBeaconParamsReq
6200(
6201 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6202 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6203 void* pUserData
6204)
6205{
6206 WDI_EventInfoType wdiEventData;
6207 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6208
6209 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006210 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006211 ------------------------------------------------------------------------*/
6212 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6213 {
6214 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6215 "WDI API call before module is initialized - Fail request");
6216
Jeff Johnsone7245742012-09-05 17:12:55 -07006217 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 }
6219
6220 /*------------------------------------------------------------------------
6221 Fill in Event data and post to the Main FSM
6222 ------------------------------------------------------------------------*/
6223 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006224 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6225 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6226 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006227 wdiEventData.pUserData = pUserData;
6228
6229 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6230
6231}/*WDI_UpdateBeaconParamsReq*/
6232
6233/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006234 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006235 wishes to update the Beacon template used by HW.
6236 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6237 message to the lower RIVA sub-system if DAL is in state
6238 STARTED.
6239
6240 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006241 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006242
6243 WDI_PostAssocReq must have been called.
6244
Jeff Johnsone7245742012-09-05 17:12:55 -07006245 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006246 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006247
Jeff Johnson295189b2012-06-20 16:38:30 -07006248 wdiSendBeaconParamsRspCb: callback for passing back the
6249 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006250
Jeff Johnson295189b2012-06-20 16:38:30 -07006251 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006252 callback
6253
Jeff Johnson295189b2012-06-20 16:38:30 -07006254 @see WDI_PostAssocReq
6255 @return Result of the function call
6256*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006257WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006258WDI_SendBeaconParamsReq
6259(
6260 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6261 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6262 void* pUserData
6263)
6264{
6265 WDI_EventInfoType wdiEventData;
6266 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6267
6268 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006270 ------------------------------------------------------------------------*/
6271 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6272 {
6273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6274 "WDI API call before module is initialized - Fail request");
6275
Jeff Johnsone7245742012-09-05 17:12:55 -07006276 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006277 }
6278
6279 /*------------------------------------------------------------------------
6280 Fill in Event data and post to the Main FSM
6281 ------------------------------------------------------------------------*/
6282 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006283 wdiEventData.pEventData = pwdiSendBeaconParams;
6284 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6285 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006286 wdiEventData.pUserData = pUserData;
6287
6288 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6289
6290}/*WDI_SendBeaconParamsReq*/
6291
6292/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006293 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006294 upper MAC wants to update the probe response template to
6295 be transmitted as Soft AP
6296 Upon the call of this API the WLAN DAL will
6297 pack and send the probe rsp template message to the
6298 lower RIVA sub-system if DAL is in state STARTED.
6299
6300 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006301 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006302
6303
Jeff Johnsone7245742012-09-05 17:12:55 -07006304 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006305 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006306
Jeff Johnson295189b2012-06-20 16:38:30 -07006307 wdiSendBeaconParamsRspCb: callback for passing back the
6308 response of the Send Beacon Params operation received
6309 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006310
Jeff Johnson295189b2012-06-20 16:38:30 -07006311 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006312 callback
6313
Jeff Johnson295189b2012-06-20 16:38:30 -07006314 @see WDI_AddBAReq
6315 @return Result of the function call
6316*/
6317
Jeff Johnsone7245742012-09-05 17:12:55 -07006318WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006319WDI_UpdateProbeRspTemplateReq
6320(
6321 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6322 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6323 void* pUserData
6324)
6325{
6326 WDI_EventInfoType wdiEventData;
6327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6328
6329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006330 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006331 ------------------------------------------------------------------------*/
6332 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6333 {
6334 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6335 "WDI API call before module is initialized - Fail request");
6336
Jeff Johnsone7245742012-09-05 17:12:55 -07006337 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006338 }
6339
6340 /*------------------------------------------------------------------------
6341 Fill in Event data and post to the Main FSM
6342 ------------------------------------------------------------------------*/
6343 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006344 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6345 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6346 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006347 wdiEventData.pUserData = pUserData;
6348
6349 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6350
6351}/*WDI_UpdateProbeRspTemplateReq*/
6352
6353/**
6354 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6355 to the NV memory.
6356
6357
6358 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6359 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006360
Jeff Johnson295189b2012-06-20 16:38:30 -07006361 wdiNvDownloadRspCb: callback for passing back the response of
6362 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006363
Jeff Johnson295189b2012-06-20 16:38:30 -07006364 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006365 callback
6366
Jeff Johnson295189b2012-06-20 16:38:30 -07006367 @see WDI_PostAssocReq
6368 @return Result of the function call
6369*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006370WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006371WDI_NvDownloadReq
6372(
6373 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6374 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6375 void* pUserData
6376)
6377{
6378 WDI_EventInfoType wdiEventData;
6379
6380 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006381 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006382 ------------------------------------------------------------------------*/
6383 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6384 {
6385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6386 "WDI API call before module is initialized - Fail request");
6387
Jeff Johnsone7245742012-09-05 17:12:55 -07006388 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006389 }
6390
6391 /*------------------------------------------------------------------------
6392 Fill in Event data and post to the Main FSM
6393 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006394 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6395 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6396 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6397 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 wdiEventData.pUserData = pUserData;
6399
6400 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6401
6402}/*WDI_NVDownloadReq*/
6403
Jeff Johnson295189b2012-06-20 16:38:30 -07006404/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006405 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006406 upper MAC wants to send Notice of Absence
6407 Upon the call of this API the WLAN DAL will
6408 pack and send the probe rsp template message to the
6409 lower RIVA sub-system if DAL is in state STARTED.
6410
6411 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006412 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006413
6414
Jeff Johnsone7245742012-09-05 17:12:55 -07006415 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006416 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006417
Jeff Johnson295189b2012-06-20 16:38:30 -07006418 wdiSendBeaconParamsRspCb: callback for passing back the
6419 response of the Send Beacon Params operation received
6420 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006421
Jeff Johnson295189b2012-06-20 16:38:30 -07006422 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006423 callback
6424
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 @see WDI_AddBAReq
6426 @return Result of the function call
6427*/
6428WDI_Status
6429WDI_SetP2PGONOAReq
6430(
6431 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6432 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6433 void* pUserData
6434)
6435{
6436 WDI_EventInfoType wdiEventData;
6437 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6438
6439 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006440 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006441 ------------------------------------------------------------------------*/
6442 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6443 {
6444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6445 "WDI API call before module is initialized - Fail request");
6446
Jeff Johnsone7245742012-09-05 17:12:55 -07006447 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 }
6449
6450 /*------------------------------------------------------------------------
6451 Fill in Event data and post to the Main FSM
6452 ------------------------------------------------------------------------*/
6453 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006454 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6455 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6456 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006457 wdiEventData.pUserData = pUserData;
6458
6459 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6460
6461}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006462
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306463#ifdef FEATURE_WLAN_TDLS
6464/**
6465 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6466 upper MAC wants to send TDLS Link Establish Request Parameters
6467 Upon the call of this API the WLAN DAL will
6468 pack and send the TDLS Link Establish Request message to the
6469 lower RIVA sub-system if DAL is in state STARTED.
6470
6471 In state BUSY this request will be queued. Request won't
6472 be allowed in any other state.
6473
6474
6475 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6476 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6477
6478 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6479 response of the TDLS Link Establish request received
6480 from the device
6481
6482 pUserData: user data will be passed back with the
6483 callback
6484
6485 @see
6486 @return Result of the function call
6487*/
6488WDI_Status
6489WDI_SetTDLSLinkEstablishReq
6490(
6491 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6492 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6493 void* pUserData
6494)
6495{
6496 WDI_EventInfoType wdiEventData;
6497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6498
6499 /*------------------------------------------------------------------------
6500 Sanity Check
6501 ------------------------------------------------------------------------*/
6502 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6503 {
6504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6505 "WDI API call before module is initialized - Fail request");
6506
6507 return WDI_STATUS_E_NOT_ALLOWED;
6508 }
6509
6510 /*------------------------------------------------------------------------
6511 Fill in Event data and post to the Main FSM
6512 ------------------------------------------------------------------------*/
6513 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6514 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6515 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6516 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6517 wdiEventData.pUserData = pUserData;
6518
6519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6520
6521}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306522
6523//tdlsoffchan
6524/**
6525 @brief WDI_SetTDLSChanSwitchReq will be called when the
6526 upper MAC wants to send TDLS Chan Switch Request Parameters
6527 Upon the call of this API the WLAN DAL will
6528 pack and send the TDLS Link Establish Request message to the
6529 lower RIVA sub-system if DAL is in state STARTED.
6530
6531 In state BUSY this request will be queued. Request won't
6532 be allowed in any other state.
6533
6534
6535 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6536 for Link Establishment (Used for TDLS Off Channel ...)
6537
6538 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6539 response of the TDLS Chan Switch request received
6540 from the device
6541
6542 pUserData: user data will be passed back with the
6543 callback
6544
6545 @see
6546 @return Result of the function call
6547*/
6548WDI_Status
6549WDI_SetTDLSChanSwitchReq
6550(
6551 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6552 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6553 void* pUserData
6554)
6555{
6556 WDI_EventInfoType wdiEventData;
6557 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6558
6559 /*------------------------------------------------------------------------
6560 Sanity Check
6561 ------------------------------------------------------------------------*/
6562 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6563 {
6564 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6565 "WDI API call before module is initialized - Fail request");
6566
6567 return WDI_STATUS_E_NOT_ALLOWED;
6568 }
6569
6570 /*------------------------------------------------------------------------
6571 Fill in Event data and post to the Main FSM
6572 ------------------------------------------------------------------------*/
6573 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6574 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6575 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6576 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6577 wdiEventData.pUserData = pUserData;
6578
6579 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6580
6581}/*WDI_SetTDLSChanSwitchReq*/
6582
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306583#endif
6584
Jeff Johnson295189b2012-06-20 16:38:30 -07006585/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006586 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006587 UMAC wanted to add STA self while opening any new session
6588 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006589 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006590
6591
Jeff Johnsone7245742012-09-05 17:12:55 -07006592 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006593 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006594
Jeff Johnson295189b2012-06-20 16:38:30 -07006595 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006596 callback
6597
6598 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006599 @return Result of the function call
6600*/
6601WDI_Status
6602WDI_AddSTASelfReq
6603(
6604 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6605 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6606 void* pUserData
6607)
6608{
6609 WDI_EventInfoType wdiEventData;
6610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6611
6612 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006613 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006614 ------------------------------------------------------------------------*/
6615 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6616 {
6617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6618 "WDI API call before module is initialized - Fail request");
6619
Jeff Johnsone7245742012-09-05 17:12:55 -07006620 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006621 }
6622
6623 /*------------------------------------------------------------------------
6624 Fill in Event data and post to the Main FSM
6625 ------------------------------------------------------------------------*/
6626 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006627 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6628 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6629 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006630 wdiEventData.pUserData = pUserData;
6631
6632 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6633
6634}/*WDI_AddSTASelfReq*/
6635
6636
Jeff Johnsone7245742012-09-05 17:12:55 -07006637#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006638/**
6639 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6640 the device of a successful add TSpec negotiation. HW
6641 needs to receive the TSpec Info from the UMAC in order
6642 to configure properly the QoS data traffic. Upon the
6643 call of this API the WLAN DAL will pack and send a HAL
6644 Add TS request message to the lower RIVA sub-system if
6645 DAL is in state STARTED.
6646
6647 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006648 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006649
6650 WDI_PostAssocReq must have been called.
6651
6652 @param wdiAddTsReqParams: the add TS parameters as specified by
6653 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006654
Jeff Johnson295189b2012-06-20 16:38:30 -07006655 wdiAddTsRspCb: callback for passing back the response of
6656 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006657
Jeff Johnson295189b2012-06-20 16:38:30 -07006658 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006659 callback
6660
Jeff Johnson295189b2012-06-20 16:38:30 -07006661 @see WDI_PostAssocReq
6662 @return Result of the function call
6663*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006664WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006665WDI_AggrAddTSReq
6666(
6667 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6668 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6669 void* pUserData
6670)
6671{
6672 WDI_EventInfoType wdiEventData;
6673 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6674
6675 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006676 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006677 ------------------------------------------------------------------------*/
6678 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6679 {
6680 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6681 "WDI API call before module is initialized - Fail request");
6682
Jeff Johnsone7245742012-09-05 17:12:55 -07006683 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006684 }
6685
6686 /*------------------------------------------------------------------------
6687 Fill in Event data and post to the Main FSM
6688 ------------------------------------------------------------------------*/
6689 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006690 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6691 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6692 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006693 wdiEventData.pUserData = pUserData;
6694
6695 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6696
6697}/*WDI_AggrAddTSReq*/
6698
6699#endif /* WLAN_FEATURE_VOWIFI_11R */
6700
Jeff Johnson295189b2012-06-20 16:38:30 -07006701/**
6702 @brief WDI_FTMCommandReq
6703 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006704
6705 @param ftmCommandReq: FTM Command Body
6706 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006707 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006708
Jeff Johnson295189b2012-06-20 16:38:30 -07006709 @see
6710 @return Result of the function call
6711*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006712WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006713WDI_FTMCommandReq
6714(
6715 WDI_FTMCommandReqType *ftmCommandReq,
6716 WDI_FTMCommandRspCb ftmCommandRspCb,
6717 void *pUserData
6718)
6719{
6720 WDI_EventInfoType wdiEventData;
6721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6722
6723 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006724 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006725 ------------------------------------------------------------------------*/
6726 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6727 {
6728 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6729 "WDI API call before module is initialized - Fail request");
6730
Jeff Johnsone7245742012-09-05 17:12:55 -07006731 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006732 }
6733
6734 /*------------------------------------------------------------------------
6735 Fill in Event data and post to the Main FSM
6736 ------------------------------------------------------------------------*/
6737 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6738 wdiEventData.pEventData = (void *)ftmCommandReq;
6739 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6740 wdiEventData.pCBfnc = ftmCommandRspCb;
6741 wdiEventData.pUserData = pUserData;
6742
6743 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6744}
Jeff Johnson295189b2012-06-20 16:38:30 -07006745/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006746 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006747
6748 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006749 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006750
6751
6752 @param pwdiResumeReqParams: as specified by
6753 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006754
Jeff Johnson295189b2012-06-20 16:38:30 -07006755 wdiResumeReqRspCb: callback for passing back the response of
6756 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006757
Jeff Johnson295189b2012-06-20 16:38:30 -07006758 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006759 callback
6760
6761 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006762 @return Result of the function call
6763*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006764WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006765WDI_HostResumeReq
6766(
6767 WDI_ResumeParamsType* pwdiResumeReqParams,
6768 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6769 void* pUserData
6770)
6771{
6772 WDI_EventInfoType wdiEventData;
6773 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6774
6775 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006776 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006777 ------------------------------------------------------------------------*/
6778 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6779 {
6780 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6781 "WDI API call before module is initialized - Fail request");
6782
Jeff Johnsone7245742012-09-05 17:12:55 -07006783 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006784 }
6785
6786 /*------------------------------------------------------------------------
6787 Fill in Event data and post to the Main FSM
6788 ------------------------------------------------------------------------*/
6789 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006790 wdiEventData.pEventData = pwdiResumeReqParams;
6791 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6792 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006793 wdiEventData.pUserData = pUserData;
6794
6795 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6796
6797}/*WDI_HostResumeReq*/
6798
6799/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006800 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006801
6802 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006803 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006804
6805
6806 @param pwdiDelStaSelfReqParams: as specified by
6807 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006808
Jeff Johnson295189b2012-06-20 16:38:30 -07006809 wdiDelStaSelfRspCb: callback for passing back the response of
6810 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006811
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006813 callback
6814
Jeff Johnson295189b2012-06-20 16:38:30 -07006815 @see WDI_PostAssocReq
6816 @return Result of the function call
6817*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006818WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006819WDI_DelSTASelfReq
6820(
6821 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6822 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6823 void* pUserData
6824)
6825{
6826 WDI_EventInfoType wdiEventData;
6827 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6828
6829 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006830 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006831 ------------------------------------------------------------------------*/
6832 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6833 {
6834 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6835 "WDI API call before module is initialized - Fail request");
6836
Jeff Johnsone7245742012-09-05 17:12:55 -07006837 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006838 }
6839
6840 /*------------------------------------------------------------------------
6841 Fill in Event data and post to the Main FSM
6842 ------------------------------------------------------------------------*/
6843 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006844 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6845 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6846 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006847 wdiEventData.pUserData = pUserData;
6848
6849 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6850
6851}/*WDI_AggrAddTSReq*/
6852
6853/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006854 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6855 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006856 Upon the call of this API the WLAN DAL will pack
6857 and send a HAL Set Tx Per Tracking request message to the
6858 lower RIVA sub-system if DAL is in state STARTED.
6859
6860 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006861 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006862
Jeff Johnsone7245742012-09-05 17:12:55 -07006863 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006865
Jeff Johnson295189b2012-06-20 16:38:30 -07006866 pwdiSetTxPerTrackingRspCb: callback for passing back the
6867 response of the set Tx PER Tracking configurations operation received
6868 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006869
Jeff Johnson295189b2012-06-20 16:38:30 -07006870 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006871 callback
6872
Jeff Johnson295189b2012-06-20 16:38:30 -07006873 @return Result of the function call
6874*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006875WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006876WDI_SetTxPerTrackingReq
6877(
6878 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6879 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6880 void* pUserData
6881)
6882{
6883 WDI_EventInfoType wdiEventData;
6884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6885
6886 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006887 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006888 ------------------------------------------------------------------------*/
6889 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6890 {
6891 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6892 "WDI API call before module is initialized - Fail request");
6893
Jeff Johnsone7245742012-09-05 17:12:55 -07006894 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006895 }
6896
6897 /*------------------------------------------------------------------------
6898 Fill in Event data and post to the Main FSM
6899 ------------------------------------------------------------------------*/
6900 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006901 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006903 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006904 wdiEventData.pUserData = pUserData;
6905
6906 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6907
6908}/*WDI_SetTxPerTrackingReq*/
6909
6910/**
6911 @brief WDI_SetTmLevelReq
6912 If HW Thermal condition changed, driver should react based on new
6913 HW thermal condition.
6914
6915 @param pwdiSetTmLevelReq: New thermal condition information
6916
6917 pwdiSetTmLevelRspCb: callback
6918
6919 usrData: user data will be passed back with the
6920 callback
6921
6922 @return Result of the function call
6923*/
6924WDI_Status
6925WDI_SetTmLevelReq
6926(
6927 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
6928 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
6929 void *usrData
6930)
6931{
6932 WDI_EventInfoType wdiEventData;
6933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6934
6935 /*------------------------------------------------------------------------
6936 Sanity Check
6937 ------------------------------------------------------------------------*/
6938 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6939 {
6940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6941 "WDI API call before module is initialized - Fail request");
6942
6943 return WDI_STATUS_E_NOT_ALLOWED;
6944 }
6945
6946 /*------------------------------------------------------------------------
6947 Fill in Event data and post to the Main FSM
6948 ------------------------------------------------------------------------*/
6949 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
6950 wdiEventData.pEventData = pwdiSetTmLevelReq;
6951 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
6952 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
6953 wdiEventData.pUserData = usrData;
6954
6955 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6956}
6957
6958/**
6959 @brief WDI_HostSuspendInd
6960
6961 Suspend Indication from the upper layer will be sent
6962 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07006963
Jeff Johnson295189b2012-06-20 16:38:30 -07006964 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07006965
6966 @see
6967
Jeff Johnson295189b2012-06-20 16:38:30 -07006968 @return Status of the request
6969*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006970WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006971WDI_HostSuspendInd
6972(
6973 WDI_SuspendParamsType* pwdiSuspendIndParams
6974)
6975{
6976
6977 WDI_EventInfoType wdiEventData;
6978 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6979
6980 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 ------------------------------------------------------------------------*/
6983 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6984 {
6985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6986 "WDI API call before module is initialized - Fail request");
6987
Jeff Johnsone7245742012-09-05 17:12:55 -07006988 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 }
6990
6991 /*------------------------------------------------------------------------
6992 Fill in Event data and post to the Main FSM
6993 ------------------------------------------------------------------------*/
6994 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07006995 wdiEventData.pEventData = pwdiSuspendIndParams;
6996 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
6997 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07006998 wdiEventData.pUserData = NULL;
6999
7000 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7001
7002}/*WDI_HostSuspendInd*/
7003
7004/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007005 @brief WDI_TrafficStatsInd
7006 Traffic Stats from the upper layer will be sent
7007 down to HAL
7008
7009 @param WDI_TrafficStatsIndType
7010
7011 @see
7012
7013 @return Status of the request
7014*/
7015WDI_Status
7016WDI_TrafficStatsInd
7017(
7018 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
7019)
7020{
7021
7022 WDI_EventInfoType wdiEventData;
7023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7024
7025 /*------------------------------------------------------------------------
7026 Sanity Check
7027 ------------------------------------------------------------------------*/
7028 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7029 {
7030 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7031 "WDI API call before module is initialized - Fail request");
7032
7033 return WDI_STATUS_E_NOT_ALLOWED;
7034 }
7035
7036 /*------------------------------------------------------------------------
7037 Fill in Event data and post to the Main FSM
7038 ------------------------------------------------------------------------*/
7039 wdiEventData.wdiRequest = WDI_TRAFFIC_STATS_IND;
7040 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
7041 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
7042 wdiEventData.pCBfnc = NULL;
7043 wdiEventData.pUserData = NULL;
7044
7045 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7046
7047}/*WDI_TrafficStatsInd*/
7048
Chet Lanctot186b5732013-03-18 10:26:30 -07007049#ifdef WLAN_FEATURE_11W
7050/**
7051 @brief WDI_ExcludeUnencryptedInd
7052 Register with HAL to receive/drop unencrypted frames
7053
7054 @param WDI_ExcludeUnencryptIndType
7055
7056 @see
7057
7058 @return Status of the request
7059*/
7060WDI_Status
7061WDI_ExcludeUnencryptedInd
7062(
7063 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7064)
7065{
7066
7067 WDI_EventInfoType wdiEventData;
7068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7069
7070 /*------------------------------------------------------------------------
7071 Sanity Check
7072 ------------------------------------------------------------------------*/
7073 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7074 {
7075 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7076 "WDI API call before module is initialized - Fail request");
7077
7078 return WDI_STATUS_E_NOT_ALLOWED;
7079 }
7080
7081 /*------------------------------------------------------------------------
7082 Fill in Event data and post to the Main FSM
7083 ------------------------------------------------------------------------*/
7084 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7085 wdiEventData.pEventData = pWdiExcUnencParams;
7086 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7087 wdiEventData.pCBfnc = NULL;
7088 wdiEventData.pUserData = NULL;
7089
7090 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7091
7092}/*WDI_TrafficStatsInd*/
7093#endif
7094
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007095/**
Yue Mab9c86f42013-08-14 15:59:08 -07007096 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7097
7098 @param addPeriodicTxPtrnParams: Add Pattern parameters
7099
7100 @see
7101
7102 @return Status of the request
7103*/
7104WDI_Status
7105WDI_AddPeriodicTxPtrnInd
7106(
7107 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7108)
7109{
7110 WDI_EventInfoType wdiEventData;
7111
7112 /*-------------------------------------------------------------------------
7113 Sanity Check
7114 ------------------------------------------------------------------------*/
7115 if (eWLAN_PAL_FALSE == gWDIInitialized)
7116 {
7117 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7118 "WDI API call before module is initialized - Fail request!");
7119
7120 return WDI_STATUS_E_NOT_ALLOWED;
7121 }
7122
7123 /*-------------------------------------------------------------------------
7124 Fill in Event data and post to the Main FSM
7125 ------------------------------------------------------------------------*/
7126 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7127 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7128 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7129 wdiEventData.pCBfnc = NULL;
7130 wdiEventData.pUserData = NULL;
7131
7132 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7133}
7134
7135/**
7136 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7137
7138 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7139
7140 @see
7141
7142 @return Status of the request
7143*/
7144WDI_Status
7145WDI_DelPeriodicTxPtrnInd
7146(
7147 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7148)
7149{
7150 WDI_EventInfoType wdiEventData;
7151
7152 /*-------------------------------------------------------------------------
7153 Sanity Check
7154 ------------------------------------------------------------------------*/
7155 if (eWLAN_PAL_FALSE == gWDIInitialized)
7156 {
7157 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7158 "WDI API call before module is initialized - Fail request!");
7159
7160 return WDI_STATUS_E_NOT_ALLOWED;
7161 }
7162
7163 /*-------------------------------------------------------------------------
7164 Fill in Event data and post to the Main FSM
7165 ------------------------------------------------------------------------*/
7166 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7167 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7168 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7169 wdiEventData.pCBfnc = NULL;
7170 wdiEventData.pUserData = NULL;
7171
7172 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7173}
7174
7175/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007176 @brief WDI_HALDumpCmdReq
7177 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007178
7179 @param halDumpCmdReqParams: Hal Dump Command Body
7180 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007181 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007182
Jeff Johnson295189b2012-06-20 16:38:30 -07007183 @see
7184 @return Result of the function call
7185*/
7186WDI_Status WDI_HALDumpCmdReq
7187(
7188 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7189 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7190 void *pUserData
7191)
7192{
7193 WDI_EventInfoType wdiEventData;
7194 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7195
7196 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007197 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007198 ------------------------------------------------------------------------*/
7199 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7200 {
7201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7202 "WDI API call before module is initialized - Fail request");
7203
Jeff Johnsone7245742012-09-05 17:12:55 -07007204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007205 }
7206
7207 /*------------------------------------------------------------------------
7208 Fill in Event data and post to the Main FSM
7209 ------------------------------------------------------------------------*/
7210 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7211 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7212 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7213 wdiEventData.pCBfnc = halDumpCmdRspCb;
7214 wdiEventData.pUserData = pUserData;
7215
7216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7217}
7218
Jeff Johnsone7245742012-09-05 17:12:55 -07007219/*============================================================================
7220
Jeff Johnson295189b2012-06-20 16:38:30 -07007221 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007222
Jeff Johnson295189b2012-06-20 16:38:30 -07007223 ============================================================================*/
7224
7225/**
7226 @brief Main FSM Start function for all states except BUSY
7227
Jeff Johnsone7245742012-09-05 17:12:55 -07007228
7229 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007230 wdiEV: event posted to the main DAL FSM
7231 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007232 structure
7233
Jeff Johnson295189b2012-06-20 16:38:30 -07007234 @see
7235 @return Result of the function call
7236*/
7237WDI_Status
7238WDI_PostMainEvent
7239(
Jeff Johnsone7245742012-09-05 17:12:55 -07007240 WDI_ControlBlockType* pWDICtx,
7241 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007242 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007243)
7244{
Jeff Johnsone7245742012-09-05 17:12:55 -07007245 WDI_Status wdiStatus;
7246 WDI_MainFuncType pfnWDIMainEvHdlr;
7247 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307248 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7250
7251 /*-------------------------------------------------------------------------
7252 Sanity check
7253 -------------------------------------------------------------------------*/
7254 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7255 ( wdiEV >= WDI_MAX_EVENT ))
7256 {
7257 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7258 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7259 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007260 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007261 }
7262
7263 /*Access to the global state must be locked */
7264 wpalMutexAcquire(&pWDICtx->wptMutex);
7265
7266 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007267 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007268
7269 wdiOldState = pWDICtx->uGlobalState;
7270
7271 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007272 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7273 response comes from CCPU for the request sent by host:
7274 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 -07007275 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 -07007276 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007277 CCPU:
7278 don't change the state */
7279 if ( WDI_RESPONSE_EVENT != wdiEV)
7280 {
7281 /*Transition to BUSY State - the request is now being processed by the FSM,
7282 if the request fails we shall transition back to the old state, if not
7283 the request will manage its own state transition*/
7284 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7285 }
7286 /* If the state function associated with the EV is NULL it means that this
7287 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007288 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007289 {
7290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007293 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007294 }
7295 else
7296 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307297 if (!(failCnt & 0xF))
7298 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007299 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007300 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307301 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007302 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007303 }
7304
7305 /* If a request handles itself well it will end up in a success or in a
7306 pending
7307 Success - means that the request was processed and the proper state
7308 transition already occurred or will occur when the resp is received
7309 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007310
Jeff Johnson295189b2012-06-20 16:38:30 -07007311 Pending - means the request could not be processed at this moment in time
7312 because the FSM was already busy so no state transition or dequeueing
7313 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007314
Jeff Johnson295189b2012-06-20 16:38:30 -07007315 Success for synchronous case means that the transition may occur and
7316 processing of pending requests may continue - so it should go through
7317 and restores the state and continue processing queued requests*/
7318 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7319 ( WDI_STATUS_PENDING != wdiStatus ))
7320 {
7321 if ( WDI_RESPONSE_EVENT != wdiEV)
7322 {
7323 /*The request has failed or could not be processed - transition back to
7324 the old state - check to see if anything was queued and try to execute
7325 The dequeue logic should post a message to a thread and return - no
7326 actual processing can occur */
7327 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7328 }
7329 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007330
Jeff Johnson295189b2012-06-20 16:38:30 -07007331 }
7332
7333 /* we have completed processing the event */
7334 wpalMutexRelease(&pWDICtx->wptMutex);
7335
Jeff Johnsone7245742012-09-05 17:12:55 -07007336 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007337
7338}/*WDI_PostMainEvent*/
7339
7340
7341/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007342 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007343--------------------------------------------------------------------------*/
7344/**
7345 @brief Main FSM Start function for all states except BUSY
7346
Jeff Johnsone7245742012-09-05 17:12:55 -07007347
7348 @param pWDICtx: pointer to the WLAN DAL context
7349 pEventData: pointer to the event information structure
7350
Jeff Johnson295189b2012-06-20 16:38:30 -07007351 @see
7352 @return Result of the function call
7353*/
7354WDI_Status
7355WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007356(
Jeff Johnson295189b2012-06-20 16:38:30 -07007357 WDI_ControlBlockType* pWDICtx,
7358 WDI_EventInfoType* pEventData
7359)
7360{
7361
7362 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007363 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 ----------------------------------------------------------------------*/
7365 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7366 {
7367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007368 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007369 pWDICtx, pEventData);
7370 return WDI_STATUS_E_FAILURE;
7371 }
7372
7373 wpalMutexAcquire(&pWDICtx->wptMutex);
7374
7375 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007376 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007377 ----------------------------------------------------------------------*/
7378 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7379 {
7380 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7381 "Control Transport not yet Open - queueing the request");
7382
7383 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007384 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007385
7386 wpalMutexRelease(&pWDICtx->wptMutex);
7387 return WDI_STATUS_PENDING;
7388 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007389
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 wpalMutexRelease(&pWDICtx->wptMutex);
7391
7392 /*Return Success*/
7393 return WDI_ProcessRequest( pWDICtx, pEventData );
7394
7395}/*WDI_MainStart*/
7396
7397/**
7398 @brief Main FSM Response function for state INIT
7399
Jeff Johnsone7245742012-09-05 17:12:55 -07007400
7401 @param pWDICtx: pointer to the WLAN DAL context
7402 pEventData: pointer to the event information structure
7403
Jeff Johnson295189b2012-06-20 16:38:30 -07007404 @see
7405 @return Result of the function call
7406*/
7407WDI_Status
7408WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007409(
Jeff Johnson295189b2012-06-20 16:38:30 -07007410 WDI_ControlBlockType* pWDICtx,
7411 WDI_EventInfoType* pEventData
7412)
7413{
7414 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007415 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007416 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007417 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007418
7419 /*Return Success*/
7420 return WDI_STATUS_E_NOT_ALLOWED;
7421}/* WDI_MainRspInit */
7422
7423/**
7424 @brief Main FSM Close function for all states except BUSY
7425
Jeff Johnsone7245742012-09-05 17:12:55 -07007426
7427 @param pWDICtx: pointer to the WLAN DAL context
7428 pEventData: pointer to the event information structure
7429
Jeff Johnson295189b2012-06-20 16:38:30 -07007430 @see
7431 @return Result of the function call
7432*/
7433WDI_Status
7434WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007435(
Jeff Johnson295189b2012-06-20 16:38:30 -07007436 WDI_ControlBlockType* pWDICtx,
7437 WDI_EventInfoType* pEventData
7438)
7439{
7440
7441 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007442 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007443 ----------------------------------------------------------------------*/
7444 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7445 {
7446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007447 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007448 pWDICtx, pEventData);
7449 return WDI_STATUS_E_FAILURE;
7450 }
7451
7452 /*Return Success*/
7453 return WDI_ProcessRequest( pWDICtx, pEventData );
7454
7455}/*WDI_MainClose*/
7456/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007457 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007458--------------------------------------------------------------------------*/
7459/**
7460 @brief Main FSM Start function for state STARTED
7461
Jeff Johnsone7245742012-09-05 17:12:55 -07007462
7463 @param pWDICtx: pointer to the WLAN DAL context
7464 pEventData: pointer to the event information structure
7465
Jeff Johnson295189b2012-06-20 16:38:30 -07007466 @see
7467 @return Result of the function call
7468*/
7469WDI_Status
7470WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007471(
Jeff Johnson295189b2012-06-20 16:38:30 -07007472 WDI_ControlBlockType* pWDICtx,
7473 WDI_EventInfoType* pEventData
7474)
7475{
7476 WDI_StartRspCb wdiStartRspCb = NULL;
7477 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7478
7479 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007480 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007481 ----------------------------------------------------------------------*/
7482 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7483 {
7484 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007485 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007486 pWDICtx, pEventData);
7487 return WDI_STATUS_E_FAILURE;
7488 }
7489
7490 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007491 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007492 ----------------------------------------------------------------------*/
7493 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007494 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007495
7496 wpalMutexAcquire(&pWDICtx->wptMutex);
7497
7498 /*Transition back to started because the post function transitioned us to
7499 busy*/
7500 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7501
7502 /*Check to see if any request is pending*/
7503 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007504
Jeff Johnson295189b2012-06-20 16:38:30 -07007505 wpalMutexRelease(&pWDICtx->wptMutex);
7506
7507 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007508 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7509
Jeff Johnson295189b2012-06-20 16:38:30 -07007510 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307511 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007512
7513 /*Return Success*/
7514 return WDI_STATUS_SUCCESS;
7515
7516}/*WDI_MainStartStarted*/
7517
7518/**
7519 @brief Main FSM Stop function for state STARTED
7520
Jeff Johnsone7245742012-09-05 17:12:55 -07007521
7522 @param pWDICtx: pointer to the WLAN DAL context
7523 pEventData: pointer to the event information structure
7524
Jeff Johnson295189b2012-06-20 16:38:30 -07007525 @see
7526 @return Result of the function call
7527*/
7528WDI_Status
7529WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007530(
Jeff Johnson295189b2012-06-20 16:38:30 -07007531 WDI_ControlBlockType* pWDICtx,
7532 WDI_EventInfoType* pEventData
7533)
7534{
7535 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007536 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007537 ----------------------------------------------------------------------*/
7538 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7539 {
7540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007541 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007542 pWDICtx, pEventData);
7543 return WDI_STATUS_E_FAILURE;
7544 }
7545
7546 /*State at this point is BUSY - because we enter this state before posting
7547 an event to the FSM in order to prevent potential race conditions*/
7548
7549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7550 "Processing stop request in FSM");
7551
7552 /*Return Success*/
7553 return WDI_ProcessRequest( pWDICtx, pEventData );
7554
7555}/*WDI_MainStopStarted*/
7556/**
7557 @brief Main FSM Request function for state started
7558
Jeff Johnsone7245742012-09-05 17:12:55 -07007559
7560 @param pWDICtx: pointer to the WLAN DAL context
7561 pEventData: pointer to the event information structure
7562
Jeff Johnson295189b2012-06-20 16:38:30 -07007563 @see
7564 @return Result of the function call
7565*/
7566WDI_Status
7567WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007568(
Jeff Johnson295189b2012-06-20 16:38:30 -07007569 WDI_ControlBlockType* pWDICtx,
7570 WDI_EventInfoType* pEventData
7571)
7572{
7573
7574 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007575 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007576 ----------------------------------------------------------------------*/
7577 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7578 {
7579 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007580 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007581 pWDICtx, pEventData);
7582 return WDI_STATUS_E_FAILURE;
7583 }
7584
7585 /*State at this point is BUSY - because we enter this state before posting
7586 an event to the FSM in order to prevent potential race conditions*/
7587
7588 /*Return Success*/
7589 return WDI_ProcessRequest( pWDICtx, pEventData );
7590
7591}/*WDI_MainReqStarted*/
7592
7593/**
7594 @brief Main FSM Response function for all states except INIT
7595
Jeff Johnsone7245742012-09-05 17:12:55 -07007596
7597 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007598 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007599
Jeff Johnson295189b2012-06-20 16:38:30 -07007600 @see
7601 @return Result of the function call
7602*/
7603WDI_Status
7604WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007605(
Jeff Johnson295189b2012-06-20 16:38:30 -07007606 WDI_ControlBlockType* pWDICtx,
7607 WDI_EventInfoType* pEventData
7608)
7609{
Jeff Johnsone7245742012-09-05 17:12:55 -07007610 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007611 wpt_boolean expectedResponse;
7612
7613 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007614 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007615 ----------------------------------------------------------------------*/
7616 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7617 {
7618 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007619 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007620 pWDICtx, pEventData);
7621 return WDI_STATUS_E_FAILURE;
7622 }
7623
7624 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7625 {
7626 /* we received an expected response */
7627 expectedResponse = eWLAN_PAL_TRUE;
7628
7629 /*We expect that we will transition to started after this processing*/
7630 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7631
7632 /* we are no longer expecting a response */
7633 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7634 }
7635 else
7636 {
7637 /* we received an indication or unexpected response */
7638 expectedResponse = eWLAN_PAL_FALSE;
7639 /* for indications no need to update state from what it is right
7640 now, unless it explicitly does it in the indication handler (say
7641 for device failure ind) */
7642 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7643 }
7644
7645 /*Process the response and indication */
7646 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7647
7648 /*Lock the CB as we are about to do a state transition*/
7649 wpalMutexAcquire(&pWDICtx->wptMutex);
7650
7651 /*Transition to the expected state after the response processing
7652 - this should always be started state with the following exceptions:
7653 1. processing of a failed start response
7654 2. device failure detected while processing response
7655 3. stop response received*/
7656 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007657
Jeff Johnson295189b2012-06-20 16:38:30 -07007658 /*Dequeue request that may have been queued while we were waiting for the
7659 response */
7660 if ( expectedResponse )
7661 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007662 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 }
7664
7665 wpalMutexRelease(&pWDICtx->wptMutex);
7666
7667 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007668 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007669
7670}/*WDI_MainRsp*/
7671
7672/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007673 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007674--------------------------------------------------------------------------*/
7675/**
7676 @brief Main FSM Stop function for state STOPPED
7677
Jeff Johnsone7245742012-09-05 17:12:55 -07007678
7679 @param pWDICtx: pointer to the WLAN DAL context
7680 pEventData: pointer to the event information structure
7681
Jeff Johnson295189b2012-06-20 16:38:30 -07007682 @see
7683 @return Result of the function call
7684*/
7685WDI_Status
7686WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007687(
Jeff Johnson295189b2012-06-20 16:38:30 -07007688 WDI_ControlBlockType* pWDICtx,
7689 WDI_EventInfoType* pEventData
7690)
7691{
7692 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007693 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007694 ----------------------------------------------------------------------*/
7695 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7696 {
7697 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007698 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007699 pWDICtx, pEventData);
7700 return WDI_STATUS_E_FAILURE;
7701 }
7702
7703 /*We should normally not get a STOP request if we are already stopped
7704 since we should normally be stopped by the UMAC. However in some
7705 error situations we put ourselves in the stopped state without the
7706 UMAC knowing, so when we get a STOP request in this state we still
7707 process it since we need to clean up the underlying state */
7708 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7709 "Processing stop request while stopped in FSM");
7710
7711 /*Return Success*/
7712 return WDI_ProcessRequest( pWDICtx, pEventData );
7713
7714}/*WDI_MainStopStopped*/
7715
7716/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007717 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007718--------------------------------------------------------------------------*/
7719/**
7720 @brief Main FSM Start function for state BUSY
7721
Jeff Johnsone7245742012-09-05 17:12:55 -07007722
7723 @param pWDICtx: pointer to the WLAN DAL context
7724 pEventData: pointer to the event information structure
7725
Jeff Johnson295189b2012-06-20 16:38:30 -07007726 @see
7727 @return Result of the function call
7728*/
7729WDI_Status
7730WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007731(
Jeff Johnson295189b2012-06-20 16:38:30 -07007732 WDI_ControlBlockType* pWDICtx,
7733 WDI_EventInfoType* pEventData
7734)
7735{
7736 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007737 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007738 ----------------------------------------------------------------------*/
7739 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7740 {
7741 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007742 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007743 pWDICtx, pEventData);
7744 return WDI_STATUS_E_FAILURE;
7745 }
7746
7747 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007748 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007749 ----------------------------------------------------------------------*/
7750 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7751 "WDI Busy state - queue start request");
7752
7753 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007754 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007755
7756 /*Return Success*/
7757 return WDI_STATUS_PENDING;
7758}/*WDI_MainStartBusy*/
7759
7760/**
7761 @brief Main FSM Stop function for state BUSY
7762
Jeff Johnsone7245742012-09-05 17:12:55 -07007763
7764 @param pWDICtx: pointer to the WLAN DAL context
7765 pEventData: pointer to the event information structure
7766
Jeff Johnson295189b2012-06-20 16:38:30 -07007767 @see
7768 @return Result of the function call
7769*/
7770WDI_Status
7771WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007772(
Jeff Johnson295189b2012-06-20 16:38:30 -07007773 WDI_ControlBlockType* pWDICtx,
7774 WDI_EventInfoType* pEventData
7775)
7776{
7777 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007778 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007779 ----------------------------------------------------------------------*/
7780 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7781 {
7782 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007783 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007784 pWDICtx, pEventData);
7785 return WDI_STATUS_E_FAILURE;
7786 }
7787
7788 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007789 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007790 ----------------------------------------------------------------------*/
7791 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7792 "WDI Busy state - queue stop request");
7793
Jeff Johnsone7245742012-09-05 17:12:55 -07007794 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007795 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007796
Jeff Johnson295189b2012-06-20 16:38:30 -07007797}/*WDI_MainStopBusy*/
7798
7799/**
7800 @brief Main FSM Request function for state BUSY
7801
Jeff Johnsone7245742012-09-05 17:12:55 -07007802
7803 @param pWDICtx: pointer to the WLAN DAL context
7804 pEventData: pointer to the event information structure
7805
Jeff Johnson295189b2012-06-20 16:38:30 -07007806 @see
7807 @return Result of the function call
7808*/
7809WDI_Status
7810WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007811(
Jeff Johnson295189b2012-06-20 16:38:30 -07007812 WDI_ControlBlockType* pWDICtx,
7813 WDI_EventInfoType* pEventData
7814)
7815{
7816 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007817 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007818 ----------------------------------------------------------------------*/
7819 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7820 {
7821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007822 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007823 pWDICtx, pEventData);
7824 return WDI_STATUS_E_FAILURE;
7825 }
7826
7827 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007828 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007829 ----------------------------------------------------------------------*/
7830 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7831 "WDI Busy state - queue request %d because waiting for response %d",
7832 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7833
Jeff Johnsone7245742012-09-05 17:12:55 -07007834 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007835 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007836
Jeff Johnson295189b2012-06-20 16:38:30 -07007837}/*WDI_MainReqBusy*/
7838/**
7839 @brief Main FSM Close function for state BUSY
7840
Jeff Johnsone7245742012-09-05 17:12:55 -07007841
7842 @param pWDICtx: pointer to the WLAN DAL context
7843 pEventData: pointer to the event information structure
7844
Jeff Johnson295189b2012-06-20 16:38:30 -07007845 @see
7846 @return Result of the function call
7847*/
7848WDI_Status
7849WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007850(
Jeff Johnson295189b2012-06-20 16:38:30 -07007851 WDI_ControlBlockType* pWDICtx,
7852 WDI_EventInfoType* pEventData
7853)
7854{
7855 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007856 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007857 ----------------------------------------------------------------------*/
7858 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7859 {
7860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007861 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007862 pWDICtx, pEventData);
7863 return WDI_STATUS_E_FAILURE;
7864 }
7865
7866 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007867 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007868 ----------------------------------------------------------------------*/
7869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7870 "WDI Busy state - queue close request");
7871
Jeff Johnsone7245742012-09-05 17:12:55 -07007872 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007873 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007874
Jeff Johnson295189b2012-06-20 16:38:30 -07007875}/*WDI_MainCloseBusy*/
7876
7877/**
7878 @brief Main FSM Shutdown function for INIT & STARTED states
7879
7880
7881 @param pWDICtx: pointer to the WLAN DAL context
7882 pEventData: pointer to the event information structure
7883
7884 @see
7885 @return Result of the function call
7886*/
7887WDI_Status
7888WDI_MainShutdown
7889(
7890 WDI_ControlBlockType* pWDICtx,
7891 WDI_EventInfoType* pEventData
7892)
7893{
7894 /*--------------------------------------------------------------------
7895 Sanity Check
7896 ----------------------------------------------------------------------*/
7897 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7898 {
7899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007900 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007901 pWDICtx, pEventData);
7902 return WDI_STATUS_E_FAILURE;
7903 }
7904
7905 /*State at this point is BUSY - because we enter this state before posting
7906 an event to the FSM in order to prevent potential race conditions*/
7907
7908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7909 "Processing shutdown request in FSM");
7910
7911 /*Return Success*/
7912 return WDI_ProcessRequest( pWDICtx, pEventData );
7913
7914}/*WDI_MainShutdown*/
7915
7916/**
7917 @brief Main FSM Shutdown function for BUSY state
7918
7919
7920 @param pWDICtx: pointer to the WLAN DAL context
7921 pEventData: pointer to the event information structure
7922
7923 @see
7924 @return Result of the function call
7925*/
7926WDI_Status
7927WDI_MainShutdownBusy
7928(
7929 WDI_ControlBlockType* pWDICtx,
7930 WDI_EventInfoType* pEventData
7931)
7932{
7933 /*--------------------------------------------------------------------
7934 Sanity Check
7935 ----------------------------------------------------------------------*/
7936 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7937 {
7938 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007939 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007940 pWDICtx, pEventData);
7941 return WDI_STATUS_E_FAILURE;
7942 }
7943
7944 /* If you are waiting for a HAL response at this stage, you are not
7945 * going to get it. Riva is already shutdown/crashed.
7946 */
7947 wpalTimerStop(&gWDICb.wptResponseTimer);
7948
7949 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7950 "Processing shutdown request in FSM: Busy state ");
7951
7952 return WDI_ProcessRequest( pWDICtx, pEventData );
7953
7954}/*WDI_MainShutdownBusy*/
7955
7956
Jeff Johnsone7245742012-09-05 17:12:55 -07007957/*=======================================================================
7958
Jeff Johnson295189b2012-06-20 16:38:30 -07007959 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07007960
Jeff Johnson295189b2012-06-20 16:38:30 -07007961*=======================================================================*/
7962
7963/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07007964 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07007965========================================================================*/
7966/**
Jeff Johnsone7245742012-09-05 17:12:55 -07007967 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07007968 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07007969
7970 @param pWDICtx: pointer to the WLAN DAL context
7971 pEventData: pointer to the event information structure
7972
Jeff Johnson295189b2012-06-20 16:38:30 -07007973 @see
7974 @return Result of the function call
7975*/
7976WDI_Status
7977WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07007978(
Jeff Johnson295189b2012-06-20 16:38:30 -07007979 WDI_ControlBlockType* pWDICtx,
7980 WDI_EventInfoType* pEventData
7981)
7982{
7983 WDI_StartReqParamsType* pwdiStartParams = NULL;
7984 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07007985 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007986 wpt_uint16 usDataOffset = 0;
7987 wpt_uint16 usSendSize = 0;
7988
Jeff Johnsone7245742012-09-05 17:12:55 -07007989 tHalMacStartReqMsg halStartReq;
7990 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007991 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7992
7993 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007994 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07007995 -------------------------------------------------------------------------*/
7996 if (( NULL == pEventData ) ||
7997 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
7998 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
7999 {
8000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008004 }
8005
8006 /*-----------------------------------------------------------------------
8007 Get message buffer
8008 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008009 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07008010 pwdiStartParams->usConfigBufferLen;
8011
Jeff Johnsone7245742012-09-05 17:12:55 -07008012 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008013 usLen,
8014 &pSendBuffer, &usDataOffset, &usSendSize))||
8015 ( usSendSize < (usDataOffset + usLen )))
8016 {
8017 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008018 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008019 pEventData, pwdiStartParams, wdiStartRspCb);
8020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008022 }
8023
8024 /*-----------------------------------------------------------------------
8025 Fill in the message
8026 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008027 halStartReq.startReqParams.driverType =
8028 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07008029
Jeff Johnsone7245742012-09-05 17:12:55 -07008030 halStartReq.startReqParams.uConfigBufferLen =
8031 pwdiStartParams->usConfigBufferLen;
8032 wpalMemoryCopy( pSendBuffer+usDataOffset,
8033 &halStartReq.startReqParams,
8034 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008035
Jeff Johnsone7245742012-09-05 17:12:55 -07008036 usDataOffset += sizeof(halStartReq.startReqParams);
8037 wpalMemoryCopy( pSendBuffer+usDataOffset,
8038 pwdiStartParams->pConfigBuffer,
8039 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07008040
8041 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008042 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008043
8044 /*Save Low Level Ind CB and associated user data - it will be used further
8045 on when an indication is coming from the lower MAC*/
8046 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008047 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008048
Jeff Johnsone7245742012-09-05 17:12:55 -07008049 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07008050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008052 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008053 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008054 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8055
Jeff Johnsone7245742012-09-05 17:12:55 -07008056
Jeff Johnson295189b2012-06-20 16:38:30 -07008057}/*WDI_ProcessStartReq*/
8058
8059/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008060 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008061 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008062
8063 @param pWDICtx: pointer to the WLAN DAL context
8064 pEventData: pointer to the event information structure
8065
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 @see
8067 @return Result of the function call
8068*/
8069WDI_Status
8070WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008071(
Jeff Johnson295189b2012-06-20 16:38:30 -07008072 WDI_ControlBlockType* pWDICtx,
8073 WDI_EventInfoType* pEventData
8074)
8075{
8076 WDI_StopReqParamsType* pwdiStopParams = NULL;
8077 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008078 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008079 wpt_uint16 usDataOffset = 0;
8080 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008081 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008082 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8084
8085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008087 -------------------------------------------------------------------------*/
8088 if (( NULL == pEventData ) ||
8089 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8090 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8091 {
8092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008094 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008095 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008096 }
8097
8098 /*-----------------------------------------------------------------------
8099 Get message buffer
8100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008101 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008102 sizeof(halStopReq.stopReqParams),
8103 &pSendBuffer, &usDataOffset, &usSendSize))||
8104 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8105 {
8106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008107 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008108 pEventData, pwdiStopParams, wdiStopRspCb);
8109 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008110 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008111 }
8112
8113 /*-----------------------------------------------------------------------
8114 Fill in the message
8115 -----------------------------------------------------------------------*/
8116 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8117 pwdiStopParams->wdiStopReason);
8118
Jeff Johnsone7245742012-09-05 17:12:55 -07008119 wpalMemoryCopy( pSendBuffer+usDataOffset,
8120 &halStopReq.stopReqParams,
8121 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008122
8123 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008124 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008125
8126 /*! TO DO: stop the data services */
8127 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8128 {
8129 /*Stop the STA Table !UT- check this logic again
8130 It is safer to do it here than on the response - because a stop is imminent*/
8131 WDI_STATableStop(pWDICtx);
8132
8133 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008134 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8135 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008136 {
8137 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8138 "WDI Init failed to reset power state event");
8139
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008141 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008142 }
8143 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008144 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8145 if( eWLAN_PAL_STATUS_SUCCESS != status )
8146 {
8147 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008148 "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 -08008149 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008150 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008151 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008152 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008153 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008154 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008155 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8156 WDI_SET_POWER_STATE_TIMEOUT);
8157 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008158 {
Ratnam Rachuri38027182016-03-15 16:05:59 +05308159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -07008160 "WDI Init failed to wait on an event");
8161
Ratnam Rachuri38027182016-03-15 16:05:59 +05308162 VOS_BUG(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008163 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008164 }
8165 }
8166
8167 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008168 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008169 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008170 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008171 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8172
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008173fail:
8174 // Release the message buffer so we don't leak
8175 wpalMemoryFree(pSendBuffer);
8176
8177failRequest:
8178 //WDA should have failure check to avoid the memory leak
8179 return WDI_STATUS_E_FAILURE;
8180
Jeff Johnson295189b2012-06-20 16:38:30 -07008181}/*WDI_ProcessStopReq*/
8182
8183/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008184 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008185 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008186
8187 @param pWDICtx: pointer to the WLAN DAL context
8188 pEventData: pointer to the event information structure
8189
Jeff Johnson295189b2012-06-20 16:38:30 -07008190 @see
8191 @return Result of the function call
8192*/
8193WDI_Status
8194WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008195(
Jeff Johnson295189b2012-06-20 16:38:30 -07008196 WDI_ControlBlockType* pWDICtx,
8197 WDI_EventInfoType* pEventData
8198)
8199{
Jeff Johnsone7245742012-09-05 17:12:55 -07008200 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008201 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8202
8203 /*Lock control block for cleanup*/
8204 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008205
Jeff Johnson295189b2012-06-20 16:38:30 -07008206 /*Clear all pending request*/
8207 WDI_ClearPendingRequests(pWDICtx);
8208
8209 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008210 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008211
8212 /* Close Data transport*/
8213 /* FTM mode does not open Data Path */
8214 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8215 {
8216 WDTS_Close(pWDICtx);
8217 }
8218
8219 /*Close the STA Table !UT- check this logic again*/
8220 WDI_STATableClose(pWDICtx);
8221
8222 /*close the PAL */
8223 wptStatus = wpalClose(pWDICtx->pPALContext);
8224 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8225 {
8226 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8227 "Failed to wpal Close %d", wptStatus);
8228 WDI_ASSERT(0);
8229 }
8230
8231 /*Transition back to init state*/
8232 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8233
8234 wpalMutexRelease(&pWDICtx->wptMutex);
8235
8236 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008237 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008238
Jeff Johnsone7245742012-09-05 17:12:55 -07008239 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008240}/*WDI_ProcessCloseReq*/
8241
8242
8243/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008244 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008245===========================================================================*/
8246
8247/**
8248 @brief Process Init Scan Request function (called when Main FSM
8249 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008250
8251 @param pWDICtx: pointer to the WLAN DAL context
8252 pEventData: pointer to the event information structure
8253
Jeff Johnson295189b2012-06-20 16:38:30 -07008254 @see
8255 @return Result of the function call
8256*/
8257WDI_Status
8258WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008259(
Jeff Johnson295189b2012-06-20 16:38:30 -07008260 WDI_ControlBlockType* pWDICtx,
8261 WDI_EventInfoType* pEventData
8262)
8263{
8264 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8265 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008266 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008267 wpt_uint16 usDataOffset = 0;
8268 wpt_uint16 usSendSize = 0;
8269 wpt_uint8 i = 0;
8270
8271 tHalInitScanReqMsg halInitScanReqMsg;
8272
Jeff Johnsone7245742012-09-05 17:12:55 -07008273 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008274 * It shold be removed once host and riva changes are in sync*/
8275 tHalInitScanConReqMsg halInitScanConReqMsg;
8276
8277 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8278
8279 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008280 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008281 -------------------------------------------------------------------------*/
8282 if (( NULL == pEventData ) ||
8283 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8284 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8285 {
8286 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008287 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008289 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008290 }
8291
8292#if 0
8293 wpalMutexAcquire(&pWDICtx->wptMutex);
8294 /*-----------------------------------------------------------------------
8295 Check to see if SCAN is already in progress - if so reject the req
8296 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008298 -----------------------------------------------------------------------*/
8299 if ( pWDICtx->bScanInProgress )
8300 {
8301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8302 "Scan is already in progress - subsequent scan is not allowed"
8303 " until the first scan completes");
8304
8305 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008307 }
8308
Jeff Johnsone7245742012-09-05 17:12:55 -07008309 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8310 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008311
8312 wpalMutexRelease(&pWDICtx->wptMutex);
8313#endif
Viral Modid86bde22012-12-10 13:09:21 -08008314 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008315 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008316 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008317 * It shold be removed once host and riva changes are in sync*/
8318 /*-----------------------------------------------------------------------
8319 Get message buffer
8320 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008322 sizeof(halInitScanConReqMsg.initScanParams),
8323 &pSendBuffer, &usDataOffset, &usSendSize))||
8324 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8325 {
8326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008327 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008328 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8329 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008330 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008331 }
8332
8333
8334 /*-----------------------------------------------------------------------
8335 Fill in the message
8336 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008337 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008338 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8339
8340 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8341 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8342
Jeff Johnsone7245742012-09-05 17:12:55 -07008343 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008344 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008345 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008346 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008347 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008348 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8349
8350 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8351 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8352
Jeff Johnson295189b2012-06-20 16:38:30 -07008353 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8354 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008355
Jeff Johnsone7245742012-09-05 17:12:55 -07008356 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008357 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8358
8359 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8360 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008361 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008362 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8363 }
8364
Jeff Johnsone7245742012-09-05 17:12:55 -07008365 wpalMemoryCopy( pSendBuffer+usDataOffset,
8366 &halInitScanConReqMsg.initScanParams,
8367 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 }
8369 else
8370 {
8371 /*-----------------------------------------------------------------------
8372 Get message buffer
8373 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008374 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 sizeof(halInitScanReqMsg.initScanParams),
8376 &pSendBuffer, &usDataOffset, &usSendSize))||
8377 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8378 {
8379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008380 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008381 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8382 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008383 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008384 }
8385
8386
8387 /*-----------------------------------------------------------------------
8388 Fill in the message
8389 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008390 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008391 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8392
8393 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8394 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8395
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008397 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008398 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008399 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008400 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008401 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8402
8403 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8404 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8405
Jeff Johnsone7245742012-09-05 17:12:55 -07008406 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008407 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8408
8409 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8410 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008411 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008412 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8413 }
8414
Jeff Johnsone7245742012-09-05 17:12:55 -07008415 wpalMemoryCopy( pSendBuffer+usDataOffset,
8416 &halInitScanReqMsg.initScanParams,
8417 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 }
8419
8420 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008421 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008422
8423 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008426 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008427 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8428
8429}/*WDI_ProcessInitScanReq*/
8430
8431/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008434
8435 @param pWDICtx: pointer to the WLAN DAL context
8436 pEventData: pointer to the event information structure
8437
Jeff Johnson295189b2012-06-20 16:38:30 -07008438 @see
8439 @return Result of the function call
8440*/
8441WDI_Status
8442WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008443(
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 WDI_ControlBlockType* pWDICtx,
8445 WDI_EventInfoType* pEventData
8446)
8447{
8448 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8449 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008450 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008451 wpt_uint16 usDataOffset = 0;
8452 wpt_uint16 usSendSize = 0;
8453
Jeff Johnsone7245742012-09-05 17:12:55 -07008454 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8456
8457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008458 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008459 -------------------------------------------------------------------------*/
8460 if (( NULL == pEventData ) ||
8461 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8462 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8463 {
8464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008465 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008466 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008467 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 }
8469
8470#if 0
8471 wpalMutexAcquire(&pWDICtx->wptMutex);
8472 /*-----------------------------------------------------------------------
8473 Check to see if SCAN is already in progress - start scan is only
8474 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008475 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008476 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8479 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8480 {
8481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8482 "Scan start not allowed in this state %d %d",
8483 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008484
Jeff Johnson295189b2012-06-20 16:38:30 -07008485 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008486 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008487 }
8488
Jeff Johnsone7245742012-09-05 17:12:55 -07008489 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008490
8491 wpalMutexRelease(&pWDICtx->wptMutex);
8492#endif
8493
8494 /*-----------------------------------------------------------------------
8495 Get message buffer
8496 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008497 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008498 sizeof(halStartScanReqMsg.startScanParams),
8499 &pSendBuffer, &usDataOffset, &usSendSize))||
8500 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8501 {
8502 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008503 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008504 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8505 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008506 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008507 }
8508
Jeff Johnsone7245742012-09-05 17:12:55 -07008509 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008510 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 wpalMemoryCopy( pSendBuffer+usDataOffset,
8512 &halStartScanReqMsg.startScanParams,
8513 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008514
8515 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008516 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008517
8518 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008521 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008522 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8523}/*WDI_ProcessStartScanReq*/
8524
8525
8526/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008527 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008528 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008529
8530 @param pWDICtx: pointer to the WLAN DAL context
8531 pEventData: pointer to the event information structure
8532
Jeff Johnson295189b2012-06-20 16:38:30 -07008533 @see
8534 @return Result of the function call
8535*/
8536WDI_Status
8537WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008538(
Jeff Johnson295189b2012-06-20 16:38:30 -07008539 WDI_ControlBlockType* pWDICtx,
8540 WDI_EventInfoType* pEventData
8541)
8542{
8543 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8544 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 wpt_uint16 usDataOffset = 0;
8547 wpt_uint16 usSendSize = 0;
8548
Jeff Johnsone7245742012-09-05 17:12:55 -07008549 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008550 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8551
8552 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008553 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008554 -------------------------------------------------------------------------*/
8555 if (( NULL == pEventData ) ||
8556 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8557 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8558 {
8559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 }
8564
Jeff Johnsone7245742012-09-05 17:12:55 -07008565 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8566 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008567 * forwarded to HAL and result in hang*/
8568#if 0
8569 wpalMutexAcquire(&pWDICtx->wptMutex);
8570 /*-----------------------------------------------------------------------
8571 Check to see if SCAN is already in progress - end scan is only
8572 allowed when a scan is ongoing and the state of the scan procedure
8573 is started
8574 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008575 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008576 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8577 {
8578 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8579 "End start not allowed in this state %d %d",
8580 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008581
Jeff Johnson295189b2012-06-20 16:38:30 -07008582 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008584 }
8585
Jeff Johnsone7245742012-09-05 17:12:55 -07008586 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008587
8588 wpalMutexRelease(&pWDICtx->wptMutex);
8589#endif
8590
8591 /*-----------------------------------------------------------------------
8592 Get message buffer
8593 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008594 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008595 sizeof(halEndScanReqMsg.endScanParams),
8596 &pSendBuffer, &usDataOffset, &usSendSize))||
8597 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8598 {
8599 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008600 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008601 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8602 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008604 }
8605
8606 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8607
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 wpalMemoryCopy( pSendBuffer+usDataOffset,
8609 &halEndScanReqMsg.endScanParams,
8610 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008611
8612 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008613 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008614
8615 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008616 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008617 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008618 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008619 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8620}/*WDI_ProcessEndScanReq*/
8621
8622
8623/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008624 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008625 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008626
8627 @param pWDICtx: pointer to the WLAN DAL context
8628 pEventData: pointer to the event information structure
8629
Jeff Johnson295189b2012-06-20 16:38:30 -07008630 @see
8631 @return Result of the function call
8632*/
8633WDI_Status
8634WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008635(
Jeff Johnson295189b2012-06-20 16:38:30 -07008636 WDI_ControlBlockType* pWDICtx,
8637 WDI_EventInfoType* pEventData
8638)
8639{
8640 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8641 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008642 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008643 wpt_uint16 usDataOffset = 0;
8644 wpt_uint16 usSendSize = 0;
8645 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008646 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008647 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8649
8650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008652 -------------------------------------------------------------------------*/
8653 if (( NULL == pEventData ) ||
8654 ( NULL == pEventData->pEventData) ||
8655 ( NULL == pEventData->pCBfnc))
8656 {
8657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008661 }
8662
8663 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8664 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008665 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8666 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008667 * forwarded to HAL and result in hang*/
8668#if 0
8669 wpalMutexAcquire(&pWDICtx->wptMutex);
8670 /*-----------------------------------------------------------------------
8671 Check to see if SCAN is already in progress
8672 Finish scan gets invoked any scan states. ie. abort scan
8673 It should be allowed in any states.
8674 -----------------------------------------------------------------------*/
8675 if ( !pWDICtx->bScanInProgress )
8676 {
8677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8678 "Finish start not allowed in this state %d",
8679 pWDICtx->bScanInProgress );
8680
8681 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008682 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008683 }
8684
8685 /*-----------------------------------------------------------------------
8686 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008687 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008689 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8690 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 wpalMutexRelease(&pWDICtx->wptMutex);
8692#endif
8693
8694 if ( pWDICtx->bInBmps )
8695 {
8696 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008697 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8698 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8699 {
8700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008701 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008702 WDI_ASSERT(0);
8703 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 }
8705
8706 /*-----------------------------------------------------------------------
8707 Get message buffer
8708 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008709 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008710 sizeof(halFinishScanReqMsg.finishScanParams),
8711 &pSendBuffer, &usDataOffset, &usSendSize))||
8712 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8713 {
8714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008715 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008716 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8717 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008718 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008719 }
8720
Jeff Johnsone7245742012-09-05 17:12:55 -07008721 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008722 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8723
Jeff Johnsone7245742012-09-05 17:12:55 -07008724 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008725 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8726
Jeff Johnsone7245742012-09-05 17:12:55 -07008727 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008728 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8729
8730 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8731 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8732
Jeff Johnsone7245742012-09-05 17:12:55 -07008733 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008734 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008735 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008736 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008737 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008738 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8739
Jeff Johnsone7245742012-09-05 17:12:55 -07008740 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008741 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8742
8743 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8744 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008745 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8747 }
8748
8749 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8750 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8751
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 wpalMemoryCopy( pSendBuffer+usDataOffset,
8753 &halFinishScanReqMsg.finishScanParams,
8754 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008755
8756 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008757 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008758
8759 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008760 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008761 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008762 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008763 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8764}/*WDI_ProcessFinishScanReq*/
8765
8766
8767/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008768 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008769==========================================================================*/
8770/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008771 @brief Process BSS Join for a given Session
8772
8773 @param pWDICtx: pointer to the WLAN DAL context
8774 pEventData: pointer to the event information structure
8775
Jeff Johnson295189b2012-06-20 16:38:30 -07008776 @see
8777 @return Result of the function call
8778*/
8779WDI_Status
8780WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008781(
Jeff Johnson295189b2012-06-20 16:38:30 -07008782 WDI_ControlBlockType* pWDICtx,
8783 WDI_JoinReqParamsType* pwdiJoinParams,
8784 WDI_JoinRspCb wdiJoinRspCb,
8785 void* pUserData
8786)
8787{
8788 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008789 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008790 wpt_uint16 usDataOffset = 0;
8791 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008792 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008793
Jeff Johnsone7245742012-09-05 17:12:55 -07008794 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008795 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8796
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008797 wpalMutexAcquire(&pWDICtx->wptMutex);
8798
Jeff Johnson295189b2012-06-20 16:38:30 -07008799 /*------------------------------------------------------------------------
8800 Check to see if we have any session with this BSSID already stored, we
8801 should not
8802 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008803 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8804 pwdiJoinParams->wdiReqInfo.macBSSID,
8805 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008806
8807 if ( NULL != pBSSSes )
8808 {
8809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008810 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8811 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008812
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008813 /*reset the bAssociationInProgress otherwise the next
8814 *join request will be queued*/
8815 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8816 wpalMutexRelease(&pWDICtx->wptMutex);
8817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008818 }
8819
Jeff Johnson295189b2012-06-20 16:38:30 -07008820 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008821 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008822 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008823 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008824 if ( NULL == pBSSSes )
8825 {
8826
8827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8828 "DAL has no free sessions - cannot run another join");
8829
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008830 /*reset the bAssociationInProgress otherwise the next
8831 *join request will be queued*/
8832 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008834 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008835 }
8836
8837 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008838 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8839 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008840 WDI_MAC_ADDR_LEN);
8841
8842 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008843 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008844 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008845
Jeff Johnson295189b2012-06-20 16:38:30 -07008846 wpalMutexRelease(&pWDICtx->wptMutex);
8847
8848 /*-----------------------------------------------------------------------
8849 Get message buffer
8850 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008851 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008852 sizeof(halJoinReqMsg.joinReqParams),
8853 &pSendBuffer, &usDataOffset, &usSendSize))||
8854 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8855 {
8856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008857 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008858 pUserData, pwdiJoinParams, wdiJoinRspCb);
8859 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008860 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008861 }
8862
8863 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008864 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008865
8866 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008867 pwdiJoinParams->wdiReqInfo.macSTASelf,
8868 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008869
Jeff Johnsone7245742012-09-05 17:12:55 -07008870 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008871 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8872
8873 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8874
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008875#ifdef WLAN_FEATURE_VOWIFI
8876 halJoinReqMsg.joinReqParams.maxTxPower =
8877 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8878#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008880 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8881#endif
8882
Jeff Johnsone7245742012-09-05 17:12:55 -07008883 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008884 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8885 wdiSecondaryChannelOffset);
8886
Jeff Johnsone7245742012-09-05 17:12:55 -07008887 wpalMemoryCopy( pSendBuffer+usDataOffset,
8888 &halJoinReqMsg.joinReqParams,
8889 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008890
8891 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008892 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008893
8894 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008895 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008896 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008897 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8898 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008899
8900}/*WDI_ProcessBSSSessionJoinReq*/
8901
8902/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008903 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008904 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008905
8906 @param pWDICtx: pointer to the WLAN DAL context
8907 pEventData: pointer to the event information structure
8908
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 @see
8910 @return Result of the function call
8911*/
8912WDI_Status
8913WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008914(
Jeff Johnson295189b2012-06-20 16:38:30 -07008915 WDI_ControlBlockType* pWDICtx,
8916 WDI_EventInfoType* pEventData
8917)
8918{
8919 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
8920 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
8921 WDI_JoinRspCb wdiJoinRspCb = NULL;
8922 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8923
8924 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008926 -------------------------------------------------------------------------*/
8927 if (( NULL == pEventData ) ||
8928 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
8929 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
8930 {
8931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008935 }
Jeff Johnsone7245742012-09-05 17:12:55 -07008936
Jeff Johnson295189b2012-06-20 16:38:30 -07008937 /*-------------------------------------------------------------------------
8938 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07008939 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07008940 -------------------------------------------------------------------------*/
8941 wpalMutexAcquire(&pWDICtx->wptMutex);
8942
8943 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
8944 {
8945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8946 "Association is currently in progress, queueing new join req");
8947
8948 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008949 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07008950 pwdiJoinParams->wdiReqInfo.macBSSID);
8951
8952 wpalMutexRelease(&pWDICtx->wptMutex);
8953
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008955 }
8956
8957 /*Starting a new association */
8958 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
8959 wpalMutexRelease(&pWDICtx->wptMutex);
8960
8961 /*Process the Join Request*/
8962 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
8963 wdiJoinRspCb,pEventData->pUserData);
8964
8965}/*WDI_ProcessJoinReq*/
8966
8967
8968/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008969 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008970 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008971
8972 @param pWDICtx: pointer to the WLAN DAL context
8973 pEventData: pointer to the event information structure
8974
Jeff Johnson295189b2012-06-20 16:38:30 -07008975 @see
8976 @return Result of the function call
8977*/
8978WDI_Status
8979WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008980(
Jeff Johnson295189b2012-06-20 16:38:30 -07008981 WDI_ControlBlockType* pWDICtx,
8982 WDI_EventInfoType* pEventData
8983)
8984{
8985 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
8986 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008987 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008988 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008989 wpt_uint16 uMsgSize = 0;
8990 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 wpt_uint16 usDataOffset = 0;
8992 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008993 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008994
Jeff Johnsone7245742012-09-05 17:12:55 -07008995 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8997
8998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009000 -------------------------------------------------------------------------*/
9001 if (( NULL == pEventData ) ||
9002 ( NULL == pEventData->pEventData ) ||
9003 ( NULL == pEventData->pCBfnc ))
9004 {
9005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009006 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009009 }
9010
Abhishek Singh6927fa02014-06-27 17:19:55 +05309011 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009012 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
9013 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
9014 /*-------------------------------------------------------------------------
9015 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009016 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009017 -------------------------------------------------------------------------*/
9018 wpalMutexAcquire(&pWDICtx->wptMutex);
9019
9020 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009023 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9024 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
9025 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009026
Jeff Johnsone7245742012-09-05 17:12:55 -07009027 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009028 {
9029#ifdef WLAN_FEATURE_VOWIFI_11R
9030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009031 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009032 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009033 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009034 if ( NULL == pBSSSes )
9035 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009036
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9038 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009039
Jeff Johnson295189b2012-06-20 16:38:30 -07009040 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009043
Jeff Johnson295189b2012-06-20 16:38:30 -07009044 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009045 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9046 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009047 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009048
Jeff Johnson295189b2012-06-20 16:38:30 -07009049 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009050 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009051 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9052#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009053 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009054 * Request in case of IBSS*/
9055 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9056 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9057 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9058 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9059 {
9060 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009061 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009063 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009064 if ( NULL == pBSSSes )
9065 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009066
Jeff Johnson295189b2012-06-20 16:38:30 -07009067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9068 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009069
Jeff Johnson295189b2012-06-20 16:38:30 -07009070 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009071 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009072 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009073
Jeff Johnson295189b2012-06-20 16:38:30 -07009074 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009075 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9076 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009077 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009078
Jeff Johnson295189b2012-06-20 16:38:30 -07009079 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009081 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9082 }
9083 else
9084 {
9085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9087 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9088 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9089
Jeff Johnson295189b2012-06-20 16:38:30 -07009090 /* for IBSS testing */
9091 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009092 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009093 }
9094#endif
9095 }
9096
9097 /*------------------------------------------------------------------------
9098 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009099 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009100 ------------------------------------------------------------------------*/
9101 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9102 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9104 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9105 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9106 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009107
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009109
9110 wpalMutexRelease(&pWDICtx->wptMutex);
9111
Jeff Johnsone7245742012-09-05 17:12:55 -07009112 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009113 }
9114
9115 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009116 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9117 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009118 sizeof(pWDICtx->wdiCachedConfigBssReq));
9119
9120 wpalMutexRelease(&pWDICtx->wptMutex);
9121
Jeff Johnsone7245742012-09-05 17:12:55 -07009122 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9123#ifdef WLAN_FEATURE_11AC
9124 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009125 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009126 else
9127#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009128 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009129
9130 /*-----------------------------------------------------------------------
9131 Get message buffer
9132 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009133 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9135 ( usSendSize < (usDataOffset + uMsgSize )))
9136 {
9137 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009138 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009139 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009142 }
9143
9144 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009145#ifdef WLAN_FEATURE_11AC
9146 if (WDI_getFwWlanFeatCaps(DOT11AC))
9147 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9148 &pwdiConfigBSSParams->wdiReqInfo);
9149 else
9150#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009151 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009152 &pwdiConfigBSSParams->wdiReqInfo);
9153
9154 /* Need to fill in the STA Index to invalid, since at this point we have not
9155 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009156 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009157
9158 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009159 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9160
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009161#ifdef WLAN_FEATURE_11AC
9162 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9163 wpalMemoryCopy( pSendBuffer+usDataOffset,
9164 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9165 uMsgSize);
9166 }else
9167#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009168 {
9169 if ( uMsgSize <= sizeof(tConfigBssParams) )
9170 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009171 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009172 &halConfigBssReqMsg.uBssParams.configBssParams,
9173 uMsgSize);
9174 }
9175 else
9176 {
9177 return WDI_STATUS_E_FAILURE;
9178 }
9179 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009180
9181 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009182 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309183 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009184 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009185 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009186 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009187 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9188 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009189 WDI_CONFIG_BSS_RESP);
9190
9191}/*WDI_ProcessConfigBSSReq*/
9192
9193
9194/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009196 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009197
9198 @param pWDICtx: pointer to the WLAN DAL context
9199 pEventData: pointer to the event information structure
9200
Jeff Johnson295189b2012-06-20 16:38:30 -07009201 @see
9202 @return Result of the function call
9203*/
9204WDI_Status
9205WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009206(
Jeff Johnson295189b2012-06-20 16:38:30 -07009207 WDI_ControlBlockType* pWDICtx,
9208 WDI_EventInfoType* pEventData
9209)
9210{
9211 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9212 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009214 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009215 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009216 wpt_uint16 usDataOffset = 0;
9217 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009218 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009219
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9222
9223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009225 -------------------------------------------------------------------------*/
9226 if (( NULL == pEventData ) ||
9227 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9228 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9229 {
9230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009234 }
9235
9236 /*-------------------------------------------------------------------------
9237 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 -------------------------------------------------------------------------*/
9240 wpalMutexAcquire(&pWDICtx->wptMutex);
9241
9242 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009244 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009245 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9246 pwdiDelBSSParams->ucBssIdx,
9247 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009248
Jeff Johnsone7245742012-09-05 17:12:55 -07009249 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009250 {
9251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009252 "%s: BSS does not yet exist. ucBssIdx %d",
9253 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009254
9255 wpalMutexRelease(&pWDICtx->wptMutex);
9256
9257 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009258 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009259
9260 /*------------------------------------------------------------------------
9261 Check if this BSS is being currently processed or queued,
9262 if queued - queue the new request as well
9263 ------------------------------------------------------------------------*/
9264 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009265 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009266 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9267 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9268 __func__, pwdiDelBSSParams->ucBssIdx);
9269
9270 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9271
9272 wpalMutexRelease(&pWDICtx->wptMutex);
9273
9274 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009275 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009276
Jeff Johnson295189b2012-06-20 16:38:30 -07009277 /*-----------------------------------------------------------------------
9278 If we receive a Del BSS request for an association that is already in
9279 progress, it indicates that the assoc has failed => we no longer have
9280 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009281 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009282 -----------------------------------------------------------------------*/
9283 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9284 {
9285 /*We can switch to false here because even if a subsequent Join comes in
9286 it will only be processed when DAL transitions out of BUSY state which
9287 happens when the Del BSS request comes */
9288 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9289
9290 /*Former association is complete - prepare next pending assoc for
9291 processing */
9292 WDI_DequeueAssocRequest(pWDICtx);
9293 }
9294
9295 wpalMutexRelease(&pWDICtx->wptMutex);
9296 /*-----------------------------------------------------------------------
9297 Get message buffer
9298 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009299 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009300 sizeof(halBssReqMsg.deleteBssParams),
9301 &pSendBuffer, &usDataOffset, &usSendSize))||
9302 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9303 {
9304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009305 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009306 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9307 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009309 }
9310
9311 /*Fill in the message request structure*/
9312
9313 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009314 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009315
Jeff Johnsone7245742012-09-05 17:12:55 -07009316 wpalMemoryCopy( pSendBuffer+usDataOffset,
9317 &halBssReqMsg.deleteBssParams,
9318 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009319
9320 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009321 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009322
Jeff Johnsone7245742012-09-05 17:12:55 -07009323
Jeff Johnson295189b2012-06-20 16:38:30 -07009324 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009327 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009328 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9329
Jeff Johnsone7245742012-09-05 17:12:55 -07009330
Jeff Johnson295189b2012-06-20 16:38:30 -07009331}/*WDI_ProcessDelBSSReq*/
9332
9333/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009334 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009335 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009336
9337 @param pWDICtx: pointer to the WLAN DAL context
9338 pEventData: pointer to the event information structure
9339
Jeff Johnson295189b2012-06-20 16:38:30 -07009340 @see
9341 @return Result of the function call
9342*/
9343WDI_Status
9344WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009345(
Jeff Johnson295189b2012-06-20 16:38:30 -07009346 WDI_ControlBlockType* pWDICtx,
9347 WDI_EventInfoType* pEventData
9348)
9349{
9350 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9351 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009352 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009353 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009354 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009355 wpt_uint16 usDataOffset = 0;
9356 wpt_uint16 usSendSize = 0;
9357 wpt_uint16 uMsgSize = 0;
9358 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009359 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009360
Jeff Johnsone7245742012-09-05 17:12:55 -07009361 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9363
9364 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009365 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009366 -------------------------------------------------------------------------*/
9367 if (( NULL == pEventData ) ||
9368 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9369 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9370 {
9371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009372 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009375 }
9376
9377 /*-------------------------------------------------------------------------
9378 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009379 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009380 -------------------------------------------------------------------------*/
9381 wpalMutexAcquire(&pWDICtx->wptMutex);
9382
9383 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009384 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009385 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9387 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9388 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009389
9390 if ( NULL == pBSSSes )
9391 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9393 "%s: Association sequence for this BSS does not yet exist - "
9394 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9395 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009396
9397 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009398 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009399 }
9400
9401 /*------------------------------------------------------------------------
9402 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009404 ------------------------------------------------------------------------*/
9405 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9406 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009407 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9408 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9409 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009410
Jeff Johnsone7245742012-09-05 17:12:55 -07009411 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009412
9413 wpalMutexRelease(&pWDICtx->wptMutex);
9414
Jeff Johnsone7245742012-09-05 17:12:55 -07009415 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009416 }
9417
9418 /*-----------------------------------------------------------------------
9419 If Post Assoc was not yet received - the current association must
9420 be in progress
9421 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009422 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009423 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9424 {
9425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9426 "Association sequence for this BSS association no longer in "
9427 "progress - not allowed");
9428
9429 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009430 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009431 }
9432
9433 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009434 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009435 -----------------------------------------------------------------------*/
9436 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9437 {
9438 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9439 "Post Assoc not allowed before JOIN - failing request");
9440
9441 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009443 }
9444
9445 wpalMutexRelease(&pWDICtx->wptMutex);
9446
9447 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9448 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9449 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009450 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009451 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9454 ( usSendSize < (usDataOffset + uMsgSize )))
9455 {
9456 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009457 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009458 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9459 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009460 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009461 }
9462
9463 /*Copy the STA parameters */
9464 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9465 &pwdiPostAssocParams->wdiSTAParams );
9466
9467 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009468 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009469 WDI_STATableFindStaidByAddr(pWDICtx,
9470 pwdiPostAssocParams->wdiSTAParams.macSTA,
9471 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9472 {
9473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009474 MAC_ADDRESS_STR
9475 ": This station does not exist in the WDI Station Table",
9476 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009477 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009478 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009480 }
9481
9482 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009483 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009484 pBSSSes->ucBSSIdx;
9485
9486 /*Copy the BSS parameters */
9487 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9488 &pwdiPostAssocParams->wdiBSSParams);
9489
9490 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009491 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009492 WDI_STATableFindStaidByAddr(pWDICtx,
9493 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009494 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009495 {
9496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009497 MAC_ADDRESS_STR
9498 ": This station does not exist in the WDI Station Table",
9499 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009500 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009501 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 }
9504
9505 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009506 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009507 pBSSSes->ucBSSIdx;
9508
Jeff Johnsone7245742012-09-05 17:12:55 -07009509
9510 wpalMemoryCopy( pSendBuffer+usDataOffset,
9511 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9512 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009513
9514 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9515
Jeff Johnsone7245742012-09-05 17:12:55 -07009516 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9517 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9518 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009519
Jeff Johnsone7245742012-09-05 17:12:55 -07009520
Jeff Johnson295189b2012-06-20 16:38:30 -07009521 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009522 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009523
Jeff Johnsone7245742012-09-05 17:12:55 -07009524
9525 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009526 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009527 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009528
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309529 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009531 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009532 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009533 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009534 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9535
Jeff Johnsone7245742012-09-05 17:12:55 -07009536
Jeff Johnson295189b2012-06-20 16:38:30 -07009537}/*WDI_ProcessPostAssocReq*/
9538
9539/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009540 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009541 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009542
9543 @param pWDICtx: pointer to the WLAN DAL context
9544 pEventData: pointer to the event information structure
9545
Jeff Johnson295189b2012-06-20 16:38:30 -07009546 @see
9547 @return Result of the function call
9548*/
9549WDI_Status
9550WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009551(
Jeff Johnson295189b2012-06-20 16:38:30 -07009552 WDI_ControlBlockType* pWDICtx,
9553 WDI_EventInfoType* pEventData
9554)
9555{
9556 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9557 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009558 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009559 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009560 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009561 wpt_uint16 usDataOffset = 0;
9562 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009563 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9565
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9568
9569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 -------------------------------------------------------------------------*/
9572 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9573 ( NULL == pEventData->pCBfnc ))
9574 {
9575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 }
9580
9581 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9582 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9583 /*-------------------------------------------------------------------------
9584 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009585 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009586 -------------------------------------------------------------------------*/
9587 wpalMutexAcquire(&pWDICtx->wptMutex);
9588
9589 /*------------------------------------------------------------------------
9590 Find the BSS for which the request is made and identify WDI session
9591 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009592 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9593 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 &macBSSID))
9595 {
9596 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009597 "This station does not exist in the WDI Station Table %d",
9598 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009599 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009600 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009601 }
9602
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9604 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009605 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9607 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9608 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009609
9610 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009611 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009612 }
9613
9614 /*------------------------------------------------------------------------
9615 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009616 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 ------------------------------------------------------------------------*/
9618 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9619 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9621 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9622 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009623
Jeff Johnsone7245742012-09-05 17:12:55 -07009624 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009625 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009626 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009627 }
9628
9629 wpalMutexRelease(&pWDICtx->wptMutex);
9630 /*-----------------------------------------------------------------------
9631 Get message buffer
9632 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009633 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009634 sizeof(halDelStaReqMsg.delStaParams),
9635 &pSendBuffer, &usDataOffset, &usSendSize))||
9636 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9637 {
9638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009639 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009640 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9641 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009642 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009643 }
9644
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9646 wpalMemoryCopy( pSendBuffer+usDataOffset,
9647 &halDelStaReqMsg.delStaParams,
9648 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009649
9650 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009651 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009652
9653 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009654 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009655 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009656 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009657 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9658
9659}/*WDI_ProcessDelSTAReq*/
9660
9661
9662/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009663 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009664==========================================================================*/
9665/**
9666 @brief Process Set BSS Key Request function (called when Main FSM
9667 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009668
9669 @param pWDICtx: pointer to the WLAN DAL context
9670 pEventData: pointer to the event information structure
9671
Jeff Johnson295189b2012-06-20 16:38:30 -07009672 @see
9673 @return Result of the function call
9674*/
9675WDI_Status
9676WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009677(
Jeff Johnson295189b2012-06-20 16:38:30 -07009678 WDI_ControlBlockType* pWDICtx,
9679 WDI_EventInfoType* pEventData
9680)
9681{
9682 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9683 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009684 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009685 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009686 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009687 wpt_uint16 usDataOffset = 0;
9688 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009689 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009690 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9691 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309692 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009693
9694 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9695
9696 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009697 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009698 -------------------------------------------------------------------------*/
9699 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9700 ( NULL == pEventData->pCBfnc ))
9701 {
9702 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009703 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009705 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009706 }
9707
9708 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9709 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9710 /*-------------------------------------------------------------------------
9711 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009712 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009713 -------------------------------------------------------------------------*/
9714 wpalMutexAcquire(&pWDICtx->wptMutex);
9715
9716 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009717 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009718 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009719 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9720 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9721 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009722
Jeff Johnsone7245742012-09-05 17:12:55 -07009723 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009724 {
9725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009726 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9727 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009728
9729 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009730 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009731 }
9732
9733 /*------------------------------------------------------------------------
9734 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009735 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009736 ------------------------------------------------------------------------*/
9737 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9738 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9740 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9741 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009742
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009745 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009746 }
9747
9748
9749 wpalMutexRelease(&pWDICtx->wptMutex);
9750 /*-----------------------------------------------------------------------
9751 Get message buffer
9752 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009753 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009754 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9755 &pSendBuffer, &usDataOffset, &usSendSize))||
9756 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9757 {
9758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009759 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009760 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009763 }
9764
9765 /*-----------------------------------------------------------------------
9766 Copy the Key parameters into the HAL message
9767 -----------------------------------------------------------------------*/
9768
Jeff Johnsone7245742012-09-05 17:12:55 -07009769 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009770
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9773
Jeff Johnsone7245742012-09-05 17:12:55 -07009774 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009775 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9776
9777 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9778 keyIndex++)
9779 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009780 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009781 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9782 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9783 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9784 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9785 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309786
9787 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9788 {
9789 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9790 {
9791 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9792 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9793 }
9794
9795 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9796 {
9797 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9798 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9799 }
9800
9801 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9802 "%s: Negated Keys", __func__);
9803 }
9804 else
9805 {
9806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9807 "%s: No change in Keys", __func__);
9808 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009809 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009810 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309811 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9812 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9813 WDI_MAX_KEY_LENGTH);
9814 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009815 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009816 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309819 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009820
9821 wpalMemoryCopy( pSendBuffer+usDataOffset,
9822 &halSetBssKeyReqMsg.setBssKeyParams,
9823 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009824
9825 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009827
9828 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009829 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009830 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009831 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9832 wdiSetBSSKeyRspCb, pEventData->pUserData,
9833 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009834
9835}/*WDI_ProcessSetBssKeyReq*/
9836
9837/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009838 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009839 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009840
9841 @param pWDICtx: pointer to the WLAN DAL context
9842 pEventData: pointer to the event information structure
9843
Jeff Johnson295189b2012-06-20 16:38:30 -07009844 @see
9845 @return Result of the function call
9846*/
9847WDI_Status
9848WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009849(
Jeff Johnson295189b2012-06-20 16:38:30 -07009850 WDI_ControlBlockType* pWDICtx,
9851 WDI_EventInfoType* pEventData
9852)
9853{
9854 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9855 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009856 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009857 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009858 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 wpt_uint16 usDataOffset = 0;
9860 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9863 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9864
9865 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009866 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009867 -------------------------------------------------------------------------*/
9868 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9869 ( NULL == pEventData->pCBfnc ))
9870 {
9871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009872 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009873 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009874 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009875 }
9876
9877 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9878 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9879 /*-------------------------------------------------------------------------
9880 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009881 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009882 -------------------------------------------------------------------------*/
9883 wpalMutexAcquire(&pWDICtx->wptMutex);
9884
9885 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009886 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009887 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009888 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9889 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9890 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009891
Jeff Johnsone7245742012-09-05 17:12:55 -07009892 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009893 {
9894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009895 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9896 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009897
9898 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009899 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009900 }
9901
9902 /*------------------------------------------------------------------------
9903 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 ------------------------------------------------------------------------*/
9906 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9907 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9909 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9910 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009911
Jeff Johnsone7245742012-09-05 17:12:55 -07009912 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009913 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009914 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009915 }
9916
9917
9918 wpalMutexRelease(&pWDICtx->wptMutex);
9919
9920 /*-----------------------------------------------------------------------
9921 Get message buffer
9922 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009923 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009924 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
9925 &pSendBuffer, &usDataOffset, &usSendSize))||
9926 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
9927 {
9928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009929 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009930 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
9931 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009932 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009933 }
9934 /*-----------------------------------------------------------------------
9935 Copy the Key parameters into the HAL message
9936 -----------------------------------------------------------------------*/
9937 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
9938
Jeff Johnsone7245742012-09-05 17:12:55 -07009939 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009940 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
9941
9942 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
9943
Jeff Johnsone7245742012-09-05 17:12:55 -07009944 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009945 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
9946
Jeff Johnsone7245742012-09-05 17:12:55 -07009947 wpalMemoryCopy( pSendBuffer+usDataOffset,
9948 &halRemoveBssKeyReqMsg.removeBssKeyParams,
9949 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009950
9951 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009952 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009953
9954 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009955 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009956 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009957 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009958 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -07009959 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009960}/*WDI_ProcessRemoveBssKeyReq*/
9961
9962/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009963 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009964 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009965
9966 @param pWDICtx: pointer to the WLAN DAL context
9967 pEventData: pointer to the event information structure
9968
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 @see
9970 @return Result of the function call
9971*/
9972WDI_Status
9973WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009974(
Jeff Johnson295189b2012-06-20 16:38:30 -07009975 WDI_ControlBlockType* pWDICtx,
9976 WDI_EventInfoType* pEventData
9977)
9978{
9979 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
9980 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
9981 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009983 wpt_uint16 usDataOffset = 0;
9984 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009985 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009986 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -07009987 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009988 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
9989 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309990 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009991
9992 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9993
9994 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009996 -------------------------------------------------------------------------*/
9997 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9998 ( NULL == pEventData->pCBfnc ))
9999 {
10000 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010001 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010003 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010004 }
10005
10006 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10007 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10008 /*-------------------------------------------------------------------------
10009 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 -------------------------------------------------------------------------*/
10012 wpalMutexAcquire(&pWDICtx->wptMutex);
10013
10014 /*------------------------------------------------------------------------
10015 Find the BSS for which the request is made and identify WDI session
10016 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010017 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10018 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010019 &macBSSID))
10020 {
10021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010022 "This station does not exist in the WDI Station Table %d",
10023 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010024 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010025 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010026 }
10027
Jeff Johnsone7245742012-09-05 17:12:55 -070010028 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10029 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010030 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10032 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10033 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010034
10035 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010036 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010037 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010038
Jeff Johnson295189b2012-06-20 16:38:30 -070010039 /*------------------------------------------------------------------------
10040 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010041 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010042 ------------------------------------------------------------------------*/
10043 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10044 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010045 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10046 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10047 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010048
Jeff Johnsone7245742012-09-05 17:12:55 -070010049 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010050 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010051 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010052 }
10053
10054
10055 wpalMutexRelease(&pWDICtx->wptMutex);
10056 /*-----------------------------------------------------------------------
10057 Get message buffer
10058 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010059 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010060 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10061 &pSendBuffer, &usDataOffset, &usSendSize))||
10062 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10063 {
10064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010065 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010066 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10067 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010068 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010069 }
10070 /*-----------------------------------------------------------------------
10071 Copy the STA Key parameters into the HAL message
10072 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010073 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010074 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10075
Jeff Johnsone7245742012-09-05 17:12:55 -070010076 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010077 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10078
10079 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10080
10081 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10082
10083 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10084
Jeff Johnson295189b2012-06-20 16:38:30 -070010085 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10086 keyIndex++)
10087 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010088 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10090 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10091 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10092 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10093 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010094
10095 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10096 {
10097 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10098 {
10099 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10100 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10101 }
10102
10103 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10104 {
10105 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10106 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10107 }
10108
10109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10110 "%s: Negated Keys", __func__);
10111 }
10112 else
10113 {
10114 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10115 "%s: No change in Keys", __func__);
10116 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010117 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010118 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010119 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10120 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10121 WDI_MAX_KEY_LENGTH);
10122 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010125 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010127 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010128
Jeff Johnsone7245742012-09-05 17:12:55 -070010129 wpalMemoryCopy( pSendBuffer+usDataOffset,
10130 &halSetStaKeyReqMsg.setStaKeyParams,
10131 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010132
10133 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010134 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010135 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010136 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010137 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010138 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010139 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10140 wdiSetSTAKeyRspCb, pEventData->pUserData,
10141 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010142
10143}/*WDI_ProcessSetSTAKeyReq*/
10144
10145/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010147 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010148
10149 @param pWDICtx: pointer to the WLAN DAL context
10150 pEventData: pointer to the event information structure
10151
Jeff Johnson295189b2012-06-20 16:38:30 -070010152 @see
10153 @return Result of the function call
10154*/
10155WDI_Status
10156WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010157(
Jeff Johnson295189b2012-06-20 16:38:30 -070010158 WDI_ControlBlockType* pWDICtx,
10159 WDI_EventInfoType* pEventData
10160)
10161{
10162 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10163 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10164 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010165 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010166 wpt_uint16 usDataOffset = 0;
10167 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010168 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010169 wpt_macAddr macBSSID;
10170 wpt_uint8 ucCurrentBSSSesIdx;
10171 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10172 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10173
10174 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 -------------------------------------------------------------------------*/
10177 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10178 ( NULL == pEventData->pCBfnc ))
10179 {
10180 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010181 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010182 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010183 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010184 }
10185
10186 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10187 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10188 /*-------------------------------------------------------------------------
10189 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010190 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010191 -------------------------------------------------------------------------*/
10192 wpalMutexAcquire(&pWDICtx->wptMutex);
10193
10194 /*------------------------------------------------------------------------
10195 Find the BSS for which the request is made and identify WDI session
10196 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010197 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10198 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010199 &macBSSID))
10200 {
10201 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010202 "This station does not exist in the WDI Station Table %d",
10203 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010204 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010205 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010206 }
10207
Jeff Johnsone7245742012-09-05 17:12:55 -070010208 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10209 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010210 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10212 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10213 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010214
10215 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010217 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010218
Jeff Johnson295189b2012-06-20 16:38:30 -070010219 /*------------------------------------------------------------------------
10220 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010221 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010222 ------------------------------------------------------------------------*/
10223 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10224 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10226 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10227 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010228
Jeff Johnsone7245742012-09-05 17:12:55 -070010229 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010230 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010231 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010232 }
10233
10234
10235
10236 wpalMutexRelease(&pWDICtx->wptMutex);
10237 /*-----------------------------------------------------------------------
10238 Get message buffer
10239 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010240 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010241 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10242 &pSendBuffer, &usDataOffset, &usSendSize))||
10243 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10244 {
10245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010246 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010247 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010250 }
10251
10252 /*-----------------------------------------------------------------------
10253 Copy the Key parameters into the HAL message
10254 -----------------------------------------------------------------------*/
10255
Jeff Johnsone7245742012-09-05 17:12:55 -070010256 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010257 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10258
Jeff Johnsone7245742012-09-05 17:12:55 -070010259 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010260 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10261
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10264
Jeff Johnsone7245742012-09-05 17:12:55 -070010265 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010266 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10267
Jeff Johnsone7245742012-09-05 17:12:55 -070010268 wpalMemoryCopy( pSendBuffer+usDataOffset,
10269 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10270 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010271
10272 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010273 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010274
10275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010276 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010279 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010280 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010281
10282}/*WDI_ProcessRemoveSTAKeyReq*/
10283
10284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010285 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010287
10288 @param pWDICtx: pointer to the WLAN DAL context
10289 pEventData: pointer to the event information structure
10290
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 @see
10292 @return Result of the function call
10293*/
10294WDI_Status
10295WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010296(
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 WDI_ControlBlockType* pWDICtx,
10298 WDI_EventInfoType* pEventData
10299)
10300{
10301 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10302 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10303 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010304 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010305 wpt_uint16 usDataOffset = 0;
10306 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010307 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010308 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010309 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010310 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10311 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010312 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010313
10314 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10315
10316 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010317 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010318 -------------------------------------------------------------------------*/
10319 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10320 ( NULL == pEventData->pCBfnc ))
10321 {
10322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010323 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010324 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010325 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010326 }
10327
10328 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10329 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10330 /*-------------------------------------------------------------------------
10331 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010332 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010333 -------------------------------------------------------------------------*/
10334 wpalMutexAcquire(&pWDICtx->wptMutex);
10335
10336 /*------------------------------------------------------------------------
10337 Find the BSS for which the request is made and identify WDI session
10338 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010339 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10340 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010341 &macBSSID))
10342 {
10343 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010344 "This station does not exist in the WDI Station Table %d",
10345 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010346 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010348 }
10349
Jeff Johnsone7245742012-09-05 17:12:55 -070010350 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10351 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010352 {
10353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010354 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010356
10357 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010358 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010359 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010360
Jeff Johnson295189b2012-06-20 16:38:30 -070010361 /*------------------------------------------------------------------------
10362 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010363 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 ------------------------------------------------------------------------*/
10365 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10366 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10368 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10369 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010370
Jeff Johnsone7245742012-09-05 17:12:55 -070010371 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010372 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010373 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010374 }
10375
10376
10377 wpalMutexRelease(&pWDICtx->wptMutex);
10378 /*-----------------------------------------------------------------------
10379 Get message buffer
10380 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010381 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010382 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10383 &pSendBuffer, &usDataOffset, &usSendSize))||
10384 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10385 {
10386 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010387 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010388 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10389 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010390 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010391 }
10392 /*-----------------------------------------------------------------------
10393 Copy the STA Key parameters into the HAL message
10394 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010395 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010396 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10397
Jeff Johnsone7245742012-09-05 17:12:55 -070010398 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010399 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10400
10401 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10402
10403 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10404
10405 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10406
Jeff Johnson295189b2012-06-20 16:38:30 -070010407 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10408 keyIndex++)
10409 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010410 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010411 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10412 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10413 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10414 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10415 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010416
10417 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10418 {
10419 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10420 {
10421 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10422 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10423 }
10424
10425 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10426 {
10427 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10428 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10429 }
10430
10431 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10432 "%s: Negated Keys", __func__);
10433 }
10434 else
10435 {
10436 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10437 "%s: No change in Keys", __func__);
10438 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010439 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010440 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010441 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10442 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10443 WDI_MAX_KEY_LENGTH);
10444 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010447 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010449 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 wpalMemoryCopy( pSendBuffer+usDataOffset,
10451 &halSetStaKeyReqMsg.setStaKeyParams,
10452 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010453
10454 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010455 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010456
10457 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10461 wdiSetSTAKeyRspCb, pEventData->pUserData,
10462 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010463
10464}/*WDI_ProcessSetSTABcastKeyReq*/
10465
10466/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010467 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010468 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010469
10470 @param pWDICtx: pointer to the WLAN DAL context
10471 pEventData: pointer to the event information structure
10472
Jeff Johnson295189b2012-06-20 16:38:30 -070010473 @see
10474 @return Result of the function call
10475*/
10476WDI_Status
10477WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010478(
Jeff Johnson295189b2012-06-20 16:38:30 -070010479 WDI_ControlBlockType* pWDICtx,
10480 WDI_EventInfoType* pEventData
10481)
10482{
10483 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10484 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10485 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010486 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010487 wpt_uint16 usDataOffset = 0;
10488 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010489 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010490 wpt_macAddr macBSSID;
10491 wpt_uint8 ucCurrentBSSSesIdx;
10492 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10494
10495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010497 -------------------------------------------------------------------------*/
10498 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10499 ( NULL == pEventData->pCBfnc ))
10500 {
10501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010505 }
10506
10507 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10508 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10509 /*-------------------------------------------------------------------------
10510 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010511 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010512 -------------------------------------------------------------------------*/
10513 wpalMutexAcquire(&pWDICtx->wptMutex);
10514
10515 /*------------------------------------------------------------------------
10516 Find the BSS for which the request is made and identify WDI session
10517 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010518 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10519 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010520 &macBSSID))
10521 {
10522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010523 "This station does not exist in the WDI Station Table %d",
10524 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010525 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 }
10528
Jeff Johnsone7245742012-09-05 17:12:55 -070010529 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10530 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010531 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10533 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10534 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010535
10536 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010538 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010539
Jeff Johnson295189b2012-06-20 16:38:30 -070010540 /*------------------------------------------------------------------------
10541 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010543 ------------------------------------------------------------------------*/
10544 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10545 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10547 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10548 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010549
Jeff Johnsone7245742012-09-05 17:12:55 -070010550 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010551 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010552 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010553 }
10554
10555
10556
10557 wpalMutexRelease(&pWDICtx->wptMutex);
10558 /*-----------------------------------------------------------------------
10559 Get message buffer
10560 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010561 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010562 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10563 &pSendBuffer, &usDataOffset, &usSendSize))||
10564 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10565 {
10566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010567 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010568 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010571 }
10572
10573 /*-----------------------------------------------------------------------
10574 Copy the Key parameters into the HAL message
10575 -----------------------------------------------------------------------*/
10576
Jeff Johnsone7245742012-09-05 17:12:55 -070010577 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010578 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10579
Jeff Johnsone7245742012-09-05 17:12:55 -070010580 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010581 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10582
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10585
Jeff Johnsone7245742012-09-05 17:12:55 -070010586 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010587 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10588
Jeff Johnsone7245742012-09-05 17:12:55 -070010589 wpalMemoryCopy( pSendBuffer+usDataOffset,
10590 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10591 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010592
10593 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010594 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010595
10596 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010597 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010598 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010599 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010600 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010601 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010602
10603}/*WDI_ProcessRemoveSTABcastKeyReq*/
10604
10605/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010606 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010607==========================================================================*/
10608/**
10609 @brief Process Add TSpec Request function (called when Main FSM
10610 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010611
10612 @param pWDICtx: pointer to the WLAN DAL context
10613 pEventData: pointer to the event information structure
10614
Jeff Johnson295189b2012-06-20 16:38:30 -070010615 @see
10616 @return Result of the function call
10617*/
10618WDI_Status
10619WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010620(
Jeff Johnson295189b2012-06-20 16:38:30 -070010621 WDI_ControlBlockType* pWDICtx,
10622 WDI_EventInfoType* pEventData
10623)
10624{
10625 WDI_AddTSReqParamsType* pwdiAddTSParams;
10626 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010627 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010628 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 wpt_uint16 usDataOffset = 0;
10631 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010632 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010633 wpt_macAddr macBSSID;
10634 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010635
Jeff Johnson295189b2012-06-20 16:38:30 -070010636 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10637
10638 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010639 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 -------------------------------------------------------------------------*/
10641 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10642 ( NULL == pEventData->pCBfnc ))
10643 {
10644 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010645 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010646 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010647 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010648 }
10649
10650 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10651 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10652 /*-------------------------------------------------------------------------
10653 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010654 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010655 -------------------------------------------------------------------------*/
10656 wpalMutexAcquire(&pWDICtx->wptMutex);
10657
10658 /*------------------------------------------------------------------------
10659 Find the BSS for which the request is made and identify WDI session
10660 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010661 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10662 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010663 &macBSSID))
10664 {
10665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010666 "This station does not exist in the WDI Station Table %d",
10667 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010669 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010670 }
10671
Jeff Johnsone7245742012-09-05 17:12:55 -070010672 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10673 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010675 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10676 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10677 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010678
10679 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010680 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010681 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010682
Jeff Johnson295189b2012-06-20 16:38:30 -070010683 /*------------------------------------------------------------------------
10684 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010685 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010686 ------------------------------------------------------------------------*/
10687 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10688 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010689 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10690 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10691 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010692
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010694 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010695 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010696 }
10697
10698 wpalMutexRelease(&pWDICtx->wptMutex);
10699 /*-----------------------------------------------------------------------
10700 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010701 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010703 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10704 sizeof(halAddTsParams),
10705 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010706 &usSendSize))||
10707 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10708 {
10709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010710 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010711 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10712 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010713 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010714 }
10715
10716 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10717 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10718
10719 //TSPEC IE
10720 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10721 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010722 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010724 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010725 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010728 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010729 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010730 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010731 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010732 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010736 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010737 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010738 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010739 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010740 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010741 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010742 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010743 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010744 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010745 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010746 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010747 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010749 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010750 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010751 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10752
10753 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010754 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010758 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010759 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010760 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010763 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010764 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010765 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010766 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010767 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10768
10769 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010770 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010771 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10774
Jeff Johnsone7245742012-09-05 17:12:55 -070010775 wpalMemoryCopy( pSendBuffer+usDataOffset,
10776 &halAddTsParams,
10777 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010778
10779 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010781
10782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010783 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010786 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010787 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010788}/*WDI_ProcessAddTSpecReq*/
10789
10790
10791/**
10792 @brief Process Del TSpec Request function (called when Main FSM
10793 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010794
10795 @param pWDICtx: pointer to the WLAN DAL context
10796 pEventData: pointer to the event information structure
10797
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 @see
10799 @return Result of the function call
10800*/
10801WDI_Status
10802WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010803(
Jeff Johnson295189b2012-06-20 16:38:30 -070010804 WDI_ControlBlockType* pWDICtx,
10805 WDI_EventInfoType* pEventData
10806)
10807{
10808 WDI_DelTSReqParamsType* pwdiDelTSParams;
10809 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010810 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010811 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010812 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010813 wpt_uint16 usDataOffset = 0;
10814 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10817
10818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 -------------------------------------------------------------------------*/
10821 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10822 ( NULL == pEventData->pCBfnc ))
10823 {
10824 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010825 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 }
10829
10830 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10831 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10832
10833 /*-------------------------------------------------------------------------
10834 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 -------------------------------------------------------------------------*/
10837 wpalMutexAcquire(&pWDICtx->wptMutex);
10838
10839 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010840 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010841 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010842 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10843 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10844 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010845
Jeff Johnsone7245742012-09-05 17:12:55 -070010846 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010847 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10849 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10850 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10851
Jeff Johnson295189b2012-06-20 16:38:30 -070010852 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 }
10855
10856 /*------------------------------------------------------------------------
10857 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010858 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010859 ------------------------------------------------------------------------*/
10860 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10861 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10863 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10864 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010865
Jeff Johnsone7245742012-09-05 17:12:55 -070010866 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010867 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010868 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010869 }
10870
10871
10872 wpalMutexRelease(&pWDICtx->wptMutex);
10873 /*-----------------------------------------------------------------------
10874 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010875 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010876 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010877 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010878 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10879 &pSendBuffer, &usDataOffset, &usSendSize))||
10880 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10881 {
10882 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010883 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010884 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10885 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010886 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010887 }
10888
Jeff Johnsone7245742012-09-05 17:12:55 -070010889 wpalMemoryCopy( pSendBuffer+usDataOffset,
10890 &pwdiDelTSParams->wdiDelTSInfo,
10891 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010892
10893 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010894 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010895
10896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10900 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010901}/*WDI_ProcessDelTSpecReq*/
10902
10903/**
10904 @brief Process Update EDCA Params Request function (called when
10905 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010906
10907 @param pWDICtx: pointer to the WLAN DAL context
10908 pEventData: pointer to the event information structure
10909
Jeff Johnson295189b2012-06-20 16:38:30 -070010910 @see
10911 @return Result of the function call
10912*/
10913WDI_Status
10914WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010915(
Jeff Johnson295189b2012-06-20 16:38:30 -070010916 WDI_ControlBlockType* pWDICtx,
10917 WDI_EventInfoType* pEventData
10918)
10919{
10920 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
10921 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010924 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010925 wpt_uint16 usDataOffset = 0;
10926 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10929
10930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010932 -------------------------------------------------------------------------*/
10933 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10934 ( NULL == pEventData->pCBfnc ))
10935 {
10936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010940 }
10941
10942 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
10943 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
10944 /*-------------------------------------------------------------------------
10945 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010946 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010947 -------------------------------------------------------------------------*/
10948 wpalMutexAcquire(&pWDICtx->wptMutex);
10949
10950 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010951 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010952 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
10954 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
10955 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010956
Jeff Johnsone7245742012-09-05 17:12:55 -070010957 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010958 {
10959 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010960 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
10961 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010962
10963 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 }
10966
10967 /*------------------------------------------------------------------------
10968 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010969 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010970 ------------------------------------------------------------------------*/
10971 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10972 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10974 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
10975 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010976
Jeff Johnsone7245742012-09-05 17:12:55 -070010977 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010978 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010979 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010980 }
10981
10982
10983 wpalMutexRelease(&pWDICtx->wptMutex);
10984 /*-----------------------------------------------------------------------
10985 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010987 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010988 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010989 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
10990 &pSendBuffer, &usDataOffset, &usSendSize))||
10991 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
10992 {
10993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010994 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010995 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
10996 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010997 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010998 }
10999
Jeff Johnsone7245742012-09-05 17:12:55 -070011000 wpalMemoryCopy( pSendBuffer+usDataOffset,
11001 &pwdiUpdateEDCAParams->wdiEDCAInfo,
11002 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011003
11004 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011005 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011006
11007 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011008 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011009 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011010 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11011 wdiUpdateEDCARspCb, pEventData->pUserData,
11012 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011013}/*WDI_ProcessUpdateEDCAParamsReq*/
11014
11015/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011016 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011017 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011018
11019 @param pWDICtx: pointer to the WLAN DAL context
11020 pEventData: pointer to the event information structure
11021
Jeff Johnson295189b2012-06-20 16:38:30 -070011022 @see
11023 @return Result of the function call
11024*/
11025WDI_Status
11026WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011027(
Jeff Johnson295189b2012-06-20 16:38:30 -070011028 WDI_ControlBlockType* pWDICtx,
11029 WDI_EventInfoType* pEventData
11030)
11031{
11032 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
11033 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011034 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011035 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011036 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011037 wpt_uint16 usDataOffset = 0;
11038 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011039 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011040 wpt_macAddr macBSSID;
11041
11042 tAddBASessionReqMsg halAddBASessionReq;
11043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11044
11045 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011046 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011047 -------------------------------------------------------------------------*/
11048 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11049 ( NULL == pEventData->pCBfnc ))
11050 {
11051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011052 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011053 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011054 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011055 }
11056
Jeff Johnsone7245742012-09-05 17:12:55 -070011057 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011058 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011059 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011060 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11061 /*-------------------------------------------------------------------------
11062 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011063 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011064 -------------------------------------------------------------------------*/
11065 wpalMutexAcquire(&pWDICtx->wptMutex);
11066
11067 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011068 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011069 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011070 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11071 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011072 &macBSSID))
11073 {
11074 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011075 "This station does not exist in the WDI Station Table %d",
11076 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011077 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011078 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011079 }
11080
11081
Jeff Johnsone7245742012-09-05 17:12:55 -070011082 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011083
Jeff Johnsone7245742012-09-05 17:12:55 -070011084 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011085 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11087 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11088 __func__, MAC_ADDR_ARRAY(macBSSID));
11089
Jeff Johnson295189b2012-06-20 16:38:30 -070011090 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011091 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011092 }
11093
11094 /*------------------------------------------------------------------------
11095 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011096 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011097 ------------------------------------------------------------------------*/
11098 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11099 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11101 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11102 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011103
Jeff Johnsone7245742012-09-05 17:12:55 -070011104 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011105 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011106 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011107 }
11108
11109
11110 wpalMutexRelease(&pWDICtx->wptMutex);
11111 /*-----------------------------------------------------------------------
11112 Get message buffer
11113 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011114 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11115 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011116 sizeof(halAddBASessionReq.addBASessionParams),
11117 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011118 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011119 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11120 {
11121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011122 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011123 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011126 }
11127
11128 halAddBASessionReq.addBASessionParams.staIdx =
11129 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11130 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11131 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11132 WDI_MAC_ADDR_LEN);
11133 halAddBASessionReq.addBASessionParams.baTID =
11134 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11135 halAddBASessionReq.addBASessionParams.baPolicy =
11136 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11137 halAddBASessionReq.addBASessionParams.baBufferSize =
11138 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11139 halAddBASessionReq.addBASessionParams.baTimeout =
11140 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11141 halAddBASessionReq.addBASessionParams.baSSN =
11142 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11143 halAddBASessionReq.addBASessionParams.baDirection =
11144 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11145
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 wpalMemoryCopy( pSendBuffer+usDataOffset,
11147 &halAddBASessionReq.addBASessionParams,
11148 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011149
11150 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011151 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011152
11153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011154 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11157 wdiAddBASessionRspCb, pEventData->pUserData,
11158 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011159}/*WDI_ProcessAddBASessionReq*/
11160
11161/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011162 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011163 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011164
11165 @param pWDICtx: pointer to the WLAN DAL context
11166 pEventData: pointer to the event information structure
11167
Jeff Johnson295189b2012-06-20 16:38:30 -070011168 @see
11169 @return Result of the function call
11170*/
11171WDI_Status
11172WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011173(
Jeff Johnson295189b2012-06-20 16:38:30 -070011174 WDI_ControlBlockType* pWDICtx,
11175 WDI_EventInfoType* pEventData
11176)
11177{
11178 WDI_DelBAReqParamsType* pwdiDelBAParams;
11179 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011180 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011181 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011182 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011183 wpt_uint16 usDataOffset = 0;
11184 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011185 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011186 wpt_macAddr macBSSID;
11187 tDelBAParams halDelBAparam;
11188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11189
11190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 -------------------------------------------------------------------------*/
11193 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11194 ( NULL == pEventData->pCBfnc ))
11195 {
11196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011197 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011198 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011199 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011200 }
11201
11202 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11203 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11204 /*-------------------------------------------------------------------------
11205 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011206 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011207 -------------------------------------------------------------------------*/
11208 wpalMutexAcquire(&pWDICtx->wptMutex);
11209
11210 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011211 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011212 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011213 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11214 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011215 &macBSSID))
11216 {
11217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011218 "This station does not exist in the WDI Station Table %d",
11219 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011220 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011222 }
11223
Jeff Johnsone7245742012-09-05 17:12:55 -070011224 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011225
Jeff Johnsone7245742012-09-05 17:12:55 -070011226 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011227 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11229 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11230 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011231
11232 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011234 }
11235
11236 /*------------------------------------------------------------------------
11237 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011239 ------------------------------------------------------------------------*/
11240 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11241 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011242 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11243 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11244 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011245
Jeff Johnsone7245742012-09-05 17:12:55 -070011246 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011247 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011248 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011249 }
11250
11251 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011252 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011253 sizeof(halDelBAparam),
11254 &pSendBuffer, &usDataOffset, &usSendSize))||
11255 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11256 {
11257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011258 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011259 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11260 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011261 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011262 }
11263
11264 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11265 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11266 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11267
Jeff Johnsone7245742012-09-05 17:12:55 -070011268 wpalMemoryCopy( pSendBuffer+usDataOffset,
11269 &halDelBAparam,
11270 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011271
11272 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011273 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011274
11275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011276 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011277 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011278 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11279 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011280}/*WDI_ProcessDelBAReq*/
11281
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011282#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011283
11284WDI_Status
11285WDI_ProcessTSMStatsReq
11286(
11287 WDI_ControlBlockType* pWDICtx,
11288 WDI_EventInfoType* pEventData
11289)
11290{
11291 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11292 WDI_TsmRspCb wdiTSMRspCb;
11293 wpt_uint8 ucCurrentBSSSesIdx = 0;
11294 WDI_BSSSessionType* pBSSSes = NULL;
11295 wpt_uint8* pSendBuffer = NULL;
11296 wpt_uint16 usDataOffset = 0;
11297 wpt_uint16 usSendSize = 0;
11298 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11299 tTsmStatsParams halTsmStatsReqParams = {0};
11300
11301 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11302
11303 /*-------------------------------------------------------------------------
11304 Sanity check
11305 -------------------------------------------------------------------------*/
11306 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11307 ( NULL == pEventData->pCBfnc ))
11308 {
11309 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011310 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011311 WDI_ASSERT(0);
11312 return WDI_STATUS_E_FAILURE;
11313 }
11314
11315 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11316 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11317 /*-------------------------------------------------------------------------
11318 Check to see if we are in the middle of an association, if so queue, if
11319 not it means it is free to process request
11320 -------------------------------------------------------------------------*/
11321 wpalMutexAcquire(&pWDICtx->wptMutex);
11322
11323 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11324 if ( NULL == pBSSSes )
11325 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11327 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11328 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011329
11330 wpalMutexRelease(&pWDICtx->wptMutex);
11331 return WDI_STATUS_E_NOT_ALLOWED;
11332 }
11333
11334 /*------------------------------------------------------------------------
11335 Check if this BSS is being currently processed or queued,
11336 if queued - queue the new request as well
11337 ------------------------------------------------------------------------*/
11338 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11339 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011341 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011342 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011343
11344 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11345 wpalMutexRelease(&pWDICtx->wptMutex);
11346 return wdiStatus;
11347 }
11348
11349 wpalMutexRelease(&pWDICtx->wptMutex);
11350 /*-----------------------------------------------------------------------
11351 Get message buffer
11352 ! TO DO : proper conversion into the HAL Message Request Format
11353 -----------------------------------------------------------------------*/
11354 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11355 sizeof(halTsmStatsReqParams),
11356 &pSendBuffer, &usDataOffset, &usSendSize))||
11357 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11358 {
11359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011360 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011361 pEventData, pwdiTSMParams, wdiTSMRspCb);
11362 WDI_ASSERT(0);
11363 return WDI_STATUS_E_FAILURE;
11364 }
11365
11366 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11367 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11368 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11369 WDI_MAC_ADDR_LEN);
11370 wpalMemoryCopy( pSendBuffer+usDataOffset,
11371 &halTsmStatsReqParams,
11372 sizeof(halTsmStatsReqParams));
11373
11374 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11375 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11376
11377 /*-------------------------------------------------------------------------
11378 Send TSM Stats Request to HAL
11379 -------------------------------------------------------------------------*/
11380 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11381 wdiTSMRspCb, pEventData->pUserData,
11382 WDI_TSM_STATS_RESP);
11383}/*WDI_ProcessTSMStatsReq*/
11384
11385#endif
11386
11387
11388/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011389 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011390 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011391
11392 @param pWDICtx: pointer to the WLAN DAL context
11393 pEventData: pointer to the event information structure
11394
Jeff Johnson295189b2012-06-20 16:38:30 -070011395 @see
11396 @return Result of the function call
11397*/
11398WDI_Status
11399WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011400(
Jeff Johnson295189b2012-06-20 16:38:30 -070011401 WDI_ControlBlockType* pWDICtx,
11402 WDI_EventInfoType* pEventData
11403)
11404{
11405 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11406 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011407 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011408 wpt_uint16 usDataOffset = 0;
11409 wpt_uint16 usSendSize = 0;
11410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11411
11412 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011414 -------------------------------------------------------------------------*/
11415 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11416 ( NULL == pEventData->pCBfnc ))
11417 {
11418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011419 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011420 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011421 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011422 }
11423
11424 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11425 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11426 /*-----------------------------------------------------------------------
11427 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011428 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011429 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011430 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011431 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11432 &pSendBuffer, &usDataOffset, &usSendSize))||
11433 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11434 {
11435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011436 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011437 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11438 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011439 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011440 }
11441
Jeff Johnsone7245742012-09-05 17:12:55 -070011442 wpalMemoryCopy( pSendBuffer+usDataOffset,
11443 &pwdiFlushAcParams->wdiFlushAcInfo,
11444 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011445
11446 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011447 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011448
11449 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011450 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011451 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011452 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11453 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011454}/*WDI_ProcessFlushAcReq*/
11455
11456/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011457 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011458 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011459
11460 @param pWDICtx: pointer to the WLAN DAL context
11461 pEventData: pointer to the event information structure
11462
Jeff Johnson295189b2012-06-20 16:38:30 -070011463 @see
11464 @return Result of the function call
11465*/
11466WDI_Status
11467WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011468(
Jeff Johnson295189b2012-06-20 16:38:30 -070011469 WDI_ControlBlockType* pWDICtx,
11470 WDI_EventInfoType* pEventData
11471)
11472{
11473 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11474 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011475 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011476 wpt_uint16 usDataOffset = 0;
11477 wpt_uint16 usSendSize = 0;
11478
11479 tBtAmpEventMsg haltBtAmpEventMsg;
11480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11481
11482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011484 -------------------------------------------------------------------------*/
11485 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11486 ( NULL == pEventData->pCBfnc ))
11487 {
11488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011492 }
11493
11494 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11495 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11496 /*-----------------------------------------------------------------------
11497 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011498 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011499 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11502 &pSendBuffer, &usDataOffset, &usSendSize))||
11503 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11504 {
11505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011506 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11508 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011509 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011510 }
11511
Jeff Johnsone7245742012-09-05 17:12:55 -070011512 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011513 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011514 wpalMemoryCopy( pSendBuffer+usDataOffset,
11515 &haltBtAmpEventMsg.btAmpEventParams,
11516 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011517
11518 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011519 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011520
11521 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011522 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011523 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011524 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11525 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011526}/*WDI_ProcessBtAmpEventReq*/
11527
11528/**
11529 @brief Process Add STA self Request function (called when Main FSM
11530 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011531
11532 @param pWDICtx: pointer to the WLAN DAL context
11533 pEventData: pointer to the event information structure
11534
Jeff Johnson295189b2012-06-20 16:38:30 -070011535 @see
11536 @return Result of the function call
11537*/
11538WDI_Status
11539WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011540(
Jeff Johnson295189b2012-06-20 16:38:30 -070011541 WDI_ControlBlockType* pWDICtx,
11542 WDI_EventInfoType* pEventData
11543)
11544{
11545 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11546 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011547 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011548 wpt_uint16 usDataOffset = 0;
11549 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011550 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011551 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11552
11553 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011554 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011555 -------------------------------------------------------------------------*/
11556 if (( NULL == pEventData ) ||
11557 ( NULL == pEventData->pEventData) ||
11558 ( NULL == pEventData->pCBfnc))
11559 {
11560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011561 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011563 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011564 }
11565
Jeff Johnsone7245742012-09-05 17:12:55 -070011566 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011567 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011568 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011569 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11570 /*-----------------------------------------------------------------------
11571 Get message buffer
11572 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011573 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11574 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011575 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011576 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011577 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011578 {
11579 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011580 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011581 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11582 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011583 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011584 }
11585
11586 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11589
Jeff Johnsone7245742012-09-05 17:12:55 -070011590 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011591 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11592 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11593 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11594 {
11595 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11596 }
11597 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11598 VOS_P2P_CLIENT_MODE) ||
11599 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11600 VOS_P2P_DEVICE))
11601 {
11602 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11603 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011604 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011605 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011606
11607 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011608 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011609
11610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11614 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11615 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011616}/*WDI_ProcessAddSTASelfReq*/
11617
11618
11619
11620/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011621 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011623
11624 @param pWDICtx: pointer to the WLAN DAL context
11625 pEventData: pointer to the event information structure
11626
Jeff Johnson295189b2012-06-20 16:38:30 -070011627 @see
11628 @return Result of the function call
11629*/
11630WDI_Status
11631WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011632(
Jeff Johnson295189b2012-06-20 16:38:30 -070011633 WDI_ControlBlockType* pWDICtx,
11634 WDI_EventInfoType* pEventData
11635)
11636{
11637 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11638 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011639 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011640 wpt_uint16 usDataOffset = 0;
11641 wpt_uint16 usSendSize = 0;
11642 tDelStaSelfParams halSetDelSelfSTAParams;
11643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11644
11645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011647 -------------------------------------------------------------------------*/
11648 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11649 ( NULL == pEventData->pCBfnc ))
11650 {
11651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011655 }
11656
Jeff Johnsone7245742012-09-05 17:12:55 -070011657 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011658 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11659 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11660
11661 /*-----------------------------------------------------------------------
11662 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011663 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011664 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011665 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011666 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11667 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011668 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011669 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11670 {
11671 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011672 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011673 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11674 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011675 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011676 }
11677
Jeff Johnsone7245742012-09-05 17:12:55 -070011678 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011679 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11680
Jeff Johnsone7245742012-09-05 17:12:55 -070011681 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11682 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011683
11684 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011685 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011686
11687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011688 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011689 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011690 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11691 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011692 WDI_DEL_STA_SELF_RESP);
11693
11694}
11695
Jeff Johnsone7245742012-09-05 17:12:55 -070011696#ifdef FEATURE_OEM_DATA_SUPPORT
11697/**
11698 @brief Process Start Oem Data Request function (called when Main
11699 FSM allows it)
11700
11701 @param pWDICtx: pointer to the WLAN DAL context
11702 pEventData: pointer to the event information structure
11703
11704 @see
11705 @return Result of the function call
11706*/
11707WDI_Status
11708WDI_ProcessStartOemDataReq
11709(
11710 WDI_ControlBlockType* pWDICtx,
11711 WDI_EventInfoType* pEventData
11712)
11713{
11714 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11715 WDI_oemDataRspCb wdiOemDataRspCb;
11716 wpt_uint8* pSendBuffer = NULL;
11717 wpt_uint16 usDataOffset = 0;
11718 wpt_uint16 usSendSize = 0;
11719 wpt_uint16 reqLen;
11720 tStartOemDataReqParams* halStartOemDataReqParams;
11721
11722 /*-------------------------------------------------------------------------
11723 Sanity check
11724 -------------------------------------------------------------------------*/
11725 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11726 ( NULL == pEventData->pCBfnc ))
11727 {
11728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011729 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011730 WDI_ASSERT(0);
11731 return WDI_STATUS_E_FAILURE;
11732 }
11733
11734 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11735 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11736
11737 /*-----------------------------------------------------------------------
11738 Get message buffer
11739 -----------------------------------------------------------------------*/
11740
11741 reqLen = sizeof(tStartOemDataReqParams);
11742
11743 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11744 WDI_START_OEM_DATA_REQ, reqLen,
11745 &pSendBuffer, &usDataOffset, &usSendSize))||
11746 (usSendSize < (usDataOffset + reqLen)))
11747 {
11748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011749 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11751 WDI_ASSERT(0);
11752 return WDI_STATUS_E_FAILURE;
11753 }
11754
11755 //copying WDI OEM DATA REQ PARAMS to shared memory
11756 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11757
11758 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11759 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11760
11761 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11762 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11763
11764 /*-------------------------------------------------------------------------
11765 Send Start Request to HAL
11766 -------------------------------------------------------------------------*/
11767 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11768 wdiOemDataRspCb, pEventData->pUserData,
11769 WDI_START_OEM_DATA_RESP);
11770}/*WDI_ProcessStartOemDataReq*/
11771#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011772
11773/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011774 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011775 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011776
11777 @param pWDICtx: pointer to the WLAN DAL context
11778 pEventData: pointer to the event information structure
11779
Jeff Johnson295189b2012-06-20 16:38:30 -070011780 @see
11781 @return Result of the function call
11782*/
11783WDI_Status
11784WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011785(
Jeff Johnson295189b2012-06-20 16:38:30 -070011786 WDI_ControlBlockType* pWDICtx,
11787 WDI_EventInfoType* pEventData
11788)
11789{
11790 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11791 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011793 wpt_uint16 usDataOffset = 0;
11794 wpt_uint16 usSendSize = 0;
11795 tHalWlanHostResumeReqParam halResumeReqParams;
11796
11797 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11798
11799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011801 -------------------------------------------------------------------------*/
11802 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11803 ( NULL == pEventData->pCBfnc ))
11804 {
11805 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011806 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011809 }
11810
11811 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11812 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11813
11814 /*-----------------------------------------------------------------------
11815 Get message buffer
11816 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011818 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11819 &pSendBuffer, &usDataOffset, &usSendSize))||
11820 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11821 {
11822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011823 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011824 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011827 }
11828
Jeff Johnsone7245742012-09-05 17:12:55 -070011829 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011830 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011831
11832 wpalMemoryCopy( pSendBuffer+usDataOffset,
11833 &halResumeReqParams,
11834 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011835
11836 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011838
11839 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011840 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011841 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011842 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11843 wdiHostResumeRspCb, pEventData->pUserData,
11844 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011845}/*WDI_ProcessHostResumeReq*/
11846
11847/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011848 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011849 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011850
11851 @param pWDICtx: pointer to the WLAN DAL context
11852 pEventData: pointer to the event information structure
11853
Jeff Johnson295189b2012-06-20 16:38:30 -070011854 @see
11855 @return Result of the function call
11856*/
11857WDI_Status
11858WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011859(
Jeff Johnson295189b2012-06-20 16:38:30 -070011860 WDI_ControlBlockType* pWDICtx,
11861 WDI_EventInfoType* pEventData
11862)
11863{
11864 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11865 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011866 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011867 wpt_uint16 usDataOffset = 0;
11868 wpt_uint16 usSendSize = 0;
11869 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11871
11872 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011873 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011874 -------------------------------------------------------------------------*/
11875 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11876 ( NULL == pEventData->pCBfnc ))
11877 {
11878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011879 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011882 }
11883
11884 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11885 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011886
Jeff Johnson295189b2012-06-20 16:38:30 -070011887 /*-----------------------------------------------------------------------
11888 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011889 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011890 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011891 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011892 sizeof(halTxPerTrackingReqParam),
11893 &pSendBuffer, &usDataOffset, &usSendSize))||
11894 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11895 {
11896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011897 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011898 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011901 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011902
Jeff Johnson295189b2012-06-20 16:38:30 -070011903 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11904 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11905 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11906 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011907
11908 wpalMemoryCopy( pSendBuffer+usDataOffset,
11909 &halTxPerTrackingReqParam,
11910 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011911
11912 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011914
11915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11919 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011920}/*WDI_ProcessSetTxPerTrackingReq*/
11921
11922/*=========================================================================
11923 Indications
11924=========================================================================*/
11925
11926/**
11927 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011928
11929 @param pWDICtx: pointer to the WLAN DAL context
11930 pEventData: pointer to the event information structure
11931
Jeff Johnson295189b2012-06-20 16:38:30 -070011932 @see
11933 @return Result of the function call
11934*/
11935WDI_Status
11936WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070011937(
Jeff Johnson295189b2012-06-20 16:38:30 -070011938 WDI_ControlBlockType* pWDICtx,
11939 WDI_EventInfoType* pEventData
11940)
11941{
11942 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070011943 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011944 wpt_uint16 usDataOffset = 0;
11945 wpt_uint16 usSendSize = 0;
11946 WDI_Status wdiStatus;
11947 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
11948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11949
11950 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011951 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011952 -------------------------------------------------------------------------*/
11953 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
11954 {
11955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011956 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011959 }
11960
11961 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
11962
11963 /*-----------------------------------------------------------------------
11964 Get message buffer
11965 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011966 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11967 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070011968 sizeof(halWlanSuspendIndparams),
11969 &pSendBuffer, &usDataOffset, &usSendSize))||
11970 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
11971 {
11972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11973 "Unable to get send buffer in Suspend Ind ");
11974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011976 }
11977
11978 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
11979 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
11980
Jeff Johnsone7245742012-09-05 17:12:55 -070011981 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070011982 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070011983
Jeff Johnsone7245742012-09-05 17:12:55 -070011984 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
11985 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011986
11987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011988 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011989 -------------------------------------------------------------------------*/
11990 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011991 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011992
Jeff Johnsone7245742012-09-05 17:12:55 -070011993 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070011994 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
11995}/*WDI_ProcessHostSuspendInd*/
11996
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080011997
11998
11999/**
12000 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
12001
12002 @param pWDICtx: pointer to the WLAN DAL context
12003 pEventData: pointer to the event information structure
12004
12005 @see
12006 @return Result of the function call
12007*/
12008WDI_Status
12009WDI_ProcessTrafficStatsInd
12010(
12011 WDI_ControlBlockType* pWDICtx,
12012 WDI_EventInfoType* pEventData
12013)
12014{
12015 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
12016 wpt_uint8* pSendBuffer = NULL;
12017 wpt_uint16 usDataOffset = 0;
12018 wpt_uint16 usSendSize = 0;
12019 WDI_Status wdiStatus;
12020 tStatsClassBIndParams* pStatsClassBIndParams;
12021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12022
12023 /*-------------------------------------------------------------------------
12024 Sanity check
12025 -------------------------------------------------------------------------*/
12026 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12027 {
12028 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12029 "%s: Invalid parameters in Traffic Stats ind",__func__);
12030 WDI_ASSERT(0);
12031 return WDI_STATUS_E_FAILURE;
12032 }
12033
12034 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
12035
12036 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
12037 {
12038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12039 "%s: Invalid parameters in Traffic Stats ind",__func__);
12040 WDI_ASSERT(0);
12041 return WDI_STATUS_E_FAILURE;
12042 }
12043
12044 /*-----------------------------------------------------------------------
12045 Get message buffer
12046 -----------------------------------------------------------------------*/
12047 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12048 WDI_TRAFFIC_STATS_IND,
12049 sizeof(tStatsClassBIndParams),
12050 &pSendBuffer, &usDataOffset, &usSendSize))||
12051 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
12052 {
12053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12054 "Unable to get send buffer in Traffic Stats Ind ");
12055 WDI_ASSERT(0);
12056 return WDI_STATUS_E_FAILURE;
12057 }
12058
12059 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12060
12061 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12062
12063 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12064 pTrafficStatsIndParams->pTrafficStats,
12065 pTrafficStatsIndParams->length);
12066
12067 /*-------------------------------------------------------------------------
12068 Send Suspend Request to HAL
12069 -------------------------------------------------------------------------*/
12070 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12071 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12072
12073 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12074 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12075}/*WDI_ProcessTrafficStatsInd*/
12076
Chet Lanctot186b5732013-03-18 10:26:30 -070012077#ifdef WLAN_FEATURE_11W
12078/**
12079 @brief Process Exclude Unencrypted Indications function (called
12080 when Main FSM allows it)
12081
12082 @param pWDICtx: pointer to the WLAN DAL context
12083 pEventData: pointer to the event information structure
12084
12085 @see
12086 @return Result of the function call
12087*/
12088WDI_Status
12089WDI_ProcessExcludeUnencryptInd
12090(
12091 WDI_ControlBlockType* pWDICtx,
12092 WDI_EventInfoType* pEventData
12093)
12094{
12095 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12096 wpt_uint8* pSendBuffer = NULL;
12097 wpt_uint16 usDataOffset = 0;
12098 wpt_uint16 usSendSize = 0;
12099 WDI_Status wdiStatus;
12100 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12102
12103 /*-------------------------------------------------------------------------
12104 Sanity check
12105 -------------------------------------------------------------------------*/
12106 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12107 {
12108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12109 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12110 WDI_ASSERT(0);
12111 return WDI_STATUS_E_FAILURE;
12112 }
12113
12114 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12115
12116 /*-----------------------------------------------------------------------
12117 Get message buffer
12118 -----------------------------------------------------------------------*/
12119 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12120 WDI_EXCLUDE_UNENCRYPTED_IND,
12121 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12122 &pSendBuffer, &usDataOffset, &usSendSize))||
12123 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12124 {
12125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12126 "Unable to get send buffer in Exclude Unencrypted Ind ");
12127 WDI_ASSERT(0);
12128 return WDI_STATUS_E_FAILURE;
12129 }
12130
12131 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12132
12133 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12134
12135 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12136 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12137
12138 /*-------------------------------------------------------------------------
12139 Send Suspend Request to HAL
12140 -------------------------------------------------------------------------*/
12141 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12142 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12143
12144 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12145 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12146}/*WDI_ProcessExcludeUnencryptInd*/
12147#endif
12148
Yue Mab9c86f42013-08-14 15:59:08 -070012149/**
12150 @brief Process Add Periodic Tx Pattern Indication function (called when
12151 Main FSM allows it)
12152
12153 @param pWDICtx: pointer to the WLAN DAL context
12154 pEventData: pointer to the event information structure
12155
12156 @see
12157 @return Result of the function call
12158*/
12159WDI_Status
12160WDI_ProcessAddPeriodicTxPtrnInd
12161(
12162 WDI_ControlBlockType* pWDICtx,
12163 WDI_EventInfoType* pEventData
12164)
12165{
12166 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12167 wpt_uint8* pSendBuffer = NULL;
12168 wpt_uint16 usDataOffset = 0;
12169 wpt_uint16 usSendSize = 0;
12170 WDI_Status wdiStatus;
12171 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12172 wpt_uint8 selfStaIdx = 0;
12173
12174 /*-------------------------------------------------------------------------
12175 Sanity check
12176 -------------------------------------------------------------------------*/
12177 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12178 {
12179 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12180 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12181 WDI_ASSERT(0);
12182 return WDI_STATUS_E_FAILURE;
12183 }
12184
12185 pAddPeriodicTxPtrnParams =
12186 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12187
12188 /*------------------------------------------------------------------------
12189 Get message buffer
12190 ------------------------------------------------------------------------*/
12191 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12192 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12193 &pSendBuffer, &usDataOffset, &usSendSize))||
12194 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12195 {
12196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12197 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12198 __func__);
12199 WDI_ASSERT(0);
12200 return WDI_STATUS_E_FAILURE;
12201 }
12202
12203 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12204
12205 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12206 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12207 &selfStaIdx))
12208 {
12209 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12210 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012211 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012212
12213 return WDI_STATUS_E_FAILURE;
12214 }
12215
12216 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12217 halAddPeriodicTxPtrn->ucPtrnId =
12218 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12219 halAddPeriodicTxPtrn->usPtrnSize =
12220 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12221 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12222 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12223
12224 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12225 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12226 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12227
12228 /*-------------------------------------------------------------------------
12229 Send Indication to HAL
12230 -------------------------------------------------------------------------*/
12231 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12232 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12233
12234 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12235
12236 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12237 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12238
12239 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12240} /* WDI_ProcessAddPeriodicTxPtrnInd */
12241
12242/**
12243 @brief Process Delete Periodic Tx Pattern Indication function (called when
12244 Main FSM allows it)
12245
12246 @param pWDICtx: pointer to the WLAN DAL context
12247 pEventData: pointer to the event information structure
12248
12249 @see
12250 @return Result of the function call
12251*/
12252WDI_Status
12253WDI_ProcessDelPeriodicTxPtrnInd
12254(
12255 WDI_ControlBlockType* pWDICtx,
12256 WDI_EventInfoType* pEventData
12257)
12258{
12259 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12260 wpt_uint8* pSendBuffer = NULL;
12261 wpt_uint16 usDataOffset = 0;
12262 wpt_uint16 usSendSize = 0;
12263 WDI_Status wdiStatus;
12264 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12265 wpt_uint8 selfStaIdx = 0;
12266
12267 /*-------------------------------------------------------------------------
12268 Sanity check
12269 -------------------------------------------------------------------------*/
12270 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12271 {
12272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12273 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12274 WDI_ASSERT(0);
12275 return WDI_STATUS_E_FAILURE;
12276 }
12277
12278 pDelPeriodicTxPtrnParams =
12279 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12280
12281 /*------------------------------------------------------------------------
12282 Get message buffer
12283 ------------------------------------------------------------------------*/
12284 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12285 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12286 &pSendBuffer, &usDataOffset, &usSendSize))||
12287 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12288 {
12289 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12290 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12291 __func__);
12292 WDI_ASSERT(0);
12293 return WDI_STATUS_E_FAILURE;
12294 }
12295
12296 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12297
12298 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12299 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12300 &selfStaIdx))
12301 {
12302 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12303 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012304 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012305
12306 return WDI_STATUS_E_FAILURE;
12307 }
12308
12309 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12310 halDelPeriodicTxPtrn->uPatternIdBitmap =
12311 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12312
12313 /*-------------------------------------------------------------------------
12314 Send Indication to HAL
12315 -------------------------------------------------------------------------*/
12316 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12317 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12318
12319 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12320
12321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12322 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12323
12324 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12325} /* WDI_ProcessDelPeriodicTxPtrnInd */
12326
Jeff Johnson295189b2012-06-20 16:38:30 -070012327/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012328 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012329==========================================================================*/
12330/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012331 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012332 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012333
12334 @param pWDICtx: pointer to the WLAN DAL context
12335 pEventData: pointer to the event information structure
12336
Jeff Johnson295189b2012-06-20 16:38:30 -070012337 @see
12338 @return Result of the function call
12339*/
12340WDI_Status
12341WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012342(
Jeff Johnson295189b2012-06-20 16:38:30 -070012343 WDI_ControlBlockType* pWDICtx,
12344 WDI_EventInfoType* pEventData
12345)
12346{
12347 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12348 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012349 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012350 wpt_uint16 usDataOffset = 0;
12351 wpt_uint16 usSendSize = 0;
12352 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12354
12355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012357 -------------------------------------------------------------------------*/
12358 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12359 ( NULL == pEventData->pCBfnc ))
12360 {
12361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012365 }
12366
12367 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12368 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12369 /*-----------------------------------------------------------------------
12370 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012371 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012372 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012373 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012374 sizeof(halSwitchChannelReq.switchChannelParams),
12375 &pSendBuffer, &usDataOffset, &usSendSize))||
12376 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12377 {
12378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012379 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012380 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12381 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012382 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012383 }
12384
Jeff Johnsone7245742012-09-05 17:12:55 -070012385 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012386 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012387#ifndef WLAN_FEATURE_VOWIFI
12388 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012389 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12390#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012391 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012392 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12393
12394#ifdef WLAN_FEATURE_VOWIFI
12395 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012396 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012397 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12398 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12399 WDI_MAC_ADDR_LEN);
12400 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12401 pwdiSwitchChParams->wdiChInfo.macBSSId,
12402 WDI_MAC_ADDR_LEN);
12403#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012404 wpalMemoryCopy( pSendBuffer+usDataOffset,
12405 &halSwitchChannelReq.switchChannelParams,
12406 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012407
12408 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012409 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012410
12411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012412 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012413 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012414 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12415 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012416}/*WDI_ProcessChannelSwitchReq*/
12417
12418/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012419 @brief Process Channel Switch Request function (called when
12420 Main FSM allows it)
12421
12422 @param pWDICtx: pointer to the WLAN DAL context
12423 pEventData: pointer to the event information structure
12424
12425 @see
12426 @return Result of the function call
12427*/
12428WDI_Status WDI_ProcessChannelSwitchReq_V1
12429(
12430 WDI_ControlBlockType* pWDICtx,
12431 WDI_EventInfoType* pEventData
12432)
12433{
12434 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12435 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12436 wpt_uint8* pSendBuffer = NULL;
12437 wpt_uint16 usDataOffset = 0;
12438 wpt_uint16 usSendSize = 0;
12439 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12441
12442 /*-------------------------------------------------------------------------
12443 Sanity check
12444 -------------------------------------------------------------------------*/
12445 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12446 ( NULL == pEventData->pCBfnc ))
12447 {
12448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12449 "%s: Invalid parameters", __func__);
12450 WDI_ASSERT(0);
12451 return WDI_STATUS_E_FAILURE;
12452 }
12453
12454 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12455 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12456 /*-----------------------------------------------------------------------
12457 Get message buffer
12458 ! TO DO : proper conversion into the HAL Message Request Format
12459 -----------------------------------------------------------------------*/
12460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12461 WDI_CH_SWITCH_REQ_V1,
12462 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12463 &pSendBuffer, &usDataOffset, &usSendSize))||
12464 ( usSendSize < (usDataOffset +
12465 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12466 {
12467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12468 "Unable to get send buffer in channel switch req %p %p %p",
12469 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12470 WDI_ASSERT(0);
12471 return WDI_STATUS_E_FAILURE;
12472 }
12473
12474 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12475 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12476
12477 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12478 pwdiSwitchChParams->wdiChInfo.ucChannel;
12479#ifndef WLAN_FEATURE_VOWIFI
12480 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12481 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12482#endif
12483 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12484 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12485
12486#ifdef WLAN_FEATURE_VOWIFI
12487 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12488 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12489 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12490 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12491 WDI_MAC_ADDR_LEN);
12492 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12493 pwdiSwitchChParams->wdiChInfo.macBSSId,
12494 WDI_MAC_ADDR_LEN);
12495#endif
12496 wpalMemoryCopy( pSendBuffer+usDataOffset,
12497 &halSwitchChannelReq.switchChannelParams_V1,
12498 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12499
12500 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12501 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12502
12503 /*-------------------------------------------------------------------------
12504 Send Switch Channel Request to HAL
12505 -------------------------------------------------------------------------*/
12506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12507 wdiSwitchChRspCb, pEventData->pUserData,
12508 WDI_CH_SWITCH_RESP_V1);
12509}/*WDI_ProcessChannelSwitchReq_V1*/
12510
12511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012512 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012513 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012514
12515 @param pWDICtx: pointer to the WLAN DAL context
12516 pEventData: pointer to the event information structure
12517
Jeff Johnson295189b2012-06-20 16:38:30 -070012518 @see
12519 @return Result of the function call
12520*/
12521WDI_Status
12522WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012523(
Jeff Johnson295189b2012-06-20 16:38:30 -070012524 WDI_ControlBlockType* pWDICtx,
12525 WDI_EventInfoType* pEventData
12526)
12527{
12528 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12529 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012530 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012531 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012532 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012533 wpt_uint16 usDataOffset = 0;
12534 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012535 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012536
Jeff Johnsone7245742012-09-05 17:12:55 -070012537 tConfigStaReqMsg halConfigStaReqMsg;
12538 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12540
12541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012543 -------------------------------------------------------------------------*/
12544 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12545 ( NULL == pEventData->pCBfnc ))
12546 {
12547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012551 }
12552
Abhishek Singh6927fa02014-06-27 17:19:55 +053012553 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012554 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12555 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12556 /*-------------------------------------------------------------------------
12557 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012558 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012559 -------------------------------------------------------------------------*/
12560 wpalMutexAcquire(&pWDICtx->wptMutex);
12561
12562 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012563 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012564 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012565 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12566 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12567 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012568
Jeff Johnsone7245742012-09-05 17:12:55 -070012569 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012570 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12572 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12573 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012574
12575 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012576 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012577 }
12578
12579 /*------------------------------------------------------------------------
12580 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012581 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012582 ------------------------------------------------------------------------*/
12583 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12584 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012585 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12586 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12587 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012588
Jeff Johnsone7245742012-09-05 17:12:55 -070012589 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012590 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012591 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012592 }
12593
12594 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012595
12596 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12597#ifdef WLAN_FEATURE_11AC
12598 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012599 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012600 else
12601#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012602 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012603
Jeff Johnson295189b2012-06-20 16:38:30 -070012604 /*-----------------------------------------------------------------------
12605 Get message buffer
12606 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012607 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12608 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012609 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012610 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 {
12612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012613 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012614 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12615 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012616 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012617 }
12618
12619 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012620 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012621 &pwdiConfigSTAParams->wdiReqInfo);
12622
12623 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12624 {
12625 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012626 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012627 WDI_STATableFindStaidByAddr(pWDICtx,
12628 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012629 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 {
12631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012632 MAC_ADDRESS_STR
12633 ": This station does not exist in the WDI Station Table",
12634 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012635 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012636 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 }
12639 }
12640 else
12641 {
12642 /* Need to fill in the STA Index to invalid, since at this point we have not
12643 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012644 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012645 }
12646
12647 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012648 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012649
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 wpalMemoryCopy( pSendBuffer+usDataOffset,
12651 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012652 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012653
12654 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012655 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012656
Jeff Johnsone7245742012-09-05 17:12:55 -070012657 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12658 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012659 sizeof(pWDICtx->wdiCachedConfigStaReq));
12660
12661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012662 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012663 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012664 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12665 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012666}/*WDI_ProcessConfigStaReq*/
12667
12668
12669/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012670 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012671 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012672
12673 @param pWDICtx: pointer to the WLAN DAL context
12674 pEventData: pointer to the event information structure
12675
Jeff Johnson295189b2012-06-20 16:38:30 -070012676 @see
12677 @return Result of the function call
12678*/
12679WDI_Status
12680WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012681(
Jeff Johnson295189b2012-06-20 16:38:30 -070012682 WDI_ControlBlockType* pWDICtx,
12683 WDI_EventInfoType* pEventData
12684)
12685{
12686 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12687 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012688 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012689 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012690 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 wpt_uint16 usDataOffset = 0;
12692 wpt_uint16 usSendSize = 0;
12693 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012694 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012695 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12696
12697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012698 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012699 -------------------------------------------------------------------------*/
12700 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12701 ( NULL == pEventData->pCBfnc ))
12702 {
12703 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012704 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012705 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012706 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012707 }
12708
12709 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12710 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12711 /*-------------------------------------------------------------------------
12712 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 -------------------------------------------------------------------------*/
12715 wpalMutexAcquire(&pWDICtx->wptMutex);
12716
12717 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012718 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012719 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012720 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12721 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12722 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012723
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012726 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012727 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12728 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012729 }
12730 else
12731 {
12732 /*------------------------------------------------------------------------
12733 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012734 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012735 ------------------------------------------------------------------------*/
12736 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12737 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12739 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12740 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12741
12742 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012743 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012744 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012745 }
12746 }
12747 /* If the link is set to enter IDLE - the Session allocated for this BSS
12748 will be deleted on the Set Link State response coming from HAL
12749 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012750 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012751 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12752
12753 wpalMutexRelease(&pWDICtx->wptMutex);
12754 /*-----------------------------------------------------------------------
12755 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012756 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012757 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012758
12759 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012760 sizeof(halLinkStateReqMsg),
12761 &pSendBuffer, &usDataOffset, &usSendSize))||
12762 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12763 {
12764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012765 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012766 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12767 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012768 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012769 }
12770
12771 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12772 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12773
12774 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12775 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12776
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12779
Jeff Johnsone7245742012-09-05 17:12:55 -070012780 wpalMemoryCopy( pSendBuffer+usDataOffset,
12781 &halLinkStateReqMsg,
12782 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012783
12784 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012786
12787 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012788 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012789 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012790 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12791 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012792}/*WDI_ProcessSetLinkStateReq*/
12793
12794
12795/**
12796 @brief Process Get Stats Request function (called when Main FSM
12797 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012798
12799 @param pWDICtx: pointer to the WLAN DAL context
12800 pEventData: pointer to the event information structure
12801
Jeff Johnson295189b2012-06-20 16:38:30 -070012802 @see
12803 @return Result of the function call
12804*/
12805WDI_Status
12806WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012807(
Jeff Johnson295189b2012-06-20 16:38:30 -070012808 WDI_ControlBlockType* pWDICtx,
12809 WDI_EventInfoType* pEventData
12810)
12811{
12812 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12813 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012815 wpt_uint16 usDataOffset = 0;
12816 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012817 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012818 WDI_BSSSessionType* pBSSSes = NULL;
12819 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012820 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012821 tHalStatsReqMsg halStatsReqMsg;
12822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12823
12824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012826 -------------------------------------------------------------------------*/
12827 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12828 ( NULL == pEventData->pCBfnc ) )
12829 {
12830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012831 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012834 }
12835
12836 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12837 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12838
12839 /*-------------------------------------------------------------------------
12840 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012841 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012842 -------------------------------------------------------------------------*/
12843 wpalMutexAcquire(&pWDICtx->wptMutex);
12844
12845 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012846 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012847 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012848 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12849 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012850 &macBSSID))
12851 {
12852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012853 "This station does not exist in the WDI Station Table %d",
12854 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012855 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012856 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012857 }
12858
Jeff Johnsone7245742012-09-05 17:12:55 -070012859 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12860 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012861 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012862 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12863 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12864 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012865
12866 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012868 }
12869
12870 /*------------------------------------------------------------------------
12871 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012872 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012873 ------------------------------------------------------------------------*/
12874 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12875 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12877 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12878 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012879
Jeff Johnsone7245742012-09-05 17:12:55 -070012880 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012881 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012882 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012883 }
12884
12885
12886 wpalMutexRelease(&pWDICtx->wptMutex);
12887
12888 /*-----------------------------------------------------------------------
12889 Get message buffer
12890 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012891 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012892 sizeof(halStatsReqMsg.statsReqParams),
12893 &pSendBuffer, &usDataOffset, &usSendSize))||
12894 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12895 {
12896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012897 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012898 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12899 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012900 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012901 }
12902
Jeff Johnsone7245742012-09-05 17:12:55 -070012903 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012904 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012905 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012906 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 wpalMemoryCopy( pSendBuffer+usDataOffset,
12908 &halStatsReqMsg.statsReqParams,
12909 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012910
12911 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012913
12914 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012915 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012916 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012917 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12918 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012919}/*WDI_ProcessGetStatsReq*/
12920
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080012921#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012922/**
12923 @brief Process Get Roam Rssi Request function (called when Main FSM
12924 allows it)
12925
12926 @param pWDICtx: pointer to the WLAN DAL context
12927 pEventData: pointer to the event information structure
12928
12929 @see
12930 @return Result of the function call
12931*/
12932WDI_Status
12933WDI_ProcessGetRoamRssiReq
12934(
12935 WDI_ControlBlockType* pWDICtx,
12936 WDI_EventInfoType* pEventData
12937)
12938{
12939 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
12940 WDI_GetStatsRspCb wdiGetStatsRspCb;
12941 wpt_uint8* pSendBuffer = NULL;
12942 wpt_uint16 usDataOffset = 0;
12943 wpt_uint16 usSendSize = 0;
12944 wpt_uint8 ucCurrentBSSSesIdx = 0;
12945 WDI_BSSSessionType* pBSSSes = NULL;
12946 wpt_macAddr macBSSID;
12947 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
12948 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
12949 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12950 /*-------------------------------------------------------------------------
12951 Sanity check
12952 -------------------------------------------------------------------------*/
12953 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12954 ( NULL == pEventData->pCBfnc ) )
12955 {
12956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12957 "%s: Invalid parameters", __func__);
12958 WDI_ASSERT(0);
12959 return WDI_STATUS_E_FAILURE;
12960 }
12961
12962 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
12963 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12964
12965 /*-------------------------------------------------------------------------
12966 Check to see if we are in the middle of an association, if so queue, if
12967 not it means it is free to process request
12968 -------------------------------------------------------------------------*/
12969 wpalMutexAcquire(&pWDICtx->wptMutex);
12970
12971 /*------------------------------------------------------------------------
12972 Find the BSS for which the request is made
12973 ------------------------------------------------------------------------*/
12974 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12975 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
12976 &macBSSID))
12977 {
12978 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012979 "This station does not exist in the WDI Station Table %d",
12980 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080012981 wpalMutexRelease(&pWDICtx->wptMutex);
12982 return WDI_STATUS_E_FAILURE;
12983 }
12984
12985 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12986 if ( NULL == pBSSSes )
12987 {
12988 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12989 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12990 __func__, MAC_ADDR_ARRAY(macBSSID));
12991
12992 wpalMutexRelease(&pWDICtx->wptMutex);
12993 return WDI_STATUS_E_NOT_ALLOWED;
12994 }
12995
12996 /*------------------------------------------------------------------------
12997 Check if this BSS is being currently processed or queued,
12998 if queued - queue the new request as well
12999 ------------------------------------------------------------------------*/
13000 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13001 {
13002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13003 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13004 __func__, MAC_ADDR_ARRAY(macBSSID));
13005
13006 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
13007 wpalMutexRelease(&pWDICtx->wptMutex);
13008 return wdiStatus;
13009 }
13010
13011 wpalMutexRelease(&pWDICtx->wptMutex);
13012
13013 /*-----------------------------------------------------------------------
13014 Get message buffer
13015 -----------------------------------------------------------------------*/
13016 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13017 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13018 &pSendBuffer, &usDataOffset, &usSendSize))||
13019 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13020 {
13021 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013022 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013023 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13024 WDI_ASSERT(0);
13025 return WDI_STATUS_E_FAILURE;
13026 }
13027
13028 halRssiRoamReqMsg.roamRssiReqParams.staId =
13029 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13030 wpalMemoryCopy( pSendBuffer+usDataOffset,
13031 &halRssiRoamReqMsg.roamRssiReqParams,
13032 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13033
13034 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13035 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13036
13037 /*-------------------------------------------------------------------------
13038 Send Get STA Request to HAL
13039 -------------------------------------------------------------------------*/
13040 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13041 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13042}/*WDI_ProcessGetRoamRssiReq*/
13043#endif
13044
Jeff Johnson295189b2012-06-20 16:38:30 -070013045/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013046 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013047 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013048
13049 @param pWDICtx: pointer to the WLAN DAL context
13050 pEventData: pointer to the event information structure
13051
Jeff Johnson295189b2012-06-20 16:38:30 -070013052 @see
13053 @return Result of the function call
13054*/
13055WDI_Status
13056WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013057(
Jeff Johnson295189b2012-06-20 16:38:30 -070013058 WDI_ControlBlockType* pWDICtx,
13059 WDI_EventInfoType* pEventData
13060)
13061{
13062 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13063 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13064
Jeff Johnsone7245742012-09-05 17:12:55 -070013065 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013066 wpt_uint16 usDataOffset = 0;
13067 wpt_uint16 usSendSize = 0;
13068 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13069
13070 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013071 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013072 -------------------------------------------------------------------------*/
13073 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13074 ( NULL == pEventData->pCBfnc))
13075 {
13076 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013077 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013078 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013079 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013080 }
13081
13082 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13083 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13084
13085 /*-----------------------------------------------------------------------
13086 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013087 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013088 -----------------------------------------------------------------------*/
13089
Jeff Johnsone7245742012-09-05 17:12:55 -070013090 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013091 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13092 &pSendBuffer, &usDataOffset, &usSendSize))||
13093 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13094 {
13095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013096 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013097 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13098 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013099 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013100 }
13101
Jeff Johnsone7245742012-09-05 17:12:55 -070013102 wpalMemoryCopy( pSendBuffer+usDataOffset,
13103 &pwdiUpdateCfgParams->uConfigBufferLen,
13104 sizeof(wpt_uint32));
13105 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13106 pwdiUpdateCfgParams->pConfigBuffer,
13107 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013108
13109 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013110 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013111
13112 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013113 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013114 -------------------------------------------------------------------------*/
13115
Jeff Johnsone7245742012-09-05 17:12:55 -070013116 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13117 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013118
13119}/*WDI_ProcessUpdateCfgReq*/
13120
13121
13122/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013123 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013124 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013125
13126 @param pWDICtx: pointer to the WLAN DAL context
13127 pEventData: pointer to the event information structure
13128
Jeff Johnson295189b2012-06-20 16:38:30 -070013129 @see
13130 @return Result of the function call
13131*/
13132WDI_Status
13133WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013134(
Jeff Johnson295189b2012-06-20 16:38:30 -070013135 WDI_ControlBlockType* pWDICtx,
13136 WDI_EventInfoType* pEventData
13137)
13138{
13139 WDI_AddBAReqParamsType* pwdiAddBAParams;
13140 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013141 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013142 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013143 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013144 wpt_uint16 usDataOffset = 0;
13145 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013146 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013147 wpt_macAddr macBSSID;
13148
13149 tAddBAReqMsg halAddBAReq;
13150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13151
13152 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013153 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013154 -------------------------------------------------------------------------*/
13155 if (( NULL == pEventData ) ||
13156 ( NULL == pEventData->pEventData) ||
13157 ( NULL == pEventData->pCBfnc ))
13158 {
13159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013160 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013161 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013162 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013163 }
13164
13165 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13166 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13167
13168 /*-------------------------------------------------------------------------
13169 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013170 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013171 -------------------------------------------------------------------------*/
13172 wpalMutexAcquire(&pWDICtx->wptMutex);
13173
13174 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013175 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013176 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13178 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013179 &macBSSID))
13180 {
13181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013182 "This station does not exist in the WDI Station Table %d",
13183 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013185 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013186 }
13187
Jeff Johnsone7245742012-09-05 17:12:55 -070013188 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13189 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013190 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013191 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13192 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13193 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013194
13195 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013196 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013197 }
13198
13199 /*------------------------------------------------------------------------
13200 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013201 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013202 ------------------------------------------------------------------------*/
13203 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13204 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13206 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13207 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013208
Jeff Johnsone7245742012-09-05 17:12:55 -070013209 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013210 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013211 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013212 }
13213
13214
13215 wpalMutexRelease(&pWDICtx->wptMutex);
13216 /*-----------------------------------------------------------------------
13217 Get message buffer
13218 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013219 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013220 sizeof(halAddBAReq.addBAParams),
13221 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013222 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013223 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13224 {
13225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013226 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013227 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13228 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013229 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013230 }
13231
Jeff Johnsone7245742012-09-05 17:12:55 -070013232 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013233 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13234 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13235#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013236 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013237 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13238#endif
13239
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 wpalMemoryCopy( pSendBuffer+usDataOffset,
13241 &halAddBAReq.addBAParams,
13242 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013243
13244 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013245 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013246
13247 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013248 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013249 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013250 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13251 wdiAddBARspCb, pEventData->pUserData,
13252 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013253}/*WDI_ProcessAddBAReq*/
13254
13255
13256
13257/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013258 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013259 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013260
13261 @param pWDICtx: pointer to the WLAN DAL context
13262 pEventData: pointer to the event information structure
13263
Jeff Johnson295189b2012-06-20 16:38:30 -070013264 @see
13265 @return Result of the function call
13266*/
13267WDI_Status
13268WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013269(
Jeff Johnson295189b2012-06-20 16:38:30 -070013270 WDI_ControlBlockType* pWDICtx,
13271 WDI_EventInfoType* pEventData
13272)
13273{
13274 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13275 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013276 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013279 wpt_uint16 usDataOffset = 0;
13280 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013281 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013282 wpt_uint16 index;
13283 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013284
Jeff Johnson295189b2012-06-20 16:38:30 -070013285 tTriggerBAReqMsg halTriggerBAReq;
13286 tTriggerBaReqCandidate* halTriggerBACandidate;
13287 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13289
13290 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013291 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013292 -------------------------------------------------------------------------*/
13293 if (( NULL == pEventData ) ||
13294 ( NULL == pEventData->pEventData ) ||
13295 ( NULL == pEventData->pCBfnc ))
13296 {
13297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013298 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013300 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013301 }
13302
13303 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13304 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13305 /*-------------------------------------------------------------------------
13306 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013307 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013308 -------------------------------------------------------------------------*/
13309 wpalMutexAcquire(&pWDICtx->wptMutex);
13310
13311 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013312 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013313 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013314 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13315 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013316 &macBSSID))
13317 {
13318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013319 "This station does not exist in the WDI Station Table %d",
13320 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013321 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013322 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013323 }
13324
Jeff Johnsone7245742012-09-05 17:12:55 -070013325 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13326 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013327 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013328 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13329 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13330 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013331
13332 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013333 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013334 }
13335
13336 /*------------------------------------------------------------------------
13337 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013338 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013339 ------------------------------------------------------------------------*/
13340 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13341 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13343 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13344 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013345
Jeff Johnsone7245742012-09-05 17:12:55 -070013346 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013347 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013348 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013349 }
13350
13351
13352 wpalMutexRelease(&pWDICtx->wptMutex);
13353 /*-----------------------------------------------------------------------
13354 Get message buffer
13355 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013356 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13357 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013358 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013359 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013360 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13361 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013362 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013363 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013364 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013365 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13366 {
13367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013368 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13370 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013371 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 }
13373
Jeff Johnsone7245742012-09-05 17:12:55 -070013374 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013375 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013376 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013377 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13378
Jeff Johnsone7245742012-09-05 17:12:55 -070013379 wpalMemoryCopy( pSendBuffer+usDataOffset,
13380 &halTriggerBAReq.triggerBAParams,
13381 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013382
Jeff Johnsone7245742012-09-05 17:12:55 -070013383 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013384 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13385 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13386 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013387
13388 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013389 index++)
13390 {
13391 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13392 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13393 halTriggerBACandidate++;
13394 wdiTriggerBACandidate++;
13395 }
13396
13397 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013398 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013399
13400 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013402 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013403 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13404 wdiTriggerBARspCb, pEventData->pUserData,
13405 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013406}/*WDI_ProcessTriggerBAReq*/
13407
13408
13409
13410/**
13411 @brief Process Update Beacon Params Request function (called when Main FSM
13412 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013413
13414 @param pWDICtx: pointer to the WLAN DAL context
13415 pEventData: pointer to the event information structure
13416
Jeff Johnson295189b2012-06-20 16:38:30 -070013417 @see
13418 @return Result of the function call
13419*/
13420WDI_Status
13421WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013422(
Jeff Johnson295189b2012-06-20 16:38:30 -070013423 WDI_ControlBlockType* pWDICtx,
13424 WDI_EventInfoType* pEventData
13425)
13426{
13427 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13428 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013430 wpt_uint16 usDataOffset = 0;
13431 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013432 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013433 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13434
13435 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013436 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013437 -------------------------------------------------------------------------*/
13438 if (( NULL == pEventData ) ||
13439 ( NULL == pEventData->pEventData) ||
13440 ( NULL == pEventData->pCBfnc))
13441 {
13442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013444 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013445 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013446 }
13447
13448 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13449 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13450 /*-----------------------------------------------------------------------
13451 Get message buffer
13452 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013453 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013454 sizeof(halUpdateBeaconParams),
13455 &pSendBuffer, &usDataOffset, &usSendSize))||
13456 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13457 {
13458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013459 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013460 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013463 }
13464
13465 /*BSS Index of the BSS*/
13466 halUpdateBeaconParams.bssIdx =
13467 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13468 /*shortPreamble mode. HAL should update all the STA rates when it
13469 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13472 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013473 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013474 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13475 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013476 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013477 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13478
13479 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013480 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013481 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013482 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013483 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013484 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013485 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013486 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013487 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013491 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13492 halUpdateBeaconParams.fRIFSMode =
13493 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013494 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013495 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13496
Jeff Johnsone7245742012-09-05 17:12:55 -070013497 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13498 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013499
13500 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013501 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013502
13503 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013504 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013505 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013506 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13507 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013508}/*WDI_ProcessUpdateBeaconParamsReq*/
13509
13510
13511
13512/**
13513 @brief Process Send Beacon template Request function (called when Main FSM
13514 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013515
13516 @param pWDICtx: pointer to the WLAN DAL context
13517 pEventData: pointer to the event information structure
13518
Jeff Johnson295189b2012-06-20 16:38:30 -070013519 @see
13520 @return Result of the function call
13521*/
13522WDI_Status
13523WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013524(
Jeff Johnson295189b2012-06-20 16:38:30 -070013525 WDI_ControlBlockType* pWDICtx,
13526 WDI_EventInfoType* pEventData
13527)
13528{
13529 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13530 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013531 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013532 wpt_uint16 usDataOffset = 0;
13533 wpt_uint16 usSendSize = 0;
13534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13535
13536 tSendBeaconReqMsg halSendBeaconReq;
13537 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013538 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013539 -------------------------------------------------------------------------*/
13540 if (( NULL == pEventData ) ||
13541 ( NULL == pEventData->pEventData ) ||
13542 ( NULL == pEventData->pCBfnc ))
13543 {
13544 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013545 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013548 }
13549
13550 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13551 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13552 /*-----------------------------------------------------------------------
13553 Get message buffer
13554 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013555 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013556 sizeof(halSendBeaconReq.sendBeaconParam),
13557 &pSendBuffer, &usDataOffset, &usSendSize))||
13558 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13559 {
13560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013561 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013562 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13563 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013564 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013565 }
13566
13567 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13568 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13569 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013570 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013571 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13572 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13573 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13574 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013577 /* usP2PIeOffset should be atleast greater than timIeOffset */
13578 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13579 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13580 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13581 {
13582 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13583 "Invalid usP2PIeOffset %hu",
13584 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13585 WDI_ASSERT(0);
13586 return WDI_STATUS_E_FAILURE;
13587 }
13588
Jeff Johnsone7245742012-09-05 17:12:55 -070013589 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013590 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013591
Jeff Johnsone7245742012-09-05 17:12:55 -070013592 wpalMemoryCopy( pSendBuffer+usDataOffset,
13593 &halSendBeaconReq.sendBeaconParam,
13594 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013595
13596 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013597 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013598
13599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013600 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013601 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013602 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13603 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013604}/*WDI_ProcessSendBeaconParamsReq*/
13605
13606/**
13607 @brief Process Update Beacon Params Request function (called when Main FSM
13608 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013609
13610 @param pWDICtx: pointer to the WLAN DAL context
13611 pEventData: pointer to the event information structure
13612
Jeff Johnson295189b2012-06-20 16:38:30 -070013613 @see
13614 @return Result of the function call
13615*/
13616WDI_Status
13617WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013618(
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 WDI_ControlBlockType* pWDICtx,
13620 WDI_EventInfoType* pEventData
13621)
13622{
13623 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13624 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 wpt_uint16 usDataOffset = 0;
13627 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013628 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013629 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13630
13631 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013632 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 -------------------------------------------------------------------------*/
13634 if (( NULL == pEventData ) ||
13635 ( NULL == pEventData->pEventData) ||
13636 ( NULL == pEventData->pCBfnc))
13637 {
13638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013642 }
13643
Jeff Johnsone7245742012-09-05 17:12:55 -070013644 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013645 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013646 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013647 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13648 /*-----------------------------------------------------------------------
13649 Get message buffer
13650 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 sizeof(halUpdateProbeRspTmplParams),
13653 &pSendBuffer, &usDataOffset, &usSendSize))||
13654 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13655 {
13656 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013657 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013661 }
13662
13663 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013664 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013665 WDI_MAC_ADDR_LEN);
13666
Jeff Johnsone7245742012-09-05 17:12:55 -070013667 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013668 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13669
13670 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13671 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013672 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013673
13674
13675 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13676 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13677 WDI_PROBE_REQ_BITMAP_IE_LEN);
13678
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 wpalMemoryCopy( pSendBuffer+usDataOffset,
13680 &halUpdateProbeRspTmplParams,
13681 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013682
13683 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013685
13686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013688 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013689 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13690 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13691 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013692}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13693
13694/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013695 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013696 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013697
13698 @param pWDICtx: pointer to the WLAN DAL context
13699 pEventData: pointer to the event information structure
13700
Jeff Johnson295189b2012-06-20 16:38:30 -070013701 @see
13702 @return Result of the function call
13703*/
13704WDI_Status
13705WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013706(
Jeff Johnson295189b2012-06-20 16:38:30 -070013707 WDI_ControlBlockType* pWDICtx,
13708 WDI_EventInfoType* pEventData
13709)
13710{
13711
13712 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13713 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13714
13715 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013716 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013717 -------------------------------------------------------------------------*/
13718 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013721 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013722 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13723 {
13724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013725 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013727 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013728 }
13729
13730 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013731 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13733
13734 /*cache the wdi nv request message here if the the first fragment
13735 * To issue the request to HAL for the next fragment */
13736 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13737 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013738 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13739 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013740 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13741
13742 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13743 pWDICtx->pRspCBUserData = pEventData->pUserData;
13744 }
13745
13746 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13747}
13748
13749/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013750 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013751 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013752
13753 @param pWDICtx: pointer to the WLAN DAL context
13754 pEventData: pointer to the event information structure
13755
Jeff Johnson295189b2012-06-20 16:38:30 -070013756 @see
13757 @return Result of the function call
13758*/
13759WDI_Status WDI_ProcessSetMaxTxPowerReq
13760(
13761 WDI_ControlBlockType* pWDICtx,
13762 WDI_EventInfoType* pEventData
13763)
13764{
13765 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13766 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013767 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013768 wpt_uint16 usDataOffset = 0;
13769 wpt_uint16 usSendSize = 0;
13770 tSetMaxTxPwrReq halSetMaxTxPower;
13771 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13772
13773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 -------------------------------------------------------------------------*/
13776 if (( NULL == pEventData ) ||
13777 ( NULL == pEventData->pEventData ) ||
13778 ( NULL == pEventData->pCBfnc ))
13779 {
13780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013781 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013782 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013783 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013784 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013785 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013786 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013787 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13789
13790 /*-----------------------------------------------------------------------
13791 Get message buffer
13792 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013793if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13795 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013796 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013797)))
13798 {
13799 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013800 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013801 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13802 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 }
13805
13806 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13807 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13808 WDI_MAC_ADDR_LEN);
13809
13810 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13811 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13812 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013813 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013814 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013815
13816 wpalMemoryCopy( pSendBuffer+usDataOffset,
13817 &halSetMaxTxPower.setMaxTxPwrParams,
13818 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013819
13820 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013821 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013822
13823 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013824 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013825 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013826 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13827 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13828 WDI_SET_MAX_TX_POWER_RESP);
13829
Jeff Johnson295189b2012-06-20 16:38:30 -070013830}
13831
Arif Hussaina5ebce02013-08-09 15:09:58 -070013832/*
13833 @brief Process Set Max Tx Power Per Band Request function (called when Main
13834 FSM allows it)
13835
13836 @param pWDICtx: pointer to the WLAN DAL context
13837 pEventData: pointer to the event information structure
13838
13839 @see
13840 @return Result of the function call
13841*/
13842WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13843(
13844 WDI_ControlBlockType* pWDICtx,
13845 WDI_EventInfoType* pEventData
13846)
13847{
13848 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13849 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13850 wpt_uint8* pSendBuffer = NULL;
13851 wpt_uint16 usDataOffset = 0;
13852 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013853 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013854 WDI_Status rValue = WDI_STATUS_SUCCESS;
13855 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13856
13857 /*-------------------------------------------------------------------------
13858 Sanity check
13859 -------------------------------------------------------------------------*/
13860 if (( NULL == pEventData ) ||
13861 ( NULL == pEventData->pEventData ) ||
13862 ( NULL == pEventData->pCBfnc ))
13863 {
13864 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13865 "%s: Invalid parameters", __func__);
13866 WDI_ASSERT(0);
13867 return WDI_STATUS_E_FAILURE;
13868 }
13869 pwdiSetMaxTxPowerPerBandParams = \
13870 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13871
13872 wdiSetMaxTxPowerPerBandRspCb = \
13873 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13874
13875 /*-----------------------------------------------------------------------
13876 Get message buffer
13877 -----------------------------------------------------------------------*/
13878
13879 rValue = WDI_GetMessageBuffer(pWDICtx,
13880 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13881 sizeof(tSetMaxTxPwrPerBandParams),
13882 &pSendBuffer, &usDataOffset, &usSendSize);
13883
13884 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13885 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13886 {
13887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13888 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13889 pEventData, pwdiSetMaxTxPowerPerBandParams,
13890 wdiSetMaxTxPowerPerBandRspCb);
13891 WDI_ASSERT(0);
13892 return WDI_STATUS_E_FAILURE;
13893 }
13894
13895
Arif Hussainf8f080c2014-04-03 09:48:36 -070013896 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13897 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013898 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13899
Arif Hussainf8f080c2014-04-03 09:48:36 -070013900 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013901 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13902
13903 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13904 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13905
13906 /*-------------------------------------------------------------------------
13907 Send Set Max Tx Power Per Band Request to HAL
13908 -------------------------------------------------------------------------*/
13909 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13910 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13911 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13912}
13913
schang86c22c42013-03-13 18:41:24 -070013914/**
13915 @brief Process Set Tx Power Request function (called when Main
13916 FSM allows it)
13917
13918 @param pWDICtx: pointer to the WLAN DAL context
13919 pEventData: pointer to the event information structure
13920
13921 @see
13922 @return Result of the function call
13923*/
13924WDI_Status WDI_ProcessSetTxPowerReq
13925(
13926 WDI_ControlBlockType* pWDICtx,
13927 WDI_EventInfoType* pEventData
13928)
13929{
13930 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
13931 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
13932 wpt_uint8* pSendBuffer = NULL;
13933 wpt_uint16 usDataOffset = 0;
13934 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070013935 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070013936 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13937
13938 /*-------------------------------------------------------------------------
13939 Sanity check
13940 -------------------------------------------------------------------------*/
13941 if (( NULL == pEventData ) ||
13942 ( NULL == pEventData->pEventData ) ||
13943 ( NULL == pEventData->pCBfnc ))
13944 {
13945 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13946 "%s: Invalid parameters", __func__);
13947 WDI_ASSERT(0);
13948 return WDI_STATUS_E_FAILURE;
13949 }
13950
13951 pwdiSetTxPowerParams =
13952 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
13953 wdiSetTxPowerRspCb =
13954 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
13955
13956 /*-----------------------------------------------------------------------
13957 Get message buffer
13958 -----------------------------------------------------------------------*/
13959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
13960 sizeof(tSetTxPwrReqParams),
13961 &pSendBuffer, &usDataOffset, &usSendSize))||
13962 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
13963 )))
13964 {
13965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013966 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070013967 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
13968 WDI_ASSERT(0);
13969 return WDI_STATUS_E_FAILURE;
13970 }
13971
Leo Chang9a43db92013-03-25 17:39:58 -070013972 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
13973 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
13974 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070013975
13976 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
13977 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
13978
13979 /*-------------------------------------------------------------------------
13980 Send Set Tx Power Request to HAL
13981 -------------------------------------------------------------------------*/
13982 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13983 wdiSetTxPowerRspCb, pEventData->pUserData,
13984 WDI_SET_TX_POWER_RESP);
13985}
Jeff Johnson295189b2012-06-20 16:38:30 -070013986
13987/**
13988 @brief Process P2P Notice Of Absence Request function (called when Main FSM
13989 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013990
13991 @param pWDICtx: pointer to the WLAN DAL context
13992 pEventData: pointer to the event information structure
13993
Jeff Johnson295189b2012-06-20 16:38:30 -070013994 @see
13995 @return Result of the function call
13996*/
13997WDI_Status
13998WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013999(
Jeff Johnson295189b2012-06-20 16:38:30 -070014000 WDI_ControlBlockType* pWDICtx,
14001 WDI_EventInfoType* pEventData
14002)
14003{
14004 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
14005 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014006 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014007 wpt_uint16 usDataOffset = 0;
14008 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014009 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14011
14012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014014 -------------------------------------------------------------------------*/
14015 if (( NULL == pEventData ) ||
14016 ( NULL == pEventData->pEventData) ||
14017 ( NULL == pEventData->pCBfnc))
14018 {
14019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014020 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014021 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014022 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014023 }
14024
Jeff Johnsone7245742012-09-05 17:12:55 -070014025 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014026 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014027 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014028 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14029 /*-----------------------------------------------------------------------
14030 Get message buffer
14031 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014032 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14033 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014034 sizeof(halSetP2PGONOAParams),
14035 &pSendBuffer, &usDataOffset, &usSendSize))||
14036 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14037 {
14038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014039 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014040 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14041 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014042 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014043 }
14044
Jeff Johnsone7245742012-09-05 17:12:55 -070014045 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014046 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014047 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014048 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14049 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014050 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014051 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014052 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014053 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014054 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014055 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014056 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014057 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14058
Jeff Johnsone7245742012-09-05 17:12:55 -070014059 wpalMemoryCopy( pSendBuffer+usDataOffset,
14060 &halSetP2PGONOAParams,
14061 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014062
14063 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014064 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014065
14066 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014067 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014069 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14070 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14071 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014072}/*WDI_ProcessP2PGONOAReq*/
14073
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014074#ifdef FEATURE_WLAN_TDLS
14075
14076/**
14077 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14078 allows it)
14079
14080 @param pWDICtx: pointer to the WLAN DAL context
14081 pEventData: pointer to the event information structure
14082
14083 @see
14084 @return Result of the function call
14085*/
14086WDI_Status
14087WDI_ProcessTdlsLinkEstablishReq
14088(
14089 WDI_ControlBlockType* pWDICtx,
14090 WDI_EventInfoType* pEventData
14091)
14092{
14093 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14094 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14095 wpt_uint8* pSendBuffer = NULL;
14096 wpt_uint16 usDataOffset = 0;
14097 wpt_uint16 usSendSize = 0;
14098
14099 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14100 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14101
14102 /*-------------------------------------------------------------------------
14103 Sanity check
14104 -------------------------------------------------------------------------*/
14105 if (( NULL == pEventData ) ||
14106 ( NULL == pEventData->pEventData) ||
14107 ( NULL == pEventData->pCBfnc))
14108 {
14109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14110 "%s: Invalid parameters", __func__);
14111 WDI_ASSERT(0);
14112 return WDI_STATUS_E_FAILURE;
14113 }
14114 pwdiTDLSLinkEstablishReqParams =
14115 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14116 wdiTDLSLinkEstablishReqRspCb =
14117 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14118
14119
14120 /*-----------------------------------------------------------------------
14121 Get message buffer
14122 -----------------------------------------------------------------------*/
14123 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14124 WDI_TDLS_LINK_ESTABLISH_REQ,
14125 sizeof(halSetTDLSLinkEstablishParams),
14126 &pSendBuffer, &usDataOffset, &usSendSize))||
14127 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14128 {
14129 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014130 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014131 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14132 WDI_ASSERT(0);
14133 return WDI_STATUS_E_FAILURE;
14134 }
14135
14136 halSetTDLSLinkEstablishParams.staIdx =
14137 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14138 halSetTDLSLinkEstablishParams.bIsResponder =
14139 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14140 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14141 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14142 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14143 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14144 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14145 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14146 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14147 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14148 halSetTDLSLinkEstablishParams.aAck = 0;
14149 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14150 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14151 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014152 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14153 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14154
14155 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14156 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14157 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14158 halSetTDLSLinkEstablishParams.validChannelsLen =
14159 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14160
14161 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14162 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14163 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14164 halSetTDLSLinkEstablishParams.validOperClassesLen =
14165 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014166
14167 wpalMemoryCopy( pSendBuffer+usDataOffset,
14168 &halSetTDLSLinkEstablishParams,
14169 sizeof(halSetTDLSLinkEstablishParams));
14170
14171 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14172 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14173
14174 /*-------------------------------------------------------------------------
14175 Send Update Probe Resp Template Request to HAL
14176 -------------------------------------------------------------------------*/
14177 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14178 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14179 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14180 return 0;
14181}/*WDI_ProcessTdlsLinkEstablishReq*/
14182
14183
Atul Mittalc0f739f2014-07-31 13:47:47 +053014184/**
14185 @brief sends the channel switch command to f/w (called when Main FSM
14186 allows it)
14187
14188 @param pWDICtx: pointer to the WLAN DAL context
14189 pEventData: pointer to the event information structure
14190
14191 @see
14192 @return Result of the function call
14193*/
14194WDI_Status
14195WDI_ProcessTdlsChanSwitchReq
14196(
14197 WDI_ControlBlockType* pWDICtx,
14198 WDI_EventInfoType* pEventData
14199)
14200{
14201 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14202 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14203 wpt_uint8* pSendBuffer = NULL;
14204 wpt_uint16 usDataOffset = 0;
14205 wpt_uint16 usSendSize = 0;
14206 //WDI_Status wdiStatus;
14207 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14208 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14209
14210 /*-------------------------------------------------------------------------
14211 Sanity check
14212 -------------------------------------------------------------------------*/
14213 if (( NULL == pEventData ) ||
14214 ( NULL == pEventData->pEventData))
14215 {
14216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14217 "%s: Invalid parameters", __func__);
14218 WDI_ASSERT(0);
14219 return WDI_STATUS_E_FAILURE;
14220 }
14221 pwdiTDLSChanSwitchReqParams =
14222 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14223 wdiTDLSChanSwitchReqRspCb =
14224 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14225
14226 /*-----------------------------------------------------------------------
14227 Get message buffer
14228 -----------------------------------------------------------------------*/
14229 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14230 WDI_TDLS_CHAN_SWITCH_REQ,
14231 sizeof(halSetTDLSChanSwitchParams),
14232 &pSendBuffer, &usDataOffset, &usSendSize))||
14233 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14234 {
14235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14236 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14237 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14238 WDI_ASSERT(0);
14239 return WDI_STATUS_E_FAILURE;
14240 }
14241
14242 halSetTDLSChanSwitchParams.staIdx =
14243 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14244 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14245 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14246 halSetTDLSChanSwitchParams.targetOperClass =
14247 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14248 halSetTDLSChanSwitchParams.targetChannel =
14249 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14250 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14251 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14252 wpalMemoryCopy( pSendBuffer+usDataOffset,
14253 &halSetTDLSChanSwitchParams,
14254 sizeof(halSetTDLSChanSwitchParams));
14255
14256 pWDICtx->wdiReqStatusCB = NULL;
14257 pWDICtx->pReqStatusUserData = NULL;
14258
14259 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14260 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14261 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14262}/*WDI_ProcessTdlsChanSwitchReq*/
14263
14264#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014265
Jeff Johnson295189b2012-06-20 16:38:30 -070014266
14267
14268/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014269 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014270 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014271 @param None
14272
14273 @see
14274 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014275*/
14276void
14277WDI_SetPowerStateCb
14278(
14279 wpt_status status,
14280 unsigned int dxePhyAddr,
14281 void *pContext
14282)
14283{
14284 wpt_status wptStatus;
14285 WDI_ControlBlockType *pCB = NULL;
14286 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014287 /*
14288 * Trigger the event to bring the Enter BMPS req function to come
14289 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014290*/
14291 if( NULL != pContext )
14292 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014293 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014294 }
14295 else
14296 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014297 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014298 pCB = &gWDICb;
14299 }
Mihir Shetea4306052014-03-25 00:02:54 +053014300
14301 if(eWLAN_PAL_STATUS_SUCCESS == status )
14302 {
14303 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14304 }
14305 else
14306 {
14307 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14308 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014309 pCB->dxePhyAddr = dxePhyAddr;
14310 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14311 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14312 {
14313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14314 "Failed to set an event");
14315
Jeff Johnsone7245742012-09-05 17:12:55 -070014316 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014317 }
14318 return;
14319}
14320
14321
14322/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014323 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014324 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014325
14326 @param pWDICtx: pointer to the WLAN DAL context
14327 pEventData: pointer to the event information structure
14328
Jeff Johnson295189b2012-06-20 16:38:30 -070014329 @see
14330 @return Result of the function call
14331*/
14332WDI_Status
14333WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014334(
Jeff Johnson295189b2012-06-20 16:38:30 -070014335 WDI_ControlBlockType* pWDICtx,
14336 WDI_EventInfoType* pEventData
14337)
14338{
Jeff Johnson43971f52012-07-17 12:26:56 -070014339 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014340 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014341 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014342 wpt_uint16 usDataOffset = 0;
14343 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014344 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014345 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14346
14347 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014348 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014349 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014350 if ((NULL == pEventData ) ||
14351 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14352 (NULL == (pwdiEnterImpsReqParams =
14353 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014354 {
14355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014358 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014359 }
14360
14361 /*-----------------------------------------------------------------------
14362 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014363 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014366 0,
14367 &pSendBuffer, &usDataOffset, &usSendSize))||
14368 ( usSendSize < (usDataOffset )))
14369 {
14370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014371 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014372 pEventData, wdiEnterImpsRspCb);
14373 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014374 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014375 }
14376
14377 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014378 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14379 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014380 {
14381 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14382 "WDI Init failed to reset an event");
14383
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014385 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014386 }
14387
14388 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014389 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14390 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014392 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014393 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014394 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014395 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014396
14397 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014398 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014399 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014400 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14401 WDI_SET_POWER_STATE_TIMEOUT);
14402 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014403 {
14404 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14405 "WDI Init failed to wait on an event");
14406
Karthick S1fa70262015-08-20 13:28:14 +053014407 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014408 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014409 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014410 }
14411
Mihir Shetea4306052014-03-25 00:02:54 +053014412 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14413 {
14414 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14415 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14416
14417 goto fail;
14418 }
14419
14420 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14421 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014423 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014424 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014425 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14426 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014427
14428fail:
14429 // Release the message buffer so we don't leak
14430 wpalMemoryFree(pSendBuffer);
14431
14432failRequest:
14433 //WDA should have failure check to avoid the memory leak
14434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014435}/*WDI_ProcessEnterImpsReq*/
14436
14437/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014438 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014439 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014440
14441 @param pWDICtx: pointer to the WLAN DAL context
14442 pEventData: pointer to the event information structure
14443
Jeff Johnson295189b2012-06-20 16:38:30 -070014444 @see
14445 @return Result of the function call
14446*/
14447WDI_Status
14448WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014449(
Jeff Johnson295189b2012-06-20 16:38:30 -070014450 WDI_ControlBlockType* pWDICtx,
14451 WDI_EventInfoType* pEventData
14452)
14453{
14454 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014455 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014456 wpt_uint16 usDataOffset = 0;
14457 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014458 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14460
14461 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014462 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014463 -------------------------------------------------------------------------*/
14464 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014465 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14466 (NULL == (pwdiExitImpsReqParams =
14467 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014468 {
14469 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014470 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014471 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014472 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 }
14474
14475 /*-----------------------------------------------------------------------
14476 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014477 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014478 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014479 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014480 0,
14481 &pSendBuffer, &usDataOffset, &usSendSize))||
14482 ( usSendSize < (usDataOffset )))
14483 {
14484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014485 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 pEventData, wdiExitImpsRspCb);
14487 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014488 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014489 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014490 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14491 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014492 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014493 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014494 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14496 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014497}/*WDI_ProcessExitImpsReq*/
14498
14499/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014500 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014501 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014502
14503 @param pWDICtx: pointer to the WLAN DAL context
14504 pEventData: pointer to the event information structure
14505
Jeff Johnson295189b2012-06-20 16:38:30 -070014506 @see
14507 @return Result of the function call
14508*/
14509WDI_Status
14510WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014511(
Jeff Johnson295189b2012-06-20 16:38:30 -070014512 WDI_ControlBlockType* pWDICtx,
14513 WDI_EventInfoType* pEventData
14514)
14515{
14516 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14517 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014518 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014519 wpt_uint16 usDataOffset = 0;
14520 wpt_uint16 usSendSize = 0;
14521 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014522 wpt_status wptStatus;
14523
Jeff Johnson295189b2012-06-20 16:38:30 -070014524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14525
14526 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014527 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014528 -------------------------------------------------------------------------*/
14529 if (( NULL == pEventData ) ||
14530 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14531 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14532 {
14533 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014534 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014535 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014536 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 }
14538
14539 /*-----------------------------------------------------------------------
14540 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014541 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014542 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014543 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014544 sizeof(enterBmpsReq),
14545 &pSendBuffer, &usDataOffset, &usSendSize))||
14546 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14547 {
14548 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014549 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14551 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014552 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014553 }
14554
14555 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014556 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14557 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 {
14559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14560 "WDI Init failed to reset an event");
14561
Jeff Johnsone7245742012-09-05 17:12:55 -070014562 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014563 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014564 }
14565
14566 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014567 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14568 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14569 {
14570 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014571 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014572 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014573 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014574 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014575
14576/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014577 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014578 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014579 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14580 WDI_SET_POWER_STATE_TIMEOUT);
14581 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014582 {
14583 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14584 "WDI Init failed to wait on an event");
14585
Karthick S1fa70262015-08-20 13:28:14 +053014586 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014588 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014589 }
14590
14591 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14592
14593 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14594 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14595 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14596 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14597
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014598 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14600 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14601 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14602
14603 wpalMemoryCopy( pSendBuffer+usDataOffset,
14604 &enterBmpsReq,
14605 sizeof(enterBmpsReq));
14606
14607 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014608 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014609
14610 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014611 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014612 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014613 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14614 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014615
14616fail:
14617 // Release the message buffer so we don't leak
14618 wpalMemoryFree(pSendBuffer);
14619
14620failRequest:
14621 //WDA should have failure check to avoid the memory leak
14622 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014623}/*WDI_ProcessEnterBmpsReq*/
14624
14625/**
14626 @brief Process Exit BMPS Request function (called when Main FSM
14627 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014628
14629 @param pWDICtx: pointer to the WLAN DAL context
14630 pEventData: pointer to the event information structure
14631
Jeff Johnson295189b2012-06-20 16:38:30 -070014632 @see
14633 @return Result of the function call
14634*/
14635WDI_Status
14636WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014637(
Jeff Johnson295189b2012-06-20 16:38:30 -070014638 WDI_ControlBlockType* pWDICtx,
14639 WDI_EventInfoType* pEventData
14640)
14641{
14642 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14643 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014644 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 wpt_uint16 usDataOffset = 0;
14646 wpt_uint16 usSendSize = 0;
14647 tHalExitBmpsReqParams exitBmpsReq;
14648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14649
14650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014651 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014652 -------------------------------------------------------------------------*/
14653 if (( NULL == pEventData ) ||
14654 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14655 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14656 {
14657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014661 }
14662
14663 /*-----------------------------------------------------------------------
14664 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014665 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014666 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014667 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014668 sizeof(exitBmpsReq),
14669 &pSendBuffer, &usDataOffset, &usSendSize))||
14670 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14671 {
14672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014673 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014674 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14675 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014677 }
14678 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14679
Jeff Johnsone7245742012-09-05 17:12:55 -070014680 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14681
Jeff Johnson295189b2012-06-20 16:38:30 -070014682 wpalMemoryCopy( pSendBuffer+usDataOffset,
14683 &exitBmpsReq,
14684 sizeof(exitBmpsReq));
14685
14686 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014687 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014688
14689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014690 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014691 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014692 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14693 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014694}/*WDI_ProcessExitBmpsReq*/
14695
14696/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014697 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014698 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014699
14700 @param pWDICtx: pointer to the WLAN DAL context
14701 pEventData: pointer to the event information structure
14702
Jeff Johnson295189b2012-06-20 16:38:30 -070014703 @see
14704 @return Result of the function call
14705*/
14706WDI_Status
14707WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014708(
Jeff Johnson295189b2012-06-20 16:38:30 -070014709 WDI_ControlBlockType* pWDICtx,
14710 WDI_EventInfoType* pEventData
14711)
14712{
14713 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14714 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014715 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014716 wpt_uint16 usDataOffset = 0;
14717 wpt_uint16 usSendSize = 0;
14718 tUapsdReqParams enterUapsdReq;
14719 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14720
14721 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014722 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014723 -------------------------------------------------------------------------*/
14724 if (( NULL == pEventData ) ||
14725 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14726 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14727 {
14728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014729 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014730 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 }
14733
14734 /*-----------------------------------------------------------------------
14735 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014736 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014737 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 sizeof(enterUapsdReq),
14740 &pSendBuffer, &usDataOffset, &usSendSize))||
14741 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14742 {
14743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014744 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014745 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014748 }
14749
14750 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14751 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14752 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14753 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14754 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14755 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14756 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14757 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014758 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014759
Jeff Johnsone7245742012-09-05 17:12:55 -070014760 wpalMemoryCopy( pSendBuffer+usDataOffset,
14761 &enterUapsdReq,
14762 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014763
14764 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014765 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014766
14767 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014768 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014770 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14771 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014772}/*WDI_ProcessEnterUapsdReq*/
14773
14774/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014775 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014776 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014777
14778 @param pWDICtx: pointer to the WLAN DAL context
14779 pEventData: pointer to the event information structure
14780
Jeff Johnson295189b2012-06-20 16:38:30 -070014781 @see
14782 @return Result of the function call
14783*/
14784WDI_Status
14785WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014786(
Jeff Johnson295189b2012-06-20 16:38:30 -070014787 WDI_ControlBlockType* pWDICtx,
14788 WDI_EventInfoType* pEventData
14789)
14790{
14791 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014792 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014793 wpt_uint16 usDataOffset = 0;
14794 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014795 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14796 wpt_uint8 bssIdx = 0;
14797
Jeff Johnson295189b2012-06-20 16:38:30 -070014798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14799
14800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014802 -------------------------------------------------------------------------*/
14803 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014804 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014805 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14806 {
14807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014808 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014809 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014810 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014811 }
14812
14813 /*-----------------------------------------------------------------------
14814 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014815 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014816 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014818 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014820 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014821 {
14822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014823 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 pEventData, wdiExitUapsdRspCb);
14825 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014826 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014827 }
14828
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014829 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14830
14831 wpalMemoryCopy( pSendBuffer+usDataOffset,
14832 &bssIdx,
14833 sizeof(wpt_uint8));
14834
14835 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14836 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14837
Jeff Johnson295189b2012-06-20 16:38:30 -070014838 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014839 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014840 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014841 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14842 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014843}/*WDI_ProcessExitUapsdReq*/
14844
14845/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014846 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014847 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014848
14849 @param pWDICtx: pointer to the WLAN DAL context
14850 pEventData: pointer to the event information structure
14851
Jeff Johnson295189b2012-06-20 16:38:30 -070014852 @see
14853 @return Result of the function call
14854*/
14855WDI_Status
14856WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014857(
Jeff Johnson295189b2012-06-20 16:38:30 -070014858 WDI_ControlBlockType* pWDICtx,
14859 WDI_EventInfoType* pEventData
14860)
14861{
14862 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14863 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014864 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014865 wpt_uint16 usDataOffset = 0;
14866 wpt_uint16 usSendSize = 0;
14867 tUapsdInfo uapsdAcParamsReq;
14868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14869
14870 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014871 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014872 -------------------------------------------------------------------------*/
14873 if (( NULL == pEventData ) ||
14874 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14875 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14876 {
14877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014878 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014879 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014880 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014881 }
14882
14883 /*-----------------------------------------------------------------------
14884 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014885 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014886 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014888 sizeof(uapsdAcParamsReq),
14889 &pSendBuffer, &usDataOffset, &usSendSize))||
14890 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14891 {
14892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014893 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014894 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014897 }
14898
14899 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14900 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14901 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14902 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14903 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14904 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14905
Jeff Johnsone7245742012-09-05 17:12:55 -070014906 wpalMemoryCopy( pSendBuffer+usDataOffset,
14907 &uapsdAcParamsReq,
14908 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014909
14910 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014911 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014912
14913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014914 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014915 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014916 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14917 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014918}/*WDI_ProcessSetUapsdAcParamsReq*/
14919
14920/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014921 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014922 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014923
14924 @param pWDICtx: pointer to the WLAN DAL context
14925 pEventData: pointer to the event information structure
14926
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 @see
14928 @return Result of the function call
14929*/
14930WDI_Status
14931WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014932(
Jeff Johnson295189b2012-06-20 16:38:30 -070014933 WDI_ControlBlockType* pWDICtx,
14934 WDI_EventInfoType* pEventData
14935)
14936{
14937 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
14938 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014939 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014940 wpt_uint16 usDataOffset = 0;
14941 wpt_uint16 usSendSize = 0;
14942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14943
14944 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014945 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014946 -------------------------------------------------------------------------*/
14947 if (( NULL == pEventData ) ||
14948 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
14949 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
14950 {
14951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014952 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014954 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014955 }
14956
14957 /*-----------------------------------------------------------------------
14958 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014959 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014960 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014961 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014962 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
14963 &pSendBuffer, &usDataOffset, &usSendSize))||
14964 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
14965 {
14966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014967 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
14969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014971 }
14972
Jeff Johnsone7245742012-09-05 17:12:55 -070014973 wpalMemoryCopy( pSendBuffer+usDataOffset,
14974 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
14975 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070014976
14977 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014978 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014979
14980 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014981 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014982 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14984 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014985}/*WDI_ProcessUpdateUapsdParamsReq*/
14986
14987/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014988 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070014989 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014990
14991 @param pWDICtx: pointer to the WLAN DAL context
14992 pEventData: pointer to the event information structure
14993
Jeff Johnson295189b2012-06-20 16:38:30 -070014994 @see
14995 @return Result of the function call
14996*/
14997WDI_Status
14998WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014999(
Jeff Johnson295189b2012-06-20 16:38:30 -070015000 WDI_ControlBlockType* pWDICtx,
15001 WDI_EventInfoType* pEventData
15002)
15003{
15004 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
15005 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015006 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015007 wpt_uint16 usDataOffset = 0;
15008 wpt_uint16 usSendSize = 0;
15009 tHalConfigureRxpFilterReqParams halRxpFilterParams;
15010
15011 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15012
15013 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015014 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015015 -------------------------------------------------------------------------*/
15016 if (( NULL == pEventData ) ||
15017 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15018 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15019 {
15020 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015021 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015024 }
15025
15026 /*-----------------------------------------------------------------------
15027 Get message buffer
15028 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015029 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015030 sizeof(halRxpFilterParams),
15031 &pSendBuffer, &usDataOffset, &usSendSize))||
15032 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15033 {
15034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015035 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015036 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15037 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015038 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015039 }
15040
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015043 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015044 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15045
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 wpalMemoryCopy( pSendBuffer+usDataOffset,
15047 &halRxpFilterParams,
15048 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015049
15050 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015051 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015052
15053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015054 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015056 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15057 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015058}/*WDI_ProcessConfigureRxpFilterReq*/
15059
15060/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015061 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015062 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015063
15064 @param pWDICtx: pointer to the WLAN DAL context
15065 pEventData: pointer to the event information structure
15066
Jeff Johnson295189b2012-06-20 16:38:30 -070015067 @see
15068 @return Result of the function call
15069*/
15070WDI_Status
15071WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015072(
Jeff Johnson295189b2012-06-20 16:38:30 -070015073 WDI_ControlBlockType* pWDICtx,
15074 WDI_EventInfoType* pEventData
15075)
15076{
15077 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15078 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015079 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015080 wpt_uint16 usDataOffset = 0;
15081 wpt_uint16 usSendSize = 0;
15082 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15083
15084 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015085 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015086 -------------------------------------------------------------------------*/
15087 if (( NULL == pEventData ) ||
15088 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15089 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15090 {
15091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015092 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015093 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015094 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015095 }
15096
15097 /*-----------------------------------------------------------------------
15098 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015099 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015101 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015102 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15103 &pSendBuffer, &usDataOffset, &usSendSize))||
15104 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15105 {
15106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015107 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015108 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015111 }
15112
Jeff Johnsone7245742012-09-05 17:12:55 -070015113 wpalMemoryCopy( pSendBuffer+usDataOffset,
15114 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15115 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15116 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15117 &pwdiBeaconFilterParams->aFilters[0],
15118 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015119
15120 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015121 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015122
15123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015124 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015126 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15127 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015128}/*WDI_ProcessSetBeaconFilterReq*/
15129
15130/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015131 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015132 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015133
15134 @param pWDICtx: pointer to the WLAN DAL context
15135 pEventData: pointer to the event information structure
15136
Jeff Johnson295189b2012-06-20 16:38:30 -070015137 @see
15138 @return Result of the function call
15139*/
15140WDI_Status
15141WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015142(
Jeff Johnson295189b2012-06-20 16:38:30 -070015143 WDI_ControlBlockType* pWDICtx,
15144 WDI_EventInfoType* pEventData
15145)
15146{
15147 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15148 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015149 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015150 wpt_uint16 usDataOffset = 0;
15151 wpt_uint16 usSendSize = 0;
15152 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15153
15154 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015155 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015156 -------------------------------------------------------------------------*/
15157 if (( NULL == pEventData ) ||
15158 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15159 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15160 {
15161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015162 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015163 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015164 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015165 }
15166
15167 /*-----------------------------------------------------------------------
15168 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015169 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015170 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015171 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015172 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15173 &pSendBuffer, &usDataOffset, &usSendSize))||
15174 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15175 {
15176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015177 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015178 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15179 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015180 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015181 }
15182
Jeff Johnsone7245742012-09-05 17:12:55 -070015183 wpalMemoryCopy( pSendBuffer+usDataOffset,
15184 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15185 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015186
15187 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015189
15190 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015191 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015192 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015193 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15194 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015195}
15196
15197/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015198 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015199 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015200
15201 @param pWDICtx: pointer to the WLAN DAL context
15202 pEventData: pointer to the event information structure
15203
Jeff Johnson295189b2012-06-20 16:38:30 -070015204 @see
15205 @return Result of the function call
15206*/
15207WDI_Status
15208WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015209(
Jeff Johnson295189b2012-06-20 16:38:30 -070015210 WDI_ControlBlockType* pWDICtx,
15211 WDI_EventInfoType* pEventData
15212)
15213{
15214 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15215 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015216 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015217 wpt_uint16 usDataOffset = 0;
15218 wpt_uint16 usSendSize = 0;
15219 tHalRSSIThresholds rssiThresholdsReq;
15220 WDI_Status ret_status = 0;
15221 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15222
15223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015224 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015225 -------------------------------------------------------------------------*/
15226 if (( NULL == pEventData ) ||
15227 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15228 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15229 {
15230 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015231 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015232 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015233 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015234 }
15235
15236 /*-----------------------------------------------------------------------
15237 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015238 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015239 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015240 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015241 sizeof(rssiThresholdsReq),
15242 &pSendBuffer, &usDataOffset, &usSendSize))||
15243 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15244 {
15245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015246 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015247 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 }
15251
Jeff Johnsone7245742012-09-05 17:12:55 -070015252 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015253 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015254 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015255 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015260 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015261 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015262 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015263 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015264 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015266 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015267 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015268 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015269 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015271 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15272
Jeff Johnsone7245742012-09-05 17:12:55 -070015273 wpalMemoryCopy( pSendBuffer+usDataOffset,
15274 &rssiThresholdsReq,
15275 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015276
15277 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015279
15280 /*-------------------------------------------------------------------------
15281 Send Set threshold req to HAL
15282 -------------------------------------------------------------------------*/
15283 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15284 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15285 {
15286 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15287 // req. Then as a result of processing the threshold cross ind, we trigger
15288 // a Set threshold req, then we need to indicate to WDI that it needs to
15289 // go to busy state as a result of the indication as we sent a req in the
15290 // same WDI context.
15291 // Hence expected state transition is to busy.
15292 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15293 }
15294
15295 return ret_status;
15296}
15297
15298/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015299 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015300 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015301
15302 @param pWDICtx: pointer to the WLAN DAL context
15303 pEventData: pointer to the event information structure
15304
Jeff Johnson295189b2012-06-20 16:38:30 -070015305 @see
15306 @return Result of the function call
15307*/
15308WDI_Status
15309WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015310(
Jeff Johnson295189b2012-06-20 16:38:30 -070015311 WDI_ControlBlockType* pWDICtx,
15312 WDI_EventInfoType* pEventData
15313)
15314{
15315 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15316 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015317 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015318 wpt_uint16 usDataOffset = 0;
15319 wpt_uint16 usSendSize = 0;
15320 tHalHostOffloadReq hostOffloadParams;
15321 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015322 wpt_uint8 ucCurrentBSSSesIdx = 0;
15323 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015324
15325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15326
15327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015328 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015329 -------------------------------------------------------------------------*/
15330 if (( NULL == pEventData ) ||
15331 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15332 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15333 {
15334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015336 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015337 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015338 }
15339
15340 /*-----------------------------------------------------------------------
15341 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015342 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015343 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015344 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015345 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15346 &pSendBuffer, &usDataOffset, &usSendSize))||
15347 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15348 {
15349 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015350 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015351 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15352 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015353 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 }
15355
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015356 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15357 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15358 &pBSSSes);
15359 if ( NULL == pBSSSes )
15360 {
c_hpothu86feba52014-10-28 15:51:18 +053015361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015362 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15363 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015364 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015365 }
15366
Jeff Johnson295189b2012-06-20 16:38:30 -070015367 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15368 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015369
Jeff Johnson295189b2012-06-20 16:38:30 -070015370 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15371 {
15372 // ARP Offload
15373 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15374 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15375 4);
15376 }
15377 else
15378 {
15379 // NS Offload
15380 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15381 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15382 16);
15383
15384#ifdef WLAN_NS_OFFLOAD
15385 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15386 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15387 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15388 16);
15389 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15390 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15391 16);
15392 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15393 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15394 16);
15395 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15396 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15397 16);
15398 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15399 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15400 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015401 nsOffloadParams.srcIPv6AddrValid =
15402 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15403
15404 nsOffloadParams.targetIPv6Addr1Valid =
15405 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15406
15407 nsOffloadParams.targetIPv6Addr2Valid =
15408 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15409
15410 nsOffloadParams.slotIndex =
15411 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015412
Jeff Johnson295189b2012-06-20 16:38:30 -070015413#endif // WLAN_NS_OFFLOAD
15414 }
15415
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015416 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15417
Jeff Johnson295189b2012-06-20 16:38:30 -070015418 // copy hostOffloadParams into pSendBuffer
15419 wpalMemoryCopy( pSendBuffer+usDataOffset,
15420 &hostOffloadParams,
15421 sizeof(hostOffloadParams));
15422
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015423 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015424 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015425 // copy nsOffloadParams into pSendBuffer
15426 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015427 &nsOffloadParams,
15428 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015429 }
15430 else
15431 {
15432#ifdef WLAN_NS_OFFLOAD
15433 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15434 {
15435 // copy nsOffloadParams into pSendBuffer
15436 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15437 &nsOffloadParams,
15438 sizeof(nsOffloadParams));
15439 }
15440#endif
15441 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015442
15443 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015444 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015445
15446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015447 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015448 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015449 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15450 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015451
15452fail:
15453 // Release the message buffer so we don't leak
15454 wpalMemoryFree(pSendBuffer);
15455
15456failRequest:
15457 //WDA should have failure check to avoid the memory leak
15458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015459}/*WDI_ProcessHostOffloadReq*/
15460
15461/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015462 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015463 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015464
15465 @param pWDICtx: pointer to the WLAN DAL context
15466 pEventData: pointer to the event information structure
15467
Jeff Johnson295189b2012-06-20 16:38:30 -070015468 @see
15469 @return Result of the function call
15470*/
15471WDI_Status
15472WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015473(
Jeff Johnson295189b2012-06-20 16:38:30 -070015474 WDI_ControlBlockType* pWDICtx,
15475 WDI_EventInfoType* pEventData
15476)
15477{
15478 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15479 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015480 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015481 wpt_uint16 usDataOffset = 0;
15482 wpt_uint16 usSendSize = 0;
15483 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015484 wpt_uint8 ucCurrentBSSSesIdx = 0;
15485 WDI_BSSSessionType* pBSSSes = NULL;
15486
Jeff Johnson295189b2012-06-20 16:38:30 -070015487 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15488
15489 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015490 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015491 -------------------------------------------------------------------------*/
15492 if (( NULL == pEventData ) ||
15493 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15494 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15495 {
15496 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15497 "Invalid parameters in Keep Alive req");
15498 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015499 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015500 }
15501
15502 /*-----------------------------------------------------------------------
15503 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015504 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015506 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015507 sizeof(keepAliveReq),
15508 &pSendBuffer, &usDataOffset, &usSendSize))||
15509 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15510 {
15511 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015512 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015513 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15514 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015515 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015516 }
15517
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015518 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15519 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15520 &pBSSSes);
15521 if ( NULL == pBSSSes )
15522 {
15523 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015524 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015525 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015526 }
15527
Jeff Johnson295189b2012-06-20 16:38:30 -070015528 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15529 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15530
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015531 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015532
Jeff Johnson295189b2012-06-20 16:38:30 -070015533 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15534 {
15535 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15536 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15537 HAL_IPV4_ADDR_LEN);
15538 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15539 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015540 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015541 wpalMemoryCopy(keepAliveReq.destMacAddr,
15542 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15543 HAL_MAC_ADDR_LEN);
15544 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015545
15546 wpalMemoryCopy( pSendBuffer+usDataOffset,
15547 &keepAliveReq,
15548 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015549
15550 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015551 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015552
15553 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015554 "Process keep alive req time period %d",
15555 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015556
15557 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015558 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015559
15560 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15561 "Sending keep alive req to HAL");
15562
15563 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015564 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015565 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015566 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15567 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015568
15569fail:
15570 // Release the message buffer so we don't leak
15571 wpalMemoryFree(pSendBuffer);
15572
15573failRequest:
15574 //WDA should have failure check to avoid the memory leak
15575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015576}/*WDI_ProcessKeepAliveReq*/
15577
15578
15579/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015580 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015581 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015582
15583 @param pWDICtx: pointer to the WLAN DAL context
15584 pEventData: pointer to the event information structure
15585
Jeff Johnson295189b2012-06-20 16:38:30 -070015586 @see
15587 @return Result of the function call
15588*/
15589WDI_Status
15590WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015591(
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 WDI_ControlBlockType* pWDICtx,
15593 WDI_EventInfoType* pEventData
15594)
15595{
15596 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15597 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015598 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015599 wpt_uint16 usDataOffset = 0;
15600 wpt_uint16 usSendSize = 0;
15601 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015602 wpt_uint8 ucCurrentBSSSesIdx = 0;
15603 WDI_BSSSessionType* pBSSSes = NULL;
15604
Jeff Johnson295189b2012-06-20 16:38:30 -070015605 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15606
15607 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015608 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015609 -------------------------------------------------------------------------*/
15610 if (( NULL == pEventData ) ||
15611 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15612 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15613 {
15614 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015615 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015616 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015617 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015618 }
15619
15620 /*-----------------------------------------------------------------------
15621 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015622 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015623 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015624 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015625 sizeof(wowlAddBcPtrnReq),
15626 &pSendBuffer, &usDataOffset, &usSendSize))||
15627 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15628 {
15629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015630 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015631 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15632 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015633 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015634 }
15635
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015636 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15637 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15638 &pBSSSes);
15639 if ( NULL == pBSSSes )
15640 {
15641 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015642 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015643 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015644 }
15645
Jeff Johnsone7245742012-09-05 17:12:55 -070015646 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015647 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015648 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015649 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015650 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015651 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015652 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015653 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15654
15655 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15656 {
15657 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15658 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15659 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15660 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15661 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15662 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15663 }
15664 else
15665 {
15666 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15667 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15668 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15669 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15670 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15671 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15672
15673 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15674 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15675 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15676 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15677 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15678 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15679 }
15680
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015681 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15682
Jeff Johnson295189b2012-06-20 16:38:30 -070015683 wpalMemoryCopy( pSendBuffer+usDataOffset,
15684 &wowlAddBcPtrnReq,
15685 sizeof(wowlAddBcPtrnReq));
15686
15687 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015688 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015689
15690 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015691 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015693 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15694 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015695fail:
15696 // Release the message buffer so we don't leak
15697 wpalMemoryFree(pSendBuffer);
15698
15699failRequest:
15700 //WDA should have failure check to avoid the memory leak
15701 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015702}/*WDI_ProcessWowlAddBcPtrnReq*/
15703
15704/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015705 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015706 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015707
15708 @param pWDICtx: pointer to the WLAN DAL context
15709 pEventData: pointer to the event information structure
15710
Jeff Johnson295189b2012-06-20 16:38:30 -070015711 @see
15712 @return Result of the function call
15713*/
15714WDI_Status
15715WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015716(
Jeff Johnson295189b2012-06-20 16:38:30 -070015717 WDI_ControlBlockType* pWDICtx,
15718 WDI_EventInfoType* pEventData
15719)
15720{
15721 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15722 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015723 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015724 wpt_uint16 usDataOffset = 0;
15725 wpt_uint16 usSendSize = 0;
15726 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015727 wpt_uint8 ucCurrentBSSSesIdx = 0;
15728 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015729 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15730
15731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015733 -------------------------------------------------------------------------*/
15734 if (( NULL == pEventData ) ||
15735 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15736 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15737 {
15738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015741 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015742 }
15743
15744 /*-----------------------------------------------------------------------
15745 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015746 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015747 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015748 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015749 sizeof(wowlDelBcPtrnReq),
15750 &pSendBuffer, &usDataOffset, &usSendSize))||
15751 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15752 {
15753 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015754 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015755 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15756 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015757 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015758 }
15759
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015760 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15761 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15762 &pBSSSes);
15763 if ( NULL == pBSSSes )
15764 {
15765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015766 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015767 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015768 }
15769
Jeff Johnsone7245742012-09-05 17:12:55 -070015770 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015771 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015772
15773 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15774
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 wpalMemoryCopy( pSendBuffer+usDataOffset,
15776 &wowlDelBcPtrnReq,
15777 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015778
15779 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015781
15782 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015783 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015784 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015785 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15786 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015787
15788fail:
15789 // Release the message buffer so we don't leak
15790 wpalMemoryFree(pSendBuffer);
15791
15792failRequest:
15793 //WDA should have failure check to avoid the memory leak
15794 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015795}/*WDI_ProcessWowlDelBcPtrnReq*/
15796
15797/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015798 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015799 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015800
15801 @param pWDICtx: pointer to the WLAN DAL context
15802 pEventData: pointer to the event information structure
15803
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 @see
15805 @return Result of the function call
15806*/
15807WDI_Status
15808WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015809(
Jeff Johnson295189b2012-06-20 16:38:30 -070015810 WDI_ControlBlockType* pWDICtx,
15811 WDI_EventInfoType* pEventData
15812)
15813{
15814 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15815 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015816 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015817 wpt_uint16 usDataOffset = 0;
15818 wpt_uint16 usSendSize = 0;
15819 tHalWowlEnterParams wowlEnterReq;
15820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15821
15822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015824 -------------------------------------------------------------------------*/
15825 if (( NULL == pEventData ) ||
15826 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15827 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15828 {
15829 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015830 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015831 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015832 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015833 }
15834
15835 /*-----------------------------------------------------------------------
15836 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015837 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015838 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015839 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015840 sizeof(wowlEnterReq),
15841 &pSendBuffer, &usDataOffset, &usSendSize))||
15842 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15843 {
15844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015845 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015846 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15847 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015848 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015849 }
15850
Kumar Anandaca924e2013-07-22 14:35:34 -070015851 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15852
Jeff Johnsone7245742012-09-05 17:12:55 -070015853 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015854 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015855 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015856 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015857 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015858 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015859 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015860 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015861 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015862 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015863 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015864 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015865 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015866 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015867 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015868 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15869
15870#ifdef WLAN_WAKEUP_EVENTS
15871 wowlEnterReq.ucWoWEAPIDRequestEnable =
15872 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15873
15874 wowlEnterReq.ucWoWEAPOL4WayEnable =
15875 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15876
15877 wowlEnterReq.ucWowNetScanOffloadMatch =
15878 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15879
15880 wowlEnterReq.ucWowGTKRekeyError =
15881 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15882
15883 wowlEnterReq.ucWoWBSSConnLoss =
15884 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15885#endif // WLAN_WAKEUP_EVENTS
15886
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015887 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15888
Jeff Johnson295189b2012-06-20 16:38:30 -070015889 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15890 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15891 sizeof(tSirMacAddr));
15892
Jeff Johnsone7245742012-09-05 17:12:55 -070015893 wpalMemoryCopy( pSendBuffer+usDataOffset,
15894 &wowlEnterReq,
15895 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015896
15897 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015898 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015899
15900 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015901 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015902 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15904 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015905}/*WDI_ProcessWowlEnterReq*/
15906
15907/**
15908 @brief Process Wowl exit Request function (called when Main FSM
15909 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015910
15911 @param pWDICtx: pointer to the WLAN DAL context
15912 pEventData: pointer to the event information structure
15913
Jeff Johnson295189b2012-06-20 16:38:30 -070015914 @see
15915 @return Result of the function call
15916*/
15917WDI_Status
15918WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015919(
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 WDI_ControlBlockType* pWDICtx,
15921 WDI_EventInfoType* pEventData
15922)
15923{
15924 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015925 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 wpt_uint16 usDataOffset = 0;
15928 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015929 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070015930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15931
15932 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015933 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015934 -------------------------------------------------------------------------*/
15935 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015936 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070015937 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
15938 {
15939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015940 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015942 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015943 }
15944
15945 /*-----------------------------------------------------------------------
15946 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015947 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015948 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015949 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015950 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015952 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 {
15954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015955 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015956 pEventData, wdiWowlExitCb);
15957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015959 }
15960
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015961 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
15962
15963 wpalMemoryCopy( pSendBuffer+usDataOffset,
15964 &wowlExitparams,
15965 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015967 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015968 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015969 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15970 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015971}/*WDI_ProcessWowlExitReq*/
15972
15973/**
15974 @brief Process Configure Apps Cpu Wakeup State Request function
15975 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015976
15977 @param pWDICtx: pointer to the WLAN DAL context
15978 pEventData: pointer to the event information structure
15979
Jeff Johnson295189b2012-06-20 16:38:30 -070015980 @see
15981 @return Result of the function call
15982*/
15983WDI_Status
15984WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015985(
Jeff Johnson295189b2012-06-20 16:38:30 -070015986 WDI_ControlBlockType* pWDICtx,
15987 WDI_EventInfoType* pEventData
15988)
15989{
15990 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
15991 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015992 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015993 wpt_uint16 usDataOffset = 0;
15994 wpt_uint16 usSendSize = 0;
15995 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
15996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15997
15998 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015999 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016000 -------------------------------------------------------------------------*/
16001 if (( NULL == pEventData ) ||
16002 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
16003 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
16004 {
16005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016006 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016008 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016009 }
16010
16011 /*-----------------------------------------------------------------------
16012 Get message buffer
16013 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016014 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016015 sizeof(halCfgAppsCpuWakeupStateReqParams),
16016 &pSendBuffer, &usDataOffset, &usSendSize))||
16017 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16018 {
16019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016020 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016021 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16022 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016023 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016024 }
16025
Jeff Johnsone7245742012-09-05 17:12:55 -070016026 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016027 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16028
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 wpalMemoryCopy( pSendBuffer+usDataOffset,
16030 &halCfgAppsCpuWakeupStateReqParams,
16031 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016032
16033 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016034 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016035
16036 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016037 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016038 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016039 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16040 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16041 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016042}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16043
16044#ifdef WLAN_FEATURE_VOWIFI_11R
16045/**
16046 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16047 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016048
16049 @param pWDICtx: pointer to the WLAN DAL context
16050 pEventData: pointer to the event information structure
16051
Jeff Johnson295189b2012-06-20 16:38:30 -070016052 @see
16053 @return Result of the function call
16054*/
16055WDI_Status
16056WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016057(
Jeff Johnson295189b2012-06-20 16:38:30 -070016058 WDI_ControlBlockType* pWDICtx,
16059 WDI_EventInfoType* pEventData
16060)
16061{
16062 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16063 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016064 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016065 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016066 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 wpt_uint16 usDataOffset = 0;
16068 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016069 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016070 wpt_macAddr macBSSID;
16071 tAggrAddTsReq halAggrAddTsReq;
16072 int i;
16073 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16074
16075 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016076 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016077 -------------------------------------------------------------------------*/
16078 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16079 ( NULL == pEventData->pCBfnc ))
16080 {
16081 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016082 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016085 }
16086 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16087 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16088 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16089 /*-------------------------------------------------------------------------
16090 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016091 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016092 -------------------------------------------------------------------------*/
16093 wpalMutexAcquire(&pWDICtx->wptMutex);
16094
16095 /*------------------------------------------------------------------------
16096 Find the BSS for which the request is made and identify WDI session
16097 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016098 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16099 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016100 &macBSSID))
16101 {
16102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016103 "This station does not exist in the WDI Station Table %d",
16104 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016105 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016106 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016107 }
16108
Jeff Johnsone7245742012-09-05 17:12:55 -070016109 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16110 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016112 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16113 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16114 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016115
16116 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016117 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016118 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016119
Jeff Johnson295189b2012-06-20 16:38:30 -070016120 /*------------------------------------------------------------------------
16121 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016122 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016123 ------------------------------------------------------------------------*/
16124 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16125 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16127 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16128 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016129
Jeff Johnsone7245742012-09-05 17:12:55 -070016130 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016131 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016132 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016133 }
16134
16135 wpalMutexRelease(&pWDICtx->wptMutex);
16136 /*-----------------------------------------------------------------------
16137 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016138 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016140 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016141 sizeof(tAggrAddTsParams),
16142 &pSendBuffer, &usDataOffset, &usSendSize))||
16143 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16144 {
16145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016146 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016147 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16148 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016149 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016150 }
16151
Jeff Johnsone7245742012-09-05 17:12:55 -070016152 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016153 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016154 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016155 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16156
16157 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16158 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016159 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016160 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016161 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016162 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16165 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016166 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016167 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16168 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016169 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16171 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016172 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016173 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16174 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016175 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016176 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16177 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16180 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016181 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016182 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16183 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016184 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016185 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16186 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016187 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016188 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016189 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016190 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016191
16192
16193 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016195 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016196 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016197 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016200 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016201 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016202 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016203 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016204 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016205 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016206 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016207 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016208 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016211 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016212 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016214 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016215 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016216 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016221 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016222 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16223 }
16224
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 wpalMemoryCopy( pSendBuffer+usDataOffset,
16226 &halAggrAddTsReq,
16227 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016228
16229 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016230 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016231
16232 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016233 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016235 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016236 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016237 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016238}/*WDI_ProcessAggrAddTSpecReq*/
16239#endif /* WLAN_FEATURE_VOWIFI_11R */
16240
16241/**
16242 @brief Process Shutdown Request function (called when Main FSM
16243 allows it)
16244
16245 @param pWDICtx: pointer to the WLAN DAL context
16246 pEventData: pointer to the event information structure
16247
16248 @see
16249 @return Result of the function call
16250*/
16251WDI_Status
16252WDI_ProcessShutdownReq
16253(
16254 WDI_ControlBlockType* pWDICtx,
16255 WDI_EventInfoType* pEventData
16256 )
16257{
16258 wpt_status wptStatus;
16259
16260
16261 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16262
16263 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016264 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016265 -------------------------------------------------------------------------*/
16266 if ( NULL == pEventData )
16267 {
16268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016269 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016270 WDI_ASSERT(0);
16271 return WDI_STATUS_E_FAILURE;
16272 }
16273
16274 wpalMutexAcquire(&pWDICtx->wptMutex);
16275
16276
16277 gWDIInitialized = eWLAN_PAL_FALSE;
16278 /*! TO DO: stop the data services */
16279 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16280 {
16281 /*Stop the STA Table !UT- check this logic again
16282 It is safer to do it here than on the response - because a stop is imminent*/
16283 WDI_STATableStop(pWDICtx);
16284
16285 /* Stop Transport Driver, DXE */
16286 WDTS_Stop(pWDICtx);
16287 }
16288
16289 /*Clear all pending request*/
16290 WDI_ClearPendingRequests(pWDICtx);
16291 /* Close Data transport*/
16292 /* FTM mode does not open Data Path */
16293 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16294 {
16295 WDTS_Close(pWDICtx);
16296 }
16297 /*Close the STA Table !UT- check this logic again*/
16298 WDI_STATableClose(pWDICtx);
16299 /*close the PAL */
16300 wptStatus = wpalClose(pWDICtx->pPALContext);
16301 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16302 {
16303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16304 "Failed to wpal Close %d", wptStatus);
16305 WDI_ASSERT(0);
16306 }
16307
16308 /*Transition back to init state*/
16309 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16310
16311 wpalMutexRelease(&pWDICtx->wptMutex);
16312
16313 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016314 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016315
16316
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016318}/*WDI_ProcessShutdownReq*/
16319
16320/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016321 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016322========================================================================*/
16323
16324/**
16325 @brief Process Start Response function (called when a response
16326 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016327
16328 @param pWDICtx: pointer to the WLAN DAL context
16329 pEventData: pointer to the event information structure
16330
Jeff Johnson295189b2012-06-20 16:38:30 -070016331 @see
16332 @return Result of the function call
16333*/
16334WDI_Status
16335WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016336(
Jeff Johnson295189b2012-06-20 16:38:30 -070016337 WDI_ControlBlockType* pWDICtx,
16338 WDI_EventInfoType* pEventData
16339)
16340{
16341 WDI_StartRspParamsType wdiRspParams;
16342 WDI_StartRspCb wdiStartRspCb = NULL;
16343
16344 tHalMacStartRspParams* startRspParams;
16345
16346#ifndef HAL_SELF_STA_PER_BSS
16347 WDI_AddStaParams wdiAddSTAParam = {0};
16348#endif
16349 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16350
Jeff Johnsone7245742012-09-05 17:12:55 -070016351 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016353 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016354 -------------------------------------------------------------------------*/
16355 if (( NULL == pEventData ) ||
16356 ( NULL == pEventData->pEventData) ||
16357 ( NULL == wdiStartRspCb ))
16358 {
16359 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016360 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016361 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016362 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016363 }
16364
16365 /*-------------------------------------------------------------------------
16366 Extract response and send it to UMAC
16367 -------------------------------------------------------------------------*/
16368 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16369 {
16370 // not enough data was received
16371 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016372 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016373 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016376 }
16377
16378 /*-------------------------------------------------------------------------
16379 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016380 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016381 -------------------------------------------------------------------------*/
16382 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16383
16384 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16385 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16386 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16387 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16388 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16389 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16390 wdiRspParams.wlanReportedVersion.major =
16391 startRspParams->wcnssWlanVersion.major;
16392 wdiRspParams.wlanReportedVersion.minor =
16393 startRspParams->wcnssWlanVersion.minor;
16394 wdiRspParams.wlanReportedVersion.version =
16395 startRspParams->wcnssWlanVersion.version;
16396 wdiRspParams.wlanReportedVersion.revision =
16397 startRspParams->wcnssWlanVersion.revision;
16398 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16399 startRspParams->wcnssCrmVersionString,
16400 sizeof(wdiRspParams.wcnssSoftwareVersion));
16401 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16402 startRspParams->wcnssWlanVersionString,
16403 sizeof(wdiRspParams.wcnssHardwareVersion));
16404 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16405
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016406 /*Save the HAL Version*/
16407 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16408
Jeff Johnson295189b2012-06-20 16:38:30 -070016409 wpalMutexAcquire(&pWDICtx->wptMutex);
16410 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16411 {
16412 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16413
16414 /*Cache the start response for further use*/
16415 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016416 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016417 sizeof(pWDICtx->wdiCachedStartRspParams));
16418
16419 }
16420 else
16421 {
16422 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16423 "Failed to start device with status %s(%d)",
16424 WDI_getHALStatusMsgString(startRspParams->status),
16425 startRspParams->status);
16426
16427 /*Set the expected state transition to stopped - because the start has
16428 failed*/
16429 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16430
16431 wpalMutexRelease(&pWDICtx->wptMutex);
16432
16433 /*Notify UMAC*/
16434 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016435
Jeff Johnson295189b2012-06-20 16:38:30 -070016436 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016437 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016438
16439 /*Although the response is an error - it was processed by our function
16440 so as far as the caller is concerned this is a succesful reponse processing*/
16441 return WDI_STATUS_SUCCESS;
16442 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016443
Jeff Johnson295189b2012-06-20 16:38:30 -070016444 wpalMutexRelease(&pWDICtx->wptMutex);
16445
16446 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16447 {
16448 /* FTM mode does not need to execute below */
16449 /* Notify UMAC */
16450 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16451 return WDI_STATUS_SUCCESS;
16452 }
16453
16454 /* START the Data transport */
16455 WDTS_startTransport(pWDICtx);
16456
16457 /*Start the STA Table !- check this logic again*/
16458 WDI_STATableStart(pWDICtx);
16459
16460#ifndef HAL_SELF_STA_PER_BSS
16461 /* Store the Self STA Index */
16462 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16463
16464 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16465 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16466 WDI_MAC_ADDR_LEN);
16467
16468 /* At this point add the self-STA */
16469
16470 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16471 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16472 /*! TO DO: wdiAddSTAParam.dpuSig */
16473 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16474 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16475 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16476
16477 //all DPU indices are the same for self STA
16478 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16479 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016480 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016481 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16482 WDI_MAC_ADDR_LEN);
16483 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16484 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16485
16486 /* Note: Since we don't get an explicit config STA request for self STA, we
16487 add the self STA upon receiving the Start response message. But the
16488 self STA entry in the table is deleted when WDI gets an explicit delete STA
16489 request */
16490 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16491#endif
16492
16493 /*Notify UMAC*/
16494 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16495
Jeff Johnsone7245742012-09-05 17:12:55 -070016496 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016497}/*WDI_ProcessStartRsp*/
16498
16499
16500/**
16501 @brief Process Stop Response function (called when a response
16502 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016503
16504 @param pWDICtx: pointer to the WLAN DAL context
16505 pEventData: pointer to the event information structure
16506
Jeff Johnson295189b2012-06-20 16:38:30 -070016507 @see
16508 @return Result of the function call
16509*/
16510WDI_Status
16511WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016512(
Jeff Johnson295189b2012-06-20 16:38:30 -070016513 WDI_ControlBlockType* pWDICtx,
16514 WDI_EventInfoType* pEventData
16515)
16516{
16517 WDI_Status wdiStatus;
16518 WDI_StopRspCb wdiStopRspCb = NULL;
16519
Jeff Johnsone7245742012-09-05 17:12:55 -070016520 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016521 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16522
Jeff Johnsone7245742012-09-05 17:12:55 -070016523 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016526 -------------------------------------------------------------------------*/
16527 if (( NULL == pEventData ) ||
16528 ( NULL == pEventData->pEventData) ||
16529 ( NULL == wdiStopRspCb ))
16530 {
16531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016532 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016533 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016535 }
16536
16537 /*-------------------------------------------------------------------------
16538 Extract response and send it to UMAC
16539 -------------------------------------------------------------------------*/
16540 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16541 {
16542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016543 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016544 pEventData->uEventDataSize);
16545 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016546 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016547 }
16548
16549 /*-------------------------------------------------------------------------
16550 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016551 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016552 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016553 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16554 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016555 sizeof(halMacStopRspMsg.stopRspParams));
16556
Jeff Johnsone7245742012-09-05 17:12:55 -070016557 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016558
16559 wpalMutexAcquire(&pWDICtx->wptMutex);
16560
16561 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016562 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016563 --------------------------------------------------------------------------*/
16564 if ( WDI_STATUS_SUCCESS != wdiStatus )
16565 {
16566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16567 "Failed to stop the device with status %s (%d)",
16568 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16569 halMacStopRspMsg.stopRspParams.status);
16570
Jeff Johnsone7245742012-09-05 17:12:55 -070016571 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016572 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016573
Jeff Johnson295189b2012-06-20 16:38:30 -070016574 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016576 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016577
Jeff Johnson295189b2012-06-20 16:38:30 -070016578 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16579
16580 /*Transition now as WDI may get preempted imediately after it sends
16581 up the Stop Response and it will not get to process the state transition
16582 from Main Rsp function*/
16583 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16584 wpalMutexRelease(&pWDICtx->wptMutex);
16585
16586 /*! TO DO: - STOP the Data transport */
16587
16588 /*Notify UMAC*/
16589 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16590
Jeff Johnsone7245742012-09-05 17:12:55 -070016591 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016592}/*WDI_ProcessStopRsp*/
16593
16594/**
16595 @brief Process Close Rsp function (called when a response
16596 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016597
16598 @param pWDICtx: pointer to the WLAN DAL context
16599 pEventData: pointer to the event information structure
16600
Jeff Johnson295189b2012-06-20 16:38:30 -070016601 @see
16602 @return Result of the function call
16603*/
16604WDI_Status
16605WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016606(
Jeff Johnson295189b2012-06-20 16:38:30 -070016607 WDI_ControlBlockType* pWDICtx,
16608 WDI_EventInfoType* pEventData
16609)
16610{
16611 /*There is no close response comming from HAL - function just kept for
16612 simmetry */
16613 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016614 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016615}/*WDI_ProcessCloseRsp*/
16616
16617
16618/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016619 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016620============================================================================*/
16621
16622/**
16623 @brief Process Init Scan Rsp function (called when a response
16624 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016625
16626 @param pWDICtx: pointer to the WLAN DAL context
16627 pEventData: pointer to the event information structure
16628
Jeff Johnson295189b2012-06-20 16:38:30 -070016629 @see
16630 @return Result of the function call
16631*/
16632WDI_Status
16633WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016634(
Jeff Johnson295189b2012-06-20 16:38:30 -070016635 WDI_ControlBlockType* pWDICtx,
16636 WDI_EventInfoType* pEventData
16637)
16638{
16639 WDI_Status wdiStatus;
16640 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016641 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016642 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016643 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16644
16645 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016646 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016647 -------------------------------------------------------------------------*/
16648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16649 ( NULL == pEventData->pEventData))
16650 {
16651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016654 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016655 }
16656
16657 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16658 if( NULL == wdiInitScanRspCb)
16659 {
16660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016661 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016662 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016664 }
16665
16666 /*-------------------------------------------------------------------------
16667 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016668 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016669 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016670 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16671 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016672 sizeof(halInitScanRspMsg.initScanRspParams));
16673
Jeff Johnsone7245742012-09-05 17:12:55 -070016674 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016675
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016676 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070016677 {
16678 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016679 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16680 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016682 "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 -080016683 WDI_ASSERT(0);
16684 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016685 }
Abhishek Singha7d80b12016-02-03 15:27:20 +053016686 else if (WDI_STATUS_SUCCESS != wdiStatus)
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016687 {
16688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16689 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
16690 wdiStatus, pWDICtx->bInBmps);
16691 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016692
16693 /*Notify UMAC*/
16694 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16695
Jeff Johnsone7245742012-09-05 17:12:55 -070016696 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016697}/*WDI_ProcessInitScanRsp*/
16698
16699
16700/**
16701 @brief Process Start Scan Rsp function (called when a response
16702 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016703
16704 @param pWDICtx: pointer to the WLAN DAL context
16705 pEventData: pointer to the event information structure
16706
Jeff Johnson295189b2012-06-20 16:38:30 -070016707 @see
16708 @return Result of the function call
16709*/
16710WDI_Status
16711WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016712(
Jeff Johnson295189b2012-06-20 16:38:30 -070016713 WDI_ControlBlockType* pWDICtx,
16714 WDI_EventInfoType* pEventData
16715)
16716{
16717 WDI_StartScanRspParamsType wdiStartScanParams;
16718 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016719
16720 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016721 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16722
16723 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016724 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016725 -------------------------------------------------------------------------*/
16726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16727 ( NULL == pEventData->pEventData))
16728 {
16729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016730 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016731 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016733 }
16734
16735 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16736 if( NULL == wdiStartScanRspCb)
16737 {
16738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016739 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016742 }
16743
16744 /*-------------------------------------------------------------------------
16745 Extract response and send it to UMAC
16746 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016747 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16748 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 sizeof(halStartScanRspMsg.startScanRspParams));
16750
16751 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16752 halStartScanRspMsg.startScanRspParams.status);
16753#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016754 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016755 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016756 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016757 halStartScanRspMsg.startScanRspParams.startTSF,
16758 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016759#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016760
16761 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16762 {
16763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16764 "Start scan failed with status %s (%d)",
16765 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16766 halStartScanRspMsg.startScanRspParams.status);
16767 /* send the status to UMAC, don't return from here*/
16768 }
16769
16770 /*Notify UMAC*/
16771 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16772
Jeff Johnsone7245742012-09-05 17:12:55 -070016773 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016774
16775}/*WDI_ProcessStartScanRsp*/
16776
16777
16778/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016779 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016780 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016781
16782 @param pWDICtx: pointer to the WLAN DAL context
16783 pEventData: pointer to the event information structure
16784
Jeff Johnson295189b2012-06-20 16:38:30 -070016785 @see
16786 @return Result of the function call
16787*/
16788WDI_Status
16789WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016790(
Jeff Johnson295189b2012-06-20 16:38:30 -070016791 WDI_ControlBlockType* pWDICtx,
16792 WDI_EventInfoType* pEventData
16793)
16794{
16795 WDI_Status wdiStatus;
16796 tHalEndScanRspMsg halEndScanRspMsg;
16797 WDI_EndScanRspCb wdiEndScanRspCb;
16798 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16799
16800 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016801 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016802 -------------------------------------------------------------------------*/
16803 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16804 ( NULL == pEventData->pEventData))
16805 {
16806 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016807 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016809 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016810 }
16811
16812 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16813
16814 /*-------------------------------------------------------------------------
16815 Extract response and send it to UMAC
16816 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016817 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16818 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016819 sizeof(halEndScanRspMsg.endScanRspParams));
16820
Jeff Johnsone7245742012-09-05 17:12:55 -070016821 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016822
16823 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16824 {
16825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16826 "End Scan failed with status %s (%d )",
16827 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16828 halEndScanRspMsg.endScanRspParams.status);
16829 /* send the status to UMAC, don't return from here*/
16830 }
16831
16832 /*Notify UMAC*/
16833 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16834
Jeff Johnsone7245742012-09-05 17:12:55 -070016835 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016836}/*WDI_ProcessEndScanRsp*/
16837
16838
16839/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016840 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016841 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016842
16843 @param pWDICtx: pointer to the WLAN DAL context
16844 pEventData: pointer to the event information structure
16845
Jeff Johnson295189b2012-06-20 16:38:30 -070016846 @see
16847 @return Result of the function call
16848*/
16849WDI_Status
16850WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016851(
Jeff Johnson295189b2012-06-20 16:38:30 -070016852 WDI_ControlBlockType* pWDICtx,
16853 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016854)
Jeff Johnson295189b2012-06-20 16:38:30 -070016855{
16856 WDI_Status wdiStatus;
16857 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016858
16859 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16861
16862 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016863 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016864 -------------------------------------------------------------------------*/
16865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16866 ( NULL == pEventData->pEventData))
16867 {
16868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016869 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016870 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016871 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 }
16873
16874 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16875
16876 /*-------------------------------------------------------------------------
16877 Extract response and send it to UMAC
16878 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016879 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16880 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016881 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16882
Jeff Johnsone7245742012-09-05 17:12:55 -070016883 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016884
16885 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016886 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016887 halFinishScanRspMsg.finishScanRspParams.status);
16888
16889 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16890 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16891 {
16892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16893 "Finish Scan failed with status %s (%d)",
16894 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16895 halFinishScanRspMsg.finishScanRspParams.status);
16896 /* send the status to UMAC, don't return from here*/
16897 }
16898
16899 /*Notify UMAC*/
16900 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16901
Jeff Johnsone7245742012-09-05 17:12:55 -070016902 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016903}/*WDI_ProcessFinishScanRsp*/
16904
16905/**
16906 @brief Process Join Response function (called when a response
16907 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016908
16909 @param pWDICtx: pointer to the WLAN DAL context
16910 pEventData: pointer to the event information structure
16911
Jeff Johnson295189b2012-06-20 16:38:30 -070016912 @see
16913 @return Result of the function call
16914*/
16915WDI_Status
16916WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016917(
Jeff Johnson295189b2012-06-20 16:38:30 -070016918 WDI_ControlBlockType* pWDICtx,
16919 WDI_EventInfoType* pEventData
16920)
16921{
16922 WDI_Status wdiStatus;
16923 WDI_JoinRspCb wdiJoinRspCb;
16924 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016925
16926 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016927 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16928
16929 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016930 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016931 -------------------------------------------------------------------------*/
16932 if (( NULL == pWDICtx ) ||
16933 ( NULL == pWDICtx->pfncRspCB ) ||
16934 ( NULL == pEventData ) ||
16935 ( NULL == pEventData->pEventData))
16936 {
16937 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016938 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016940 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016941 }
16942
16943 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
16944
16945 /*-------------------------------------------------------------------------
16946 Extract response and send it to UMAC
16947 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016948 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
16949 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016950 sizeof(halJoinRspMsg.joinRspParams));
16951
Jeff Johnsone7245742012-09-05 17:12:55 -070016952 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016953
16954 wpalMutexAcquire(&pWDICtx->wptMutex);
16955
16956 /*-----------------------------------------------------------------------
16957 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070016958 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016960 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016961 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
16962 {
16963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070016964 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
16965 "association no longer in progress %d - mysterious HAL response",
16966 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070016967
Jeff Johnsone7245742012-09-05 17:12:55 -070016968 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070016969 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016971 }
16972
16973 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
16974
16975 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016976 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070016977 -----------------------------------------------------------------------*/
16978 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
16979 {
16980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16981 "Join only allowed in Joining state - failure state is %d "
16982 "strange HAL response", pBSSSes->wdiAssocState);
16983
Jeff Johnsone7245742012-09-05 17:12:55 -070016984 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
16985
Jeff Johnson295189b2012-06-20 16:38:30 -070016986 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016987 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016988 }
16989
16990
16991 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016992 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070016993 -----------------------------------------------------------------------*/
16994 if ( WDI_STATUS_SUCCESS != wdiStatus )
16995 {
16996 /*Association was failed by HAL - remove session*/
16997 WDI_DeleteSession(pWDICtx, pBSSSes);
16998
16999 /*Association no longer in progress */
17000 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17001
17002 /*Association no longer in progress - prepare pending assoc for processing*/
17003 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070017004
Jeff Johnson295189b2012-06-20 16:38:30 -070017005 }
17006 else
17007 {
17008 /*Transition to state Joining - this may be redundant as we are supposed
17009 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017010 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017011 }
17012
17013 wpalMutexRelease(&pWDICtx->wptMutex);
17014
17015 /*Notify UMAC*/
17016 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17017
Jeff Johnsone7245742012-09-05 17:12:55 -070017018 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017019}/*WDI_ProcessJoinRsp*/
17020
17021
17022/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017023 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017024 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017025
17026 @param pWDICtx: pointer to the WLAN DAL context
17027 pEventData: pointer to the event information structure
17028
Jeff Johnson295189b2012-06-20 16:38:30 -070017029 @see
17030 @return Result of the function call
17031*/
17032WDI_Status
17033WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017034(
Jeff Johnson295189b2012-06-20 16:38:30 -070017035 WDI_ControlBlockType* pWDICtx,
17036 WDI_EventInfoType* pEventData
17037)
17038{
17039 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17040 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017041 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017042 WDI_BSSSessionType* pBSSSes = NULL;
17043
Jeff Johnsone7245742012-09-05 17:12:55 -070017044 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017045 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17046 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017047
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17049
17050 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017052 -------------------------------------------------------------------------*/
17053 if (( NULL == pEventData ) ||
17054 ( NULL == pEventData->pEventData))
17055 {
17056 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017057 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017059 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017060 }
17061
17062 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17063
17064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017065 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017066 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017067 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17068 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017069 sizeof(halConfigBssRspMsg.configBssRspParams));
17070
17071 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17072 halConfigBssRspMsg.configBssRspParams.status);
17073 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17074 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017075 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017076 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17077 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017078
Jeff Johnson295189b2012-06-20 16:38:30 -070017079 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017080
17081 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017082 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017083
17084 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017085 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017086
Jeff Johnson295189b2012-06-20 16:38:30 -070017087 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017088
Jeff Johnson295189b2012-06-20 16:38:30 -070017089 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017090 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017091 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17092 #endif
17093 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17094 halConfigBssRspMsg.configBssRspParams.staMac,
17095 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017096
Jeff Johnson295189b2012-06-20 16:38:30 -070017097 wpalMutexAcquire(&pWDICtx->wptMutex);
17098 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017099 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017100 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017101 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17102 wdiConfigBSSParams.macBSSID,
17103 &pBSSSes);
17104
Jeff Johnson295189b2012-06-20 16:38:30 -070017105 /*-----------------------------------------------------------------------
17106 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017107 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017108 -----------------------------------------------------------------------*/
17109 if ( NULL == pBSSSes )
17110 {
17111 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17112 "Association sequence for this BSS does not yet exist "
17113 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017114
17115 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17116
Jeff Johnson295189b2012-06-20 16:38:30 -070017117 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017118 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017119 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017120
Jeff Johnson295189b2012-06-20 16:38:30 -070017121 /*Save data for this BSS*/
17122 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17123 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017124 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017125 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017126 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017127 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017128 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017129 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017130 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017131 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017132 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017133 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17134 pBSSSes->bcastStaIdx =
17135 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017136
Jeff Johnson295189b2012-06-20 16:38:30 -070017137 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017138
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 /*-------------------------------------------------------------------------
17140 Add Peer STA
17141 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017142 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017143 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17144 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017145
Jeff Johnson295189b2012-06-20 16:38:30 -070017146 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017147 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017148 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017149 wdiAddSTAParam.ucHTCapable =
17150 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17151 wdiAddSTAParam.ucStaType =
17152 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17153
Jeff Johnson295189b2012-06-20 16:38:30 -070017154 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017155 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17156 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017157 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017158
17159 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17160 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17161 WDI_MAC_ADDR_LEN);
17162
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017164 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017165 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017166 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017167 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017168 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017170 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017171 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017172 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017173 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017174 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017175 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017176
Jeff Johnson295189b2012-06-20 16:38:30 -070017177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17178 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017179
Jeff Johnson295189b2012-06-20 16:38:30 -070017180 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17181 /*-------------------------------------------------------------------------
17182 Add Broadcast STA only in AP mode
17183 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017184 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017185 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017186 {
17187 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17188 "Add BCAST STA to table for index: %d",
17189 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017190
17191 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017193
Jeff Johnson295189b2012-06-20 16:38:30 -070017194 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17195 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17196 }
17197 wpalMutexRelease(&pWDICtx->wptMutex);
17198 }
17199 else
17200 {
17201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17202 "Config BSS RSP failed with status : %s(%d)",
17203 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017204 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017205 halConfigBssRspMsg.configBssRspParams.status);
17206
Jeff Johnsone7245742012-09-05 17:12:55 -070017207
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 /*Association was failed by HAL - remove session*/
17209 WDI_DeleteSession(pWDICtx, pBSSSes);
17210
17211 /*Association no longer in progress */
17212 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17213
17214 /*Association no longer in progress - prepare pending assoc for processing*/
17215 WDI_DequeueAssocRequest(pWDICtx);
17216
17217 }
17218
17219 /*Notify UMAC*/
17220 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17221
Jeff Johnsone7245742012-09-05 17:12:55 -070017222 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017223}/*WDI_ProcessConfigBSSRsp*/
17224
17225
17226/**
17227 @brief Process Del BSS Response function (called when a response
17228 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017229
17230 @param pWDICtx: pointer to the WLAN DAL context
17231 pEventData: pointer to the event information structure
17232
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 @see
17234 @return Result of the function call
17235*/
17236WDI_Status
17237WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017238(
Jeff Johnson295189b2012-06-20 16:38:30 -070017239 WDI_ControlBlockType* pWDICtx,
17240 WDI_EventInfoType* pEventData
17241)
17242{
17243 WDI_DelBSSRspParamsType wdiDelBSSParams;
17244 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017245 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017246 WDI_BSSSessionType* pBSSSes = NULL;
17247
Jeff Johnsone7245742012-09-05 17:12:55 -070017248 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017249 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17250
17251 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017252 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017253 -------------------------------------------------------------------------*/
17254 if (( NULL == pEventData ) ||
17255 ( NULL == pEventData->pEventData))
17256 {
17257 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017258 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017259 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017260 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017261 }
17262
17263 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17264
17265 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017266 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017267 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017268 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17269 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017270 sizeof(halDelBssRspMsg.deleteBssRspParams));
17271
17272
17273 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017274 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017275
17276 wpalMutexAcquire(&pWDICtx->wptMutex);
17277
17278 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017279 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017280 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017281 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17282 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17283 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017284
17285 /*-----------------------------------------------------------------------
17286 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017287 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017288 -----------------------------------------------------------------------*/
17289 if ( NULL == pBSSSes )
17290 {
17291 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17292 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017293 "association no longer in progress - mysterious HAL response");
17294
17295 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17296
17297 wpalMutexRelease(&pWDICtx->wptMutex);
17298 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017299 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017300
17301 /*Extract BSSID for the response to UMAC*/
17302 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17303 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17304
17305 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17306
17307 /*-----------------------------------------------------------------------
17308 The current session will be deleted
17309 -----------------------------------------------------------------------*/
17310 WDI_DeleteSession(pWDICtx, pBSSSes);
17311
17312
17313 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017314 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17315 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017316 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017317 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017318 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017319
17320 /* Delete the STA's in this BSS */
17321 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17322
Jeff Johnson295189b2012-06-20 16:38:30 -070017323 wpalMutexRelease(&pWDICtx->wptMutex);
17324
17325 /*Notify UMAC*/
17326 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17327
Jeff Johnsone7245742012-09-05 17:12:55 -070017328 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017329}/*WDI_ProcessDelBSSRsp*/
17330
17331/**
17332 @brief Process Post Assoc Rsp function (called when a response
17333 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017334
17335 @param pWDICtx: pointer to the WLAN DAL context
17336 pEventData: pointer to the event information structure
17337
Jeff Johnson295189b2012-06-20 16:38:30 -070017338 @see
17339 @return Result of the function call
17340*/
17341WDI_Status
17342WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017343(
Jeff Johnson295189b2012-06-20 16:38:30 -070017344 WDI_ControlBlockType* pWDICtx,
17345 WDI_EventInfoType* pEventData
17346)
17347{
17348 WDI_PostAssocRspParamsType wdiPostAssocParams;
17349 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017350 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017351 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017352 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17354
17355 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017356 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 -------------------------------------------------------------------------*/
17358 if (( NULL == pEventData ) ||
17359 ( NULL == pEventData->pEventData))
17360 {
17361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017362 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017363 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017364 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017365 }
17366
17367 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17368
17369 /*-------------------------------------------------------------------------
17370 Extract response and send it to UMAC
17371 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017372 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17373 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017374 sizeof(halPostAssocRspMsg.postAssocRspParams));
17375
17376 /*Extract the Post Assoc STA Params */
17377
Jeff Johnsone7245742012-09-05 17:12:55 -070017378 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017379 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017380 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017381 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017382 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017383 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17384
Jeff Johnsone7245742012-09-05 17:12:55 -070017385 wdiPostAssocParams.wdiStatus =
17386 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017387
17388 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17389 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017390 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17391 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017392 WDI_MAC_ADDR_LEN);
17393
17394 /* Extract Post Assoc BSS Params */
17395
Jeff Johnsone7245742012-09-05 17:12:55 -070017396 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17397 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17398 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017399
17400 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17401 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017402 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17404 .macSTA, WDI_MAC_ADDR_LEN);
17405
Jeff Johnsone7245742012-09-05 17:12:55 -070017406 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017407 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17408
Jeff Johnsone7245742012-09-05 17:12:55 -070017409 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17411
17412 wdiPostAssocParams.bssParams.ucBSSIdx =
17413 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17414
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017416 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17417
17418 wpalMutexAcquire(&pWDICtx->wptMutex);
17419
17420 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017421 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017422 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017423 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017424 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017425 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017426
17427 /*-----------------------------------------------------------------------
17428 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017429 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017430 -----------------------------------------------------------------------*/
17431 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017432 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017433 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17434 {
17435 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17436 "Association sequence for this BSS does not yet exist or "
17437 "association no longer in progress - mysterious HAL response");
17438
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17440
Jeff Johnson295189b2012-06-20 16:38:30 -070017441 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017442 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017443 }
17444
17445 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017446 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017447 -----------------------------------------------------------------------*/
17448 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17449 {
17450 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17451 "Post Assoc not allowed before JOIN - failing request "
17452 "strange HAL response");
17453
Jeff Johnsone7245742012-09-05 17:12:55 -070017454 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17455
Jeff Johnson295189b2012-06-20 16:38:30 -070017456 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017457 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017458 }
17459
17460 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017461 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017462 -----------------------------------------------------------------------*/
17463 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17464 {
17465 /*Association was failed by HAL - remove session*/
17466 WDI_DeleteSession(pWDICtx, pBSSSes);
17467 }
17468 else
17469 {
17470 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017471 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017472
17473 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017474 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017475 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017476 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017477 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017478 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017480 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017481 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17482
Jeff Johnsone7245742012-09-05 17:12:55 -070017483 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017484 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17485 }
17486
17487 /*Association no longer in progress */
17488 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17489
17490 /*Association no longer in progress - prepare pending assoc for processing*/
17491 WDI_DequeueAssocRequest(pWDICtx);
17492
17493 wpalMutexRelease(&pWDICtx->wptMutex);
17494
17495 /*Notify UMAC*/
17496 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17497
Jeff Johnsone7245742012-09-05 17:12:55 -070017498 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017499}/*WDI_ProcessPostAssocRsp*/
17500
17501/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017504
17505 @param pWDICtx: pointer to the WLAN DAL context
17506 pEventData: pointer to the event information structure
17507
Jeff Johnson295189b2012-06-20 16:38:30 -070017508 @see
17509 @return Result of the function call
17510*/
17511WDI_Status
17512WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017513(
Jeff Johnson295189b2012-06-20 16:38:30 -070017514 WDI_ControlBlockType* pWDICtx,
17515 WDI_EventInfoType* pEventData
17516)
17517{
17518 WDI_DelSTARspParamsType wdiDelSTARsp;
17519 WDI_DelSTARspCb wdiDelSTARspCb;
17520 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017521 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017522 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17523
17524 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017525 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017526 -------------------------------------------------------------------------*/
17527 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17528 ( NULL == pEventData->pEventData))
17529 {
17530 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017531 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017532 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017533 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017534 }
17535
17536 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17537
17538 /*-------------------------------------------------------------------------
17539 Extract response and send it to UMAC
17540 -------------------------------------------------------------------------*/
17541 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017542 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 sizeof(halDelStaRspMsg.delStaRspParams));
17544
17545 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017546 wdiDelSTARsp.wdiStatus =
17547 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017548
17549 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17550
17551 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17552 if(staType == WDI_STA_ENTRY_SELF)
17553 {
17554 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17555
17556 /* At this point add the self-STA */
17557
17558 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17559 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17560 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17561
17562#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17563#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17564
17565 //all DPU indices are the same for self STA
17566 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17567 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17568 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17569 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17570 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17571 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017572
17573 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017574 }
17575 else
17576 {
17577 //Delete the station in the table
17578 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17579 }
17580
17581 /*Notify UMAC*/
17582 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17583
Jeff Johnsone7245742012-09-05 17:12:55 -070017584 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017585}/*WDI_ProcessDelSTARsp*/
17586
17587
17588/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017589 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017590==========================================================================*/
17591
17592/**
17593 @brief Process Set BSS Key Rsp function (called when a response
17594 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017595
17596 @param pWDICtx: pointer to the WLAN DAL context
17597 pEventData: pointer to the event information structure
17598
Jeff Johnson295189b2012-06-20 16:38:30 -070017599 @see
17600 @return Result of the function call
17601*/
17602WDI_Status
17603WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017604(
Jeff Johnson295189b2012-06-20 16:38:30 -070017605 WDI_ControlBlockType* pWDICtx,
17606 WDI_EventInfoType* pEventData
17607)
17608{
17609 WDI_Status wdiStatus;
17610 eHalStatus halStatus;
17611 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17612 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17613
17614 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017615 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017616 -------------------------------------------------------------------------*/
17617 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17618 ( NULL == pEventData->pEventData))
17619 {
17620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017622 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017623 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017624 }
17625
17626 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17627
17628 /*-------------------------------------------------------------------------
17629 Extract response and send it to UMAC
17630 -------------------------------------------------------------------------*/
17631 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017632 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017633
17634 if ( eHAL_STATUS_SUCCESS != halStatus )
17635 {
17636 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17637 "Set BSS Key failed with status %s (%d)",
17638 WDI_getHALStatusMsgString(halStatus),
17639 halStatus);
17640 /* send the status to UMAC, don't return from here*/
17641 }
17642
17643 /*Notify UMAC*/
17644 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17645
Jeff Johnsone7245742012-09-05 17:12:55 -070017646 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017647}/*WDI_ProcessSetBssKeyRsp*/
17648
17649/**
17650 @brief Process Remove BSS Key Rsp function (called when a response
17651 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017652
17653 @param pWDICtx: pointer to the WLAN DAL context
17654 pEventData: pointer to the event information structure
17655
Jeff Johnson295189b2012-06-20 16:38:30 -070017656 @see
17657 @return Result of the function call
17658*/
17659WDI_Status
17660WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017661(
Jeff Johnson295189b2012-06-20 16:38:30 -070017662 WDI_ControlBlockType* pWDICtx,
17663 WDI_EventInfoType* pEventData
17664)
17665{
17666 WDI_Status wdiStatus;
17667 eHalStatus halStatus;
17668 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17669 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17670
17671 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017672 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017673 -------------------------------------------------------------------------*/
17674 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17675 ( NULL == pEventData->pEventData))
17676 {
17677 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017678 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017679 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017680 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017681 }
17682
17683 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17684
17685 /*-------------------------------------------------------------------------
17686 Extract response and send it to UMAC
17687 -------------------------------------------------------------------------*/
17688 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017689 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017690
17691 if ( eHAL_STATUS_SUCCESS != halStatus )
17692 {
17693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17694 "Remove BSS Key failed with status %s (%d )",
17695 WDI_getHALStatusMsgString(halStatus),
17696 halStatus);
17697 /* send the status to UMAC, don't return from here*/
17698 }
17699
17700 /*Notify UMAC*/
17701 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17702
Jeff Johnsone7245742012-09-05 17:12:55 -070017703 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017704}/*WDI_ProcessSetBssKeyRsp*/
17705
17706
17707/**
17708 @brief Process Set STA Key Rsp function (called when a response
17709 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017710
17711 @param pWDICtx: pointer to the WLAN DAL context
17712 pEventData: pointer to the event information structure
17713
Jeff Johnson295189b2012-06-20 16:38:30 -070017714 @see
17715 @return Result of the function call
17716*/
17717WDI_Status
17718WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017719(
Jeff Johnson295189b2012-06-20 16:38:30 -070017720 WDI_ControlBlockType* pWDICtx,
17721 WDI_EventInfoType* pEventData
17722)
17723{
17724 WDI_Status wdiStatus;
17725 eHalStatus halStatus;
17726 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17728
17729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017731 -------------------------------------------------------------------------*/
17732 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17733 ( NULL == pEventData->pEventData))
17734 {
17735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017737 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017739 }
17740
17741 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17742
17743 /*-------------------------------------------------------------------------
17744 Extract response and send it to UMAC
17745 -------------------------------------------------------------------------*/
17746 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017747 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017748
17749 if ( eHAL_STATUS_SUCCESS != halStatus )
17750 {
17751 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17752 "Set STA Key failed with status %s (%d)",
17753 WDI_getHALStatusMsgString(halStatus),
17754 halStatus);
17755 /* send the status to UMAC, don't return from here*/
17756 }
17757
17758 /*Notify UMAC*/
17759 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17760
Jeff Johnsone7245742012-09-05 17:12:55 -070017761 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017762}/*WDI_ProcessSetSTAKeyRsp*/
17763
17764/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017765 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017766 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017767
17768 @param pWDICtx: pointer to the WLAN DAL context
17769 pEventData: pointer to the event information structure
17770
Jeff Johnson295189b2012-06-20 16:38:30 -070017771 @see
17772 @return Result of the function call
17773*/
17774WDI_Status
17775WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017776(
Jeff Johnson295189b2012-06-20 16:38:30 -070017777 WDI_ControlBlockType* pWDICtx,
17778 WDI_EventInfoType* pEventData
17779)
17780{
17781 WDI_Status wdiStatus;
17782 eHalStatus halStatus;
17783 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17784 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17785
17786 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017787 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017788 -------------------------------------------------------------------------*/
17789 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17790 ( NULL == pEventData->pEventData))
17791 {
17792 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017793 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017794 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017795 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017796 }
17797
17798 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17799
17800 /*-------------------------------------------------------------------------
17801 Extract response and send it to UMAC
17802 -------------------------------------------------------------------------*/
17803 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017804 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017805
17806 if ( eHAL_STATUS_SUCCESS != halStatus )
17807 {
17808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17809 "Remove STA Key failed with status %s (%d)",
17810 WDI_getHALStatusMsgString(halStatus),
17811 halStatus);
17812 /* send the status to UMAC, don't return from here*/
17813 }
17814
17815 /*Notify UMAC*/
17816 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17817
Jeff Johnsone7245742012-09-05 17:12:55 -070017818 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017819}/*WDI_ProcessRemoveStaKeyRsp*/
17820
17821/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017822 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017823 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017824
17825 @param pWDICtx: pointer to the WLAN DAL context
17826 pEventData: pointer to the event information structure
17827
Jeff Johnson295189b2012-06-20 16:38:30 -070017828 @see
17829 @return Result of the function call
17830*/
17831WDI_Status
17832WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017833(
Jeff Johnson295189b2012-06-20 16:38:30 -070017834 WDI_ControlBlockType* pWDICtx,
17835 WDI_EventInfoType* pEventData
17836)
17837{
17838 WDI_Status wdiStatus;
17839 eHalStatus halStatus;
17840 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17841 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17842
17843 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017844 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017845 -------------------------------------------------------------------------*/
17846 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17847 ( NULL == pEventData->pEventData))
17848 {
17849 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017850 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017851 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017852 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017853 }
17854
17855 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17856
17857 /*-------------------------------------------------------------------------
17858 Extract response and send it to UMAC
17859 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017860 wpalMemoryCopy( &halStatus,
17861 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017862 sizeof(halStatus));
17863
Jeff Johnsone7245742012-09-05 17:12:55 -070017864 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017865
17866 if ( eHAL_STATUS_SUCCESS != halStatus )
17867 {
17868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17869 "Set STA Key failed with status %s (%d)",
17870 WDI_getHALStatusMsgString(halStatus),
17871 halStatus);
17872 /* send the status to UMAC, don't return from here*/
17873 }
17874
17875 /*Notify UMAC*/
17876 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17877
Jeff Johnsone7245742012-09-05 17:12:55 -070017878 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017879}/*WDI_ProcessSetSTABcastKeyRsp*/
17880
17881/**
17882 @brief Process Remove STA Bcast Key Rsp function (called when a
17883 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017884
17885 @param pWDICtx: pointer to the WLAN DAL context
17886 pEventData: pointer to the event information structure
17887
Jeff Johnson295189b2012-06-20 16:38:30 -070017888 @see
17889 @return Result of the function call
17890*/
17891WDI_Status
17892WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017893(
Jeff Johnson295189b2012-06-20 16:38:30 -070017894 WDI_ControlBlockType* pWDICtx,
17895 WDI_EventInfoType* pEventData
17896)
17897{
17898 WDI_Status wdiStatus;
17899 eHalStatus halStatus;
17900 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17901 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17902
17903 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017904 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017905 -------------------------------------------------------------------------*/
17906 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17907 ( NULL == pEventData->pEventData))
17908 {
17909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017910 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017911 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017912 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017913 }
17914
17915 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17916
17917 /*-------------------------------------------------------------------------
17918 Extract response and send it to UMAC
17919 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017920 wpalMemoryCopy( &halStatus,
17921 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017922 sizeof(halStatus));
17923
Jeff Johnsone7245742012-09-05 17:12:55 -070017924 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017925
17926 if ( eHAL_STATUS_SUCCESS != halStatus )
17927 {
17928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17929 "Remove STA Key failed with status %s (%d)",
17930 WDI_getHALStatusMsgString(halStatus),
17931 halStatus);
17932 /* send the status to UMAC, don't return from here*/
17933 }
17934
17935 /*Notify UMAC*/
17936 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17937
Jeff Johnsone7245742012-09-05 17:12:55 -070017938 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017939}/*WDI_ProcessRemoveStaBcastKeyRsp*/
17940
17941
17942/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017943 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017944==========================================================================*/
17945
17946/**
17947 @brief Process Add TSpec Rsp function (called when a response
17948 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017949
17950 @param pWDICtx: pointer to the WLAN DAL context
17951 pEventData: pointer to the event information structure
17952
Jeff Johnson295189b2012-06-20 16:38:30 -070017953 @see
17954 @return Result of the function call
17955*/
17956WDI_Status
17957WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017958(
Jeff Johnson295189b2012-06-20 16:38:30 -070017959 WDI_ControlBlockType* pWDICtx,
17960 WDI_EventInfoType* pEventData
17961)
17962{
17963 WDI_Status wdiStatus;
17964 eHalStatus halStatus;
17965 WDI_AddTsRspCb wdiAddTsRspCb;
17966 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17967
17968 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017969 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017970 -------------------------------------------------------------------------*/
17971 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17972 ( NULL == pEventData->pEventData))
17973 {
17974 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017975 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017976 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017977 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017978 }
17979
17980 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
17981
17982 /*-------------------------------------------------------------------------
17983 Extract response and send it to UMAC
17984 -------------------------------------------------------------------------*/
17985 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017986 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017987
17988 /*Notify UMAC*/
17989 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17990
Jeff Johnsone7245742012-09-05 17:12:55 -070017991 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017992}/*WDI_ProcessAddTSpecRsp*/
17993
17994
Sunil Duttbd736ed2014-05-26 21:19:41 +053017995
17996#ifdef WLAN_FEATURE_LINK_LAYER_STATS
17997
17998WDI_Status
17999WDI_ProcessLLStatsSetRsp
18000(
18001 WDI_ControlBlockType* pWDICtx,
18002 WDI_EventInfoType* pEventData
18003)
18004{
18005 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
18006
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018007 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018008 "%s: Enter ", __func__);
18009 /*-------------------------------------------------------------------------
18010 Sanity check
18011 -------------------------------------------------------------------------*/
18012 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18013 ( NULL == pEventData->pEventData))
18014 {
18015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18016 "%s: Invalid parameters", __func__);
18017 WDI_ASSERT(0);
18018 return WDI_STATUS_E_FAILURE;
18019 }
18020
18021 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18022
18023 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18024
18025 return WDI_STATUS_SUCCESS;
18026}
18027
18028WDI_Status
18029WDI_ProcessLLStatsGetRsp
18030(
18031 WDI_ControlBlockType* pWDICtx,
18032 WDI_EventInfoType* pEventData
18033)
18034{
18035 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18036
18037 /*-------------------------------------------------------------------------
18038 Sanity check
18039 -------------------------------------------------------------------------*/
18040 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18041 ( NULL == pEventData->pEventData))
18042 {
18043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18044 "%s: Invalid parameters", __func__);
18045 WDI_ASSERT(0);
18046 return WDI_STATUS_E_FAILURE;
18047 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018048 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018049 "%s: Enter ", __func__);
18050
18051 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18052
18053 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18054
18055 return WDI_STATUS_SUCCESS;
18056}
18057
18058WDI_Status
18059WDI_ProcessLLStatsClearRsp
18060(
18061 WDI_ControlBlockType* pWDICtx,
18062 WDI_EventInfoType* pEventData
18063)
18064{
18065 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18066
18067 /*-------------------------------------------------------------------------
18068 Sanity check
18069 -------------------------------------------------------------------------*/
18070 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18071 ( NULL == pEventData->pEventData))
18072 {
18073 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18074 "%s: Invalid parameters", __func__);
18075 WDI_ASSERT(0);
18076 return WDI_STATUS_E_FAILURE;
18077 }
18078
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018079 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018080 "%s: CLEAR RESPONSE CALL BACK", __func__);
18081 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18082
18083 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18084
18085 return WDI_STATUS_SUCCESS;
18086}
18087#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18088
Jeff Johnson295189b2012-06-20 16:38:30 -070018089/**
18090 @brief Process Del TSpec Rsp function (called when a response
18091 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018092
18093 @param pWDICtx: pointer to the WLAN DAL context
18094 pEventData: pointer to the event information structure
18095
Jeff Johnson295189b2012-06-20 16:38:30 -070018096 @see
18097 @return Result of the function call
18098*/
18099WDI_Status
18100WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018101(
Jeff Johnson295189b2012-06-20 16:38:30 -070018102 WDI_ControlBlockType* pWDICtx,
18103 WDI_EventInfoType* pEventData
18104)
18105{
18106 WDI_Status wdiStatus;
18107 eHalStatus halStatus;
18108 WDI_DelTsRspCb wdiDelTsRspCb;
18109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18110
18111 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018112 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018113 -------------------------------------------------------------------------*/
18114 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18115 ( NULL == pEventData->pEventData))
18116 {
18117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018118 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018119 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018120 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018121 }
18122
18123 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18124
18125 /*-------------------------------------------------------------------------
18126 Extract response and send it to UMAC
18127 -------------------------------------------------------------------------*/
18128 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018129 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018130
18131 /*Notify UMAC*/
18132 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18133
Jeff Johnsone7245742012-09-05 17:12:55 -070018134 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018135}/*WDI_ProcessDelTSpecRsp*/
18136
18137/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018138 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018139 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018140
18141 @param pWDICtx: pointer to the WLAN DAL context
18142 pEventData: pointer to the event information structure
18143
Jeff Johnson295189b2012-06-20 16:38:30 -070018144 @see
18145 @return Result of the function call
18146*/
18147WDI_Status
18148WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018149(
Jeff Johnson295189b2012-06-20 16:38:30 -070018150 WDI_ControlBlockType* pWDICtx,
18151 WDI_EventInfoType* pEventData
18152)
18153{
18154 WDI_Status wdiStatus;
18155 eHalStatus halStatus;
18156 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18158
18159 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018160 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018161 -------------------------------------------------------------------------*/
18162 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18163 ( NULL == pEventData->pEventData))
18164 {
18165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018169 }
18170
18171 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18172
18173 /*-------------------------------------------------------------------------
18174 Extract response and send it to UMAC
18175 -------------------------------------------------------------------------*/
18176 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018178
18179 /*Notify UMAC*/
18180 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18181
Jeff Johnsone7245742012-09-05 17:12:55 -070018182 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018183}/*WDI_ProcessUpdateEDCAParamsRsp*/
18184
18185
18186/**
18187 @brief Process Add BA Rsp function (called when a response
18188 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018189
18190 @param pWDICtx: pointer to the WLAN DAL context
18191 pEventData: pointer to the event information structure
18192
Jeff Johnson295189b2012-06-20 16:38:30 -070018193 @see
18194 @return Result of the function call
18195*/
18196WDI_Status
18197WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018198(
Jeff Johnson295189b2012-06-20 16:38:30 -070018199 WDI_ControlBlockType* pWDICtx,
18200 WDI_EventInfoType* pEventData
18201)
18202{
18203 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18204
18205 tAddBASessionRspParams halBASessionRsp;
18206 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18207
Jeff Johnsone7245742012-09-05 17:12:55 -070018208
Jeff Johnson295189b2012-06-20 16:38:30 -070018209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18210
18211 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018212 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018213 -------------------------------------------------------------------------*/
18214 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18215 ( NULL == pEventData->pEventData))
18216 {
18217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018218 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018219 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018220 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018221 }
18222
18223 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18224
18225 /*-------------------------------------------------------------------------
18226 Extract response and send it to UMAC
18227 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018228 wpalMemoryCopy( &halBASessionRsp,
18229 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018230 sizeof(halBASessionRsp));
18231
18232 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18233
Jeff Johnson43971f52012-07-17 12:26:56 -070018234 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018235 {
18236 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18237 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18238 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18239 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18240 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18241 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18242 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18243 }
18244
18245 /*Notify UMAC*/
18246 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18247
Jeff Johnsone7245742012-09-05 17:12:55 -070018248 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018249}/*WDI_ProcessAddSessionBARsp*/
18250
18251
18252/**
18253 @brief Process Del BA Rsp function (called when a response
18254 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018255
18256 @param pWDICtx: pointer to the WLAN DAL context
18257 pEventData: pointer to the event information structure
18258
Jeff Johnson295189b2012-06-20 16:38:30 -070018259 @see
18260 @return Result of the function call
18261*/
18262WDI_Status
18263WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018264(
Jeff Johnson295189b2012-06-20 16:38:30 -070018265 WDI_ControlBlockType* pWDICtx,
18266 WDI_EventInfoType* pEventData
18267)
18268{
18269 WDI_Status wdiStatus;
18270 eHalStatus halStatus;
18271 WDI_DelBARspCb wdiDelBARspCb;
18272 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18273
18274 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018275 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018276 -------------------------------------------------------------------------*/
18277 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18278 ( NULL == pEventData->pEventData))
18279 {
18280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018281 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018282 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018283 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018284 }
18285
18286 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18287
18288 /*-------------------------------------------------------------------------
18289 Extract response and send it to UMAC
18290 -------------------------------------------------------------------------*/
18291 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018292 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018293
18294 if ( eHAL_STATUS_SUCCESS == halStatus )
18295 {
18296 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18297 }
18298
18299 /*Notify UMAC*/
18300 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18301
Jeff Johnsone7245742012-09-05 17:12:55 -070018302 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018303}/*WDI_ProcessDelBARsp*/
18304
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018305#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018306/**
18307 @brief Process TSM Stats Rsp function (called when a response
18308 is being received over the bus from HAL)
18309
18310 @param pWDICtx: pointer to the WLAN DAL context
18311 pEventData: pointer to the event information structure
18312
18313 @see
18314 @return Result of the function call
18315*/
18316WDI_Status
18317WDI_ProcessTsmStatsRsp
18318(
18319 WDI_ControlBlockType* pWDICtx,
18320 WDI_EventInfoType* pEventData
18321)
18322{
18323 WDI_TsmRspCb wdiTsmStatsRspCb;
18324 tTsmStatsRspMsg halTsmStatsRspMsg;
18325 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18326 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18327
18328 /*-------------------------------------------------------------------------
18329 Sanity check
18330 -------------------------------------------------------------------------*/
18331 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18332 ( NULL == pEventData->pEventData))
18333 {
18334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018335 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018336 WDI_ASSERT(0);
18337 return WDI_STATUS_E_FAILURE;
18338 }
18339
18340 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18341
18342 /*-------------------------------------------------------------------------
18343 Unpack HAL Response Message - the header was already extracted by the
18344 main Response Handling procedure
18345 -------------------------------------------------------------------------*/
18346 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18347 pEventData->pEventData,
18348 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18349
18350 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18351 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18352 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18353 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18354 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18355 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18356 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18357 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18358 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18359 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18360 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18361 halTsmStatsRspMsg.tsmStatsRspParams.status);
18362
18363 /*Notify UMAC*/
18364 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18365
18366 return WDI_STATUS_SUCCESS;
18367}/*WDI_ProcessTsmStatsRsp*/
18368
18369#endif
18370
18371
18372
18373/**
18374 @brief Process Flush AC Rsp function (called when a response
18375 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018376
18377 @param pWDICtx: pointer to the WLAN DAL context
18378 pEventData: pointer to the event information structure
18379
Jeff Johnson295189b2012-06-20 16:38:30 -070018380 @see
18381 @return Result of the function call
18382*/
18383WDI_Status
18384WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018385(
Jeff Johnson295189b2012-06-20 16:38:30 -070018386 WDI_ControlBlockType* pWDICtx,
18387 WDI_EventInfoType* pEventData
18388)
18389{
18390 WDI_Status wdiStatus;
18391 eHalStatus halStatus;
18392 WDI_FlushAcRspCb wdiFlushAcRspCb;
18393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18394
18395 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018396 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018397 -------------------------------------------------------------------------*/
18398 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18399 ( NULL == pEventData->pEventData))
18400 {
18401 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018402 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018403 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018404 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018405 }
18406
18407 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18408
18409 /*-------------------------------------------------------------------------
18410 Extract response and send it to UMAC
18411 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018412 wpalMemoryCopy( &halStatus,
18413 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018414 sizeof(halStatus));
18415
Jeff Johnsone7245742012-09-05 17:12:55 -070018416 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018417
18418 /*Notify UMAC*/
18419 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18420
Jeff Johnsone7245742012-09-05 17:12:55 -070018421 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018422}/*WDI_ProcessFlushAcRsp*/
18423
18424/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018425 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018426 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018427
18428 @param pWDICtx: pointer to the WLAN DAL context
18429 pEventData: pointer to the event information structure
18430
Jeff Johnson295189b2012-06-20 16:38:30 -070018431 @see
18432 @return Result of the function call
18433*/
18434WDI_Status
18435WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018436(
Jeff Johnson295189b2012-06-20 16:38:30 -070018437 WDI_ControlBlockType* pWDICtx,
18438 WDI_EventInfoType* pEventData
18439)
18440{
18441 WDI_Status wdiStatus;
18442 eHalStatus halStatus;
18443 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18445
18446 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018447 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018448 -------------------------------------------------------------------------*/
18449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18450 ( NULL == pEventData->pEventData))
18451 {
18452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018453 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018454 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018455 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018456 }
18457
18458 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18459
18460 /*-------------------------------------------------------------------------
18461 Extract response and send it to UMAC
18462 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018463 wpalMemoryCopy( &halStatus,
18464 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018465 sizeof(halStatus));
18466
Jeff Johnsone7245742012-09-05 17:12:55 -070018467 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018468
18469 /*Notify UMAC*/
18470 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18471
Jeff Johnsone7245742012-09-05 17:12:55 -070018472 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018473}/*WDI_ProcessBtAmpEventRsp*/
18474
18475
18476/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018477 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018478 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018479
18480 @param pWDICtx: pointer to the WLAN DAL context
18481 pEventData: pointer to the event information structure
18482
Jeff Johnson295189b2012-06-20 16:38:30 -070018483 @see
18484 @return Result of the function call
18485*/
18486WDI_Status
18487WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018488(
Jeff Johnson295189b2012-06-20 16:38:30 -070018489 WDI_ControlBlockType* pWDICtx,
18490 WDI_EventInfoType* pEventData
18491)
18492{
18493 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18494 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18495 tAddStaSelfRspMsg halAddStaSelfRsp;
18496 WDI_AddStaParams wdiAddSTAParam = {0};
18497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18498
18499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018501 -------------------------------------------------------------------------*/
18502 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18503 ( NULL == pEventData->pEventData))
18504 {
18505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018506 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018509 }
18510
Jeff Johnsone7245742012-09-05 17:12:55 -070018511 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018512 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18513
18514 /*-------------------------------------------------------------------------
18515 Extract response and send it to UMAC
18516 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018517 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18518 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018519 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18520
18521
Jeff Johnsone7245742012-09-05 17:12:55 -070018522 wdiAddSTASelfParams.wdiStatus =
18523 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018524
Jeff Johnsone7245742012-09-05 17:12:55 -070018525 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018526 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018527 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018528 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018529 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018530 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18531
18532 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18533 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18534 WDI_MAC_ADDR_LEN);
18535
18536
18537#ifdef HAL_SELF_STA_PER_BSS
18538
18539 /* At this point add the self-STA */
18540
18541 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18542 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18543 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18544
18545 //all DPU indices are the same for self STA
18546
18547 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018548 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018549 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18550 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18551 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18552 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18553 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18554
18555 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18556 WDI_MAC_ADDR_LEN);
18557
18558 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18559 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18560
Jeff Johnsone7245742012-09-05 17:12:55 -070018561 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018562 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18563 {
18564 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18565 }
18566#endif
18567
18568 /*Notify UMAC*/
18569 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18570
Jeff Johnsone7245742012-09-05 17:12:55 -070018571 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018572}/*WDI_ProcessAddSTASelfRsp*/
18573
18574
18575
18576/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018577 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018578 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018579
18580 @param pWDICtx: pointer to the WLAN DAL context
18581 pEventData: pointer to the event information structure
18582
Jeff Johnson295189b2012-06-20 16:38:30 -070018583 @see
18584 @return Result of the function call
18585*/
18586WDI_Status
18587WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018588(
Jeff Johnson295189b2012-06-20 16:38:30 -070018589 WDI_ControlBlockType* pWDICtx,
18590 WDI_EventInfoType* pEventData
18591)
18592{
18593 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18594 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18595 tDelStaSelfRspParams delStaSelfRspParams;
18596 wpt_uint8 ucStaIdx;
18597
18598 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18599
18600 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018601 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018602 -------------------------------------------------------------------------*/
18603 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18604 ( NULL == pEventData->pEventData))
18605 {
18606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018610 }
18611
18612 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18613
18614 /*-------------------------------------------------------------------------
18615 Extract response and send it to UMAC
18616 -------------------------------------------------------------------------*/
18617
Jeff Johnsone7245742012-09-05 17:12:55 -070018618 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018619 (wpt_uint8*)pEventData->pEventData,
18620 sizeof(tDelStaSelfRspParams));
18621
Jeff Johnsone7245742012-09-05 17:12:55 -070018622 wdiDelStaSelfRspParams.wdiStatus =
18623 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018624
Jeff Johnsone7245742012-09-05 17:12:55 -070018625 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018626 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18627 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18628 {
18629 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018630 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018631 delStaSelfRspParams.selfMacAddr,
18632 &ucStaIdx);
18633 if(WDI_STATUS_E_FAILURE == wdiStatus)
18634 {
18635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018636 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018639 }
18640 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18641 }
18642
18643 /*Notify UMAC*/
18644 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18645
18646 return WDI_STATUS_SUCCESS;
18647}
18648
Jeff Johnsone7245742012-09-05 17:12:55 -070018649#ifdef FEATURE_OEM_DATA_SUPPORT
18650/**
18651 @brief Start Oem Data Rsp function (called when a
18652 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018653
Jeff Johnsone7245742012-09-05 17:12:55 -070018654 @param pWDICtx: pointer to the WLAN DAL context
18655 pEventData: pointer to the event information structure
18656
18657 @see
18658 @return Result of the function call
18659*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018660
18661WDI_Status
18662WDI_ProcessStartOemDataRsp
18663(
18664 WDI_ControlBlockType* pWDICtx,
18665 WDI_EventInfoType* pEventData
18666)
18667{
18668 WDI_oemDataRspCb wdiOemDataRspCb;
18669 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18670 tStartOemDataRspParams* halStartOemDataRspParams;
18671
18672 /*-------------------------------------------------------------------------
18673 Sanity check
18674 -------------------------------------------------------------------------*/
18675 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18676 ( NULL == pEventData->pEventData))
18677 {
18678 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018679 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018680 WDI_ASSERT(0);
18681 return WDI_STATUS_E_FAILURE;
18682 }
18683
18684 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18685
18686 /*-------------------------------------------------------------------------
18687 Extract response and send it to UMAC
18688 -------------------------------------------------------------------------*/
18689 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18690
18691
18692 //It is the responsibility of the application code to check for failure
18693 //conditions!
18694
18695 //Allocate memory for WDI OEM DATA RSP structure
18696 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18697
18698 if(NULL == wdiOemDataRspParams)
18699 {
18700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018701 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018702 pWDICtx, pEventData, pEventData->pEventData);
18703 WDI_ASSERT(0);
18704 return WDI_STATUS_E_FAILURE;
18705 }
18706
18707 /* Populate WDI structure members */
18708 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp, halStartOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18709
18710 /*Notify UMAC*/
18711 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18712
18713 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18714 wpalMemoryFree(wdiOemDataRspParams);
18715
18716 return WDI_STATUS_SUCCESS;
18717}/*WDI_PrcoessStartOemDataRsp*/
18718#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018719
18720/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018721 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018722===========================================================================*/
18723
18724/**
18725 @brief Process Channel Switch Rsp function (called when a response
18726 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018727
18728 @param pWDICtx: pointer to the WLAN DAL context
18729 pEventData: pointer to the event information structure
18730
Jeff Johnson295189b2012-06-20 16:38:30 -070018731 @see
18732 @return Result of the function call
18733*/
18734WDI_Status
18735WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018736(
Jeff Johnson295189b2012-06-20 16:38:30 -070018737 WDI_ControlBlockType* pWDICtx,
18738 WDI_EventInfoType* pEventData
18739)
18740{
18741 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18742 WDI_SwitchChRspCb wdiChSwitchRspCb;
18743 tSwitchChannelRspParams halSwitchChannelRsp;
18744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18745
18746 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018747 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018748 -------------------------------------------------------------------------*/
18749 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18750 ( NULL == pEventData->pEventData))
18751 {
18752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018753 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018754 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018755 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018756 }
18757
18758 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18759
18760 /*-------------------------------------------------------------------------
18761 Extract response and send it to UMAC
18762 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018763 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018764 (wpt_uint8*)pEventData->pEventData,
18765 sizeof(halSwitchChannelRsp));
18766
Jeff Johnsone7245742012-09-05 17:12:55 -070018767 wdiSwitchChRsp.wdiStatus =
18768 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018769 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18770
18771#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018772 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018773#endif
18774
18775 /*Notify UMAC*/
18776 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18777
Jeff Johnsone7245742012-09-05 17:12:55 -070018778 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018779}/*WDI_ProcessChannelSwitchRsp*/
18780
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018781/**
18782 @brief Process Channel Switch Rsp function (called when a response
18783 is being received over the bus from HAL against
18784 WDI_ProcessChannelSwitchReq_V1)
18785
18786 @param pWDICtx: pointer to the WLAN DAL context
18787 pEventData: pointer to the event information structure
18788
18789 @see
18790 @return Result of the function call
18791*/
18792
18793WDI_Status
18794WDI_ProcessChannelSwitchRsp_V1
18795(
18796 WDI_ControlBlockType* pWDICtx,
18797 WDI_EventInfoType* pEventData
18798)
18799{
18800 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18801 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18802 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18803 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18804
18805 /*-------------------------------------------------------------------------
18806 Sanity check
18807 -------------------------------------------------------------------------*/
18808 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18809 ( NULL == pEventData->pEventData))
18810 {
18811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18812 "%s: Invalid parameters", __func__);
18813 WDI_ASSERT(0);
18814 return WDI_STATUS_E_FAILURE;
18815 }
18816
18817 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18818
18819 /*-------------------------------------------------------------------------
18820 Extract response and send it to UMAC
18821 -------------------------------------------------------------------------*/
18822 wpalMemoryCopy( &halSwitchChannelRsp,
18823 (wpt_uint8*)pEventData->pEventData,
18824 sizeof(halSwitchChannelRsp));
18825
18826 wdiSwitchChRsp.wdiStatus =
18827 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18828 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18829
18830#ifdef WLAN_FEATURE_VOWIFI
18831 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18832#endif
18833
18834 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18835 if (( NULL == wdiChSwitchRspCb ) )
18836 {
18837 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18838 "%s: ### Call back function is null", __func__);
18839 WDI_ASSERT(0);
18840 return WDI_STATUS_E_FAILURE;
18841 }
18842 /*Notify UMAC*/
18843 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18844
18845 return WDI_STATUS_SUCCESS;
18846}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018847
18848/**
18849 @brief Process Config STA Rsp function (called when a response
18850 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018851
18852 @param pWDICtx: pointer to the WLAN DAL context
18853 pEventData: pointer to the event information structure
18854
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 @see
18856 @return Result of the function call
18857*/
18858WDI_Status
18859WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018860(
Jeff Johnson295189b2012-06-20 16:38:30 -070018861 WDI_ControlBlockType* pWDICtx,
18862 WDI_EventInfoType* pEventData
18863)
18864{
18865 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18866 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18867 WDI_AddStaParams wdiAddSTAParam;
18868
18869 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018870 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018871
Jeff Johnsone7245742012-09-05 17:12:55 -070018872 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018873 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18874
18875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018877 -------------------------------------------------------------------------*/
18878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18879 ( NULL == pEventData->pEventData))
18880 {
18881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018885 }
18886
18887 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18888
18889 /*-------------------------------------------------------------------------
18890 Extract response and send it to UMAC
18891 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018892 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18893 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018894 sizeof(halConfigStaRsp.configStaRspParams));
18895
18896
18897 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18898 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18899 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18900 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18901 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18902
18903 /* MAC Address of STA - take from cache as it does not come back in the
18904 response*/
18905 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018906 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018907 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018908
18909 wdiCfgSTAParams.wdiStatus =
18910 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018911
18912 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
18913 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
18914 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
18915
18916 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
18917 {
18918 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18919 {
18920 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070018921 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018922 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18923 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018924
Jeff Johnson295189b2012-06-20 16:38:30 -070018925 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018926 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070018927 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018928 wdiAddSTAParam.ucHTCapable =
18929 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
18930 wdiAddSTAParam.ucStaType =
18931 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070018932 wdiAddSTAParam.ucRmfEnabled =
18933 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070018934
Jeff Johnson295189b2012-06-20 16:38:30 -070018935 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070018936 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
18937 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018938 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018939
18940 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
18941 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
18942 WDI_MAC_ADDR_LEN);
18943
18944 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
18945 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
18946 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070018947
18948 if ( NULL == pBSSSes )
18949 {
18950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18951 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070018952
Jeff Johnson295189b2012-06-20 16:38:30 -070018953 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018954 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070018955 }
18956
18957 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018958 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018959 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018960 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018961 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018962 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018963 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018964 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018965 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070018966 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018967
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18969 }
18970 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
18971 {
18972 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
18973
Jeff Johnsone7245742012-09-05 17:12:55 -070018974 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018975 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018976 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018977 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018978 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018979 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018980 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018981 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070018982 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018983 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018984 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070018985 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070018986 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070018987 halConfigStaRsp.configStaRspParams.ucUcastSig;
18988 }
18989 }
18990
18991 /*Notify UMAC*/
18992 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
18993
Jeff Johnsone7245742012-09-05 17:12:55 -070018994 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018995}/*WDI_ProcessConfigStaRsp*/
18996
18997
18998/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018999 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019000 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019001
19002 @param pWDICtx: pointer to the WLAN DAL context
19003 pEventData: pointer to the event information structure
19004
Jeff Johnson295189b2012-06-20 16:38:30 -070019005 @see
19006 @return Result of the function call
19007*/
19008WDI_Status
19009WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019010(
Jeff Johnson295189b2012-06-20 16:38:30 -070019011 WDI_ControlBlockType* pWDICtx,
19012 WDI_EventInfoType* pEventData
19013)
19014{
19015 WDI_Status wdiStatus;
19016 eHalStatus halStatus;
19017 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19018
19019 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019020 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019021 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19022
19023 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019024 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019025 -------------------------------------------------------------------------*/
19026 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19027 ( NULL == pEventData->pEventData))
19028 {
19029 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019030 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019031 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019032 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019033 }
19034
19035 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19036
19037 wpalMutexAcquire(&pWDICtx->wptMutex);
19038
19039 /*If the link is being transitioned to idle - the BSS is to be deleted
19040 - this type of ending a session is possible when UMAC has failed an
19041 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019042 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019043 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19044 {
19045 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019046 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019047 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019048 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19049 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19050 &pBSSSes);
19051
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 /*-----------------------------------------------------------------------
19053 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019054 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019055 -----------------------------------------------------------------------*/
19056 if ( NULL == pBSSSes )
19057 {
19058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19059 "Set link response received outside association session");
19060 }
19061 else
19062 {
19063 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19064 will be del BSS coming after this to stop the beaconing & cleaning up the
19065 sessions*/
19066 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19067 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19068 {
19069 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019070 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019071 -----------------------------------------------------------------------*/
19072 WDI_DeleteSession(pWDICtx, pBSSSes);
19073
19074 /*-----------------------------------------------------------------------
19075 Check to see if this association is in progress - if so disable the
19076 flag as this has ended
19077 -----------------------------------------------------------------------*/
19078 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019079 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019080 /*Association no longer in progress */
19081 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19082 /*Association no longer in progress - prepare pending assoc for processing*/
19083 WDI_DequeueAssocRequest(pWDICtx);
19084 }
19085 }
19086 }
19087 }
19088 /* If the link state has been set to POST ASSOC, reset the "association in
19089 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019090 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019091 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19092 {
19093 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19094 WDI_DequeueAssocRequest(pWDICtx);
19095 }
19096
19097 wpalMutexRelease(&pWDICtx->wptMutex);
19098
19099 /*-------------------------------------------------------------------------
19100 Extract response and send it to UMAC
19101 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019102 wpalMemoryCopy( &halStatus,
19103 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019104 sizeof(halStatus));
19105
Jeff Johnsone7245742012-09-05 17:12:55 -070019106 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019107
19108 /*Notify UMAC*/
19109 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19110
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019112}/*WDI_ProcessSetLinkStateRsp*/
19113
19114/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019115 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019117
19118 @param pWDICtx: pointer to the WLAN DAL context
19119 pEventData: pointer to the event information structure
19120
Jeff Johnson295189b2012-06-20 16:38:30 -070019121 @see
19122 @return Result of the function call
19123*/
19124WDI_Status
19125WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019126(
Jeff Johnson295189b2012-06-20 16:38:30 -070019127 WDI_ControlBlockType* pWDICtx,
19128 WDI_EventInfoType* pEventData
19129)
19130{
19131 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19132 WDI_GetStatsRspCb wdiGetStatsRspCb;
19133 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019134
Jeff Johnson295189b2012-06-20 16:38:30 -070019135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19136
19137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019139 -------------------------------------------------------------------------*/
19140 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19141 ( NULL == pEventData->pEventData))
19142 {
19143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019144 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019147 }
19148
19149 /*-------------------------------------------------------------------------
19150 Extract response and send it to UMAC
19151 -------------------------------------------------------------------------*/
19152 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19153
19154 /*allocate the stats response buffer */
19155 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19156 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19157 + sizeof(WDI_GetStatsRspParamsType));
19158
19159 if(NULL == wdiGetStatsRsp)
19160 {
19161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019162 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019163 pWDICtx, pEventData, pEventData->pEventData);
19164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019166 }
19167
19168 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19169
19170 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19171 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19172 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19173 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19174 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19175 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19176
19177 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19178 wpalMemoryCopy(wdiGetStatsRsp + 1,
19179 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19180 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19181
19182 /*Notify UMAC*/
19183 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19184
19185 wpalMemoryFree(wdiGetStatsRsp);
19186
Jeff Johnsone7245742012-09-05 17:12:55 -070019187 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019188}/*WDI_ProcessGetStatsRsp*/
19189
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019190#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019191/**
19192 @brief Process Get Roam Rssi Rsp function (called when a response is
19193 being received over the bus from HAL)
19194
19195 @param pWDICtx: pointer to the WLAN DAL context
19196 pEventData: pointer to the event information structure
19197
19198 @see
19199 @return Result of the function call
19200*/
19201WDI_Status
19202WDI_ProcessGetRoamRssiRsp
19203(
19204 WDI_ControlBlockType* pWDICtx,
19205 WDI_EventInfoType* pEventData
19206)
19207{
19208 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19209 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19210 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19212
19213 /*-------------------------------------------------------------------------
19214 Sanity check
19215 -------------------------------------------------------------------------*/
19216 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19217 ( NULL == pEventData->pEventData))
19218 {
19219 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19220 "%s: Invalid parameters", __func__);
19221 WDI_ASSERT(0);
19222 return WDI_STATUS_E_FAILURE;
19223 }
19224
19225 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19226 if(NULL == wdiGetRoamRssiRspCb)
19227 {
19228 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19229 "%s: call back function is NULL", __func__);
19230 WDI_ASSERT(0);
19231 return WDI_STATUS_E_FAILURE;
19232 }
19233
19234 /*-------------------------------------------------------------------------
19235 Extract response and send it to UMAC
19236 -------------------------------------------------------------------------*/
19237 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19238 pEventData->pEventData,
19239 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19240
19241 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19242 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19243 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19244
19245 /*Notify UMAC*/
19246 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19247
19248 return WDI_STATUS_SUCCESS;
19249}/*WDI_ProcessGetRoamRssiRsp*/
19250#endif
19251
Jeff Johnson295189b2012-06-20 16:38:30 -070019252
19253/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019254 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019255 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019256
19257 @param pWDICtx: pointer to the WLAN DAL context
19258 pEventData: pointer to the event information structure
19259
Jeff Johnson295189b2012-06-20 16:38:30 -070019260 @see
19261 @return Result of the function call
19262*/
19263WDI_Status
19264WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019265(
Jeff Johnson295189b2012-06-20 16:38:30 -070019266 WDI_ControlBlockType* pWDICtx,
19267 WDI_EventInfoType* pEventData
19268)
19269{
19270 WDI_Status wdiStatus;
19271 eHalStatus halStatus;
19272 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19273 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19274
19275 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019276 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019277 -------------------------------------------------------------------------*/
19278 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19279 ( NULL == pEventData->pEventData))
19280 {
19281 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019282 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019283 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019284 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019285 }
19286
19287 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19288
19289 /*-------------------------------------------------------------------------
19290 Extract response and send it to UMAC
19291 -------------------------------------------------------------------------*/
19292 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019293 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019294
19295 /*Notify UMAC*/
19296 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19297
Jeff Johnsone7245742012-09-05 17:12:55 -070019298 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019299}/*WDI_ProcessUpdateCfgRsp*/
19300
19301
19302
19303/**
19304 @brief Process Add BA Rsp function (called when a response
19305 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019306
19307 @param pWDICtx: pointer to the WLAN DAL context
19308 pEventData: pointer to the event information structure
19309
Jeff Johnson295189b2012-06-20 16:38:30 -070019310 @see
19311 @return Result of the function call
19312*/
19313WDI_Status
19314WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019315(
Jeff Johnson295189b2012-06-20 16:38:30 -070019316 WDI_ControlBlockType* pWDICtx,
19317 WDI_EventInfoType* pEventData
19318)
19319{
19320 WDI_AddBARspCb wdiAddBARspCb;
19321
19322 tAddBARspParams halAddBARsp;
19323 WDI_AddBARspinfoType wdiAddBARsp;
19324
19325 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19326
19327 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019328 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019329 -------------------------------------------------------------------------*/
19330 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19331 ( NULL == pEventData->pEventData))
19332 {
19333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019334 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019337 }
19338
19339 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19340
19341 /*-------------------------------------------------------------------------
19342 Extract response and send it to UMAC
19343 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019344 wpalMemoryCopy( &halAddBARsp,
19345 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019346 sizeof(halAddBARsp));
19347
19348 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19349
Jeff Johnson43971f52012-07-17 12:26:56 -070019350 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 {
19352 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19353 }
19354
19355 /*Notify UMAC*/
19356 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19357
Jeff Johnsone7245742012-09-05 17:12:55 -070019358 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019359}/*WDI_ProcessAddSessionBARsp*/
19360
19361/**
19362 @brief Process Add BA Rsp function (called when a response
19363 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019364
19365 @param pWDICtx: pointer to the WLAN DAL context
19366 pEventData: pointer to the event information structure
19367
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 @see
19369 @return Result of the function call
19370*/
19371WDI_Status
19372WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019373(
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 WDI_ControlBlockType* pWDICtx,
19375 WDI_EventInfoType* pEventData
19376)
19377{
19378 WDI_TriggerBARspCb wdiTriggerBARspCb;
19379
19380 tTriggerBARspParams* halTriggerBARsp;
19381 tTriggerBaRspCandidate* halBaCandidate;
19382 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19383 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19384 wpt_uint16 index;
19385 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019386 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19388
19389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019391 -------------------------------------------------------------------------*/
19392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19393 ( NULL == pEventData->pEventData))
19394 {
19395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019399 }
19400
19401 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19402
19403 /*-------------------------------------------------------------------------
19404 Extract response and send it to UMAC
19405 -------------------------------------------------------------------------*/
19406 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19407
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019408 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19409
19410 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19411 {
19412 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019413 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019414 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019415
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019416 if(NULL == wdiTriggerBARsp)
19417 {
19418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019419 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019420 pWDICtx, pEventData, pEventData->pEventData);
19421 WDI_ASSERT(0);
19422 return WDI_STATUS_E_FAILURE;
19423 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019424
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019425 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19426
Jeff Johnson295189b2012-06-20 16:38:30 -070019427 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019428 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019429 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19430
19431 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19432 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19433
19434 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19435 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019436 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19438 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19439 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019440 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019441 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019442 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019443 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19444 }
19445 wdiTriggerBARspCandidate++;
19446 halBaCandidate++;
19447 }
19448 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019449 else
19450 {
19451 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19452
19453 if(NULL == wdiTriggerBARsp)
19454 {
19455 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019456 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019457 pWDICtx, pEventData, pEventData->pEventData);
19458 WDI_ASSERT(0);
19459 return WDI_STATUS_E_FAILURE;
19460 }
19461
19462 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19463
19464 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019465
19466 /*Notify UMAC*/
19467 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19468
19469 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019470 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019471}/*WDI_ProcessAddSessionBARsp*/
19472
19473/**
19474 @brief Process Update Beacon Params Rsp function (called when a response
19475 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019476
19477 @param pWDICtx: pointer to the WLAN DAL context
19478 pEventData: pointer to the event information structure
19479
Jeff Johnson295189b2012-06-20 16:38:30 -070019480 @see
19481 @return Result of the function call
19482*/
19483WDI_Status
19484WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019485(
Jeff Johnson295189b2012-06-20 16:38:30 -070019486 WDI_ControlBlockType* pWDICtx,
19487 WDI_EventInfoType* pEventData
19488)
19489{
19490 WDI_Status wdiStatus;
19491 eHalStatus halStatus;
19492 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19493 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19494
19495 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019496 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019497 -------------------------------------------------------------------------*/
19498 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19499 ( NULL == pEventData->pEventData))
19500 {
19501 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019502 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019503 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 }
19506
19507 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19508
19509 /*-------------------------------------------------------------------------
19510 Extract response and send it to UMAC
19511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019512 wpalMemoryCopy( &halStatus,
19513 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019514 sizeof(halStatus));
19515
Jeff Johnsone7245742012-09-05 17:12:55 -070019516 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019517
19518 /*Notify UMAC*/
19519 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19520
Jeff Johnsone7245742012-09-05 17:12:55 -070019521 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019522}/*WDI_ProcessUpdateBeaconParamsRsp*/
19523
19524/**
19525 @brief Process Send Beacon template Rsp function (called when a response
19526 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019527
19528 @param pWDICtx: pointer to the WLAN DAL context
19529 pEventData: pointer to the event information structure
19530
Jeff Johnson295189b2012-06-20 16:38:30 -070019531 @see
19532 @return Result of the function call
19533*/
19534WDI_Status
19535WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019536(
Jeff Johnson295189b2012-06-20 16:38:30 -070019537 WDI_ControlBlockType* pWDICtx,
19538 WDI_EventInfoType* pEventData
19539)
19540{
19541 WDI_Status wdiStatus;
19542 eHalStatus halStatus;
19543 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19544 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19545
19546 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019547 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019548 -------------------------------------------------------------------------*/
19549 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19550 ( NULL == pEventData->pEventData))
19551 {
19552 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019553 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019554 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019555 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019556 }
19557
19558 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19559
19560 /*-------------------------------------------------------------------------
19561 Extract response and send it to UMAC
19562 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019563 wpalMemoryCopy( &halStatus,
19564 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019565 sizeof(halStatus));
19566
Jeff Johnsone7245742012-09-05 17:12:55 -070019567 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019568
19569 /*Notify UMAC*/
19570 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19571
Jeff Johnsone7245742012-09-05 17:12:55 -070019572 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019573}/*WDI_ProcessSendBeaconParamsRsp*/
19574
Jeff Johnsone7245742012-09-05 17:12:55 -070019575
Jeff Johnson295189b2012-06-20 16:38:30 -070019576/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019577 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019578 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019579
19580 @param pWDICtx: pointer to the WLAN DAL context
19581 pEventData: pointer to the event information structure
19582
Jeff Johnson295189b2012-06-20 16:38:30 -070019583 @see
19584 @return Result of the function call
19585*/
19586WDI_Status
19587WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019588(
Jeff Johnson295189b2012-06-20 16:38:30 -070019589 WDI_ControlBlockType* pWDICtx,
19590 WDI_EventInfoType* pEventData
19591)
19592{
19593 WDI_Status wdiStatus;
19594 eHalStatus halStatus;
19595 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19596 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19597
19598 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019599 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019600 -------------------------------------------------------------------------*/
19601 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19602 ( NULL == pEventData->pEventData))
19603 {
19604 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019605 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019606 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019607 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019608 }
19609
19610 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19611
19612 /*-------------------------------------------------------------------------
19613 Extract response and send it to UMAC
19614 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019615 wpalMemoryCopy( &halStatus,
19616 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019617 sizeof(halStatus));
19618
Jeff Johnsone7245742012-09-05 17:12:55 -070019619 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019620
19621 /*Notify UMAC*/
19622 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19623
Jeff Johnsone7245742012-09-05 17:12:55 -070019624 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019625}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19626
19627 /**
19628 @brief Process Set Max Tx Power Rsp function (called when a response
19629 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019630
19631 @param pWDICtx: pointer to the WLAN DAL context
19632 pEventData: pointer to the event information structure
19633
Jeff Johnson295189b2012-06-20 16:38:30 -070019634 @see
19635 @return Result of the function call
19636*/
19637WDI_Status
19638WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019639(
Jeff Johnson295189b2012-06-20 16:38:30 -070019640 WDI_ControlBlockType* pWDICtx,
19641 WDI_EventInfoType* pEventData
19642)
19643{
19644 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019645
Jeff Johnson295189b2012-06-20 16:38:30 -070019646 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019647
Jeff Johnson295189b2012-06-20 16:38:30 -070019648 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19650
19651 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019652 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019653 -------------------------------------------------------------------------*/
19654 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19655 ( NULL == pEventData->pEventData))
19656 {
19657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019658 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019659 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019660 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019661 }
19662
19663 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19664
19665 /*-------------------------------------------------------------------------
19666 Extract response and send it to UMAC
19667 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019668 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19669 pEventData->pEventData,
19670 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019671
19672 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19673 {
19674 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19675 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019676 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019677 }
19678
Jeff Johnsone7245742012-09-05 17:12:55 -070019679 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019681 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019682
19683 /*Notify UMAC*/
19684 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19685
Jeff Johnsone7245742012-09-05 17:12:55 -070019686 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019687}
19688
schang86c22c42013-03-13 18:41:24 -070019689 /**
19690 @brief Process Set Tx Power Rsp function (called when a response
19691 is being received over the bus from HAL)
19692
19693 @param pWDICtx: pointer to the WLAN DAL context
19694 pEventData: pointer to the event information structure
19695
19696 @see
19697 @return Result of the function call
19698*/
19699WDI_Status
19700WDI_ProcessSetTxPowerRsp
19701(
19702 WDI_ControlBlockType* pWDICtx,
19703 WDI_EventInfoType* pEventData
19704)
19705{
19706 tSetTxPwrRspMsg halTxpowerrsp;
19707 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19708 WDA_SetTxPowerRspCb wdiReqStatusCb;
19709 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19710
19711 /*-------------------------------------------------------------------------
19712 Sanity check
19713 -------------------------------------------------------------------------*/
19714 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19715 ( NULL == pEventData->pEventData))
19716 {
19717 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19718 "%s: Invalid parameters", __func__);
19719 WDI_ASSERT(0);
19720 return WDI_STATUS_E_FAILURE;
19721 }
19722
19723 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19724
19725 /*-------------------------------------------------------------------------
19726 Extract response and send it to UMAC
19727 -------------------------------------------------------------------------*/
19728 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19729 pEventData->pEventData,
19730 sizeof(halTxpowerrsp.setTxPwrRspParams));
19731
19732 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19733 {
19734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19735 "Error status returned in Set Tx Power Response ");
19736 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19737 return WDI_STATUS_E_FAILURE;
19738 }
19739
19740 wdiSetTxPowerRspMsg.wdiStatus =
19741 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19742
19743 /*Notify UMAC*/
19744 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19745
19746 return WDI_STATUS_SUCCESS;
19747}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019748
19749/**
19750 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19751 is being received over the bus from HAL)
19752
19753 @param pWDICtx: pointer to the WLAN DAL context
19754 pEventData: pointer to the event information structure
19755
19756 @see
19757 @return Result of the function call
19758*/
19759WDI_Status
19760WDI_ProcessSetMaxTxPowerPerBandRsp
19761(
19762 WDI_ControlBlockType* pWDICtx,
19763 WDI_EventInfoType* pEventData
19764)
19765{
19766 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19767 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19768 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19769 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19770
19771 /*-------------------------------------------------------------------------
19772 Sanity check
19773 -------------------------------------------------------------------------*/
19774 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19775 ( NULL == pEventData->pEventData))
19776 {
19777 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19778 "%s: Invalid parameters", __func__);
19779 WDI_ASSERT(0);
19780 return WDI_STATUS_E_FAILURE;
19781 }
19782
19783 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19784
19785 /*-------------------------------------------------------------------------
19786 Extract response and send it to UMAC
19787 -------------------------------------------------------------------------*/
19788 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19789 pEventData->pEventData,
19790 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19791
19792 if (eHAL_STATUS_SUCCESS !=
19793 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19794 {
19795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19796 "Error status returned in Set Max Tx Power Per Band Response");
19797 return WDI_STATUS_E_FAILURE;
19798 }
19799
19800 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19801 WDI_HAL_2_WDI_STATUS(
19802 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19803
19804 /* Notify UMAC */
19805 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19806
19807 return WDI_STATUS_SUCCESS;
19808}
19809
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019810#ifdef FEATURE_WLAN_TDLS
19811/**
19812 @brief Process TDLS Link Establish Rsp function (called
19813 when a response is being received over the bus from HAL)
19814
19815 @param pWDICtx: pointer to the WLAN DAL context
19816 pEventData: pointer to the event information structure
19817
19818 @see
19819 @return Result of the function call
19820*/
19821WDI_Status
19822WDI_ProcessLinkEstablishReqRsp
19823(
19824 WDI_ControlBlockType* pWDICtx,
19825 WDI_EventInfoType* pEventData
19826)
19827{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019828 eHalStatus halStatus;
19829 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019830 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19831 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19832
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019833 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19834
19835 /*-------------------------------------------------------------------------
19836 Sanity check
19837 -------------------------------------------------------------------------*/
19838 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19839 ( NULL == pEventData->pEventData))
19840 {
19841 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19842 "%s: Invalid parameters", __func__);
19843 WDI_ASSERT(0);
19844 return WDI_STATUS_E_FAILURE;
19845 }
19846
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019847 /*-------------------------------------------------------------------------
19848 Extract indication and send it to UMAC
19849 -------------------------------------------------------------------------*/
19850 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19851 pEventData->pEventData,
19852 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19853
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019854 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19855
19856 /*-------------------------------------------------------------------------
19857 Extract response and send it to UMAC
19858 -------------------------------------------------------------------------*/
19859 wpalMemoryCopy( &halStatus,
19860 pEventData->pEventData,
19861 sizeof(halStatus));
19862
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019863 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19864 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019865
19866 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019867 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019868
19869 return WDI_STATUS_SUCCESS;
19870}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019871
19872
19873
19874/**
19875 @brief Process TDLS Chan switch Rsp function (called
19876 when a response is being received over the bus from HAL)
19877
19878 @param pWDICtx: pointer to the WLAN DAL context
19879 pEventData: pointer to the event information structure
19880
19881 @see
19882 @return Result of the function call
19883*/
19884WDI_Status
19885WDI_ProcessChanSwitchReqRsp
19886(
19887 WDI_ControlBlockType* pWDICtx,
19888 WDI_EventInfoType* pEventData
19889)
19890{
19891 eHalStatus halStatus;
19892 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19893 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19894 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19895
19896 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19897
19898 /*-------------------------------------------------------------------------
19899 Sanity check
19900 -------------------------------------------------------------------------*/
19901 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19902 ( NULL == pEventData->pEventData))
19903 {
19904 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19905 "%s: Invalid parameters", __func__);
19906 WDI_ASSERT(0);
19907 return WDI_STATUS_E_FAILURE;
19908 }
19909
19910 /*-------------------------------------------------------------------------
19911 Extract indication and send it to UMAC
19912 -------------------------------------------------------------------------*/
19913 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
19914 pEventData->pEventData,
19915 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
19916
19917 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
19918
19919 /*-------------------------------------------------------------------------
19920 Extract response and send it to UMAC
19921 -------------------------------------------------------------------------*/
19922 wpalMemoryCopy( &halStatus,
19923 pEventData->pEventData,
19924 sizeof(halStatus));
19925
19926 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19927 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
19928
19929 /*Notify UMAC*/
19930 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
19931
19932 return WDI_STATUS_SUCCESS;
19933}/*WDI_ProcessChanSwitchReqRsp*/
19934
19935
19936
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019937#endif
schang86c22c42013-03-13 18:41:24 -070019938
Jeff Johnson295189b2012-06-20 16:38:30 -070019939/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019940 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019941 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019942
19943 @param pWDICtx: pointer to the WLAN DAL context
19944 pEventData: pointer to the event information structure
19945
Jeff Johnson295189b2012-06-20 16:38:30 -070019946 @see
19947 @return Result of the function call
19948*/
19949WDI_Status
19950WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019951(
Jeff Johnson295189b2012-06-20 16:38:30 -070019952 WDI_ControlBlockType* pWDICtx,
19953 WDI_EventInfoType* pEventData
19954)
19955{
19956 WDI_Status wdiStatus;
19957 eHalStatus halStatus;
19958 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
19959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19960
19961 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019962 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019963 -------------------------------------------------------------------------*/
19964 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19965 ( NULL == pEventData->pEventData))
19966 {
19967 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019968 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019969 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019970 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019971 }
19972
19973 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
19974
19975 /*-------------------------------------------------------------------------
19976 Extract response and send it to UMAC
19977 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019978 wpalMemoryCopy( &halStatus,
19979 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019980 sizeof(halStatus));
19981
Jeff Johnsone7245742012-09-05 17:12:55 -070019982 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019983
19984 /*Notify UMAC*/
19985 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19986
Jeff Johnsone7245742012-09-05 17:12:55 -070019987 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019988}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070019989/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019990 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070019991 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019992
19993 @param pWDICtx: pointer to the WLAN DAL context
19994 pEventData: pointer to the event information structure
19995
Jeff Johnson295189b2012-06-20 16:38:30 -070019996 @see
19997 @return Result of the function call
19998*/
19999WDI_Status
20000WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020001(
Jeff Johnson295189b2012-06-20 16:38:30 -070020002 WDI_ControlBlockType* pWDICtx,
20003 WDI_EventInfoType* pEventData
20004)
20005{
20006 WDI_Status wdiStatus;
20007 eHalStatus halStatus;
20008 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020009 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20011
20012 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020013 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020014 -------------------------------------------------------------------------*/
20015 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20016 ( NULL == pEventData->pEventData))
20017 {
20018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020022 }
20023
20024 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20025
20026 /*-------------------------------------------------------------------------
20027 Extract response and send it to UMAC
20028 -------------------------------------------------------------------------*/
20029 halStatus = *((eHalStatus*)pEventData->pEventData);
20030
Jeff Johnsone7245742012-09-05 17:12:55 -070020031 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020032
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020033 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20034 * Other module states are taken care by PMC.
20035 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20036 */
20037 if (wdiStatus != WDI_STATUS_SUCCESS) {
20038
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20040 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20041 halStatus);
20042 /* Call Back is not required as we are putting the DXE in FULL
20043 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020044 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20045
20046 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20047 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020048 "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 -080020049 WDI_ASSERT(0);
20050 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020051 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020052 /*Notify UMAC*/
20053 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20054
Jeff Johnsone7245742012-09-05 17:12:55 -070020055 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020056}/*WDI_ProcessEnterImpsRsp*/
20057
20058/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020059 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020061
20062 @param pWDICtx: pointer to the WLAN DAL context
20063 pEventData: pointer to the event information structure
20064
Jeff Johnson295189b2012-06-20 16:38:30 -070020065 @see
20066 @return Result of the function call
20067*/
20068WDI_Status
20069WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020070(
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 WDI_ControlBlockType* pWDICtx,
20072 WDI_EventInfoType* pEventData
20073)
20074{
20075 WDI_Status wdiStatus;
20076 eHalStatus halStatus;
20077 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020078 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20080
20081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020083 -------------------------------------------------------------------------*/
20084 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20085 ( NULL == pEventData->pEventData))
20086 {
20087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020091 }
20092
20093 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20094
20095 /*-------------------------------------------------------------------------
20096 Extract response and send it to UMAC
20097 -------------------------------------------------------------------------*/
20098 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020099 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020100
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020101 if (halStatus != eHAL_STATUS_SUCCESS)
20102 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20103 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20104
Jeff Johnson295189b2012-06-20 16:38:30 -070020105 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020106 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20107 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20108 {
20109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020110 "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 -080020111 WDI_ASSERT(0);
20112 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020113 /*Notify UMAC*/
20114 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20115
Jeff Johnsone7245742012-09-05 17:12:55 -070020116 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020117}/*WDI_ProcessExitImpsRsp*/
20118
20119/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020120 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020121 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020122
20123 @param pWDICtx: pointer to the WLAN DAL context
20124 pEventData: pointer to the event information structure
20125
Jeff Johnson295189b2012-06-20 16:38:30 -070020126 @see
20127 @return Result of the function call
20128*/
20129WDI_Status
20130WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020131(
Jeff Johnson295189b2012-06-20 16:38:30 -070020132 WDI_ControlBlockType* pWDICtx,
20133 WDI_EventInfoType* pEventData
20134)
20135{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020136 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20137 tHalEnterBmpsRspParams halEnterBmpsRsp;
20138 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20139 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020140 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020141 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20142
20143 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020144 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020145 -------------------------------------------------------------------------*/
20146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20147 ( NULL == pEventData->pEventData))
20148 {
20149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020150 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020152 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020153 }
20154
Jeff Johnson295189b2012-06-20 16:38:30 -070020155 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020156 Extract response and send it to UMAC
20157 -------------------------------------------------------------------------*/
20158 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20159 {
20160 wpalMemoryCopy( &halEnterBmpsRsp,
20161 pEventData->pEventData,
20162 sizeof(halEnterBmpsRsp));
20163
20164 //Used to print debug message
20165 halStatus = halEnterBmpsRsp.status;
20166 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20167 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20168 }
20169 else
20170 {
20171 halStatus = *((eHalStatus*)pEventData->pEventData);
20172 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20173 }
20174
20175 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020176
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020177 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20178 * Other module states are taken care by PMC.
20179 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20180 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020181 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20182 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020183
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020185 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20186 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020187 /* Call Back is not required as we are putting the DXE in FULL
20188 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020189 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20190 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20191 {
20192 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020193 "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 -080020194 WDI_ASSERT(0);
20195 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020196 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020197 }
20198
Jeff Johnson295189b2012-06-20 16:38:30 -070020199 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020200 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020201
Jeff Johnsone7245742012-09-05 17:12:55 -070020202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020203}/*WDI_ProcessEnterBmpsRsp*/
20204
20205/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020206 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020207 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020208
20209 @param pWDICtx: pointer to the WLAN DAL context
20210 pEventData: pointer to the event information structure
20211
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 @see
20213 @return Result of the function call
20214*/
20215WDI_Status
20216WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020217(
Jeff Johnson295189b2012-06-20 16:38:30 -070020218 WDI_ControlBlockType* pWDICtx,
20219 WDI_EventInfoType* pEventData
20220)
20221{
Jeff Johnson295189b2012-06-20 16:38:30 -070020222 eHalStatus halStatus;
20223 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020224 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020225 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20226 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020227 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20228
20229 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020230 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020231 -------------------------------------------------------------------------*/
20232 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20233 ( NULL == pEventData->pEventData))
20234 {
20235 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020236 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020237 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020238 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020239 }
20240
20241 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20242
20243 /*-------------------------------------------------------------------------
20244 Extract response and send it to UMAC
20245 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020246
20247 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20248 {
20249 wpalMemoryCopy( &halExitBmpsRsp,
20250 pEventData->pEventData,
20251 sizeof(halExitBmpsRsp));
20252
20253 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20254 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20255 }
20256 else
20257 {
20258 halStatus = *((eHalStatus*)pEventData->pEventData);
20259 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20260 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020261
20262 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020263 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20264 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20265 {
20266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020267 "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 -080020268 WDI_ASSERT(0);
20269 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020270 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20271
20272 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020273 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020274
Jeff Johnsone7245742012-09-05 17:12:55 -070020275 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020276}/*WDI_ProcessExitBmpsRsp*/
20277
20278/**
20279 @brief Process Enter UAPSD Rsp function (called when a response
20280 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020281
20282 @param pWDICtx: pointer to the WLAN DAL context
20283 pEventData: pointer to the event information structure
20284
Jeff Johnson295189b2012-06-20 16:38:30 -070020285 @see
20286 @return Result of the function call
20287*/
20288WDI_Status
20289WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020290(
Jeff Johnson295189b2012-06-20 16:38:30 -070020291 WDI_ControlBlockType* pWDICtx,
20292 WDI_EventInfoType* pEventData
20293)
20294{
Jeff Johnson295189b2012-06-20 16:38:30 -070020295 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020296 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020297 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020298 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20299
Jeff Johnson295189b2012-06-20 16:38:30 -070020300 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20301
20302 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020303 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020304 -------------------------------------------------------------------------*/
20305 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20306 ( NULL == pEventData->pEventData))
20307 {
20308 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020309 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020310 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020311 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020312 }
20313
20314 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20315
20316 /*-------------------------------------------------------------------------
20317 Extract response and send it to UMAC
20318 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020319 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20320 {
20321 wpalMemoryCopy( &halEnterUapsdRsp,
20322 pEventData->pEventData,
20323 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020324
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020325 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20326 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20327 }
20328 else
20329 {
20330 halStatus = *((eHalStatus*)pEventData->pEventData);
20331 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20332 }
20333
20334 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020335 {
20336 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20337 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20338 // the traffic to decide when to suspend the trigger frames when there is no traffic
20339 // activity on the trigger enabled ACs
20340 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20341
20342#ifdef WLAN_PERF
20343 // Increment the BD signature to refresh the fast path BD utilization
20344 pWDICtx->uBdSigSerialNum++;
20345#endif
20346 }
20347
20348 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020349 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020350
Jeff Johnsone7245742012-09-05 17:12:55 -070020351 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020352}/*WDI_ProcessEnterUapsdRsp*/
20353
20354/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020355 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020356 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020357
20358 @param pWDICtx: pointer to the WLAN DAL context
20359 pEventData: pointer to the event information structure
20360
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 @see
20362 @return Result of the function call
20363*/
20364WDI_Status
20365WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020366(
Jeff Johnson295189b2012-06-20 16:38:30 -070020367 WDI_ControlBlockType* pWDICtx,
20368 WDI_EventInfoType* pEventData
20369)
20370{
Jeff Johnson295189b2012-06-20 16:38:30 -070020371 eHalStatus halStatus;
20372 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020373 tHalExitUapsdRspParams halExitUapsdRsp;
20374 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20376
20377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020379 -------------------------------------------------------------------------*/
20380 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20381 ( NULL == pEventData->pEventData))
20382 {
20383 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020384 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020385 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020386 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020387 }
20388
20389 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20390
20391 /*-------------------------------------------------------------------------
20392 Extract response and send it to UMAC
20393 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020394 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20395 {
20396 wpalMemoryCopy( &halExitUapsdRsp,
20397 pEventData->pEventData,
20398 sizeof(halExitUapsdRsp));
20399
20400 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20401 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20402 }
20403 else
20404 {
20405 halStatus = *((eHalStatus*)pEventData->pEventData);
20406 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20407 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020408 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20409 // directly instead of the FW WQ.
20410 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20411
20412#ifdef WLAN_PERF
20413 // Increment the BD signature to refresh the fast path BD utilization
20414 pWDICtx->uBdSigSerialNum++;
20415#endif
20416
20417 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020418 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020419
Jeff Johnsone7245742012-09-05 17:12:55 -070020420 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020421}/*WDI_ProcessExitUapsdRsp*/
20422
20423/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020424 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020425 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020426
20427 @param pWDICtx: pointer to the WLAN DAL context
20428 pEventData: pointer to the event information structure
20429
Jeff Johnson295189b2012-06-20 16:38:30 -070020430 @see
20431 @return Result of the function call
20432*/
20433WDI_Status
20434WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020435(
Jeff Johnson295189b2012-06-20 16:38:30 -070020436 WDI_ControlBlockType* pWDICtx,
20437 WDI_EventInfoType* pEventData
20438)
20439{
20440 WDI_Status wdiStatus;
20441 eHalStatus halStatus;
20442 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20443 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20444
20445 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020446 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 -------------------------------------------------------------------------*/
20448 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20449 ( NULL == pEventData->pEventData))
20450 {
20451 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020452 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020453 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020454 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020455 }
20456
20457 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20458
20459 /*-------------------------------------------------------------------------
20460 Extract response and send it to UMAC
20461 -------------------------------------------------------------------------*/
20462 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020463 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020464
20465 /*Notify UMAC*/
20466 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20467
Jeff Johnsone7245742012-09-05 17:12:55 -070020468 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020469}/*WDI_ProcessSetUapsdAcParamsRsp*/
20470
20471/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020472 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020473 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020474
20475 @param pWDICtx: pointer to the WLAN DAL context
20476 pEventData: pointer to the event information structure
20477
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 @see
20479 @return Result of the function call
20480*/
20481WDI_Status
20482WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020483(
Jeff Johnson295189b2012-06-20 16:38:30 -070020484 WDI_ControlBlockType* pWDICtx,
20485 WDI_EventInfoType* pEventData
20486)
20487{
20488 WDI_Status wdiStatus;
20489 eHalStatus halStatus;
20490 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20491 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20492
20493 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020494 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020495 -------------------------------------------------------------------------*/
20496 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20497 ( NULL == pEventData->pEventData))
20498 {
20499 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020500 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020501 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020502 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020503 }
20504
20505 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20506
20507 /*-------------------------------------------------------------------------
20508 Extract response and send it to UMAC
20509 -------------------------------------------------------------------------*/
20510 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020512
20513 /*Notify UMAC*/
20514 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20515
Jeff Johnsone7245742012-09-05 17:12:55 -070020516 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020517}/*WDI_ProcessUpdateUapsdParamsRsp*/
20518
20519/**
20520 @brief Process Configure RXP filter Rsp function (called when a
20521 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020522
20523 @param pWDICtx: pointer to the WLAN DAL context
20524 pEventData: pointer to the event information structure
20525
Jeff Johnson295189b2012-06-20 16:38:30 -070020526 @see
20527 @return Result of the function call
20528*/
20529WDI_Status
20530WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020531(
Jeff Johnson295189b2012-06-20 16:38:30 -070020532 WDI_ControlBlockType* pWDICtx,
20533 WDI_EventInfoType* pEventData
20534)
20535{
20536 WDI_Status wdiStatus;
20537 eHalStatus halStatus;
20538 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20539 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20540
20541 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020542 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020543 -------------------------------------------------------------------------*/
20544 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20545 ( NULL == pEventData->pEventData))
20546 {
20547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020548 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020549 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020550 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020551 }
20552
20553 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20554
20555 /*-------------------------------------------------------------------------
20556 Extract response and send it to UMAC
20557 -------------------------------------------------------------------------*/
20558 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020560
20561 /*Notify UMAC*/
20562 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20563
Jeff Johnsone7245742012-09-05 17:12:55 -070020564 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020565}/*WDI_ProcessConfigureRxpFilterRsp*/
20566
20567/**
20568 @brief Process Set beacon filter Rsp function (called when a
20569 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020570
20571 @param pWDICtx: pointer to the WLAN DAL context
20572 pEventData: pointer to the event information structure
20573
Jeff Johnson295189b2012-06-20 16:38:30 -070020574 @see
20575 @return Result of the function call
20576*/
20577WDI_Status
20578WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020579(
Jeff Johnson295189b2012-06-20 16:38:30 -070020580 WDI_ControlBlockType* pWDICtx,
20581 WDI_EventInfoType* pEventData
20582)
20583{
20584 WDI_Status wdiStatus;
20585 eHalStatus halStatus;
20586 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20587 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20588
20589 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020590 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020591 -------------------------------------------------------------------------*/
20592 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20593 ( NULL == pEventData->pEventData))
20594 {
20595 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020596 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020597 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020598 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020599 }
20600
20601 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20602
20603 /*-------------------------------------------------------------------------
20604 Extract response and send it to UMAC
20605 -------------------------------------------------------------------------*/
20606 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020607 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020608
20609 /*Notify UMAC*/
20610 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20611
Jeff Johnsone7245742012-09-05 17:12:55 -070020612 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020613}/*WDI_ProcessSetBeaconFilterRsp*/
20614
20615/**
20616 @brief Process remove beacon filter Rsp function (called when a
20617 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020618
20619 @param pWDICtx: pointer to the WLAN DAL context
20620 pEventData: pointer to the event information structure
20621
Jeff Johnson295189b2012-06-20 16:38:30 -070020622 @see
20623 @return Result of the function call
20624*/
20625WDI_Status
20626WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020627(
Jeff Johnson295189b2012-06-20 16:38:30 -070020628 WDI_ControlBlockType* pWDICtx,
20629 WDI_EventInfoType* pEventData
20630)
20631{
20632 WDI_Status wdiStatus;
20633 eHalStatus halStatus;
20634 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20636
20637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020639 -------------------------------------------------------------------------*/
20640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20641 ( NULL == pEventData->pEventData))
20642 {
20643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020647 }
20648
20649 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20650
20651 /*-------------------------------------------------------------------------
20652 Extract response and send it to UMAC
20653 -------------------------------------------------------------------------*/
20654 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020655 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020656
20657 /*Notify UMAC*/
20658 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20659
Jeff Johnsone7245742012-09-05 17:12:55 -070020660 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020661}/*WDI_ProcessRemBeaconFilterRsp*/
20662
20663/**
20664 @brief Process set RSSI thresholds Rsp function (called when a
20665 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020666
20667 @param pWDICtx: pointer to the WLAN DAL context
20668 pEventData: pointer to the event information structure
20669
Jeff Johnson295189b2012-06-20 16:38:30 -070020670 @see
20671 @return Result of the function call
20672*/
20673WDI_Status
20674WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020675(
Jeff Johnson295189b2012-06-20 16:38:30 -070020676 WDI_ControlBlockType* pWDICtx,
20677 WDI_EventInfoType* pEventData
20678)
20679{
20680 WDI_Status wdiStatus;
20681 eHalStatus halStatus;
20682 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20683 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20684
20685 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020686 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020687 -------------------------------------------------------------------------*/
20688 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20689 ( NULL == pEventData->pEventData))
20690 {
20691 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020692 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020693 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020694 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020695 }
20696
20697 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20698
20699 /*-------------------------------------------------------------------------
20700 Extract response and send it to UMAC
20701 -------------------------------------------------------------------------*/
20702 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020704
20705 /*Notify UMAC*/
20706 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20707
Jeff Johnsone7245742012-09-05 17:12:55 -070020708 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020709}/*WDI_ProcessSetRSSIThresoldsRsp*/
20710
20711/**
20712 @brief Process host offload Rsp function (called when a
20713 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020714
20715 @param pWDICtx: pointer to the WLAN DAL context
20716 pEventData: pointer to the event information structure
20717
Jeff Johnson295189b2012-06-20 16:38:30 -070020718 @see
20719 @return Result of the function call
20720*/
20721WDI_Status
20722WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020723(
Jeff Johnson295189b2012-06-20 16:38:30 -070020724 WDI_ControlBlockType* pWDICtx,
20725 WDI_EventInfoType* pEventData
20726)
20727{
20728 WDI_Status wdiStatus;
20729 eHalStatus halStatus;
20730 WDI_HostOffloadCb wdiHostOffloadCb;
20731 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20732
20733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020734 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020735 -------------------------------------------------------------------------*/
20736 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20737 ( NULL == pEventData->pEventData))
20738 {
20739 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020743 }
20744
20745 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20746
20747 /*-------------------------------------------------------------------------
20748 Extract response and send it to UMAC
20749 -------------------------------------------------------------------------*/
20750 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020752
20753 /*Notify UMAC*/
20754 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20755
Jeff Johnsone7245742012-09-05 17:12:55 -070020756 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020757}/*WDI_ProcessHostOffloadRsp*/
20758
20759/**
20760 @brief Process keep alive Rsp function (called when a
20761 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020762
20763 @param pWDICtx: pointer to the WLAN DAL context
20764 pEventData: pointer to the event information structure
20765
Jeff Johnson295189b2012-06-20 16:38:30 -070020766 @see
20767 @return Result of the function call
20768*/
20769WDI_Status
20770WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020771(
Jeff Johnson295189b2012-06-20 16:38:30 -070020772 WDI_ControlBlockType* pWDICtx,
20773 WDI_EventInfoType* pEventData
20774)
20775{
20776 WDI_Status wdiStatus;
20777 eHalStatus halStatus;
20778 WDI_KeepAliveCb wdiKeepAliveCb;
20779 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053020780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070020781 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20782
20783
20784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 -------------------------------------------------------------------------*/
20787 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20788 ( NULL == pEventData->pEventData))
20789 {
20790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020794 }
20795
Jeff Johnsone7245742012-09-05 17:12:55 -070020796 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20797
Jeff Johnson295189b2012-06-20 16:38:30 -070020798 /*-------------------------------------------------------------------------
20799 Extract response and send it to UMAC
20800 -------------------------------------------------------------------------*/
20801 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020802 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020803
20804 /*Notify UMAC*/
20805 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20806
Jeff Johnsone7245742012-09-05 17:12:55 -070020807 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020808}/*WDI_ProcessKeepAliveRsp*/
20809
20810/**
20811 @brief Process wowl add ptrn Rsp function (called when a
20812 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020813
20814 @param pWDICtx: pointer to the WLAN DAL context
20815 pEventData: pointer to the event information structure
20816
Jeff Johnson295189b2012-06-20 16:38:30 -070020817 @see
20818 @return Result of the function call
20819*/
20820WDI_Status
20821WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020822(
Jeff Johnson295189b2012-06-20 16:38:30 -070020823 WDI_ControlBlockType* pWDICtx,
20824 WDI_EventInfoType* pEventData
20825)
20826{
Jeff Johnson295189b2012-06-20 16:38:30 -070020827 eHalStatus halStatus;
20828 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020829 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20830 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20831
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20833
20834 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020835 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020836 -------------------------------------------------------------------------*/
20837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20838 ( NULL == pEventData->pEventData))
20839 {
20840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020841 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020842 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020843 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020844 }
20845
20846 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20847
20848 /*-------------------------------------------------------------------------
20849 Extract response and send it to UMAC
20850 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020851 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20852 {
20853 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20854 pEventData->pEventData,
20855 sizeof(halAddWowlBcastPtrRsp));
20856
20857 wdiWowlAddBcPtrRsp.wdiStatus =
20858 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20859 }
20860 else
20861 {
20862 halStatus = *((eHalStatus*)pEventData->pEventData);
20863 wdiWowlAddBcPtrRsp.wdiStatus =
20864 WDI_HAL_2_WDI_STATUS(halStatus);
20865 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020866
20867 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020868 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020869
Jeff Johnsone7245742012-09-05 17:12:55 -070020870 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020871}/*WDI_ProcessWowlAddBcPtrnRsp*/
20872
20873/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020874 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020875 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020876
20877 @param pWDICtx: pointer to the WLAN DAL context
20878 pEventData: pointer to the event information structure
20879
Jeff Johnson295189b2012-06-20 16:38:30 -070020880 @see
20881 @return Result of the function call
20882*/
20883WDI_Status
20884WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020885(
Jeff Johnson295189b2012-06-20 16:38:30 -070020886 WDI_ControlBlockType* pWDICtx,
20887 WDI_EventInfoType* pEventData
20888)
20889{
Jeff Johnson295189b2012-06-20 16:38:30 -070020890 eHalStatus halStatus;
20891 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020892 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20893 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20895
20896 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020897 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020898 -------------------------------------------------------------------------*/
20899 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20900 ( NULL == pEventData->pEventData))
20901 {
20902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020903 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020904 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020905 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020906 }
20907
20908 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
20909
20910 /*-------------------------------------------------------------------------
20911 Extract response and send it to UMAC
20912 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020913 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20914 {
20915 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
20916 pEventData->pEventData,
20917 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020918
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020919 wdiWowlDelBcstPtrRsp.wdiStatus =
20920 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
20921 }
20922 else
20923 {
20924 halStatus = *((eHalStatus*)pEventData->pEventData);
20925 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20926 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020928 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020929
Jeff Johnsone7245742012-09-05 17:12:55 -070020930 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020931}/*WDI_ProcessWowlDelBcPtrnRsp*/
20932
20933/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020934 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020936
20937 @param pWDICtx: pointer to the WLAN DAL context
20938 pEventData: pointer to the event information structure
20939
Jeff Johnson295189b2012-06-20 16:38:30 -070020940 @see
20941 @return Result of the function call
20942*/
20943WDI_Status
20944WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020945(
Jeff Johnson295189b2012-06-20 16:38:30 -070020946 WDI_ControlBlockType* pWDICtx,
20947 WDI_EventInfoType* pEventData
20948)
20949{
Jeff Johnson295189b2012-06-20 16:38:30 -070020950 eHalStatus halStatus;
20951 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020952 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
20953 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020954 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20955
20956 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020957 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020958 -------------------------------------------------------------------------*/
20959 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20960 ( NULL == pEventData->pEventData))
20961 {
20962 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020963 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020964 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 }
20967
20968 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
20969
20970 /*-------------------------------------------------------------------------
20971 Extract response and send it to UMAC
20972 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020973 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20974 {
20975 wpalMemoryCopy( &halEnterWowlRspParams,
20976 (wpt_uint8*)pEventData->pEventData,
20977 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070020978
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020979 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
20980 wdiwowlEnterRsp.status =
20981 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
20982 }
20983 else
20984 {
20985 halStatus = *((eHalStatus*)pEventData->pEventData);
20986 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
20987 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020988 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020989 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020990
Jeff Johnsone7245742012-09-05 17:12:55 -070020991 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020992}/*WDI_ProcessWowlEnterRsp*/
20993
20994/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020995 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020996 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020997
20998 @param pWDICtx: pointer to the WLAN DAL context
20999 pEventData: pointer to the event information structure
21000
Jeff Johnson295189b2012-06-20 16:38:30 -070021001 @see
21002 @return Result of the function call
21003*/
21004WDI_Status
21005WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021006(
Jeff Johnson295189b2012-06-20 16:38:30 -070021007 WDI_ControlBlockType* pWDICtx,
21008 WDI_EventInfoType* pEventData
21009)
21010{
Jeff Johnson295189b2012-06-20 16:38:30 -070021011 eHalStatus halStatus;
21012 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021013 tHalExitWowlRspParams halExitWowlRspParams;
21014 WDI_WowlExitRspParamsType wdiWowlExitRsp;
21015
Jeff Johnson295189b2012-06-20 16:38:30 -070021016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21017
21018 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021019 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021020 -------------------------------------------------------------------------*/
21021 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21022 ( NULL == pEventData->pEventData))
21023 {
21024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021028 }
21029
21030 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21031
21032 /*-------------------------------------------------------------------------
21033 Extract response and send it to UMAC
21034 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021035 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21036 {
21037 wpalMemoryCopy( &halExitWowlRspParams,
21038 pEventData->pEventData,
21039 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021040
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021041 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21042 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21043
21044 }
21045 else
21046 {
21047 halStatus = *((eHalStatus*)pEventData->pEventData);
21048 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21049 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021050 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021051 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021052
Jeff Johnsone7245742012-09-05 17:12:55 -070021053 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021054}/*WDI_ProcessWowlExitRsp*/
21055
21056/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021057 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021058 (called when a response is being received over the bus
21059 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021060
21061 @param pWDICtx: pointer to the WLAN DAL context
21062 pEventData: pointer to the event information structure
21063
Jeff Johnson295189b2012-06-20 16:38:30 -070021064 @see
21065 @return Result of the function call
21066*/
21067WDI_Status
21068WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021069(
Jeff Johnson295189b2012-06-20 16:38:30 -070021070 WDI_ControlBlockType* pWDICtx,
21071 WDI_EventInfoType* pEventData
21072)
21073{
21074 WDI_Status wdiStatus;
21075 eHalStatus halStatus;
21076 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21077 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21078
21079 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021080 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021081 -------------------------------------------------------------------------*/
21082 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21083 ( NULL == pEventData->pEventData))
21084 {
21085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021086 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021088 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021089 }
21090
21091 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21092
21093 /*-------------------------------------------------------------------------
21094 Extract response and send it to UMAC
21095 -------------------------------------------------------------------------*/
21096 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021097 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021098
21099 /*Notify UMAC*/
21100 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21101
Jeff Johnsone7245742012-09-05 17:12:55 -070021102 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021103}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21104
21105
21106/**
21107 @brief Process Nv download(called when a response
21108 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021109
21110 @param pWDICtx: pointer to the WLAN DAL context
21111 pEventData: pointer to the event information structure
21112
Jeff Johnson295189b2012-06-20 16:38:30 -070021113 @see
21114 @return Result of the function call
21115*/
21116WDI_Status
21117WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021118(
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 WDI_ControlBlockType* pWDICtx,
21120 WDI_EventInfoType* pEventData
21121)
21122{
21123
21124 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21125 tHalNvImgDownloadRspParams halNvDownloadRsp;
21126 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21127
21128 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021129 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021130 -------------------------------------------------------------------------*/
21131 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21132 ( NULL == pEventData->pEventData))
21133 {
21134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021135 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021136 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021137 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021138 }
21139
21140 /*-------------------------------------------------------------------------
21141 Extract response and send it to UMAC
21142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021143 wpalMemoryCopy( &halNvDownloadRsp,
21144 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021145 sizeof(halNvDownloadRsp));
21146
21147 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21148
21149 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021150 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21151 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021152 {
21153 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021154 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 }
21156 else
21157 {
21158 /*Reset the Nv related global information in WDI context information */
21159 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21160 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21161 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21162 /*call WDA callback function for last fragment */
21163 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21164 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21165 }
21166
Jeff Johnsone7245742012-09-05 17:12:55 -070021167 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021168}
21169#ifdef WLAN_FEATURE_VOWIFI_11R
21170/**
21171 @brief Process Add TSpec Rsp function (called when a response
21172 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021173
21174 @param pWDICtx: pointer to the WLAN DAL context
21175 pEventData: pointer to the event information structure
21176
Jeff Johnson295189b2012-06-20 16:38:30 -070021177 @see
21178 @return Result of the function call
21179*/
21180WDI_Status
21181WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021182(
Jeff Johnson295189b2012-06-20 16:38:30 -070021183 WDI_ControlBlockType* pWDICtx,
21184 WDI_EventInfoType* pEventData
21185)
21186{
21187 WDI_Status wdiStatus;
21188 tAggrAddTsRspParams aggrAddTsRsp;
21189 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21190 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21191
21192 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021193 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021194 -------------------------------------------------------------------------*/
21195 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21196 ( NULL == pEventData->pEventData))
21197 {
21198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021199 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021200 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021201 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021202 }
21203
21204 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21205
21206 /*-------------------------------------------------------------------------
21207 Extract response and send it to UMAC
21208 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021209 wpalMemoryCopy( &aggrAddTsRsp,
21210 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021211 sizeof(aggrAddTsRsp));
21212
21213 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021214 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021215
21216 /*Notify UMAC*/
21217 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21218
Jeff Johnsone7245742012-09-05 17:12:55 -070021219 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021220}/*WDI_ProcessAddTSpecRsp*/
21221#endif /* WLAN_FEATURE_VOWIFI_11R */
21222
21223/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021224 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021225 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021226
21227 @param pWDICtx: pointer to the WLAN DAL context
21228 pEventData: pointer to the event information structure
21229
Jeff Johnson295189b2012-06-20 16:38:30 -070021230 @see
21231 @return Result of the function call
21232*/
21233WDI_Status
21234WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021235(
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 WDI_ControlBlockType* pWDICtx,
21237 WDI_EventInfoType* pEventData
21238)
21239{
21240 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21241 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21242 tHalHostResumeRspParams hostResumeRspMsg;
21243 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21244
21245 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021246 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021247 -------------------------------------------------------------------------*/
21248 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21249 ( NULL == pEventData->pEventData))
21250 {
21251 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021252 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021253 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021254 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021255 }
21256
21257 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21258
21259 /*-------------------------------------------------------------------------
21260 Extract response and send it to UMAC
21261 -------------------------------------------------------------------------*/
21262
Jeff Johnsone7245742012-09-05 17:12:55 -070021263 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021264 (wpt_uint8*)pEventData->pEventData,
21265 sizeof(hostResumeRspMsg));
21266
Jeff Johnsone7245742012-09-05 17:12:55 -070021267 wdiResumeRspParams.wdiStatus =
21268 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021269
21270 /*Notify UMAC*/
21271 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21272
21273 return WDI_STATUS_SUCCESS;
21274}
21275
21276/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021277 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021278 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021279
21280 @param pWDICtx: pointer to the WLAN DAL context
21281 pEventData: pointer to the event information structure
21282
Jeff Johnson295189b2012-06-20 16:38:30 -070021283 @see
21284 @return Result of the function call
21285*/
21286WDI_Status
21287WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021288(
Jeff Johnson295189b2012-06-20 16:38:30 -070021289 WDI_ControlBlockType* pWDICtx,
21290 WDI_EventInfoType* pEventData
21291)
21292{
21293 WDI_Status wdiStatus;
21294 eHalStatus halStatus;
21295 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21297
21298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021300 -------------------------------------------------------------------------*/
21301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21302 ( NULL == pEventData->pEventData))
21303 {
21304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021308 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021309
21310 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021311
21312 /*-------------------------------------------------------------------------
21313 Extract response and send it to UMAC
21314 -------------------------------------------------------------------------*/
21315 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021316 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021317
21318 /*Notify UMAC*/
21319 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21320
Jeff Johnsone7245742012-09-05 17:12:55 -070021321 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021322}/*WDI_ProcessSetTxPerTrackingRsp*/
21323
21324/*==========================================================================
21325 Indications from HAL
21326 ==========================================================================*/
21327/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021328 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021329 indication of this kind is being received over the bus
21330 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021331
21332 @param pWDICtx: pointer to the WLAN DAL context
21333 pEventData: pointer to the event information structure
21334
Jeff Johnson295189b2012-06-20 16:38:30 -070021335 @see
21336 @return Result of the function call
21337*/
21338WDI_Status
21339WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021340(
Jeff Johnson295189b2012-06-20 16:38:30 -070021341 WDI_ControlBlockType* pWDICtx,
21342 WDI_EventInfoType* pEventData
21343)
21344{
21345 WDI_LowLevelIndType wdiInd;
21346 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21347 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21348
21349 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021350 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021351 -------------------------------------------------------------------------*/
21352 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21353 ( NULL == pEventData->pEventData))
21354 {
21355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021357 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021358 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021359 }
21360
21361 /*-------------------------------------------------------------------------
21362 Extract indication and send it to UMAC
21363 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021364 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21365 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021366 sizeof(tHalRSSINotification));
21367
21368 /*Fill in the indication parameters*/
21369 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21370 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21371 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21372 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21373 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21374 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21375 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21376 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21377 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21378 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21379 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21380 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21381 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021382 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21383 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021384
ltimariub77f24b2013-01-24 18:54:33 -080021385 if ( pWDICtx->wdiLowLevelIndCB )
21386 {
21387 /*Notify UMAC of indication*/
21388 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21389 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021390
21391 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021392}/*WDI_ProcessLowRSSIInd*/
21393
21394
21395/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021396 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021397 an indication of this kind is being received over the
21398 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021399
21400 @param pWDICtx: pointer to the WLAN DAL context
21401 pEventData: pointer to the event information structure
21402
Jeff Johnson295189b2012-06-20 16:38:30 -070021403 @see
21404 @return Result of the function call
21405*/
21406WDI_Status
21407WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021408(
Jeff Johnson295189b2012-06-20 16:38:30 -070021409 WDI_ControlBlockType* pWDICtx,
21410 WDI_EventInfoType* pEventData
21411)
21412{
21413 WDI_Status wdiStatus;
21414 eHalStatus halStatus;
21415 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021416 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021417 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21418
21419 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021420 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021421 -------------------------------------------------------------------------*/
21422 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21423 ( NULL == pEventData->pEventData))
21424 {
21425 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021426 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021429 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021430 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021431 /*-------------------------------------------------------------------------
21432 Extract indication and send it to UMAC
21433 -------------------------------------------------------------------------*/
21434 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21435 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021436 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021437
21438 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021439 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021440 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21441 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021442 if ( pWDICtx->wdiLowLevelIndCB )
21443 {
21444 /*Notify UMAC*/
21445 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21446 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021447
21448 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021449}/*WDI_ProcessMissedBeaconInd*/
21450
21451
21452/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021453 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021454 an indication of this kind is being received over the
21455 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021456
21457 @param pWDICtx: pointer to the WLAN DAL context
21458 pEventData: pointer to the event information structure
21459
Jeff Johnson295189b2012-06-20 16:38:30 -070021460 @see
21461 @return Result of the function call
21462*/
21463WDI_Status
21464WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021465(
Jeff Johnson295189b2012-06-20 16:38:30 -070021466 WDI_ControlBlockType* pWDICtx,
21467 WDI_EventInfoType* pEventData
21468)
21469{
21470 WDI_Status wdiStatus;
21471 eHalStatus halStatus;
21472 WDI_LowLevelIndType wdiInd;
21473 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21474
21475 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021476 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021477 -------------------------------------------------------------------------*/
21478 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21479 ( NULL == pEventData->pEventData))
21480 {
21481 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021482 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021483 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021484 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021485 }
21486
21487 /*-------------------------------------------------------------------------
21488 Extract indication and send it to UMAC
21489 -------------------------------------------------------------------------*/
21490 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21491 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021492 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021493
21494 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021495 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021496 /* ! TO DO - fill in from HAL struct:
21497 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21498
ltimariub77f24b2013-01-24 18:54:33 -080021499 if ( pWDICtx->wdiLowLevelIndCB )
21500 {
21501 /*Notify UMAC*/
21502 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21503 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021504
21505 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021506}/*WDI_ProcessUnkAddrFrameInd*/
21507
21508
21509/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021510 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021511 indication of this kind is being received over the bus
21512 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021513
21514 @param pWDICtx: pointer to the WLAN DAL context
21515 pEventData: pointer to the event information structure
21516
Jeff Johnson295189b2012-06-20 16:38:30 -070021517 @see
21518 @return Result of the function call
21519*/
21520WDI_Status
21521WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021522(
Jeff Johnson295189b2012-06-20 16:38:30 -070021523 WDI_ControlBlockType* pWDICtx,
21524 WDI_EventInfoType* pEventData
21525)
21526{
21527 WDI_LowLevelIndType wdiInd;
21528 tpSirMicFailureInd pHalMicFailureInd;
21529
21530 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21531
21532 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021533 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021534 -------------------------------------------------------------------------*/
21535 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21536 ( NULL == pEventData->pEventData))
21537 {
21538 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021539 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021540 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021541 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021542 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021543
Jeff Johnson295189b2012-06-20 16:38:30 -070021544 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21545 /*-------------------------------------------------------------------------
21546 Extract indication and send it to UMAC
21547 -------------------------------------------------------------------------*/
21548
21549 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021550 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21552 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21553 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21554 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21555 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21556 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21557 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21558 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021559 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021560 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021561 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021562 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021563 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021564 pHalMicFailureInd->info.keyId;
21565 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21566 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21567 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21568 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021569
21570 if ( pWDICtx->wdiLowLevelIndCB )
21571 {
21572 /*Notify UMAC*/
21573 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21574 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021575
21576 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021577}/*WDI_ProcessMicFailureInd*/
21578
21579
21580/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021581 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021582 an indication of this kind is being received over the
21583 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021584
21585 @param pWDICtx: pointer to the WLAN DAL context
21586 pEventData: pointer to the event information structure
21587
Jeff Johnson295189b2012-06-20 16:38:30 -070021588 @see
21589 @return Result of the function call
21590*/
21591WDI_Status
21592WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021593(
Jeff Johnson295189b2012-06-20 16:38:30 -070021594 WDI_ControlBlockType* pWDICtx,
21595 WDI_EventInfoType* pEventData
21596)
21597{
21598 WDI_Status wdiStatus;
21599 eHalStatus halStatus;
21600 WDI_LowLevelIndType wdiInd;
21601 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21602
21603 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021604 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021605 -------------------------------------------------------------------------*/
21606 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21607 ( NULL == pEventData->pEventData))
21608 {
21609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021610 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021611 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021612 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021613 }
21614
21615 /*-------------------------------------------------------------------------
21616 Extract indication and send it to UMAC
21617 -------------------------------------------------------------------------*/
21618
21619 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21620 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021621 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021622
21623 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21624 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021625
Jeff Johnson295189b2012-06-20 16:38:30 -070021626 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021627 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21628 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021629
ltimariub77f24b2013-01-24 18:54:33 -080021630 if ( pWDICtx->wdiLowLevelIndCB )
21631 {
21632 /*Notify UMAC*/
21633 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21634 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021635
21636 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021637}/*WDI_ProcessFatalErrorInd*/
21638
21639/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021640 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021641 an indication of this kind is being received over the
21642 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021643
21644 @param pWDICtx: pointer to the WLAN DAL context
21645 pEventData: pointer to the event information structure
21646
Jeff Johnson295189b2012-06-20 16:38:30 -070021647 @see
21648 @return Result of the function call
21649*/
21650WDI_Status
21651WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021652(
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 WDI_ControlBlockType* pWDICtx,
21654 WDI_EventInfoType* pEventData
21655)
21656{
21657 tDeleteStaContextParams halDelSTACtx;
21658 WDI_LowLevelIndType wdiInd;
21659 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21660
21661 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021662 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021663 -------------------------------------------------------------------------*/
21664 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21665 ( NULL == pEventData->pEventData))
21666 {
21667 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021668 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021671 }
21672
21673 /*-------------------------------------------------------------------------
21674 Extract indication and send it to UMAC
21675 -------------------------------------------------------------------------*/
21676
21677 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021678 wpalMemoryCopy( &halDelSTACtx,
21679 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021680 sizeof(halDelSTACtx));
21681
21682 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021683 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021684
21685 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21686 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21687 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21688 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21689
Jeff Johnsone7245742012-09-05 17:12:55 -070021690 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021691 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021692 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021693 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021694 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21695 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021696
ltimariub77f24b2013-01-24 18:54:33 -080021697 if ( pWDICtx->wdiLowLevelIndCB )
21698 {
21699 /*Notify UMAC*/
21700 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21701 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021702
21703 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021704}/*WDI_ProcessDelSTAInd*/
21705
21706/**
21707*@brief Process Coex Indication function (called when
21708 an indication of this kind is being received over the
21709 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021710
21711 @param pWDICtx: pointer to the WLAN DAL context
21712 pEventData: pointer to the event information structure
21713
Jeff Johnson295189b2012-06-20 16:38:30 -070021714 @see
21715 @return Result of the function call
21716*/
21717WDI_Status
21718WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021719(
Jeff Johnson295189b2012-06-20 16:38:30 -070021720 WDI_ControlBlockType* pWDICtx,
21721 WDI_EventInfoType* pEventData
21722)
21723{
21724 WDI_LowLevelIndType wdiInd;
21725 tCoexIndMsg halCoexIndMsg;
21726 wpt_uint32 index;
21727 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21728
21729 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021730 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021731 -------------------------------------------------------------------------*/
21732 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21733 ( NULL == pEventData->pEventData ))
21734 {
21735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021736 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021737 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021739 }
21740
21741 /*-------------------------------------------------------------------------
21742 Extract indication and send it to UMAC
21743 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021744 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21745 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021746 sizeof(halCoexIndMsg.coexIndParams) );
21747
21748 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021749 wdiInd.wdiIndicationType = WDI_COEX_IND;
21750 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021751 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21752 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 }
21755
21756 // DEBUG
21757 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21758 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021759 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21760 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21761 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21762 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21763 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021764
ltimariub77f24b2013-01-24 18:54:33 -080021765 if ( pWDICtx->wdiLowLevelIndCB )
21766 {
21767 /*Notify UMAC*/
21768 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21769 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021770
21771 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021772}/*WDI_ProcessCoexInd*/
21773
21774/**
21775*@brief Process Tx Complete Indication function (called when
21776 an indication of this kind is being received over the
21777 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021778
21779 @param pWDICtx: pointer to the WLAN DAL context
21780 pEventData: pointer to the event information structure
21781
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 @see
21783 @return Result of the function call
21784*/
21785WDI_Status
21786WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021787(
Jeff Johnson295189b2012-06-20 16:38:30 -070021788 WDI_ControlBlockType* pWDICtx,
21789 WDI_EventInfoType* pEventData
21790)
21791{
21792 WDI_LowLevelIndType wdiInd;
21793 tTxComplIndMsg halTxComplIndMsg;
21794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21795
21796 /*-------------------------------------------------------------------------
21797 Sanity check
21798 -------------------------------------------------------------------------*/
21799 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21800 ( NULL == pEventData->pEventData ))
21801 {
21802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021804 WDI_ASSERT( 0 );
21805 return WDI_STATUS_E_FAILURE;
21806 }
21807
21808 /*-------------------------------------------------------------------------
21809 Extract indication and send it to UMAC
21810 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021811 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21812 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021813 sizeof(halTxComplIndMsg.txComplParams) );
21814
21815 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021816 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021817
21818 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21819 &halTxComplIndMsg.txComplParams,
21820 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021821
ltimariub77f24b2013-01-24 18:54:33 -080021822 if ( pWDICtx->wdiLowLevelIndCB )
21823 {
21824 /*Notify UMAC*/
21825 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21826 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021827
21828 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021829}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021830#ifdef FEATURE_WLAN_TDLS
21831/**
21832*@brief Process TDLS Indication function (called when
21833 an indication of this kind is being received over the
21834 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021835
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021836 @param pWDICtx: pointer to the WLAN DAL context
21837 pEventData: pointer to the event information structure
21838
21839 @see
21840 @return Result of the function call
21841*/
21842WDI_Status
21843WDI_ProcessTdlsInd
21844(
21845 WDI_ControlBlockType* pWDICtx,
21846 WDI_EventInfoType* pEventData
21847)
21848{
21849 WDI_LowLevelIndType wdiInd;
21850 tTdlsIndMsg halTdlsIndMsg;
21851 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21852
21853 /*-------------------------------------------------------------------------
21854 Sanity check
21855 -------------------------------------------------------------------------*/
21856 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21857 ( NULL == pEventData->pEventData ))
21858 {
21859 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21860 "%s: Invalid parameters", __func__);
21861 WDI_ASSERT( 0 );
21862 return WDI_STATUS_E_FAILURE;
21863 }
21864
21865 /*-------------------------------------------------------------------------
21866 Extract indication and send it to UMAC
21867 -------------------------------------------------------------------------*/
21868 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21869 pEventData->pEventData,
21870 sizeof(halTdlsIndMsg.tdlsIndParams) );
21871
21872 /*Fill in the indication parameters*/
21873 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21874
21875 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21876 = halTdlsIndMsg.tdlsIndParams.status;
21877
21878 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21879 = halTdlsIndMsg.tdlsIndParams.staIdx;
21880
21881 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21882 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21883
Atul Mittalbb2aad02014-09-22 19:09:36 +053021884 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21885 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021886 /*Notify UMAC*/
21887 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21888
21889 return WDI_STATUS_SUCCESS;
21890}/*WDI_ProcessTdlsInd*/
21891#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070021892/**
Viral Modid86bde22012-12-10 13:09:21 -080021893*@brief Process Noa Start Indication function (called when
21894 an indication of this kind is being received over the
21895 bus from HAL)
21896
21897 @param pWDICtx: pointer to the WLAN DAL context
21898 pEventData: pointer to the event information structure
21899
21900 @see
21901 @return Result of the function call
21902*/
21903WDI_Status
21904WDI_ProcessP2pNoaStartInd
21905(
21906 WDI_ControlBlockType* pWDICtx,
21907 WDI_EventInfoType* pEventData
21908)
21909{
21910 WDI_LowLevelIndType wdiInd;
21911 tNoaStartIndMsg halNoaStartIndMsg;
21912 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21913
21914 /*-------------------------------------------------------------------------
21915 Sanity check
21916 -------------------------------------------------------------------------*/
21917 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21918 ( NULL == pEventData->pEventData ))
21919 {
21920 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21921 "%s: Invalid parameters", __func__);
21922 WDI_ASSERT( 0 );
21923 return WDI_STATUS_E_FAILURE;
21924 }
21925
21926 /*-------------------------------------------------------------------------
21927 Extract indication and send it to UMAC
21928 -------------------------------------------------------------------------*/
21929 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
21930 pEventData->pEventData,
21931 sizeof(halNoaStartIndMsg.noaStartIndParams) );
21932
21933 /*Fill in the indication parameters*/
21934 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
21935
21936 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
21937 = halNoaStartIndMsg.noaStartIndParams.status;
21938
21939 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
21940 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
21941
21942 /*Notify UMAC*/
21943 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21944
21945 return WDI_STATUS_SUCCESS;
21946}/*WDI_ProcessNoaAttrInd*/
21947
21948/**
Jeff Johnson295189b2012-06-20 16:38:30 -070021949*@brief Process Noa Attr Indication function (called when
21950 an indication of this kind is being received over the
21951 bus from HAL)
21952
21953 @param pWDICtx: pointer to the WLAN DAL context
21954 pEventData: pointer to the event information structure
21955
21956 @see
21957 @return Result of the function call
21958*/
21959WDI_Status
21960WDI_ProcessP2pNoaAttrInd
21961(
21962 WDI_ControlBlockType* pWDICtx,
21963 WDI_EventInfoType* pEventData
21964)
21965{
21966 WDI_LowLevelIndType wdiInd;
21967 tNoaAttrIndMsg halNoaAttrIndMsg;
21968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21969
21970 /*-------------------------------------------------------------------------
21971 Sanity check
21972 -------------------------------------------------------------------------*/
21973 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21974 ( NULL == pEventData->pEventData ))
21975 {
21976 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021977 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021978 WDI_ASSERT( 0 );
21979 return WDI_STATUS_E_FAILURE;
21980 }
21981
21982 /*-------------------------------------------------------------------------
21983 Extract indication and send it to UMAC
21984 -------------------------------------------------------------------------*/
21985 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
21986 pEventData->pEventData,
21987 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
21988
21989 /*Fill in the indication parameters*/
21990 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070021991
Jeff Johnson295189b2012-06-20 16:38:30 -070021992 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
21993 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070021994
Jeff Johnson295189b2012-06-20 16:38:30 -070021995 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
21996 = halNoaAttrIndMsg.noaAttrIndParams.index;
21997 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
21998 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
21999 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
22000 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070022001
Jeff Johnson295189b2012-06-20 16:38:30 -070022002 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
22003 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
22004 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
22005 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
22006 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
22007 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
22008 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
22009 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070022010
Jeff Johnson295189b2012-06-20 16:38:30 -070022011 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
22012 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
22013 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
22014 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
22015 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
22016 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22017 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22018 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22019
ltimariub77f24b2013-01-24 18:54:33 -080022020 if ( pWDICtx->wdiLowLevelIndCB )
22021 {
22022 /*Notify UMAC*/
22023 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22024 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022025
22026 return WDI_STATUS_SUCCESS;
22027}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022028
22029/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022030 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022031 an indication of this kind is being received over the
22032 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022033
22034 @param pWDICtx: pointer to the WLAN DAL context
22035 pEventData: pointer to the event information structure
22036
Jeff Johnson295189b2012-06-20 16:38:30 -070022037 @see
22038 @return Result of the function call
22039*/
22040WDI_Status
22041WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022042(
Jeff Johnson295189b2012-06-20 16:38:30 -070022043 WDI_ControlBlockType* pWDICtx,
22044 WDI_EventInfoType* pEventData
22045)
22046{
22047 WDI_LowLevelIndType wdiInd;
22048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022049
Jeff Johnson295189b2012-06-20 16:38:30 -070022050 /*-------------------------------------------------------------------------
22051 Extract indication and send it to UMAC
22052 -------------------------------------------------------------------------*/
22053 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022054 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22055
ltimariub77f24b2013-01-24 18:54:33 -080022056 if ( pWDICtx->wdiLowLevelIndCB )
22057 {
22058 /*Notify UMAC*/
22059 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22060 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022061
Jeff Johnsone7245742012-09-05 17:12:55 -070022062 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022063}/*WDI_ProcessTxPerHitInd*/
22064
Jeff Johnson295189b2012-06-20 16:38:30 -070022065/**
Yue Mab9c86f42013-08-14 15:59:08 -070022066 @brief Process Periodic Tx Pattern Fw Indication function
22067
22068 @param pWDICtx: pointer to the WLAN DAL context
22069 pEventData: pointer to the event information structure
22070
22071 @see
22072 @return Result of the function call
22073*/
22074WDI_Status
22075WDI_ProcessPeriodicTxPtrnFwInd
22076(
22077 WDI_ControlBlockType* pWDICtx,
22078 WDI_EventInfoType* pEventData
22079)
22080{
22081 WDI_LowLevelIndType wdiInd;
22082
22083 /*-------------------------------------------------------------------------
22084 Sanity check
22085 -------------------------------------------------------------------------*/
22086 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22087 (NULL == pEventData->pEventData))
22088 {
22089 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22090 "%s: Invalid parameters", __func__);
22091 WDI_ASSERT(0);
22092 return WDI_STATUS_E_FAILURE;
22093 }
22094
22095 /*-------------------------------------------------------------------------
22096 Extract indication and send it to UMAC
22097 -------------------------------------------------------------------------*/
22098 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22099 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22100 sizeof(tHalPeriodicTxPtrnFwInd));
22101
22102 if (pWDICtx->wdiLowLevelIndCB)
22103 {
22104 /*Notify UMAC*/
22105 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22106 }
22107
22108 return WDI_STATUS_SUCCESS;
22109}
22110
22111/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022112 @brief WDI_ProcessFTMCommandReq
22113 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022114
22115 @param pWDICtx: pointer to the WLAN DAL context
22116 pEventData: pointer to the event information structure
22117
Jeff Johnson295189b2012-06-20 16:38:30 -070022118 @see
22119 @return Result of the function call
22120*/
22121WDI_Status
22122WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022123(
Jeff Johnson295189b2012-06-20 16:38:30 -070022124 WDI_ControlBlockType* pWDICtx,
22125 WDI_EventInfoType* pEventData
22126)
22127{
22128 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22129 wpt_uint8 *ftmCommandBuffer = NULL;
22130 wpt_uint16 dataOffset;
22131 wpt_uint16 bufferSize;
22132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022133 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022134 -------------------------------------------------------------------------*/
22135 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22136 ( NULL == pEventData->pEventData))
22137
22138 {
22139 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022140 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022142 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022143 }
22144
22145 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22146
22147 /* Get MSG Buffer */
22148 WDI_GetMessageBuffer(pWDICtx,
22149 WDI_FTM_CMD_REQ,
22150 ftmCommandReq->bodyLength,
22151 &ftmCommandBuffer,
22152 &dataOffset,
22153 &bufferSize);
22154
22155 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22156 ftmCommandReq->FTMCommandBody,
22157 ftmCommandReq->bodyLength);
22158
22159 /* Send MSG */
22160 return WDI_SendMsg(pWDICtx,
22161 ftmCommandBuffer,
22162 bufferSize,
22163 pEventData->pCBfnc,
22164 pEventData->pUserData,
22165 WDI_FTM_CMD_RESP);
22166}
22167
22168/**
22169 @brief WDI_ProcessFTMCommandRsp
22170 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022171
22172 @param pWDICtx: pointer to the WLAN DAL context
22173 pEventData: pointer to the event information structure
22174
Jeff Johnson295189b2012-06-20 16:38:30 -070022175 @see
22176 @return Result of the function call
22177*/
22178WDI_Status
22179WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022180(
Jeff Johnson295189b2012-06-20 16:38:30 -070022181 WDI_ControlBlockType* pWDICtx,
22182 WDI_EventInfoType* pEventData
22183)
22184{
22185 WDI_FTMCommandRspCb ftmCMDRspCb;
22186 tProcessPttRspParams *ftmCMDRspData = NULL;
22187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22188
22189 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022190 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022191 -------------------------------------------------------------------------*/
22192 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22193 ( NULL == pEventData->pEventData))
22194 {
22195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022196 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022197 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022198 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022199 }
22200
22201 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22202
22203 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22204
Jeff Johnsone7245742012-09-05 17:12:55 -070022205 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22206 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022207 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22208
22209 /*Notify UMAC*/
22210 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22211
Jeff Johnsone7245742012-09-05 17:12:55 -070022212 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022213}
Jeff Johnson295189b2012-06-20 16:38:30 -070022214/**
22215 @brief WDI_ProcessHalDumpCmdReq
22216 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022217
22218 @param pWDICtx: pointer to the WLAN DAL context
22219 pEventData: pointer to the event information structure
22220
Jeff Johnson295189b2012-06-20 16:38:30 -070022221 @see
22222 @return Result of the function call
22223*/
22224WDI_Status
22225WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022226(
Jeff Johnson295189b2012-06-20 16:38:30 -070022227 WDI_ControlBlockType* pWDICtx,
22228 WDI_EventInfoType* pEventData
22229)
22230{
22231 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22232 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22233 wpt_uint16 usDataOffset = 0;
22234 wpt_uint16 usSendSize = 0;
22235 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022236 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022237
22238 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022239 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022240 -------------------------------------------------------------------------*/
22241 if (( NULL == pEventData ) ||
22242 ( NULL == pEventData->pEventData) ||
22243 ( NULL == pEventData->pCBfnc ))
22244 {
22245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022246 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022247 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022248 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022249 }
22250
22251 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22252 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22253
22254 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022255 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022256 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022257 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022258 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022259 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022260 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022261 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022262 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022263 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022264 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022265
Jeff Johnson295189b2012-06-20 16:38:30 -070022266 /*-----------------------------------------------------------------------
22267 Get message buffer
22268 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022269 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022270 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22271 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022272 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22274 {
22275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022276 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022277 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22278 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022279 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022280 }
22281
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 wpalMemoryCopy( pSendBuffer+usDataOffset,
22283 &halDumpCmdReqMsg.dumpCmdReqParams,
22284 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022285
22286 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022287 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022288
22289 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022290 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022291 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022292 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22293 wdiHALDumpCmdRspCb, pEventData->pUserData,
22294 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022295}
22296
22297/**
22298 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022299 Process hal Dump Command Response from HAL, simply route to HDD
22300
22301 @param pWDICtx: pointer to the WLAN DAL context
22302 pEventData: pointer to the event information structure
22303
Jeff Johnson295189b2012-06-20 16:38:30 -070022304 @see
22305 @return Result of the function call
22306*/
22307WDI_Status
22308WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022309(
Jeff Johnson295189b2012-06-20 16:38:30 -070022310 WDI_ControlBlockType* pWDICtx,
22311 WDI_EventInfoType* pEventData
22312)
22313{
22314 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022315 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022316 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22317
22318 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022319 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022320 -------------------------------------------------------------------------*/
22321 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22322 ( NULL == pEventData->pEventData))
22323 {
22324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022325 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022326 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022327 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022328 }
22329
Jeff Johnsone7245742012-09-05 17:12:55 -070022330 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022331
22332 /*Initialize the WDI Response structure */
22333 wdiHALDumpCmdRsp.usBufferLen = 0;
22334 wdiHALDumpCmdRsp.pBuffer = NULL;
22335
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022336 wpalMemoryCopy( &halDumpCmdRspParams,
22337 pEventData->pEventData,
22338 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022339
22340 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022341 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022342
22343 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022344 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022345 {
22346 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022347 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22348 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22349
22350 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22351 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022352 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022353 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022354
Jeff Johnson295189b2012-06-20 16:38:30 -070022355 /*Notify UMAC*/
22356 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22357
22358 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22359 {
22360 /* Free the allocated buffer */
22361 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22362 }
22363 return WDI_STATUS_SUCCESS;
22364}
22365
22366/*==========================================================================
22367 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022368
Jeff Johnson295189b2012-06-20 16:38:30 -070022369 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022370 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022371==========================================================================*/
22372/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022373 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022374 when it wishes to send up a notification like the ones
22375 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022376
Jeff Johnson295189b2012-06-20 16:38:30 -070022377 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022378
22379 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022380 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022381 wctsNotifyCBData: the callback data of the user
22382
Jeff Johnson295189b2012-06-20 16:38:30 -070022383 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022384
22385 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022386*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022387void
Jeff Johnson295189b2012-06-20 16:38:30 -070022388WDI_NotifyMsgCTSCB
22389(
Jeff Johnsone7245742012-09-05 17:12:55 -070022390 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022391 WCTS_NotifyEventType wctsEvent,
22392 void* wctsNotifyCBData
22393)
22394{
Jeff Johnsone7245742012-09-05 17:12:55 -070022395 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022396 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22397
22398 if (NULL == pWDICtx )
22399 {
22400 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022401 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022402 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022403 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022404 }
22405
22406 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22407 {
22408 /* callback presumably occurred after close */
22409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022410 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022411 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022412 }
22413
22414 if ( WCTS_EVENT_OPEN == wctsEvent )
22415 {
22416 /*Flag must be set atomically as it is checked from incoming request
22417 functions*/
22418 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022419 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022420
22421 /*Nothing to do - so try to dequeue any pending request that may have
22422 occurred while we were trying to establish this*/
22423 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022424 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022425 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022426 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022427 {
22428 /*Flag must be set atomically as it is checked from incoming request
22429 functions*/
22430 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022432
22433 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022434 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022435 wpalMutexRelease(&pWDICtx->wptMutex);
22436
22437 /*Notify that the Control Channel is closed */
22438 wpalEventSet(&pWDICtx->wctsActionEvent);
22439 }
22440
22441}/*WDI_NotifyMsgCTSCB*/
22442
22443
22444/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022445 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022446 when it wishes to send up a packet received over the
22447 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022448
Jeff Johnson295189b2012-06-20 16:38:30 -070022449 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022450
22451 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022452 pMsg: the packet
22453 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022454 wctsRxMsgCBData: the callback data of the user
22455
Jeff Johnson295189b2012-06-20 16:38:30 -070022456 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022457
22458 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022459*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022460void
22461WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022462(
Jeff Johnsone7245742012-09-05 17:12:55 -070022463 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022464 void* pMsg,
22465 wpt_uint32 uLen,
22466 void* wctsRxMsgCBData
22467)
22468{
Jeff Johnsone7245742012-09-05 17:12:55 -070022469 tHalMsgHeader *pHalMsgHeader;
22470 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022471 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22472 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22473
22474 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022475 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022476 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022477 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022478 ( uLen < sizeof(tHalMsgHeader)))
22479 {
22480 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022481 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022482 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022483 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022484 }
22485
22486 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22487 {
22488 /* callback presumably occurred after close */
22489 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022490 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022491 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022492 }
22493
Jeff Johnsone7245742012-09-05 17:12:55 -070022494 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022495 context - so no serialization is necessary here
22496 ! - revisit this assumption */
22497
22498 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22499
22500 if ( uLen != pHalMsgHeader->msgLen )
22501 {
22502 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22503 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022504 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022505 wpalWlanReload();
22506
Jeff Johnsone7245742012-09-05 17:12:55 -070022507 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022508 }
22509
22510 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22511
22512 /*The message itself starts after the header*/
22513 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22514 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22515 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22516 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22517
22518
22519 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22520 {
22521 /*Stop the timer as the response was received */
22522 /*!UT - check for potential race conditions between stop and response */
22523 wpalTimerStop(&pWDICtx->wptResponseTimer);
22524 }
22525 /* Check if we receive a response message which is not expected */
22526 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22527 {
22528 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22529 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22530 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022531 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22533 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022534
22535 if (gWDICb.bEnableSSR == false)
22536 {
22537 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22538 "SSR is not enabled on WDI timeout");
22539 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22540 return;
22541 }
22542 wpalWcnssResetIntr();
22543 /* if this timer fires, it means Riva did not receive the FIQ */
22544 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22545
Jeff Johnson295189b2012-06-20 16:38:30 -070022546 return;
22547 }
22548
22549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22550 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22551
22552 /*Post response event to the state machine*/
22553 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22554
22555}/*WDI_RXMsgCTSCB*/
22556
22557
22558/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022559 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022560========================================================================*/
22561
22562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022563 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022564 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022565
Jeff Johnson295189b2012-06-20 16:38:30 -070022566 @param pWDICtx - pointer to the control block
22567
22568 @return Result of the function call
22569*/
22570WPT_INLINE WDI_Status
22571WDI_CleanCB
22572(
22573 WDI_ControlBlockType* pWDICtx
22574)
22575{
22576 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22577
22578 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022579 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022580
Jeff Johnsone7245742012-09-05 17:12:55 -070022581 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022582 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22583 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22584
22585 WDI_ResetAssocSessions( pWDICtx );
22586
22587 return WDI_STATUS_SUCCESS;
22588}/*WDI_CleanCB*/
22589
22590
22591/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022592 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022593
Jeff Johnsone7245742012-09-05 17:12:55 -070022594
22595 @param pWDICtx: pointer to the WLAN DAL context
22596 pEventData: pointer to the event information structure
22597
Jeff Johnson295189b2012-06-20 16:38:30 -070022598 @see
22599 @return Result of the function call
22600*/
22601WPT_INLINE WDI_Status
22602WDI_ProcessRequest
22603(
22604 WDI_ControlBlockType* pWDICtx,
22605 WDI_EventInfoType* pEventData
22606)
22607{
22608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22609
Jeff Johnsone7245742012-09-05 17:12:55 -070022610 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022611 already checked these pointers*/
22612
22613 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22614 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022615 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022617 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022618 WDI_getReqMsgString(pEventData->wdiRequest),
22619 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22620 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22621 }
22622 else
22623 {
22624 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022625 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022626 pEventData->wdiRequest);
22627 return WDI_STATUS_E_NOT_IMPLEMENT;
22628 }
22629}/*WDI_ProcessRequest*/
22630
22631
22632/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022633 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022634 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022635 prefixes it with a send message header
22636
22637 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022638 wdiReqType: type of the request being sent
22639 uBufferLen: message buffer len
22640 pMsgBuffer: resulting allocated buffer
22641 pusDataOffset: offset in the buffer where the caller
22642 can start copying its message data
22643 puBufferSize: the resulting buffer size (offset+buff
22644 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022645
Jeff Johnson295189b2012-06-20 16:38:30 -070022646 @see
22647 @return Result of the function call
22648*/
22649WDI_Status
22650WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022651(
22652 WDI_ControlBlockType* pWDICtx,
22653 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022654 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022655 wpt_uint8** pMsgBuffer,
22656 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022657 wpt_uint16* pusBufferSize
22658)
22659{
22660 tHalMsgHeader halMsgHeader;
22661 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22662
Jeff Johnsone7245742012-09-05 17:12:55 -070022663 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022664 again*/
22665
22666 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022667 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022668 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022669 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022670 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22671 if ( NULL == *pMsgBuffer )
22672 {
22673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22674 "Unable to allocate message buffer for req %s (%d)",
22675 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022676 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022677 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022678 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022679 }
22680
22681 /*-------------------------------------------------------------------------
22682 Fill in the message header
22683 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022684 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22685 /* Fill msgVersion */
22686#ifdef WLAN_FEATURE_11AC
22687 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022688 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022689 else
22690#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022691 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022692
Jeff Johnsone7245742012-09-05 17:12:55 -070022693 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22694 *pusDataOffset = sizeof(halMsgHeader);
22695 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22696
22697 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022698}/*WDI_GetMessageBuffer*/
22699
22700
22701/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022702 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022703 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022704 the CB
22705
22706 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022707 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022708
Jeff Johnson295189b2012-06-20 16:38:30 -070022709 usSendSize size of the buffer to be sent
22710 pRspCb: response callback - save in the WDI
22711 CB
22712 pUserData: user data associated with the
22713 callback
22714 wdiExpectedResponse: the code of the response that is
22715 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022716
Jeff Johnson295189b2012-06-20 16:38:30 -070022717 @see
22718 @return Result of the function call
22719*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022720WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022721WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022722(
22723 WDI_ControlBlockType* pWDICtx,
22724 wpt_uint8* pSendBuffer,
22725 wpt_uint32 usSendSize,
22726 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022727 void* pUserData,
22728 WDI_ResponseEnumType wdiExpectedResponse
22729)
22730{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022731 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022732 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22734
22735 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022736 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022737 ------------------------------------------------------------------------*/
22738 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022739 pWDICtx->pfncRspCB = pRspCb;
22740 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022741
22742 /*-----------------------------------------------------------------------
22743 Call the CTS to send this message over - free message afterwards
22744 - notify transport failure
22745 Note: CTS is reponsible for freeing the message buffer.
22746 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022747 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22748 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22749 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022750 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022752 "Failed to send message with expected response %s (%d)"
22753 " over the bus - catastrophic failure",
22754 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22755 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022756
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022757 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22758 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022759 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022760 else
22761 {
22762 /* even when message was placed in CTS deferred Q, we will treat it
22763 success but log this info
22764 */
22765 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22766 {
22767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22768 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22769 "response %s (%d)",
22770 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22771 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022772 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022773 }
22774 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022775
Jeff Johnsond13512a2012-07-17 11:42:19 -070022776 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022777 if ( NULL != pWDICtx->wdiReqStatusCB )
22778 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022779 /*Inform originator whether request went through or not*/
22780 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22781 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022782 pWDICtx->wdiReqStatusCB = NULL;
22783 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022784 callback(wdiStatus, callbackContext);
22785
22786 /*For WDI requests which have registered a request callback,
22787 inform the WDA caller of the same via setting the return value
22788 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22789 end up repeating the functonality in the req callback for the
22790 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022791 if (wdiStatus != WDI_STATUS_SUCCESS)
22792 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022793 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022794 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 }
22796
Jeff Johnsond13512a2012-07-17 11:42:19 -070022797 if ( wdiStatus == WDI_STATUS_SUCCESS )
22798 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022799 /*Start timer for the expected response */
22800 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022801
22802 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022803 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022804 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022805 }
22806 else
22807 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022808 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022809 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22810 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022811
Jeff Johnsond13512a2012-07-17 11:42:19 -070022812 return wdiStatus;
22813
Jeff Johnson295189b2012-06-20 16:38:30 -070022814}/*WDI_SendMsg*/
22815
22816
22817
22818/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022819 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022820 the bus using the control transport and saves some info
22821 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022822
22823 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022824 pSendBuffer: buffer to be sent
22825 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022826
Jeff Johnson295189b2012-06-20 16:38:30 -070022827 @see
22828 @return Result of the function call
22829*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022830WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022831WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022832(
22833 WDI_ControlBlockType* pWDICtx,
22834 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022835 wpt_uint32 usSendSize
22836)
22837{
22838 wpt_uint32 uStatus ;
22839 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22840
22841 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022843 Note: CTS is reponsible for freeing the message buffer.
22844 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022845 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022846 (void*)pSendBuffer, usSendSize );
22847
22848 /*Inform Upper MAC about the outcome of the request*/
22849 if ( NULL != pWDICtx->wdiReqStatusCB )
22850 {
22851 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22852 "Send indication status : %d", uStatus);
22853
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022854 /* even if CTS placed indication into its deferred Q, we treat it
22855 * as success and let CTS drain its queue as per smd interrupt to CTS
22856 */
22857 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 -070022858 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070022859 }
22860
22861 /*If sending of the message failed - it is considered catastrophic and
22862 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022863 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
22864 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
22865
Jeff Johnson295189b2012-06-20 16:38:30 -070022866 {
22867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070022868 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070022869
22870 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22871 return WDI_STATUS_E_FAILURE;
22872 }
22873
Jeff Johnsone7245742012-09-05 17:12:55 -070022874 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022875}/*WDI_SendIndication*/
22876
22877
22878/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022879 @brief WDI_DetectedDeviceError - called internally by DAL when
22880 it has detected a failure in the device
22881
22882 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022883 usErrorCode: error code detected by WDI or received
22884 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022885
Jeff Johnson295189b2012-06-20 16:38:30 -070022886 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070022887 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022888*/
22889void
22890WDI_DetectedDeviceError
22891(
22892 WDI_ControlBlockType* pWDICtx,
22893 wpt_uint16 usErrorCode
22894)
22895{
22896 WDI_LowLevelIndType wdiInd;
22897 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22898
22899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22900 "Device Error detected code: %d - transitioning to stopped state",
22901 usErrorCode);
22902
Katya Nigamf02ad012014-05-05 16:12:49 +053022903 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
22904
Jeff Johnson295189b2012-06-20 16:38:30 -070022905 wpalMutexAcquire(&pWDICtx->wptMutex);
22906
22907 WDI_STATableStop(pWDICtx);
22908
22909 WDI_ResetAssocSessions(pWDICtx);
22910
22911 /*Set the expected state transition to stopped - because the device
22912 experienced a failure*/
22913 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
22914
22915 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022916 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070022917
Jeff Johnsone7245742012-09-05 17:12:55 -070022918 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022919
22920 /*TO DO: - there should be an attempt to reset the device here*/
22921
22922 wpalMutexRelease(&pWDICtx->wptMutex);
22923
22924 /*------------------------------------------------------------------------
22925 Notify UMAC if a handler is registered
22926 ------------------------------------------------------------------------*/
22927 if (pWDICtx->wdiLowLevelIndCB)
22928 {
Jeff Johnsone7245742012-09-05 17:12:55 -070022929 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
22930 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070022931
22932 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
22933 }
22934}/*WDI_DetectedDeviceError*/
22935
22936/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022937 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070022938 we started on send message has expire - this should
22939 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070022940 reply - trigger catastrophic failure
22941 @param
22942
Jeff Johnson295189b2012-06-20 16:38:30 -070022943 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070022944
22945 @see
22946 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022947*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022948void
Jeff Johnson295189b2012-06-20 16:38:30 -070022949WDI_ResponseTimerCB
22950(
22951 void *pUserData
22952)
22953{
22954 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
22955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22956
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022957 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070022958 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022959 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022960 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022961 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022962 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022963 }
22964
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022965 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022966 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022967 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022968
22969 /* If response timer is running at this time that means this timer
22970 * event is not for the last request but rather last-to-last request and
22971 * this timer event has come after we recevied respone for last-to-last
22972 * message
22973 */
22974 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
22975 {
22976 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22977 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022978 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022979 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022980 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22981 "uArchTimeStampTmrStart: %llu seconds, "
22982 "uArchTimeStampTmrExp: %llu seconds",
22983 pWDICtx->uArchTimeStampRspTmrStart,
22984 pWDICtx->uArchTimeStampRspTmrExp);
22985
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022986 return;
22987 }
22988
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022989 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070022990 {
22991
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070022992 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070022993 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022994 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070022995 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022996 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
22997 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080022998 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22999 "uArchTimeStampTmrStart: %llu seconds, "
23000 "uArchTimeStampTmrExp: %llu seconds",
23001 pWDICtx->uArchTimeStampRspTmrStart,
23002 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023003
23004 /* WDI timeout means Riva is not responding or SMD communication to Riva
23005 * is not happening. The only possible way to recover from this error
23006 * is to initiate SSR from APPS.
23007 * There is also an option to re-enable wifi, which will eventually
23008 * trigger SSR
23009 */
23010 if (gWDICb.bEnableSSR == false)
23011 {
23012 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23013 "SSR is not enabled on WDI timeout");
23014 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23015 return;
23016 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023017#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023018 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023019 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023020 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023021 if(wpalIsSsrPanicOnFailure())
23022 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023023 } else {
23024 /* if this timer fires, it means Riva did not receive the FIQ */
23025 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023026 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023027#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023028 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23029 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023030#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023031 }
23032 else
23033 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023034 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023035 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023036 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023037 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23038 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023039 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23040 "uArchTimeStampTmrStart: %llu seconds, "
23041 "uArchTimeStampTmrExp: %llu seconds",
23042 pWDICtx->uArchTimeStampRspTmrStart,
23043 pWDICtx->uArchTimeStampRspTmrExp);
23044
Jeff Johnson295189b2012-06-20 16:38:30 -070023045 }
23046
23047 return;
23048
23049}/*WDI_ResponseTimerCB*/
23050
23051
23052/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023053 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023054
Jeff Johnsone7245742012-09-05 17:12:55 -070023055
23056 @param pWDICtx: pointer to the WLAN DAL context
23057 pEventData: pointer to the event information structure
23058
Jeff Johnson295189b2012-06-20 16:38:30 -070023059 @see
23060 @return Result of the function call
23061*/
23062WPT_INLINE WDI_Status
23063WDI_ProcessResponse
23064(
23065 WDI_ControlBlockType* pWDICtx,
23066 WDI_EventInfoType* pEventData
23067)
23068{
23069 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23070
Jeff Johnsone7245742012-09-05 17:12:55 -070023071 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023072 already checked these pointers
23073 ! - revisit this assumption */
23074 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23075 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023076 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023077 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023078 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023079 WDI_getRespMsgString(pEventData->wdiResponse),
23080 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23081 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23082 }
23083 else
23084 {
23085 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023086 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023087 pEventData->wdiResponse);
23088 return WDI_STATUS_E_NOT_IMPLEMENT;
23089 }
23090}/*WDI_ProcessResponse*/
23091
23092
23093/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023094 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023095=========================================================================*/
23096
23097/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023098 @brief Utility function used by the DAL Core to help queue a
23099 request that cannot be processed right away.
23100 @param
23101
Jeff Johnson295189b2012-06-20 16:38:30 -070023102 pWDICtx: - pointer to the WDI control block
23103 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023104 queued
23105
23106 @see
23107 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023108*/
23109WDI_Status
23110WDI_QueuePendingReq
23111(
23112 WDI_ControlBlockType* pWDICtx,
23113 WDI_EventInfoType* pEventData
23114)
23115{
Jeff Johnsone7245742012-09-05 17:12:55 -070023116 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023117 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023118 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23120
23121 if ( NULL == pEventDataQueue )
23122 {
23123 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023124 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023125 WDI_ASSERT(0);
23126 return WDI_STATUS_MEM_FAILURE;
23127 }
23128
23129 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23130 pEventDataQueue->pUserData = pEventData->pUserData;
23131 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23132 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023133 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023134
23135 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23136 {
23137 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023138
Jeff Johnson295189b2012-06-20 16:38:30 -070023139 if ( NULL == pEventInfo )
23140 {
23141 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023142 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023143 WDI_ASSERT(0);
23144 wpalMemoryFree(pEventDataQueue);
23145 return WDI_STATUS_MEM_FAILURE;
23146 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023147
Jeff Johnson295189b2012-06-20 16:38:30 -070023148 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23149
23150 }
23151 pEventDataQueue->pEventData = pEventInfo;
23152
23153 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023154 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023155
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023156 if (eWLAN_PAL_STATUS_E_FAILURE ==
23157 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23158 {
23159 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23160 "pEventDataQueue wpal_list_insert_back failed");
23161 WDI_ASSERT(0);
23162 wpalMemoryFree(pEventDataQueue);
23163 wpalMemoryFree(pEventInfo);
23164 return WDI_STATUS_MEM_FAILURE;
23165 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023166
23167 return WDI_STATUS_SUCCESS;
23168}/*WDI_QueuePendingReq*/
23169
23170/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023171 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023172 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023173 @param
23174
23175 pMsg - pointer to the message
23176
23177 @see
23178 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023179*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023180void
Jeff Johnson295189b2012-06-20 16:38:30 -070023181WDI_PALCtrlMsgCB
23182(
23183 wpt_msg *pMsg
23184)
23185{
23186 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023187 WDI_ControlBlockType* pWDICtx = NULL;
23188 WDI_Status wdiStatus;
23189 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023190 void* pUserData;
23191 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23192
23193 if (( NULL == pMsg )||
23194 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23195 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23196 {
23197 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023198 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023199 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023200 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023201 }
23202
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023203 /*Access to the global state must be locked */
23204 wpalMutexAcquire(&pWDICtx->wptMutex);
23205
Jeff Johnson295189b2012-06-20 16:38:30 -070023206 /*Transition back to the state that we had before serialization
23207 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023208 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023209 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023210 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023211
23212 /*-----------------------------------------------------------------------
23213 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023214 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023215 -----------------------------------------------------------------------*/
23216 switch ( pEventData->wdiRequest )
23217 {
23218
Jeff Johnsone7245742012-09-05 17:12:55 -070023219 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023220 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23221 break;
23222
Jeff Johnson295189b2012-06-20 16:38:30 -070023223 case WDI_NV_DOWNLOAD_REQ:
23224 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23225 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23226 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23227 {
23228 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023229 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023230 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23231 }
23232 else
23233 {
23234 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23235 }
23236
23237 break;
23238
23239 default:
23240 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23241 break;
23242 }/*switch ( pEventData->wdiRequest )*/
23243
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023244 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023245 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023246 {
23247 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23248
23249 if ( NULL != pfnReqStatusCB )
23250 {
23251 /*Fail the request*/
23252 pfnReqStatusCB( wdiStatus, pUserData);
23253 }
23254 }
23255
23256 /* Free data - that was allocated when queueing*/
23257 if( pEventData != NULL )
23258 {
23259 if( pEventData->pEventData != NULL )
23260 {
23261 wpalMemoryFree(pEventData->pEventData);
23262 }
23263 wpalMemoryFree(pEventData);
23264 }
23265
23266 if( pMsg != NULL )
23267 {
23268 wpalMemoryFree(pMsg);
23269 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023270
Jeff Johnson295189b2012-06-20 16:38:30 -070023271}/*WDI_PALCtrlMsgCB*/
23272
23273/**
23274 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023275 and schedule for execution a pending request
23276 @param
23277
Jeff Johnson295189b2012-06-20 16:38:30 -070023278 pWDICtx: - pointer to the WDI control block
23279 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023280 queued
23281
23282 @see
23283 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023284*/
23285WDI_Status
23286WDI_DequeuePendingReq
23287(
23288 WDI_ControlBlockType* pWDICtx
23289)
23290{
Jeff Johnsone7245742012-09-05 17:12:55 -070023291 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023292 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023293 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23295
Jeff Johnsone7245742012-09-05 17:12:55 -070023296 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023297
23298 if ( NULL == pNode )
23299 {
23300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023301 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023302 return WDI_STATUS_SUCCESS;
23303 }
23304
23305 /*The node actually points to the 1st element inside the Event Data struct -
23306 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023307 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023308
23309 /*Serialize processing in the control thread
23310 !TO DO: - check to see if these are all the messages params that need
23311 to be filled in*/
23312 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23313
23314 if ( NULL == palMsg )
23315 {
23316 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023317 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023318 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023319 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023320 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023322 palMsg->callback = WDI_PALCtrlMsgCB;
23323 palMsg->ptr = pEventData;
23324
23325 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023326 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023327 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023328
Jeff Johnson295189b2012-06-20 16:38:30 -070023329 /*Transition back to BUSY as we need to handle a queued request*/
23330 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023331
Jeff Johnson295189b2012-06-20 16:38:30 -070023332 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23333
23334 return WDI_STATUS_PENDING;
23335}/*WDI_DequeuePendingReq*/
23336
23337
23338/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023339 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023340 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023341 away.- The assoc requests will be queued by BSSID
23342 @param
23343
Jeff Johnson295189b2012-06-20 16:38:30 -070023344 pWDICtx: - pointer to the WDI control block
23345 pEventData: pointer to the evnt info that needs to be queued
23346 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023347
23348 @see
23349 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023350*/
23351WDI_Status
23352WDI_QueueNewAssocRequest
23353(
23354 WDI_ControlBlockType* pWDICtx,
23355 WDI_EventInfoType* pEventData,
23356 wpt_macAddr macBSSID
23357)
23358{
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 wpt_uint8 i;
23360 WDI_BSSSessionType* pSession = NULL;
23361 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023362 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023363 void* pEventInfo;
23364 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023366
Jeff Johnsone7245742012-09-05 17:12:55 -070023367
23368 /*------------------------------------------------------------------------
23369 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023370 ------------------------------------------------------------------------*/
23371 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23372 {
23373 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23374 {
23375 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023376 pSession = &pWDICtx->aBSSSessions[i];
23377 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023378 }
23379 }
23380
23381 if ( i >= WDI_MAX_BSS_SESSIONS )
23382 {
23383 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023384 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023385 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023386
Jeff Johnson295189b2012-06-20 16:38:30 -070023387 /*------------------------------------------------------------------------
23388 Fill in the BSSID for this session and set the usage flag
23389 ------------------------------------------------------------------------*/
23390 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023391 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023392
23393 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023394 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023395 ------------------------------------------------------------------------*/
23396 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23397 if ( NULL == pEventDataQueue )
23398 {
23399 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023400 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023401 WDI_ASSERT(0);
23402 return WDI_STATUS_MEM_FAILURE;
23403 }
23404
23405 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23406 if ( NULL == pSessionIdElement )
23407 {
23408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023409 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023410 WDI_ASSERT(0);
23411 wpalMemoryFree(pEventDataQueue);
23412 return WDI_STATUS_MEM_FAILURE;
23413 }
23414
23415 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23416 if ( NULL == pEventInfo )
23417 {
23418 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023419 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023420 WDI_ASSERT(0);
23421 wpalMemoryFree(pSessionIdElement);
23422 wpalMemoryFree(pEventDataQueue);
23423 return WDI_STATUS_MEM_FAILURE;
23424 }
23425
23426 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23427 pEventDataQueue->pUserData = pEventData->pUserData;
23428 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23429 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023431
23432 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23433 pEventDataQueue->pEventData = pEventInfo;
23434
23435 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023436 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023437
23438 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023439 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023440
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023441 if (eWLAN_PAL_STATUS_E_FAILURE ==
23442 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23443 {
23444 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23445 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23446 WDI_ASSERT(0);
23447 wpalMemoryFree(pSessionIdElement);
23448 wpalMemoryFree(pEventDataQueue);
23449 wpalMemoryFree(pEventInfo);
23450 return WDI_STATUS_MEM_FAILURE;
23451 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023452
23453 /*We need to maintain a separate list that keeps track of the order in which
23454 the new assoc requests are being queued such that we can start processing
23455 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023456 pSessionIdElement->ucIndex = i;
23457 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023458
23459 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23460 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023461 if (eWLAN_PAL_STATUS_E_FAILURE ==
23462 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23463 {
23464 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23465 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23466 WDI_ASSERT(0);
23467 wpalMemoryFree(pSessionIdElement);
23468 wpalMemoryFree(pEventDataQueue);
23469 wpalMemoryFree(pEventInfo);
23470 return WDI_STATUS_MEM_FAILURE;
23471 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023472
23473 /*Return pending as this is what the status of the request is since it has
23474 been queued*/
23475 return WDI_STATUS_PENDING;
23476}/*WDI_QueueNewAssocRequest*/
23477
23478/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023479 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023480 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023481 away.- The assoc requests will be queued by BSSID
23482 @param
23483
Jeff Johnson295189b2012-06-20 16:38:30 -070023484 pWDICtx: - pointer to the WDI control block
23485 pSession: - session in which to queue
23486 pEventData: pointer to the event info that needs to be
23487 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023488
23489 @see
23490 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023491*/
23492WDI_Status
23493WDI_QueueAssocRequest
23494(
23495 WDI_ControlBlockType* pWDICtx,
23496 WDI_BSSSessionType* pSession,
23497 WDI_EventInfoType* pEventData
23498)
23499{
Jeff Johnsone7245742012-09-05 17:12:55 -070023500 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023501 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023502 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023503 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023504
23505 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023506 Sanity check
23507 ------------------------------------------------------------------------*/
23508 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23509 {
23510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023511 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023512
Jeff Johnsone7245742012-09-05 17:12:55 -070023513 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023514 }
23515
23516 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023517 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023518 ------------------------------------------------------------------------*/
23519 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23520 if ( NULL == pEventDataQueue )
23521 {
23522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023523 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023524 WDI_ASSERT(0);
23525 return WDI_STATUS_MEM_FAILURE;
23526 }
23527
23528 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23529 if ( NULL == pEventInfo )
23530 {
23531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23532 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023533 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023534 WDI_ASSERT(0);
23535 wpalMemoryFree(pEventDataQueue);
23536 return WDI_STATUS_MEM_FAILURE;
23537 }
23538
23539 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23540 pEventDataQueue->pUserData = pEventData->pUserData;
23541 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23542 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023543 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023544 pEventDataQueue->pEventData = pEventInfo;
23545
23546 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23547
23548 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023549 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023550
23551 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023552 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023553
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023554 if (eWLAN_PAL_STATUS_E_FAILURE ==
23555 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23556 {
23557 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23558 "%s: Cannot allocate memory for queueing event data info",
23559 __func__);
23560 WDI_ASSERT(0);
23561 wpalMemoryFree(pEventDataQueue);
23562 wpalMemoryFree(pEventInfo);
23563 return WDI_STATUS_MEM_FAILURE;
23564 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023565
23566 /*The result of this operation is pending because the request has been
23567 queued and it will be processed at a later moment in time */
23568 return WDI_STATUS_PENDING;
23569}/*WDI_QueueAssocRequest*/
23570
23571/**
23572 @brief Utility function used by the DAL Core to help dequeue
23573 an association request that was pending
23574 The request will be queued up in front of the main
23575 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023576 @param
23577
Jeff Johnson295189b2012-06-20 16:38:30 -070023578 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023579
23580
23581 @see
23582 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023583*/
23584WDI_Status
23585WDI_DequeueAssocRequest
23586(
23587 WDI_ControlBlockType* pWDICtx
23588)
23589{
Jeff Johnsone7245742012-09-05 17:12:55 -070023590 wpt_list_node* pNode = NULL;
23591 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023592 WDI_BSSSessionType* pSession;
23593 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023594
23595 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023596 Sanity check
23597 ------------------------------------------------------------------------*/
23598 if ( NULL == pWDICtx )
23599 {
23600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023601 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023602
Jeff Johnsone7245742012-09-05 17:12:55 -070023603 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023604 }
23605
23606 /*------------------------------------------------------------------------
23607 An association has been completed => a new association can occur
23608 Check to see if there are any pending associations ->
23609 If so , transfer all the pending requests into the busy queue for
23610 processing
23611 These requests have arrived prior to the requests in the busy queue
23612 (bc they needed to be processed in order to be placed in this queue)
23613 => they will be placed at the front of the busy queue
23614 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023615 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023616
23617 if ( NULL == pNode )
23618 {
23619 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023620 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023621 return WDI_STATUS_SUCCESS;
23622 }
23623
23624 /*The node actually points to the 1st element inside the Session Id struct -
23625 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023626 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023627
23628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23629 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23630
23631 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23632 {
23633 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023634
Jeff Johnson295189b2012-06-20 16:38:30 -070023635 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023636 the front of the main waiting queue for subsequent execution*/
23637 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023638 while ( NULL != pNode )
23639 {
23640 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023641 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23642 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023643 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023644 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023645 }
23646 else
23647 {
23648 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023649 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023650 WPAL_ASSERT(0);
23651 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023652 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023654
Jeff Johnson295189b2012-06-20 16:38:30 -070023655 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23656 wpalMemoryFree(pSessionIdElement);
23657 return WDI_STATUS_SUCCESS;
23658}/*WDI_DequeueAssocRequest*/
23659
23660/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023661 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023662 pending requests - all req cb will be called with
23663 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023664 @param
23665
Jeff Johnson295189b2012-06-20 16:38:30 -070023666 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023667
23668 @see
23669 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023670*/
23671WDI_Status
23672WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023673(
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 WDI_ControlBlockType* pWDICtx
23675)
23676{
Jeff Johnsone7245742012-09-05 17:12:55 -070023677 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023678 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023679 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023680 void* pUserData;
23681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23682
Jeff Johnsone7245742012-09-05 17:12:55 -070023683 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023684
23685 /*------------------------------------------------------------------------
23686 Go through all the requests and fail them - this will only be called
23687 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023688 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023689 ------------------------------------------------------------------------*/
23690 while( pNode )
23691 {
23692 /*The node actually points to the 1st element inside the Event Data struct -
23693 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023694 pEventDataQueue = (WDI_EventInfoType*)pNode;
23695
Jeff Johnson295189b2012-06-20 16:38:30 -070023696 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23697 if ( NULL != pfnReqStatusCB )
23698 {
23699 /*Fail the request*/
23700 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23701 }
23702 /* Free data - that was allocated when queueing */
23703 if ( pEventDataQueue->pEventData != NULL )
23704 {
23705 wpalMemoryFree(pEventDataQueue->pEventData);
23706 }
23707 wpalMemoryFree(pEventDataQueue);
23708
23709 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23710 {
23711 break;
23712 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023713 }
23714
Jeff Johnson295189b2012-06-20 16:38:30 -070023715 return WDI_STATUS_SUCCESS;
23716}/*WDI_ClearPendingRequests*/
23717
23718/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023719 @brief Helper routine used to init the BSS Sessions in the WDI control block
23720
23721
23722 @param pWDICtx: pointer to the WLAN DAL context
23723
Jeff Johnson295189b2012-06-20 16:38:30 -070023724 @see
23725*/
23726void
23727WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023728(
Jeff Johnson295189b2012-06-20 16:38:30 -070023729 WDI_ControlBlockType* pWDICtx
23730)
23731{
Jeff Johnsone7245742012-09-05 17:12:55 -070023732 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023733 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23734
23735 /*-------------------------------------------------------------------------
23736 No Sanity check
23737 -------------------------------------------------------------------------*/
23738 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23739 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023741 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23742 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23743 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23744 }
23745}/*WDI_ResetAssocSessions*/
23746
23747/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023748 @brief Helper routine used to find a session based on the BSSID
23749
23750
23751 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023752 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 pSession: pointer to the session (if found)
23754
Jeff Johnson295189b2012-06-20 16:38:30 -070023755 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023756 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023757*/
23758wpt_uint8
23759WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023760(
Jeff Johnson295189b2012-06-20 16:38:30 -070023761 WDI_ControlBlockType* pWDICtx,
23762 wpt_macAddr macBSSID,
23763 WDI_BSSSessionType** ppSession
23764)
23765{
Jeff Johnsone7245742012-09-05 17:12:55 -070023766 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023767 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23768
23769 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023770 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 -------------------------------------------------------------------------*/
23772 if ( NULL == ppSession )
23773 {
23774 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023775 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023776 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023777 }
23778
Jeff Johnsone7245742012-09-05 17:12:55 -070023779 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023780
Jeff Johnsone7245742012-09-05 17:12:55 -070023781 /*------------------------------------------------------------------------
23782 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023783 ------------------------------------------------------------------------*/
23784 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23785 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023786 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23787 (eWLAN_PAL_TRUE ==
23788 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23789 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023790 {
23791 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023792 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 return i;
23794 }
23795 }
23796
Jeff Johnsone7245742012-09-05 17:12:55 -070023797 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023798}/*WDI_FindAssocSession*/
23799
23800/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023801 @brief Helper routine used to find a session based on the BSSID
23802
23803
23804 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 ucBSSIdx: BSS Index of the session
23806 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023807
Jeff Johnson295189b2012-06-20 16:38:30 -070023808 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023809 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023810*/
23811wpt_uint8
23812WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023813(
Jeff Johnson295189b2012-06-20 16:38:30 -070023814 WDI_ControlBlockType* pWDICtx,
23815 wpt_uint16 ucBSSIdx,
23816 WDI_BSSSessionType** ppSession
23817)
23818{
Jeff Johnsone7245742012-09-05 17:12:55 -070023819 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023820 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23821
23822 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023823 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 -------------------------------------------------------------------------*/
23825 if ( NULL == ppSession )
23826 {
23827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023828 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 }
23831
Jeff Johnsone7245742012-09-05 17:12:55 -070023832 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023833
Jeff Johnsone7245742012-09-05 17:12:55 -070023834 /*------------------------------------------------------------------------
23835 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023836 ------------------------------------------------------------------------*/
23837 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23838 {
23839 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23840 {
23841 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023842 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023843 return i;
23844 }
23845 }
23846
Jeff Johnsone7245742012-09-05 17:12:55 -070023847 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023848}/*WDI_FindAssocSessionByBSSIdx*/
23849
23850/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023851 @brief Helper routine used to find a session based on the BSSID
23852
23853
23854 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023855 ucBSSIdx: BSS Index of the session
23856 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023857
Jeff Johnson295189b2012-06-20 16:38:30 -070023858 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023859 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023860*/
23861wpt_uint8
23862WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023863(
Jeff Johnson295189b2012-06-20 16:38:30 -070023864 WDI_ControlBlockType* pWDICtx,
23865 wpt_uint16 usIdx,
23866 WDI_BSSSessionType** ppSession
23867)
23868{
23869 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23870
23871 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023872 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023873 -------------------------------------------------------------------------*/
23874 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
23875 {
23876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023877 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023878 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023879 }
23880
23881 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023882 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070023883
23884 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070023885
Jeff Johnson295189b2012-06-20 16:38:30 -070023886}/*WDI_FindAssocSessionByBSSIdx*/
23887
23888/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023889 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023890 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023891
23892
23893 @param pWDICtx: pointer to the WLAN DAL context
23894 pSession: pointer to the session (if found)
23895
Jeff Johnson295189b2012-06-20 16:38:30 -070023896 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023897 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023898*/
23899wpt_uint8
23900WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070023901(
Jeff Johnson295189b2012-06-20 16:38:30 -070023902 WDI_ControlBlockType* pWDICtx,
23903 WDI_BSSSessionType** ppSession
23904)
23905{
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23908 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023909 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023910 -------------------------------------------------------------------------*/
23911 if ( NULL == ppSession )
23912 {
23913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023914 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023915 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023916 }
23917
Jeff Johnsone7245742012-09-05 17:12:55 -070023918 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023919
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 /*------------------------------------------------------------------------
23921 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070023922 ------------------------------------------------------------------------*/
23923 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23924 {
23925 if ( ! pWDICtx->aBSSSessions[i].bInUse )
23926 {
23927 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023928 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023929 return i;
23930 }
23931 }
23932
Jeff Johnsone7245742012-09-05 17:12:55 -070023933 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023934}/*WDI_FindEmptySession*/
23935
23936
23937/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023938 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070023939 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023940
23941
23942 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023943 macBSSID: pointer to BSSID. If NULL, get all the session.
23944 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
23945 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
23946 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070023947 @see
23948 @return Number of sessions in use
23949*/
23950wpt_uint8
23951WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070023952(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023953 WDI_ControlBlockType* pWDICtx,
23954 wpt_macAddr macBSSID,
23955 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023956)
23957{
Jeff Johnsone7245742012-09-05 17:12:55 -070023958 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070023959 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023960
23961 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023962 Count all sessions in use
23963 ------------------------------------------------------------------------*/
23964 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23965 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023966 if ( macBSSID && skipBSSID &&
23967 (eWLAN_PAL_TRUE ==
23968 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23969 WDI_MAC_ADDR_LEN)))
23970 {
23971 continue;
23972 }
23973 else if ( pWDICtx->aBSSSessions[i].bInUse )
23974 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023975 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070023976 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023977 }
23978
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070023980}/*WDI_GetActiveSessionsCount*/
23981
23982/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023983 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070023984 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070023985
23986
23987 @param pWDICtx: pointer to the WLAN DAL context
23988 pSession: pointer to the session (if found)
23989
Jeff Johnson295189b2012-06-20 16:38:30 -070023990 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023991 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023992*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023993void
Jeff Johnson295189b2012-06-20 16:38:30 -070023994WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023995(
Jeff Johnson295189b2012-06-20 16:38:30 -070023996 WDI_ControlBlockType* pWDICtx,
23997 WDI_BSSSessionType* ppSession
23998)
23999{
24000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024002 -------------------------------------------------------------------------*/
24003 if ( NULL == ppSession )
24004 {
24005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024006 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024007 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 }
24009
Jeff Johnsone7245742012-09-05 17:12:55 -070024010 /*------------------------------------------------------------------------
24011 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070024012 ------------------------------------------------------------------------*/
24013 wpal_list_destroy(&ppSession->wptPendingQueue);
24014 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070024015 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
24016 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024017 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24018 wpal_list_init(&ppSession->wptPendingQueue);
24019
24020}/*WDI_DeleteSession*/
24021
24022/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024023 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024024 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024025 @param
24026
Jeff Johnson295189b2012-06-20 16:38:30 -070024027 WDI_AddStaParams: - pointer to the WDI Add STA params
24028 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024029
24030 @see
24031 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024032*/
24033void
24034WDI_AddBcastSTAtoSTATable
24035(
24036 WDI_ControlBlockType* pWDICtx,
24037 WDI_AddStaParams * staParams,
24038 wpt_uint16 usBcastStaIdx
24039)
24040{
24041 WDI_AddStaParams wdiAddSTAParam = {0};
24042 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24043 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24044
24045 /*---------------------------------------------------------------------
24046 Sanity check
24047 ---------------------------------------------------------------------*/
24048 if ( NULL == staParams )
24049 {
24050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024051 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024052
Jeff Johnsone7245742012-09-05 17:12:55 -070024053 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024054 }
24055
24056 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24057 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24058 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24059 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24060 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24061 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24062 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24063 WDI_MAC_ADDR_LEN );
24064 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24065 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24066 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24067 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24068 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24069 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24070 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024071
Jeff Johnson295189b2012-06-20 16:38:30 -070024072 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24073}
24074
24075/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024076 @brief NV blob will be divided into fragments of size 4kb and
24077 Sent to HAL
24078
24079 @param pWDICtx: pointer to the WLAN DAL context
24080 pEventData: pointer to the event information structure
24081
Jeff Johnson295189b2012-06-20 16:38:30 -070024082 @see
24083 @return Result of the function call
24084 */
24085
24086WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024087(
Jeff Johnson295189b2012-06-20 16:38:30 -070024088 WDI_ControlBlockType* pWDICtx,
24089 WDI_EventInfoType* pEventData
24090)
24091{
24092
24093 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24094 wpt_uint8* pSendBuffer = NULL;
24095 wpt_uint16 usDataOffset = 0;
24096 wpt_uint16 usSendSize = 0;
24097 wpt_uint16 usCurrentFragmentSize =0;
24098 wpt_uint8* pSrcBuffer = NULL;
24099 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24100 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24101
24102 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24103 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24104 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24105
Jeff Johnsone7245742012-09-05 17:12:55 -070024106 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024107 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24108
24109 /* Update the current Fragment Number */
24110 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24111
24112 /*Update the HAL REQ structure */
24113 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24114 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24115 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24116
24117 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024118 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024119 image will be sent to HAL*/
24120
Jeff Johnsone7245742012-09-05 17:12:55 -070024121 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024122 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024123 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024124 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024125 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024126 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24127 usCurrentFragmentSize = FRAGMENT_SIZE;
24128
24129 /*Update the HAL REQ structure */
24130 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24131 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24132
24133 }
24134 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024135 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024136 usCurrentFragmentSize = FRAGMENT_SIZE;
24137
24138 /*Update the HAL REQ structure */
24139 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24140 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24141 }
24142
24143 /*-----------------------------------------------------------------------
24144 Get message buffer
24145 -----------------------------------------------------------------------*/
24146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24147 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24148 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024149 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024150 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24151 {
24152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024153 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024154 pEventData, pwdiNvDownloadReqParams);
24155 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024156 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024157 }
24158
24159 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024161 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24162
24163 /* Appending the NV image fragment */
24164 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24165 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24166 usCurrentFragmentSize);
24167
24168 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024169 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024170
Jeff Johnsone7245742012-09-05 17:12:55 -070024171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24172 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024173 WDI_NV_DOWNLOAD_RESP);
24174
24175}
Jeff Johnsone7245742012-09-05 17:12:55 -070024176/*============================================================================
24177 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024178 ============================================================================*/
24179/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024180 @brief Helper routine used to find a session based on the BSSID
24181 @param pContext: pointer to the WLAN DAL context
24182 @param pDPContext: pointer to the Datapath context
24183
Jeff Johnson295189b2012-06-20 16:38:30 -070024184 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024185 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024186*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024187WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024188WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24189{
24190 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24191
24192 pCB->pDPContext = pDPContext;
24193 return;
24194}
24195
24196/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024197 @brief Helper routine used to find a session based on the BSSID
24198
24199
24200 @param pContext: pointer to the WLAN DAL context
24201
Jeff Johnson295189b2012-06-20 16:38:30 -070024202 @see
24203 @return pointer to Datapath context
24204*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024205WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024206WDI_DS_GetDatapathContext (void *pContext)
24207{
24208 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24209 return pCB->pDPContext;
24210}
24211/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024212 @brief Helper routine used to find a session based on the BSSID
24213
24214
24215 @param pContext: pointer to the WLAN DAL context
24216 @param pDTDriverContext: pointer to the Transport Driver context
24217
Jeff Johnson295189b2012-06-20 16:38:30 -070024218 @see
24219 @return void
24220*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024221WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024222WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24223{
24224 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24225
24226 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024227 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024228}
24229
24230/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024231 @brief Helper routine used to find a session based on the BSSID
24232
24233
24234 @param pWDICtx: pointer to the WLAN DAL context
24235
Jeff Johnson295189b2012-06-20 16:38:30 -070024236 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024237 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024238*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024239WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024240WDT_GetTransportDriverContext (void *pContext)
24241{
24242 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024243 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024244}
24245
Jeff Johnsone7245742012-09-05 17:12:55 -070024246/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024247 Helper inline converters
24248 ============================================================================*/
24249/*Convert WDI driver type into HAL driver type*/
24250WPT_STATIC WPT_INLINE WDI_Status
24251WDI_HAL_2_WDI_STATUS
24252(
24253 eHalStatus halStatus
24254)
24255{
Jeff Johnsone7245742012-09-05 17:12:55 -070024256 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024257 the chances of getting inlined*/
24258 switch( halStatus )
24259 {
24260 case eHAL_STATUS_SUCCESS:
24261 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24262 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24263 return WDI_STATUS_SUCCESS;
24264 case eHAL_STATUS_FAILURE:
24265 return WDI_STATUS_E_FAILURE;
24266 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024267 return WDI_STATUS_MEM_FAILURE;
24268 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024270 default:
24271 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24272 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024273
Jeff Johnsone7245742012-09-05 17:12:55 -070024274 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024275}/*WDI_HAL_2_WDI_STATUS*/
24276
24277/*Convert WDI request type into HAL request type*/
24278WPT_STATIC WPT_INLINE tHalHostMsgType
24279WDI_2_HAL_REQ_TYPE
24280(
24281 WDI_RequestEnumType wdiReqType
24282)
24283{
Jeff Johnsone7245742012-09-05 17:12:55 -070024284 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024285 the chances of getting inlined*/
24286 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024287 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024288 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024289 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024290 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024291 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024292 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024293 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024294 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024295 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024296 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024297 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024298 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024299 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024301 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024302 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024303 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024305 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024306 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024307 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024308 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024309 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024310 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024311 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024312 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024313 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024314 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024315 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024316 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024317 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024318 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024321 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024322 return WLAN_HAL_RMV_STAKEY_REQ;
24323 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024324 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024325 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024326 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024327 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024328 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024329 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024330 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024331 case WDI_DEL_BA_REQ:
24332 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024333#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 case WDI_TSM_STATS_REQ:
24335 return WLAN_HAL_TSM_STATS_REQ;
24336#endif
24337 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024338 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024339 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024340 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024341 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024342 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024343 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024344 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024345 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024346 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024347 case WDI_ADD_BA_SESSION_REQ:
24348 return WLAN_HAL_ADD_BA_SESSION_REQ;
24349 case WDI_TRIGGER_BA_REQ:
24350 return WLAN_HAL_TRIGGER_BA_REQ;
24351 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024352 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024353 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024354 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024355 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24356 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24357 case WDI_SET_MAX_TX_POWER_REQ:
24358 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024359 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24360 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024361 case WDI_SET_TX_POWER_REQ:
24362 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024363 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24364 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024365#ifdef FEATURE_WLAN_TDLS
24366 case WDI_TDLS_LINK_ESTABLISH_REQ:
24367 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024368 case WDI_TDLS_CHAN_SWITCH_REQ:
24369 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024370#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024371 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024372 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024373 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024374 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024375 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024376 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024377 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024378 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024379 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024380 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024381 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024382 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024383 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024384 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024385 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024386 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024387 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024388 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024389 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024390 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024391 case WDI_REM_BEACON_FILTER_REQ:
24392 return WLAN_HAL_REM_BCN_FILTER_REQ;
24393 case WDI_SET_RSSI_THRESHOLDS_REQ:
24394 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24395 case WDI_HOST_OFFLOAD_REQ:
24396 return WLAN_HAL_HOST_OFFLOAD_REQ;
24397 case WDI_WOWL_ADD_BC_PTRN_REQ:
24398 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24399 case WDI_WOWL_DEL_BC_PTRN_REQ:
24400 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24401 case WDI_WOWL_ENTER_REQ:
24402 return WLAN_HAL_ENTER_WOWL_REQ;
24403 case WDI_WOWL_EXIT_REQ:
24404 return WLAN_HAL_EXIT_WOWL_REQ;
24405 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24406 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24407 case WDI_NV_DOWNLOAD_REQ:
24408 return WLAN_HAL_DOWNLOAD_NV_REQ;
24409 case WDI_FLUSH_AC_REQ:
24410 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24411 case WDI_BTAMP_EVENT_REQ:
24412 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24413#ifdef WLAN_FEATURE_VOWIFI_11R
24414 case WDI_AGGR_ADD_TS_REQ:
24415 return WLAN_HAL_AGGR_ADD_TS_REQ;
24416#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024417 case WDI_FTM_CMD_REQ:
24418 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 case WDI_ADD_STA_SELF_REQ:
24420 return WLAN_HAL_ADD_STA_SELF_REQ;
24421 case WDI_DEL_STA_SELF_REQ:
24422 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024423#ifdef FEATURE_OEM_DATA_SUPPORT
24424 case WDI_START_OEM_DATA_REQ:
24425 return WLAN_HAL_START_OEM_DATA_REQ;
24426#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024427 case WDI_HOST_RESUME_REQ:
24428 return WLAN_HAL_HOST_RESUME_REQ;
24429 case WDI_HOST_SUSPEND_IND:
24430 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024431 case WDI_TRAFFIC_STATS_IND:
24432 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024433#ifdef WLAN_FEATURE_11W
24434 case WDI_EXCLUDE_UNENCRYPTED_IND:
24435 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24436#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024437 case WDI_KEEP_ALIVE_REQ:
24438 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024439#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024440 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24441 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024442#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024443#ifdef FEATURE_WLAN_SCAN_PNO
24444 case WDI_SET_PREF_NETWORK_REQ:
24445 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24446 case WDI_SET_RSSI_FILTER_REQ:
24447 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24448 case WDI_UPDATE_SCAN_PARAMS_REQ:
24449 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24450#endif // FEATURE_WLAN_SCAN_PNO
24451 case WDI_SET_TX_PER_TRACKING_REQ:
24452 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24453#ifdef WLAN_FEATURE_PACKET_FILTERING
24454 case WDI_8023_MULTICAST_LIST_REQ:
24455 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24456 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024457 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24459 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24460 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24461 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24462#endif // WLAN_FEATURE_PACKET_FILTERING
24463 case WDI_HAL_DUMP_CMD_REQ:
24464 return WLAN_HAL_DUMP_COMMAND_REQ;
24465#ifdef WLAN_FEATURE_GTK_OFFLOAD
24466 case WDI_GTK_OFFLOAD_REQ:
24467 return WLAN_HAL_GTK_OFFLOAD_REQ;
24468 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24469 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24470#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24471
24472 case WDI_INIT_SCAN_CON_REQ:
24473 return WLAN_HAL_INIT_SCAN_CON_REQ;
24474 case WDI_SET_POWER_PARAMS_REQ:
24475 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24476 case WDI_SET_TM_LEVEL_REQ:
24477 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24478 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24479 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024480#ifdef WLAN_FEATURE_11AC
24481 case WDI_UPDATE_VHT_OP_MODE_REQ:
24482 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24483#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024484 case WDI_GET_ROAM_RSSI_REQ:
24485 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024486 case WDI_DHCP_START_IND:
24487 return WLAN_HAL_DHCP_START_IND;
24488 case WDI_DHCP_STOP_IND:
24489 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024490#ifdef FEATURE_WLAN_LPHB
24491 case WDI_LPHB_CFG_REQ:
24492 return WLAN_HAL_LPHB_CFG_REQ;
24493#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024494 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24495 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24496 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24497 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
24498
Rajeev79dbe4c2013-10-05 11:03:42 +053024499#ifdef FEATURE_WLAN_BATCH_SCAN
24500 case WDI_SET_BATCH_SCAN_REQ:
24501 return WLAN_HAL_BATCHSCAN_SET_REQ;
24502 case WDI_STOP_BATCH_SCAN_IND:
24503 return WLAN_HAL_BATCHSCAN_STOP_IND;
24504 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24505 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24506#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070024507 case WDI_RATE_UPDATE_IND:
24508 return WLAN_HAL_RATE_UPDATE_IND;
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024509 case WDI_START_HT40_OBSS_SCAN_IND:
24510 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24511 case WDI_STOP_HT40_OBSS_SCAN_IND:
24512 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024513 case WDI_UPDATE_CHAN_REQ:
24514 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024515 case WDI_CH_SWITCH_REQ_V1:
24516 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024517 case WDI_GET_BCN_MISS_RATE_REQ:
24518 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024519
24520#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24521 case WDI_LL_STATS_SET_REQ:
24522 return WLAN_HAL_LL_SET_STATS_REQ;
24523 case WDI_LL_STATS_GET_REQ:
24524 return WLAN_HAL_LL_GET_STATS_REQ;
24525 case WDI_LL_STATS_CLEAR_REQ:
24526 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24527#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024528#ifdef WLAN_FEATURE_EXTSCAN
24529 case WDI_EXTSCAN_START_REQ:
24530 return WLAN_HAL_EXT_SCAN_START_REQ;
24531 case WDI_EXTSCAN_STOP_REQ:
24532 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24533 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24534 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24535 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24536 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24537 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24538 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24539 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24540 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024541 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24542 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24543 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24544 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053024545 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
24546 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053024547#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024548 case WDI_SPOOF_MAC_ADDR_REQ:
24549 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024550 case WDI_GET_FW_STATS_REQ:
24551 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024552 case WDI_ENCRYPT_MSG_REQ:
24553 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024554 case WDI_FW_LOGGING_INIT_REQ:
24555 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024556 case WDI_GET_FRAME_LOG_REQ:
24557 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024558 case WDI_NAN_REQUEST:
24559 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024560 case WDI_SET_RTS_CTS_HTVHT_IND:
24561 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024562 case WDI_MON_START_REQ:
24563 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24564 case WDI_MON_STOP_REQ:
24565 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024566 case WDI_FW_LOGGING_DXE_DONE_IND:
24567 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024568 case WDI_FATAL_EVENT_LOGGING_REQ:
24569 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024570 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24571 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024572 case WDI_FWR_MEM_DUMP_REQ:
24573 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024574 case WDI_START_RSSI_MONITOR_REQ:
24575 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24576 case WDI_STOP_RSSI_MONITOR_REQ:
24577 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024578 case WDI_WIFI_CONFIG_SET_REQ:
24579 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024580 case WDI_START_OEM_DATA_REQ_IND_NEW:
24581 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053024582 case WDI_ANTENNA_DIVERSITY_SELECTION_REQ:
24583 return WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_REQ;
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053024584 case WDI_MODIFY_ROAM_PARAMS_IND:
24585 return WLAN_HAL_MODIFY_ROAM_PARAMS_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024586 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024587 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024588 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024589
Jeff Johnson295189b2012-06-20 16:38:30 -070024590}/*WDI_2_HAL_REQ_TYPE*/
24591
24592/*Convert WDI response type into HAL response type*/
24593WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24594HAL_2_WDI_RSP_TYPE
24595(
24596 tHalHostMsgType halMsg
24597)
24598{
Jeff Johnsone7245742012-09-05 17:12:55 -070024599 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024600 the chances of getting inlined*/
24601 switch( halMsg )
24602 {
24603 case WLAN_HAL_START_RSP:
24604 return WDI_START_RESP;
24605 case WLAN_HAL_STOP_RSP:
24606 return WDI_STOP_RESP;
24607 case WLAN_HAL_INIT_SCAN_RSP:
24608 return WDI_INIT_SCAN_RESP;
24609 case WLAN_HAL_START_SCAN_RSP:
24610 return WDI_START_SCAN_RESP;
24611 case WLAN_HAL_END_SCAN_RSP:
24612 return WDI_END_SCAN_RESP;
24613 case WLAN_HAL_FINISH_SCAN_RSP:
24614 return WDI_FINISH_SCAN_RESP;
24615 case WLAN_HAL_CONFIG_STA_RSP:
24616 return WDI_CONFIG_STA_RESP;
24617 case WLAN_HAL_DELETE_STA_RSP:
24618 return WDI_DEL_STA_RESP;
24619 case WLAN_HAL_CONFIG_BSS_RSP:
24620 return WDI_CONFIG_BSS_RESP;
24621 case WLAN_HAL_DELETE_BSS_RSP:
24622 return WDI_DEL_BSS_RESP;
24623 case WLAN_HAL_JOIN_RSP:
24624 return WDI_JOIN_RESP;
24625 case WLAN_HAL_POST_ASSOC_RSP:
24626 return WDI_POST_ASSOC_RESP;
24627 case WLAN_HAL_SET_BSSKEY_RSP:
24628 return WDI_SET_BSS_KEY_RESP;
24629 case WLAN_HAL_SET_STAKEY_RSP:
24630 return WDI_SET_STA_KEY_RESP;
24631 case WLAN_HAL_RMV_BSSKEY_RSP:
24632 return WDI_RMV_BSS_KEY_RESP;
24633 case WLAN_HAL_RMV_STAKEY_RSP:
24634 return WDI_RMV_STA_KEY_RESP;
24635 case WLAN_HAL_SET_BCASTKEY_RSP:
24636 return WDI_SET_STA_BCAST_KEY_RESP;
24637 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24638 // return WDI_RMV_STA_BCAST_KEY_RESP;
24639 case WLAN_HAL_ADD_TS_RSP:
24640 return WDI_ADD_TS_RESP;
24641 case WLAN_HAL_DEL_TS_RSP:
24642 return WDI_DEL_TS_RESP;
24643 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24644 return WDI_UPD_EDCA_PRMS_RESP;
24645 case WLAN_HAL_ADD_BA_RSP:
24646 return WDI_ADD_BA_RESP;
24647 case WLAN_HAL_DEL_BA_RSP:
24648 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024649#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024650 case WLAN_HAL_TSM_STATS_RSP:
24651 return WDI_TSM_STATS_RESP;
24652#endif
24653 case WLAN_HAL_CH_SWITCH_RSP:
24654 return WDI_CH_SWITCH_RESP;
24655 case WLAN_HAL_SET_LINK_ST_RSP:
24656 return WDI_SET_LINK_ST_RESP;
24657 case WLAN_HAL_GET_STATS_RSP:
24658 return WDI_GET_STATS_RESP;
24659 case WLAN_HAL_UPDATE_CFG_RSP:
24660 return WDI_UPDATE_CFG_RESP;
24661 case WLAN_HAL_ADD_BA_SESSION_RSP:
24662 return WDI_ADD_BA_SESSION_RESP;
24663 case WLAN_HAL_TRIGGER_BA_RSP:
24664 return WDI_TRIGGER_BA_RESP;
24665 case WLAN_HAL_UPDATE_BEACON_RSP:
24666 return WDI_UPD_BCON_PRMS_RESP;
24667 case WLAN_HAL_SEND_BEACON_RSP:
24668 return WDI_SND_BCON_RESP;
24669 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24670 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24671 /*Indications*/
24672 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24673 return WDI_HAL_RSSI_NOTIFICATION_IND;
24674 case WLAN_HAL_MISSED_BEACON_IND:
24675 return WDI_HAL_MISSED_BEACON_IND;
24676 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24677 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24678 case WLAN_HAL_MIC_FAILURE_IND:
24679 return WDI_HAL_MIC_FAILURE_IND;
24680 case WLAN_HAL_FATAL_ERROR_IND:
24681 return WDI_HAL_FATAL_ERROR_IND;
24682 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24683 return WDI_HAL_DEL_STA_IND;
24684 case WLAN_HAL_COEX_IND:
24685 return WDI_HAL_COEX_IND;
24686 case WLAN_HAL_OTA_TX_COMPL_IND:
24687 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024688 case WLAN_HAL_P2P_NOA_ATTR_IND:
24689 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024690 case WLAN_HAL_P2P_NOA_START_IND:
24691 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024692 case WLAN_HAL_DEL_BA_IND:
24693 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024694 case WLAN_HAL_TX_PER_HIT_IND:
24695 return WDI_HAL_TX_PER_HIT_IND;
24696 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24697 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024698 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24699 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024700 case WLAN_HAL_SET_TX_POWER_RSP:
24701 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024702 case WLAN_HAL_SET_P2P_GONOA_RSP:
24703 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024704#ifdef FEATURE_WLAN_TDLS
24705 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24706 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024707 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24708 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024709 case WLAN_HAL_TDLS_IND:
24710 return WDI_HAL_TDLS_IND;
24711#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024712 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024713 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024714 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024715 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024716 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024717 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024718 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024719 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024720 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024721 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024722 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024723 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024724 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024725 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024726 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024727 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024728 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024729 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024730 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24731 return WDI_SET_BEACON_FILTER_RESP;
24732 case WLAN_HAL_REM_BCN_FILTER_RSP:
24733 return WDI_REM_BEACON_FILTER_RESP;
24734 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24735 return WDI_SET_RSSI_THRESHOLDS_RESP;
24736 case WLAN_HAL_HOST_OFFLOAD_RSP:
24737 return WDI_HOST_OFFLOAD_RESP;
24738 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24739 return WDI_WOWL_ADD_BC_PTRN_RESP;
24740 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24741 return WDI_WOWL_DEL_BC_PTRN_RESP;
24742 case WLAN_HAL_ENTER_WOWL_RSP:
24743 return WDI_WOWL_ENTER_RESP;
24744 case WLAN_HAL_EXIT_WOWL_RSP:
24745 return WDI_WOWL_EXIT_RESP;
24746 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24747 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24748 case WLAN_HAL_DOWNLOAD_NV_RSP:
24749 return WDI_NV_DOWNLOAD_RESP;
24750 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24751 return WDI_FLUSH_AC_RESP;
24752 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24753 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024754 case WLAN_HAL_PROCESS_PTT_RSP:
24755 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024756 case WLAN_HAL_ADD_STA_SELF_RSP:
24757 return WDI_ADD_STA_SELF_RESP;
24758case WLAN_HAL_DEL_STA_SELF_RSP:
24759 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024760#ifdef FEATURE_OEM_DATA_SUPPORT
24761 case WLAN_HAL_START_OEM_DATA_RSP:
24762 return WDI_START_OEM_DATA_RESP;
24763#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024764 case WLAN_HAL_HOST_RESUME_RSP:
24765 return WDI_HOST_RESUME_RESP;
24766 case WLAN_HAL_KEEP_ALIVE_RSP:
24767 return WDI_KEEP_ALIVE_RESP;
24768#ifdef FEATURE_WLAN_SCAN_PNO
24769 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24770 return WDI_SET_PREF_NETWORK_RESP;
24771 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024772 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024773 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24774 return WDI_UPDATE_SCAN_PARAMS_RESP;
24775 case WLAN_HAL_PREF_NETW_FOUND_IND:
24776 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24777#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024778#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024779 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24780 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024781#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024782 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24783 return WDI_SET_TX_PER_TRACKING_RESP;
24784#ifdef WLAN_FEATURE_PACKET_FILTERING
24785 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24786 return WDI_8023_MULTICAST_LIST_RESP;
24787 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24788 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24789 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24790 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24791 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24792 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24793#endif // WLAN_FEATURE_PACKET_FILTERING
24794
24795 case WLAN_HAL_DUMP_COMMAND_RSP:
24796 return WDI_HAL_DUMP_CMD_RESP;
24797 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24798 return WDI_SET_POWER_PARAMS_RESP;
24799#ifdef WLAN_FEATURE_VOWIFI_11R
24800 case WLAN_HAL_AGGR_ADD_TS_RSP:
24801 return WDI_AGGR_ADD_TS_RESP;
24802#endif
24803
24804#ifdef WLAN_FEATURE_GTK_OFFLOAD
24805 case WLAN_HAL_GTK_OFFLOAD_RSP:
24806 return WDI_GTK_OFFLOAD_RESP;
24807 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24808 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24809#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24810#ifdef WLAN_WAKEUP_EVENTS
24811 case WLAN_HAL_WAKE_REASON_IND:
24812 return WDI_HAL_WAKE_REASON_IND;
24813#endif // WLAN_WAKEUP_EVENTS
24814
24815 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24816 return WDI_SET_TM_LEVEL_RESP;
24817 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24818 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024819#ifdef WLAN_FEATURE_11AC
24820 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24821 return WDI_UPDATE_VHT_OP_MODE_RESP;
24822#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024823#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024824 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24825 return WDI_GET_ROAM_RSSI_RESP;
24826#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024827
Leo Chang9056f462013-08-01 19:21:11 -070024828#ifdef FEATURE_WLAN_LPHB
24829 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070024830 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024831 case WLAN_HAL_LPHB_CFG_RSP:
24832 return WDI_LPHB_CFG_RESP;
24833#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024834
24835 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
24836 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024837 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
24838 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024839
Rajeev79dbe4c2013-10-05 11:03:42 +053024840#ifdef FEATURE_WLAN_BATCH_SCAN
24841 case WLAN_HAL_BATCHSCAN_SET_RSP:
24842 return WDI_SET_BATCH_SCAN_RESP;
24843 case WLAN_HAL_BATCHSCAN_RESULT_IND:
24844 return WDI_BATCHSCAN_RESULT_IND;
24845#endif // FEATURE_WLAN_BATCH_SCAN
24846
Leo Chang0b0e45a2013-12-15 15:18:55 -080024847#ifdef FEATURE_WLAN_CH_AVOID
24848 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
24849 return WDI_HAL_CH_AVOID_IND;
24850#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024851 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
24852 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053024853 case WLAN_HAL_PRINT_REG_INFO_IND:
24854 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053024855 case WLAN_HAL_CH_SWITCH_V1_RSP:
24856 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053024857 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
24858 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024859#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24860 case WLAN_HAL_LL_SET_STATS_RSP:
24861 return WDI_LL_STATS_SET_RSP;
24862 case WLAN_HAL_LL_GET_STATS_RSP:
24863 return WDI_LL_STATS_GET_RSP;
24864 case WLAN_HAL_LL_CLEAR_STATS_RSP:
24865 return WDI_LL_STATS_CLEAR_RSP;
24866 case WLAN_HAL_LL_NOTIFY_STATS:
24867 return WDI_HAL_LL_STATS_RESULTS_IND;
24868#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024869#ifdef WLAN_FEATURE_EXTSCAN
24870 case WLAN_HAL_EXT_SCAN_START_RSP:
24871 return WDI_EXTSCAN_START_RSP;
24872 case WLAN_HAL_EXT_SCAN_STOP_RSP:
24873 return WDI_EXTSCAN_STOP_RSP;
24874 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
24875 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
24876 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
24877 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
24878 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
24879 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
24880 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
24881 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024882 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
24883 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
24884 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
24885 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053024886 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
24887 return WDI_HAL_EXTSCAN_PROGRESS_IND;
24888 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
24889 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
24890 case WLAN_HAL_EXT_SCAN_RESULT_IND:
24891 return WDI_HAL_EXTSCAN_RESULT_IND;
24892 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
24893 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024894 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
24895 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053024896#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024897 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
24898 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053024899 case WLAN_HAL_FW_STATS_RSP:
24900 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024901 case WLAN_HAL_ENCRYPT_DATA_RSP:
24902 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024903 case WLAN_HAL_FW_LOGGING_INIT_RSP:
24904 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053024905 case WLAN_HAL_GET_FRAME_LOG_RSP:
24906 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024907 case WLAN_HAL_NAN_RSP:
24908 return WDI_NAN_RESPONSE;
24909 case WLAN_HAL_NAN_EVT:
24910 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053024911 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
24912 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024913 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
24914 return WDI_MON_START_RSP;
24915 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
24916 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024917 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
24918 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053024919 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
24920 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024921 case WLAN_HAL_START_RSSI_MONITORING_RSP:
24922 return WDI_START_RSSI_MONITOR_RSP;
24923 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
24924 return WDI_STOP_RSSI_MONITOR_RSP;
24925 case WLAN_HAL_RSSI_MONITORING_IND:
24926 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024927 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
24928 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024929#ifdef FEATURE_OEM_DATA_SUPPORT
24930 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
24931 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
24932#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053024933 case WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_RSP:
24934 return WDI_ANTENNA_DIVERSITY_SELECTION_RSP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024935 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024936 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024937 }
24938
24939}/*HAL_2_WDI_RSP_TYPE*/
24940
24941
24942/*Convert WDI driver type into HAL driver type*/
24943WPT_STATIC WPT_INLINE tDriverType
24944WDI_2_HAL_DRV_TYPE
24945(
24946 WDI_DriverType wdiDriverType
24947)
24948{
Jeff Johnsone7245742012-09-05 17:12:55 -070024949 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024950 the chances of getting inlined*/
24951 switch( wdiDriverType )
24952 {
24953 case WDI_DRIVER_TYPE_PRODUCTION:
24954 return eDRIVER_TYPE_PRODUCTION;
24955 case WDI_DRIVER_TYPE_MFG:
24956 return eDRIVER_TYPE_MFG;
24957 case WDI_DRIVER_TYPE_DVT:
24958 return eDRIVER_TYPE_DVT;
24959 }
24960
Jeff Johnsone7245742012-09-05 17:12:55 -070024961 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024962}/*WDI_2_HAL_DRV_TYPE*/
24963
24964
24965/*Convert WDI stop reason into HAL stop reason*/
24966WPT_STATIC WPT_INLINE tHalStopType
24967WDI_2_HAL_STOP_REASON
24968(
24969 WDI_StopType wdiDriverType
24970)
24971{
Jeff Johnsone7245742012-09-05 17:12:55 -070024972 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024973 the chances of getting inlined*/
24974 switch( wdiDriverType )
24975 {
24976 case WDI_STOP_TYPE_SYS_RESET:
24977 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070024978 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
24979 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024980 case WDI_STOP_TYPE_RF_KILL:
24981 return HAL_STOP_TYPE_RF_KILL;
24982 }
24983
Jeff Johnsone7245742012-09-05 17:12:55 -070024984 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024985}/*WDI_2_HAL_STOP_REASON*/
24986
24987
24988/*Convert WDI scan mode type into HAL scan mode type*/
24989WPT_STATIC WPT_INLINE eHalSysMode
24990WDI_2_HAL_SCAN_MODE
24991(
24992 WDI_ScanMode wdiScanMode
24993)
24994{
Jeff Johnsone7245742012-09-05 17:12:55 -070024995 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024996 the chances of getting inlined*/
24997 switch( wdiScanMode )
24998 {
24999 case WDI_SCAN_MODE_NORMAL:
25000 return eHAL_SYS_MODE_NORMAL;
25001 case WDI_SCAN_MODE_LEARN:
25002 return eHAL_SYS_MODE_LEARN;
25003 case WDI_SCAN_MODE_SCAN:
25004 return eHAL_SYS_MODE_SCAN;
25005 case WDI_SCAN_MODE_PROMISC:
25006 return eHAL_SYS_MODE_PROMISC;
25007 case WDI_SCAN_MODE_SUSPEND_LINK:
25008 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070025009 case WDI_SCAN_MODE_ROAM_SCAN:
25010 return eHAL_SYS_MODE_ROAM_SCAN;
25011 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
25012 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070025013 }
25014
Jeff Johnsone7245742012-09-05 17:12:55 -070025015 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025016}/*WDI_2_HAL_SCAN_MODE*/
25017
25018/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025019WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070025020WDI_2_HAL_SEC_CH_OFFSET
25021(
25022 WDI_HTSecondaryChannelOffset wdiSecChOffset
25023)
25024{
Jeff Johnsone7245742012-09-05 17:12:55 -070025025 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025026 the chances of getting inlined*/
25027 switch( wdiSecChOffset )
25028 {
25029 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025030 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025031 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025032 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025033 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025034 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25035#ifdef WLAN_FEATURE_11AC
25036 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25037 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25038 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25039 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25040 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25041 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25042 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25043 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25044 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25045 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25046 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25047 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25048 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25049 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25050#endif
25051 default:
25052 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025053 }
25054
Jeff Johnsone7245742012-09-05 17:12:55 -070025055 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025056}/*WDI_2_HAL_SEC_CH_OFFSET*/
25057
25058/*Convert WDI BSS type into HAL BSS type*/
25059WPT_STATIC WPT_INLINE tSirBssType
25060WDI_2_HAL_BSS_TYPE
25061(
25062 WDI_BssType wdiBSSType
25063)
25064{
Jeff Johnsone7245742012-09-05 17:12:55 -070025065 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025066 the chances of getting inlined*/
25067 switch( wdiBSSType )
25068 {
25069 case WDI_INFRASTRUCTURE_MODE:
25070 return eSIR_INFRASTRUCTURE_MODE;
25071 case WDI_INFRA_AP_MODE:
25072 return eSIR_INFRA_AP_MODE;
25073 case WDI_IBSS_MODE:
25074 return eSIR_IBSS_MODE;
25075 case WDI_BTAMP_STA_MODE:
25076 return eSIR_BTAMP_STA_MODE;
25077 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025078 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025079 case WDI_BSS_AUTO_MODE:
25080 return eSIR_AUTO_MODE;
25081 }
25082
Jeff Johnsone7245742012-09-05 17:12:55 -070025083 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025084}/*WDI_2_HAL_BSS_TYPE*/
25085
25086/*Convert WDI NW type into HAL NW type*/
25087WPT_STATIC WPT_INLINE tSirNwType
25088WDI_2_HAL_NW_TYPE
25089(
25090 WDI_NwType wdiNWType
25091)
25092{
Jeff Johnsone7245742012-09-05 17:12:55 -070025093 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025094 the chances of getting inlined*/
25095 switch( wdiNWType )
25096 {
25097 case WDI_11A_NW_TYPE:
25098 return eSIR_11A_NW_TYPE;
25099 case WDI_11B_NW_TYPE:
25100 return eSIR_11B_NW_TYPE;
25101 case WDI_11G_NW_TYPE:
25102 return eSIR_11G_NW_TYPE;
25103 case WDI_11N_NW_TYPE:
25104 return eSIR_11N_NW_TYPE;
25105 }
25106
Jeff Johnsone7245742012-09-05 17:12:55 -070025107 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025108}/*WDI_2_HAL_NW_TYPE*/
25109
25110/*Convert WDI chanel bonding type into HAL cb type*/
25111WPT_STATIC WPT_INLINE ePhyChanBondState
25112WDI_2_HAL_CB_STATE
25113(
25114 WDI_PhyChanBondState wdiCbState
25115)
25116{
Jeff Johnsone7245742012-09-05 17:12:55 -070025117 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025118 the chances of getting inlined*/
25119 switch ( wdiCbState )
25120 {
25121 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25122 return PHY_SINGLE_CHANNEL_CENTERED;
25123 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25124 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25125 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25126 return PHY_DOUBLE_CHANNEL_CENTERED;
25127 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25128 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025129#ifdef WLAN_FEATURE_11AC
25130 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25131 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25132 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25133 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25134 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25135 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25136 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25137 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25138 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25139 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25140 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25141 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25142 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25143 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25144#endif
25145 case WDI_MAX_CB_STATE:
25146 default:
25147 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025148 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025149
Jeff Johnson295189b2012-06-20 16:38:30 -070025150 return PHY_CHANNEL_BONDING_STATE_MAX;
25151}/*WDI_2_HAL_CB_STATE*/
25152
25153/*Convert WDI chanel bonding type into HAL cb type*/
25154WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25155WDI_2_HAL_HT_OPER_MODE
25156(
25157 WDI_HTOperatingMode wdiHTOperMode
25158)
25159{
Jeff Johnsone7245742012-09-05 17:12:55 -070025160 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025161 the chances of getting inlined*/
25162 switch ( wdiHTOperMode )
25163 {
25164 case WDI_HT_OP_MODE_PURE:
25165 return eSIR_HT_OP_MODE_PURE;
25166 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25167 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25168 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25169 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25170 case WDI_HT_OP_MODE_MIXED:
25171 return eSIR_HT_OP_MODE_MIXED;
25172 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025173
Jeff Johnson295189b2012-06-20 16:38:30 -070025174 return eSIR_HT_OP_MODE_MAX;
25175}/*WDI_2_HAL_HT_OPER_MODE*/
25176
25177/*Convert WDI mimo PS type into HAL mimo PS type*/
25178WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25179WDI_2_HAL_MIMO_PS
25180(
25181 WDI_HTMIMOPowerSaveState wdiHTOperMode
25182)
25183{
Jeff Johnsone7245742012-09-05 17:12:55 -070025184 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025185 the chances of getting inlined*/
25186 switch ( wdiHTOperMode )
25187 {
25188 case WDI_HT_MIMO_PS_STATIC:
25189 return eSIR_HT_MIMO_PS_STATIC;
25190 case WDI_HT_MIMO_PS_DYNAMIC:
25191 return eSIR_HT_MIMO_PS_DYNAMIC;
25192 case WDI_HT_MIMO_PS_NA:
25193 return eSIR_HT_MIMO_PS_NA;
25194 case WDI_HT_MIMO_PS_NO_LIMIT:
25195 return eSIR_HT_MIMO_PS_NO_LIMIT;
25196 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025197
Jeff Johnson295189b2012-06-20 16:38:30 -070025198 return eSIR_HT_MIMO_PS_MAX;
25199}/*WDI_2_HAL_MIMO_PS*/
25200
25201/*Convert WDI ENC type into HAL ENC type*/
25202WPT_STATIC WPT_INLINE tAniEdType
25203WDI_2_HAL_ENC_TYPE
25204(
25205 WDI_EncryptType wdiEncType
25206)
25207{
Jeff Johnsone7245742012-09-05 17:12:55 -070025208 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025209 the chances of getting inlined*/
25210 switch ( wdiEncType )
25211 {
25212 case WDI_ENCR_NONE:
25213 return eSIR_ED_NONE;
25214
25215 case WDI_ENCR_WEP40:
25216 return eSIR_ED_WEP40;
25217
25218 case WDI_ENCR_WEP104:
25219 return eSIR_ED_WEP104;
25220
25221 case WDI_ENCR_TKIP:
25222 return eSIR_ED_TKIP;
25223
25224 case WDI_ENCR_CCMP:
25225 return eSIR_ED_CCMP;
25226
25227 case WDI_ENCR_AES_128_CMAC:
25228 return eSIR_ED_AES_128_CMAC;
25229#if defined(FEATURE_WLAN_WAPI)
25230 case WDI_ENCR_WPI:
25231 return eSIR_ED_WPI;
25232#endif
25233 default:
25234 return eSIR_ED_NOT_IMPLEMENTED;
25235 }
25236
25237}/*WDI_2_HAL_ENC_TYPE*/
25238
25239/*Convert WDI WEP type into HAL WEP type*/
25240WPT_STATIC WPT_INLINE tAniWepType
25241WDI_2_HAL_WEP_TYPE
25242(
25243 WDI_WepType wdiWEPType
25244)
25245{
Jeff Johnsone7245742012-09-05 17:12:55 -070025246 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025247 the chances of getting inlined*/
25248 switch ( wdiWEPType )
25249 {
25250 case WDI_WEP_STATIC:
25251 return eSIR_WEP_STATIC;
25252
25253 case WDI_WEP_DYNAMIC:
25254 return eSIR_WEP_DYNAMIC;
25255 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025256
Jeff Johnson295189b2012-06-20 16:38:30 -070025257 return eSIR_WEP_MAX;
25258}/*WDI_2_HAL_WEP_TYPE*/
25259
25260WPT_STATIC WPT_INLINE tSirLinkState
25261WDI_2_HAL_LINK_STATE
25262(
25263 WDI_LinkStateType wdiLinkState
25264)
25265{
Jeff Johnsone7245742012-09-05 17:12:55 -070025266 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025267 the chances of getting inlined*/
25268 switch ( wdiLinkState )
25269 {
25270 case WDI_LINK_IDLE_STATE:
25271 return eSIR_LINK_IDLE_STATE;
25272
25273 case WDI_LINK_PREASSOC_STATE:
25274 return eSIR_LINK_PREASSOC_STATE;
25275
25276 case WDI_LINK_POSTASSOC_STATE:
25277 return eSIR_LINK_POSTASSOC_STATE;
25278
25279 case WDI_LINK_AP_STATE:
25280 return eSIR_LINK_AP_STATE;
25281
25282 case WDI_LINK_IBSS_STATE:
25283 return eSIR_LINK_IBSS_STATE;
25284
25285 case WDI_LINK_BTAMP_PREASSOC_STATE:
25286 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25287
25288 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25289 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25290
25291 case WDI_LINK_BTAMP_AP_STATE:
25292 return eSIR_LINK_BTAMP_AP_STATE;
25293
25294 case WDI_LINK_BTAMP_STA_STATE:
25295 return eSIR_LINK_BTAMP_STA_STATE;
25296
25297 case WDI_LINK_LEARN_STATE:
25298 return eSIR_LINK_LEARN_STATE;
25299
25300 case WDI_LINK_SCAN_STATE:
25301 return eSIR_LINK_SCAN_STATE;
25302
25303 case WDI_LINK_FINISH_SCAN_STATE:
25304 return eSIR_LINK_FINISH_SCAN_STATE;
25305
25306 case WDI_LINK_INIT_CAL_STATE:
25307 return eSIR_LINK_INIT_CAL_STATE;
25308
25309 case WDI_LINK_FINISH_CAL_STATE:
25310 return eSIR_LINK_FINISH_CAL_STATE;
25311
Jeff Johnson295189b2012-06-20 16:38:30 -070025312 case WDI_LINK_LISTEN_STATE:
25313 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025314
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025315 case WDI_LINK_SEND_ACTION_STATE:
25316 return eSIR_LINK_SEND_ACTION_STATE;
25317
Jeff Johnson295189b2012-06-20 16:38:30 -070025318 default:
25319 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025320 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025321}
25322
Jeff Johnsone7245742012-09-05 17:12:55 -070025323/*Translate a STA Context from WDI into HAL*/
25324WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025325void
25326WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025327(
Jeff Johnson295189b2012-06-20 16:38:30 -070025328 tConfigStaParams* phalConfigSta,
25329 WDI_ConfigStaReqInfoType* pwdiConfigSta
25330)
25331{
25332 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025333#ifdef WLAN_FEATURE_11AC
25334 /* Get the Version 1 Handler */
25335 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25336 if (WDI_getFwWlanFeatCaps(DOT11AC))
25337 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025338 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025339 }
25340#endif
25341 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025342 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025343
Jeff Johnsone7245742012-09-05 17:12:55 -070025344 wpalMemoryCopy(phalConfigSta->bssId,
25345 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25346
25347 wpalMemoryCopy(phalConfigSta->staMac,
25348 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025349
25350 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25351 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25352 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25353 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25354 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25355 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25356 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25357 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25358 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25359 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25360 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25361 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25362 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25363 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25364 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25365 phalConfigSta->action = pwdiConfigSta->wdiAction;
25366 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25367 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25368 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25369 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25370 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25371 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25372 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025373
Jeff Johnson295189b2012-06-20 16:38:30 -070025374 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25375
Jeff Johnsone7245742012-09-05 17:12:55 -070025376 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025377 pwdiConfigSta->wdiSupportedRates.opRateMode;
25378 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25379 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025380 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025381 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25382 }
25383 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25384 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025385 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025386 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25387 }
25388 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25389 {
25390 phalConfigSta->supportedRates.aniLegacyRates[i] =
25391 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25392 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025393 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025394 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25395 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25396 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025397 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025398 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25399 }
25400 phalConfigSta->supportedRates.rxHighestDataRate =
25401 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25402
Jeff Johnsone7245742012-09-05 17:12:55 -070025403#ifdef WLAN_FEATURE_11AC
25404 if(phalConfigSta_V1 != NULL)
25405 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025406 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25407 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25408 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25409 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025410 }
25411#endif
25412
Jeff Johnson295189b2012-06-20 16:38:30 -070025413 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025414
Jeff Johnsone7245742012-09-05 17:12:55 -070025415#ifdef WLAN_FEATURE_11AC
25416 if(phalConfigSta_V1 != NULL)
25417 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025418 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25419 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025420 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025421 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025422 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25423 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25424
Jeff Johnsone7245742012-09-05 17:12:55 -070025425 }
25426#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025427}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025428
25429/*Translate a Rate set info from WDI into HAL*/
25430WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025431WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025432(
Jeff Johnson295189b2012-06-20 16:38:30 -070025433 tSirMacRateSet* pHalRateSet,
25434 WDI_RateSet* pwdiRateSet
25435)
25436{
Jeff Johnsone7245742012-09-05 17:12:55 -070025437 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25439
25440 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25441 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25442
25443 for ( i = 0; i < pHalRateSet->numRates; i++ )
25444 {
25445 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25446 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025447
Jeff Johnson295189b2012-06-20 16:38:30 -070025448}/*WDI_CopyWDIRateSetToHALRateSet*/
25449
25450
25451/*Translate an EDCA Parameter Record from WDI into HAL*/
25452WPT_STATIC WPT_INLINE void
25453WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025454(
Jeff Johnson295189b2012-06-20 16:38:30 -070025455 tSirMacEdcaParamRecord* phalEdcaParam,
25456 WDI_EdcaParamRecord* pWDIEdcaParam
25457)
25458{
Jeff Johnsone7245742012-09-05 17:12:55 -070025459 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025460 the chances of getting inlined*/
25461
25462 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25463 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25464 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25465 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25466
25467 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25468 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25469 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25470}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25471
25472
25473/*Copy a management frame header from WDI fmt into HAL fmt*/
25474WPT_STATIC WPT_INLINE void
25475WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25476(
25477 tSirMacMgmtHdr* pmacMgmtHdr,
25478 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25479)
25480{
25481 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25482 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25483 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25484 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25485 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25486 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25487 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25488 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25489 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25490 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25491 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25492
25493 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25494 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25495
Jeff Johnsone7245742012-09-05 17:12:55 -070025496 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025497 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025498 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025499 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025500 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025501 pwdiMacMgmtHdr->bssId, 6);
25502
25503 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25504 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25505 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25506
25507}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25508
25509
25510/*Copy config bss parameters from WDI fmt into HAL fmt*/
25511WPT_STATIC WPT_INLINE void
25512WDI_CopyWDIConfigBSSToHALConfigBSS
25513(
25514 tConfigBssParams* phalConfigBSS,
25515 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25516)
25517{
25518
25519 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025520#ifdef WLAN_FEATURE_11AC
25521 /* Get the Version 1 Handler */
25522 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25523 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025524 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025525#endif
25526
Jeff Johnson295189b2012-06-20 16:38:30 -070025527 wpalMemoryCopy( phalConfigBSS->bssId,
25528 pwdiConfigBSS->macBSSID,
25529 WDI_MAC_ADDR_LEN);
25530
25531#ifdef HAL_SELF_STA_PER_BSS
25532 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25533 pwdiConfigBSS->macSelfAddr,
25534 WDI_MAC_ADDR_LEN);
25535#endif
25536
25537 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25538
25539 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25540 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25541
Jeff Johnsone7245742012-09-05 17:12:55 -070025542 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025543 pwdiConfigBSS->ucShortSlotTimeSupported;
25544 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25545 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25546 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25547 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25548 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025549 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025550 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25551 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25552 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25553 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25554 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25555 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25556 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25557 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25558 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25559 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25560 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25561
Jeff Johnsone7245742012-09-05 17:12:55 -070025562 phalConfigBSS->htOperMode =
25563 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025564
25565 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25566 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25567 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
25568 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
25569
25570#ifdef WLAN_FEATURE_VOWIFI
25571 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25572#endif
25573
25574 /*! Used 32 as magic number because that is how the ssid is declared inside the
25575 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025576 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025577 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25578 pwdiConfigBSS->wdiSSID.ucLength : 32;
25579 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025580 pwdiConfigBSS->wdiSSID.sSSID,
25581 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025582
25583 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25584 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025585
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25587 &pwdiConfigBSS->wdiRateSet);
25588
25589 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25590
25591 if(phalConfigBSS->edcaParamsValid)
25592 {
25593 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25594 &pwdiConfigBSS->wdiBEEDCAParams);
25595 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25596 &pwdiConfigBSS->wdiBKEDCAParams);
25597 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25598 &pwdiConfigBSS->wdiVIEDCAParams);
25599 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25600 &pwdiConfigBSS->wdiVOEDCAParams);
25601 }
25602
Jeff Johnsone7245742012-09-05 17:12:55 -070025603 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025604
25605 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25606
25607#ifdef WLAN_FEATURE_VOWIFI_11R
25608
Jeff Johnsone7245742012-09-05 17:12:55 -070025609 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025610 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025611
Jeff Johnson295189b2012-06-20 16:38:30 -070025612 if( phalConfigBSS->extSetStaKeyParamValid )
25613 {
25614 /*-----------------------------------------------------------------------
25615 Copy the STA Key parameters into the HAL message
25616 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025617 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025618 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25619
Jeff Johnsone7245742012-09-05 17:12:55 -070025620 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025621 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25622
25623 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25624
25625 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25626
25627 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25628
Jeff Johnson295189b2012-06-20 16:38:30 -070025629 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25630 keyIndex++)
25631 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025632 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025633 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25634 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25635 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25636 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25637 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25638 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025639 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025640 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025641 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025642 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025643 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025644 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25645 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025646 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 WDI_MAX_KEY_LENGTH);
25648 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025649 }
25650 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25651 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025652 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025653 sizeof(phalConfigBSS->extSetStaKeyParam) );
25654 }
25655
25656#endif /*WLAN_FEATURE_VOWIFI_11R*/
25657
Jeff Johnsone7245742012-09-05 17:12:55 -070025658#ifdef WLAN_FEATURE_11AC
25659 if(phalConfigBSS_V1 != NULL)
25660 {
25661 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25662 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25663 }
25664#endif
25665
Jeff Johnson295189b2012-06-20 16:38:30 -070025666}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25667
25668
Jeff Johnsone7245742012-09-05 17:12:55 -070025669/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025670 pointed to by user data */
25671WPT_STATIC WPT_INLINE void
25672WDI_ExtractRequestCBFromEvent
25673(
25674 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025675 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025676 void** ppUserData
25677)
25678{
25679 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25680 switch ( pEvent->wdiRequest )
25681 {
25682 case WDI_START_REQ:
25683 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25684 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25685 break;
25686 case WDI_STOP_REQ:
25687 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25688 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25689 break;
25690 case WDI_INIT_SCAN_REQ:
25691 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25692 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25693 break;
25694 case WDI_START_SCAN_REQ:
25695 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25696 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25697 break;
25698 case WDI_END_SCAN_REQ:
25699 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25700 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25701 break;
25702 case WDI_FINISH_SCAN_REQ:
25703 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25704 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25705 break;
25706 case WDI_JOIN_REQ:
25707 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25708 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25709 break;
25710 case WDI_CONFIG_BSS_REQ:
25711 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25712 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25713 break;
25714 case WDI_DEL_BSS_REQ:
25715 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25716 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25717 break;
25718 case WDI_POST_ASSOC_REQ:
25719 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25720 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25721 break;
25722 case WDI_DEL_STA_REQ:
25723 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25724 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25725 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025726
25727 case WDI_ADD_STA_SELF_REQ:
25728 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25729 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25730 break;
25731
Jeff Johnson295189b2012-06-20 16:38:30 -070025732 case WDI_DEL_STA_SELF_REQ:
25733 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25734 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25735 break;
25736
25737 case WDI_SET_BSS_KEY_REQ:
25738 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25739 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25740 break;
25741 case WDI_RMV_BSS_KEY_REQ:
25742 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25743 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25744 break;
25745 case WDI_SET_STA_KEY_REQ:
25746 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25747 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25748 break;
25749 case WDI_RMV_STA_KEY_REQ:
25750 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25751 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25752 break;
25753 case WDI_ADD_TS_REQ:
25754 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25755 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25756 break;
25757 case WDI_DEL_TS_REQ:
25758 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25759 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25760 break;
25761 case WDI_UPD_EDCA_PRMS_REQ:
25762 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25763 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25764 break;
25765 case WDI_ADD_BA_SESSION_REQ:
25766 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25767 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25768 break;
25769 case WDI_DEL_BA_REQ:
25770 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25771 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25772 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025773#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025774 case WDI_TSM_STATS_REQ:
25775 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25776 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25777 break;
25778#endif
25779 case WDI_CH_SWITCH_REQ:
25780 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25781 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25782 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025783 case WDI_CH_SWITCH_REQ_V1:
25784 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25785 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25786 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025787 case WDI_CONFIG_STA_REQ:
25788 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25789 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25790 break;
25791 case WDI_SET_LINK_ST_REQ:
25792 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25793 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25794 break;
25795 case WDI_GET_STATS_REQ:
25796 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25797 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25798 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025799#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025800 case WDI_GET_ROAM_RSSI_REQ:
25801 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25802 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25803 break;
25804#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025805 case WDI_UPDATE_CFG_REQ:
25806 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25807 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
25808 break;
25809 case WDI_ADD_BA_REQ:
25810 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25811 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
25812 break;
25813 case WDI_TRIGGER_BA_REQ:
25814 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25815 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
25816 break;
25817 case WDI_UPD_BCON_PRMS_REQ:
25818 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25819 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
25820 break;
25821 case WDI_SND_BCON_REQ:
25822 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25823 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
25824 break;
25825 case WDI_ENTER_BMPS_REQ:
25826 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25827 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25828 break;
25829 case WDI_EXIT_BMPS_REQ:
25830 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25831 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
25832 break;
Mihir Shetea4306052014-03-25 00:02:54 +053025833 case WDI_ENTER_IMPS_REQ:
25834 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25835 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
25836 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025837 case WDI_ENTER_UAPSD_REQ:
25838 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25839 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25840 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025841 case WDI_EXIT_UAPSD_REQ:
25842 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25843 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25844 break;
25845 case WDI_SET_UAPSD_PARAM_REQ:
25846 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25847 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
25848 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025849 case WDI_UPDATE_UAPSD_PARAM_REQ:
25850 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25851 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
25852 break;
25853 case WDI_CONFIGURE_RXP_FILTER_REQ:
25854 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25855 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
25856 break;
25857 case WDI_SET_BEACON_FILTER_REQ:
25858 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25859 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
25860 break;
25861 case WDI_REM_BEACON_FILTER_REQ:
25862 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25863 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070025864 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025865 case WDI_SET_RSSI_THRESHOLDS_REQ:
25866 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25867 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
25868 break;
25869 case WDI_HOST_OFFLOAD_REQ:
25870 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25871 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
25872 break;
25873 case WDI_WOWL_ADD_BC_PTRN_REQ:
25874 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25875 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25876 break;
25877 case WDI_WOWL_DEL_BC_PTRN_REQ:
25878 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25879 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
25880 break;
25881 case WDI_WOWL_ENTER_REQ:
25882 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25883 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
25884 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025885 case WDI_WOWL_EXIT_REQ:
25886 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25887 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
25888 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025889 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
25890 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25891 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
25892 break;
25893 case WDI_FLUSH_AC_REQ:
25894 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25895 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
25896 break;
25897 case WDI_BTAMP_EVENT_REQ:
25898 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25899 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
25900 break;
25901 case WDI_KEEP_ALIVE_REQ:
25902 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25903 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
25904 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025905#if defined FEATURE_WLAN_SCAN_PNO
25906 case WDI_SET_PREF_NETWORK_REQ:
25907 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25908 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
25909 break;
25910 case WDI_SET_RSSI_FILTER_REQ:
25911 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25912 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
25913 break;
25914 case WDI_UPDATE_SCAN_PARAMS_REQ:
25915 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
25916 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
25917 break;
25918#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025919 case WDI_SET_TX_PER_TRACKING_REQ:
25920 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25921 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025922 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025923#if defined WLAN_FEATURE_PACKET_FILTERING
25924 case WDI_8023_MULTICAST_LIST_REQ:
25925 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25926 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
25927 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025928 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
25929 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25930 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
25931 break;
25932 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
25933 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25934 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
25935 break;
25936 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
25937 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25938 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
25939 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070025940#endif
25941 case WDI_SET_POWER_PARAMS_REQ:
25942 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25943 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
25944 break;
25945#if defined WLAN_FEATURE_GTK_OFFLOAD
25946 case WDI_GTK_OFFLOAD_REQ:
25947 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25948 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
25949 break;
25950 case WDI_GTK_OFFLOAD_GETINFO_REQ:
25951 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
25952 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
25953 break;
25954#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080025955
Jeff Johnson295189b2012-06-20 16:38:30 -070025956 default:
25957 *ppfnReqCB = NULL;
25958 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070025959 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025960 }
25961}/*WDI_ExtractRequestCBFromEvent*/
25962
25963
25964/**
Jeff Johnsone7245742012-09-05 17:12:55 -070025965 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070025966 frame xtl is enabled for a particular STA.
25967
25968 WDI_PostAssocReq must have been called.
25969
Jeff Johnsone7245742012-09-05 17:12:55 -070025970 @param uSTAIdx: STA index
25971
Jeff Johnson295189b2012-06-20 16:38:30 -070025972 @see WDI_PostAssocReq
25973 @return Result of the function call
25974*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025975wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070025976WDI_IsHwFrameTxTranslationCapable
25977(
25978 wpt_uint8 uSTAIdx
25979)
25980{
Jeff Johnsone7245742012-09-05 17:12:55 -070025981 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070025982 uma value*/
25983 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070025984 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070025985 ------------------------------------------------------------------------*/
25986 if ( eWLAN_PAL_FALSE == gWDIInitialized )
25987 {
25988 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
25989 "WDI API call before module is initialized - Fail request");
25990
Jeff Johnsone7245742012-09-05 17:12:55 -070025991 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025992 }
25993
Gopichand Nakkala976e3252013-01-03 15:45:56 -080025994#ifdef WLAN_SOFTAP_VSTA_FEATURE
25995 if (IS_VSTA_IDX(uSTAIdx))
25996 {
25997 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
25998 "STA %d is a Virtual STA, "
25999 "HW frame translation disabled", uSTAIdx);
26000 return eWLAN_PAL_FALSE;
26001 }
26002#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070026003
Jeff Johnson295189b2012-06-20 16:38:30 -070026004 return gWDICb.bFrameTransEnabled;
26005}/*WDI_IsHwFrameTxTranslationCapable*/
26006
Katya Nigam6201c3e2014-05-27 17:51:42 +053026007
26008/**
26009 @brief WDI_IsSelfSTA - check if staid is self sta index
26010
26011
26012 @param pWDICtx: pointer to the WLAN DAL context
26013 ucSTAIdx: station index
26014
26015 @return Result of the function call
26016*/
26017wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
26018{
26019 wpt_uint8 ucSTAType;
26020
26021 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
26022 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26023 {
26024 if( ucSTAType == WDI_STA_ENTRY_SELF )
26025 return eWLAN_PAL_TRUE;
26026 }
26027
26028 return eWLAN_PAL_FALSE;
26029}
26030
26031
26032
Jeff Johnson295189b2012-06-20 16:38:30 -070026033#ifdef FEATURE_WLAN_SCAN_PNO
26034/**
26035 @brief WDI_SetPreferredNetworkList
26036
Jeff Johnsone7245742012-09-05 17:12:55 -070026037 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026038 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026039
Jeff Johnson295189b2012-06-20 16:38:30 -070026040 wdiPNOScanCb: callback for passing back the response
26041 of the Set PNO operation received from the
26042 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026043
Jeff Johnson295189b2012-06-20 16:38:30 -070026044 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026045 callback
26046
Jeff Johnson295189b2012-06-20 16:38:30 -070026047 @return Result of the function call
26048*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026049WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026050WDI_SetPreferredNetworkReq
26051(
26052 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26053 WDI_PNOScanCb wdiPNOScanCb,
26054 void* pUserData
26055)
26056{
26057 WDI_EventInfoType wdiEventData = {{0}};
26058 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26059
26060 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026061 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026062 ------------------------------------------------------------------------*/
26063 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26064 {
26065 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26066 "WDI API call before module is initialized - Fail request");
26067
Jeff Johnsone7245742012-09-05 17:12:55 -070026068 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026069 }
26070
26071 /*------------------------------------------------------------------------
26072 Fill in Event data and post to the Main FSM
26073 ------------------------------------------------------------------------*/
26074 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026075 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026076 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026077 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026078 wdiEventData.pUserData = pUserData;
26079
26080 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26081}
26082
26083
26084/**
26085 @brief WDI_SetRssiFilterReq
26086
Jeff Johnsone7245742012-09-05 17:12:55 -070026087 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026088 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026089
Jeff Johnson295189b2012-06-20 16:38:30 -070026090 wdiRssiFilterCb: callback for passing back the response
26091 of the Set RSSI Filter operation received from the
26092 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026093
Jeff Johnson295189b2012-06-20 16:38:30 -070026094 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026095 callback
26096
Jeff Johnson295189b2012-06-20 16:38:30 -070026097 @return Result of the function call
26098*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026099WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026100WDI_SetRssiFilterReq
26101(
26102 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26103 WDI_RssiFilterCb wdiRssiFilterCb,
26104 void* pUserData
26105)
26106{
26107 WDI_EventInfoType wdiEventData = {{0}};
26108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26109
26110 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026111 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026112 ------------------------------------------------------------------------*/
26113 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26114 {
26115 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26116 "WDI API call before module is initialized - Fail request");
26117
Jeff Johnsone7245742012-09-05 17:12:55 -070026118 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026119 }
26120
26121 /*------------------------------------------------------------------------
26122 Fill in Event data and post to the Main FSM
26123 ------------------------------------------------------------------------*/
26124 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026125 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026126 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026127 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026128 wdiEventData.pUserData = pUserData;
26129
26130 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26131}/*WDI_SetRssiFilterReq*/
26132
26133/**
26134 @brief WDI_UpdateScanParamsReq
26135
Jeff Johnsone7245742012-09-05 17:12:55 -070026136 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026137 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026138
Jeff Johnson295189b2012-06-20 16:38:30 -070026139 wdiUpdateScanParamsCb: callback for passing back the response
26140 of the Set PNO operation received from the
26141 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026142
Jeff Johnson295189b2012-06-20 16:38:30 -070026143 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026144 callback
26145
Jeff Johnson295189b2012-06-20 16:38:30 -070026146 @return Result of the function call
26147*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026148WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026149WDI_UpdateScanParamsReq
26150(
26151 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26152 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26153 void* pUserData
26154)
26155{
26156 WDI_EventInfoType wdiEventData = {{0}};
26157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26158
26159 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026160 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026161 ------------------------------------------------------------------------*/
26162 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26163 {
26164 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26165 "WDI API call before module is initialized - Fail request");
26166
Jeff Johnsone7245742012-09-05 17:12:55 -070026167 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 }
26169
26170 /*------------------------------------------------------------------------
26171 Fill in Event data and post to the Main FSM
26172 ------------------------------------------------------------------------*/
26173 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026174 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026175 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026176 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026177 wdiEventData.pUserData = pUserData;
26178
26179 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26180}
26181
26182/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026183 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026184 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026185
26186 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026187 pwdiPNOScanReqParams: pointer to the info received
26188 from upper layers
26189 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026190 and its size
26191
Jeff Johnson295189b2012-06-20 16:38:30 -070026192 @return Result of the function call
26193*/
26194
26195WDI_Status
26196WDI_PackPreferredNetworkList
26197(
26198 WDI_ControlBlockType* pWDICtx,
26199 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26200 wpt_uint8** ppSendBuffer,
26201 wpt_uint16* pSize
26202)
26203{
Jeff Johnsone7245742012-09-05 17:12:55 -070026204 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026205 wpt_uint16 usDataOffset = 0;
26206 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026207 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026208 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026209 /*-----------------------------------------------------------------------
26210 Get message buffer
26211 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026212 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026213 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026214 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026215 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026216 {
26217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026218 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026219 pwdiPNOScanReqParams);
26220 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026221 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026222 }
26223
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026224 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26225
Jeff Johnson295189b2012-06-20 16:38:30 -070026226 /*-------------------------------------------------------------------------
26227 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26228 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026229 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026230 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026231 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026232 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26233
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026234 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026235 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026236 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026237 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026238 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26239
26240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026241 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026242 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26243 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26244 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26245
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026246 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026247 {
26248 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026249 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026250 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26251
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026252 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026253 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026254 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026255
26256 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026257 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026258 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026259
26260 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026261 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026262 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026263
Jeff Johnsone7245742012-09-05 17:12:55 -070026264 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026265 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026266 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026267 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26268 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26269 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26270 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026271
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026272 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026273 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026274 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026275
26276 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026277 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026278 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26279
26280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026281 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026282 pPrefNetwListParams->aNetworks[i].ssId.length,
26283 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 }
26285
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026286 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026287 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026288 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26289 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26290 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26291
26292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026293 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026294 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026295 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26296 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26297
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026298 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026299 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026300 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026301 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026302 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026303 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26304 }
26305
26306 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026307 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026308 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26309 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26310 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026311 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026312
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026313 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026314 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026315 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026316
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026317 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026318 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26319 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26320 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026321 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026322
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026323 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026324 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026325 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026326
26327 /*Set the output values*/
26328 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026329 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026330
26331 return WDI_STATUS_SUCCESS;
26332}/*WDI_PackPreferredNetworkList*/
26333
26334/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026335 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026336 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026337
26338 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026339 pwdiPNOScanReqParams: pointer to the info received
26340 from upper layers
26341 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026342 and its size
26343
Jeff Johnson295189b2012-06-20 16:38:30 -070026344 @return Result of the function call
26345*/
26346
26347WDI_Status
26348WDI_PackPreferredNetworkListNew
26349(
26350 WDI_ControlBlockType* pWDICtx,
26351 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26352 wpt_uint8** ppSendBuffer,
26353 wpt_uint16* pSize
26354)
26355{
Jeff Johnsone7245742012-09-05 17:12:55 -070026356 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026357 wpt_uint16 usDataOffset = 0;
26358 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026359 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026360 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026361
26362 /*-----------------------------------------------------------------------
26363 Get message buffer
26364 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026365 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026366 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026367 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026368 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026369 {
26370 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026371 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026372 pwdiPNOScanReqParams);
26373 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026374 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026375 }
26376
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026377 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26378
Jeff Johnson295189b2012-06-20 16:38:30 -070026379 /*-------------------------------------------------------------------------
26380 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26381 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026382 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026383 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026384 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026385 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26386
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026387 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026388 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026389 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026390 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026391 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26392
26393 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026394 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026395 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26396 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26397 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26398
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026399 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026400 {
26401 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026402 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026403 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26404
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026405 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026406 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026407 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026408
26409 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026410 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026411 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026412
26413 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026414 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026415 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026416
26417 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026418 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026419 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026420
Jeff Johnsone7245742012-09-05 17:12:55 -070026421 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026422 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026423 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026424 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26425
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026426 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026427 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026428 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026429
26430 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026431 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26433
26434 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026435 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026436 pPrefNetwListParams->aNetworks[i].ssId.length,
26437 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 }
26439
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026440 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026441 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026442 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26443 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26444 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26445
26446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026447 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026448 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026449 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26450 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26451
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026452 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026453 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026454 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026455 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026456 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026457 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26458 }
26459
26460 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026461 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026462 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26463 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26464 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026465 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026466
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026467 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026468 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026469 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026470
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026471 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026472 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26473 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26474 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026475 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026476
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026477 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026478 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026479 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026480
Jeff Johnson295189b2012-06-20 16:38:30 -070026481
26482 /*Set the output values*/
26483 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026484 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026485
26486 return WDI_STATUS_SUCCESS;
26487}/*WDI_PackPreferredNetworkListNew*/
26488
26489/**
26490 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026491
26492 @param pWDICtx: pointer to the WLAN DAL context
26493 pEventData: pointer to the event information structure
26494
Jeff Johnson295189b2012-06-20 16:38:30 -070026495 @return Result of the function call
26496*/
26497WDI_Status
26498WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026499(
Jeff Johnson295189b2012-06-20 16:38:30 -070026500 WDI_ControlBlockType* pWDICtx,
26501 WDI_EventInfoType* pEventData
26502)
26503{
26504 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26505 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026506 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026507 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026508 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026509
26510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026512 -------------------------------------------------------------------------*/
26513 if (( NULL == pEventData ) ||
26514 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26515 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26516 {
26517 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026518 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026519 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026520 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026521 }
26522
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026523 /*----------------------------------------------------------------------
26524 Avoid Enable PNO during any active session or an ongoing session
26525 ----------------------------------------------------------------------*/
26526 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26527 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26528 {
26529 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26530 "%s:(Active/Ongoing Session) - Fail request", __func__);
26531
26532 return WDI_STATUS_E_FAILURE;
26533 }
26534
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 /*-------------------------------------------------------------------------
26536 Pack the PNO request structure based on version
26537 -------------------------------------------------------------------------*/
26538 if ( pWDICtx->wdiPNOVersion > 0 )
26539 {
26540 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026541 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026542 pWDICtx->wdiPNOVersion);
26543
26544 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26545 &pSendBuffer, &usSendSize);
26546 }
26547 else
26548 {
26549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026550 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026551 pWDICtx->wdiPNOVersion);
26552
26553 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26554 &pSendBuffer, &usSendSize);
26555 }
26556
26557 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26558 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26559 {
26560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026561 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026562 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026563 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026564 }
26565
26566 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026567 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026568
26569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026570 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026571 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026572 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26573 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026574}
26575
26576/**
26577 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026578
26579 @param pWDICtx: pointer to the WLAN DAL context
26580 pEventData: pointer to the event information structure
26581
Jeff Johnson295189b2012-06-20 16:38:30 -070026582 @see
26583 @return Result of the function call
26584*/
26585WDI_Status
26586WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026587(
Jeff Johnson295189b2012-06-20 16:38:30 -070026588 WDI_ControlBlockType* pWDICtx,
26589 WDI_EventInfoType* pEventData
26590)
26591{
26592 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26593 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026594 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026595 wpt_uint16 usDataOffset = 0;
26596 wpt_uint16 usSendSize = 0;
26597 wpt_uint8 ucRssiThreshold;
26598
26599 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026600 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026601 -------------------------------------------------------------------------*/
26602 if (( NULL == pEventData ) ||
26603 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26604 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26605 {
26606 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026607 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026608 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026609 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026610 }
26611
26612 /*-----------------------------------------------------------------------
26613 Get message buffer
26614 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026615 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026616 sizeof(ucRssiThreshold),
26617 &pSendBuffer, &usDataOffset, &usSendSize))||
26618 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26619 {
26620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026621 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026622 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26623 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026624 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026625 }
26626
26627 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26628
Jeff Johnsone7245742012-09-05 17:12:55 -070026629 wpalMemoryCopy( pSendBuffer+usDataOffset,
26630 &ucRssiThreshold,
26631 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026632
26633 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026634 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026635
26636 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026637 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026639 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26640 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026641}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026642#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26643/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026644 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026645
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026646 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026647 by the Device Interface
26648
26649 wdiRoamOffloadScancb: callback for passing back the response
26650 of the Roam Candidate Lookup Req operation received from the
26651 device
26652
26653 pUserData: user data will be passed back with the
26654 callback
26655 @return Result of the function call
26656*/
26657WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026658WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026659(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026660 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026661 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26662 void* pUserData
26663)
26664{
26665 WDI_EventInfoType wdiEventData = {{0}};
26666 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26667
26668 /*------------------------------------------------------------------------
26669 Sanity Check
26670 ------------------------------------------------------------------------*/
26671 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26672 {
26673 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26674 "WDI API call before module is initialized - Fail request");
26675
26676 return WDI_STATUS_E_NOT_ALLOWED;
26677 }
26678
26679 /*------------------------------------------------------------------------
26680 Fill in Event data and post to the Main FSM
26681 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026682 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26683 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26684 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026685 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26686 wdiEventData.pUserData = pUserData;
26687
26688 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26689}
26690
26691void
26692WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26693{
26694 switch (wdiEdType)
26695 {
26696 case WDI_ED_NONE:
26697 *EdType = eED_NONE;
26698 break;
26699 case WDI_ED_WEP40:
26700 case WDI_ED_WEP104:
26701 *EdType = eED_WEP;
26702 break;
26703 case WDI_ED_TKIP:
26704 *EdType = eED_TKIP;
26705 break;
26706 case WDI_ED_CCMP:
26707#ifdef WLAN_FEATURE_11W
26708 case WDI_ED_AES_128_CMAC:
26709#endif
26710 *EdType = eED_CCMP;
26711 break;
26712#ifdef FEATURE_WLAN_WAPI
26713 case WDI_ED_WPI:
26714 *EdType = eED_WPI;
26715 break;
26716#endif
26717 case WDI_ED_ANY:
26718 *EdType = eED_ANY;
26719 break;
26720
26721 default:
26722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26723 "%s: Unknown Encryption Type", __func__);
26724 break;
26725 }
26726}
26727
26728/**
26729 @brief Helper function to pack Start Roam Candidate Lookup
26730 Request parameters
26731
26732 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026733 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026734 from upper layers
26735 ppSendBuffer, pSize - out pointers of the packed buffer
26736 and its size
26737
26738 @return Result of the function call
26739*/
26740
26741WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026742WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026743(
26744 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026745 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026746 wpt_uint8** ppSendBuffer,
26747 wpt_uint16* pSize
26748)
26749{
26750 wpt_uint8* pSendBuffer = NULL;
26751 wpt_uint16 usDataOffset = 0;
26752 wpt_uint16 usSendSize = 0;
26753 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26754 wpt_uint8 i;
26755 /*-----------------------------------------------------------------------
26756 Get message buffer
26757 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026759 sizeof(tRoamCandidateListParams),
26760 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026761 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026762 {
26763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026764 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026765 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026766 WDI_ASSERT(0);
26767 return WDI_STATUS_E_FAILURE;
26768 }
26769 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070026770 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026771 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026772 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026773 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026774 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026775 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026776 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026777 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026778 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026779 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026780
26781 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026782 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026783 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026784 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026785 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
26786 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026787 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
26788 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
26789 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
26790 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
26791 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080026792 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026793 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080026794 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026795 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
26796 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
26797 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
26798 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
26799 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
26800 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
26801 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080026802 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026803 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026804 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
26805 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
26806 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026807
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
26809 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
26810 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
26811 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
26812 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
26813 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080026814 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026815 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
26816 pRoamCandidateListParams->RoamScanOffloadEnabled,
26817 pRoamCandidateListParams->Command,
26818 pRoamCandidateListParams->StartScanReason,
26819 pRoamCandidateListParams->NeighborScanTimerPeriod,
26820 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
26821 pRoamCandidateListParams->NeighborScanChannelMinTime,
26822 pRoamCandidateListParams->NeighborScanChannelMaxTime,
26823 pRoamCandidateListParams->EmptyRefreshScanPeriod,
26824 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
26825 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
26826 pRoamCandidateListParams->ConnectedNetwork.authentication,
26827 pRoamCandidateListParams->ConnectedNetwork.encryption,
26828 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
26829 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
26830 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026831 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026832 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026833 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026834 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026835 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26836 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026837 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026838 pRoamCandidateListParams->us24GProbeSize);
26839 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026840 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026841 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026842 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026843 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
26844 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026845 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026846 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026847 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
26848 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
26849 pRoamCandidateListParams->nProbes =
26850 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
26851 pRoamCandidateListParams->HomeAwayTime =
26852 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
26853 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026854 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
26855 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026857 }
26858
26859
26860 /*Set the output values*/
26861 *ppSendBuffer = pSendBuffer;
26862 *pSize = usSendSize;
26863 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026864}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026865
26866/**
26867 @brief Process Start Roam Candidate Lookup Request function
26868
26869 @param pWDICtx: pointer to the WLAN DAL context
26870 pEventData: pointer to the event information structure
26871
26872 @return Result of the function call
26873*/
26874WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026875WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026876(
26877 WDI_ControlBlockType* pWDICtx,
26878 WDI_EventInfoType* pEventData
26879)
26880{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026881 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026882 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26883 wpt_uint8* pSendBuffer = NULL;
26884 wpt_uint16 usSendSize = 0;
26885 WDI_Status wdiStatus;
26886 /*-------------------------------------------------------------------------
26887 Sanity check
26888 -------------------------------------------------------------------------*/
26889 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026890 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026891 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
26892 {
26893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26894 "%s: Invalid parameters", __func__);
26895 WDI_ASSERT(0);
26896 return WDI_STATUS_E_FAILURE;
26897 }
26898
26899 /*-------------------------------------------------------------------------
26900 Pack the Start Roam Candidate Lookup request structure based on version
26901 -------------------------------------------------------------------------*/
26902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
26903 "%s: Packing Roam Candidate Lookup request ", __func__);
26904
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026905 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026906 &pSendBuffer, &usSendSize);
26907
26908 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26909 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26910 {
26911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26912 "%s: failed to pack request parameters", __func__);
26913 WDI_ASSERT(0);
26914 return wdiStatus;
26915 }
26916
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026917 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
26918 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026919
26920 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026921 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026922 -------------------------------------------------------------------------*/
26923 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026924 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026925}
26926
26927/**
26928 @brief Process Start Roam Candidate Lookup Rsp function (called when a
26929 response is being received over the bus from HAL)
26930
26931 @param pWDICtx: pointer to the WLAN DAL context
26932 pEventData: pointer to the event information structure
26933
26934 @see
26935 @return Result of the function call
26936*/
26937WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026938WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026939(
26940 WDI_ControlBlockType* pWDICtx,
26941 WDI_EventInfoType* pEventData
26942)
26943{
26944 WDI_Status wdiStatus;
26945 eHalStatus halStatus;
26946 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
26947
26948 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26949
26950 /*-------------------------------------------------------------------------
26951 Sanity check
26952 -------------------------------------------------------------------------*/
26953 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
26954 ( NULL == pEventData->pEventData ))
26955 {
26956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26957 "%s: Invalid parameters", __func__);
26958 WDI_ASSERT(0);
26959 return WDI_STATUS_E_FAILURE;
26960 }
26961
26962 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
26963
26964 /*-------------------------------------------------------------------------
26965 Extract response and send it to UMAC
26966 -------------------------------------------------------------------------*/
26967 halStatus = *((eHalStatus*)pEventData->pEventData);
26968 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
26969
26970 /*Notify UMAC*/
26971 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
26972
26973 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026974}/* WDI_ProcessRoamScanOffloadRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026975#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026976
26977/**
26978 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070026979
26980 @param pWDICtx: pointer to the WLAN DAL context
26981 pEventData: pointer to the event information structure
26982
Jeff Johnson295189b2012-06-20 16:38:30 -070026983 @see
26984 @return Result of the function call
26985*/
26986WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053026987WDI_PackUpdateScanParamsReq
26988(
26989 WDI_ControlBlockType* pWDICtx,
26990 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
26991 wpt_uint8** ppSendBuffer,
26992 wpt_uint16* pSize
26993)
26994{
26995 wpt_uint8* pSendBuffer = NULL;
26996 wpt_uint16 usDataOffset = 0;
26997 wpt_uint16 usSendSize = 0;
26998 tUpdateScanParams updateScanParams = {0};
26999
27000
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027002 "Begin WDI Update Scan Parameters Old Style Params");
27003 /*-----------------------------------------------------------------------
27004 Get message buffer
27005 -----------------------------------------------------------------------*/
27006 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27007 sizeof(updateScanParams),
27008 &pSendBuffer, &usDataOffset, &usSendSize))||
27009 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27010 {
27011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027012 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027013 pwdiUpdateScanParams);
27014 WDI_ASSERT(0);
27015 return WDI_STATUS_E_FAILURE;
27016 }
27017
27018 //
27019 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27020 //
27021
27022 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27023 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27024
27025 updateScanParams.ucChannelCount =
27026 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27027 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27028 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27029 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
27030
27031 wpalMemoryCopy( updateScanParams.aChannels,
27032 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27033 updateScanParams.ucChannelCount);
27034
27035
27036 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27037 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27038 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27039 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27040 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27041
27042 wpalMemoryCopy( pSendBuffer+usDataOffset,
27043 &updateScanParams,
27044 sizeof(updateScanParams));
27045
27046 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27047 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27048
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027049 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027050 "End Update Scan Parameters Old Style");
27051
27052 /*Set the output values*/
27053 *ppSendBuffer = pSendBuffer;
27054 *pSize = usSendSize;
27055
27056 return WDI_STATUS_SUCCESS;
27057}
27058
27059/**
27060 @brief Process Update Scan Params function
27061
27062 @param pWDICtx: pointer to the WLAN DAL context
27063 pEventData: pointer to the event information structure
27064
27065 @see
27066 @return Result of the function call
27067*/
27068WDI_Status
27069WDI_PackUpdateScanParamsReqEx
27070(
27071 WDI_ControlBlockType* pWDICtx,
27072 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27073 wpt_uint8** ppSendBuffer,
27074 wpt_uint16* pSize
27075)
27076{
27077 wpt_uint8* pSendBuffer = NULL;
27078 wpt_uint16 usDataOffset = 0;
27079 wpt_uint16 usSendSize = 0;
27080 tUpdateScanParamsEx updateScanParams = {0};
27081
27082
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027083 /*-----------------------------------------------------------------------
27084 Get message buffer
27085 -----------------------------------------------------------------------*/
27086 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27087 sizeof(updateScanParams),
27088 &pSendBuffer, &usDataOffset, &usSendSize))||
27089 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27090 {
27091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027092 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027093 pwdiUpdateScanParams);
27094 WDI_ASSERT(0);
27095 return WDI_STATUS_E_FAILURE;
27096 }
27097
27098 //
27099 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27100 //
27101
27102 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27103 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27104
27105 updateScanParams.ucChannelCount =
27106 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27107 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27108 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27109 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27110
27111 wpalMemoryCopy( updateScanParams.aChannels,
27112 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27113 updateScanParams.ucChannelCount);
27114
27115
27116 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27117 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27118 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27119 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27120 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27121
27122 wpalMemoryCopy( pSendBuffer+usDataOffset,
27123 &updateScanParams,
27124 sizeof(updateScanParams));
27125
27126 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27127 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27128
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027129 /*Set the output values*/
27130 *ppSendBuffer = pSendBuffer;
27131 *pSize = usSendSize;
27132
27133 return WDI_STATUS_SUCCESS;
27134}
27135
27136/**
27137 @brief Process Update Scan Params function
27138
27139 @param pWDICtx: pointer to the WLAN DAL context
27140 pEventData: pointer to the event information structure
27141
27142 @see
27143 @return Result of the function call
27144*/
27145WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027146WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027147(
Jeff Johnson295189b2012-06-20 16:38:30 -070027148 WDI_ControlBlockType* pWDICtx,
27149 WDI_EventInfoType* pEventData
27150)
27151{
27152 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27153 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027154 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027155 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027156 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027157
27158 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027159 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027160 -------------------------------------------------------------------------*/
27161 if (( NULL == pEventData ) ||
27162 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27163 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27164 {
27165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027166 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027167 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027168 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027169 }
27170
27171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27172 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027173
27174 //
27175 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27176 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027177 if ( pWDICtx->wlanVersion.revision < 1 )
27178 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027179 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027180 &pSendBuffer, &usSendSize);
27181 }
27182 else
27183 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027184 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27185 &pSendBuffer, &usSendSize);
27186 }
27187
27188 if(WDI_STATUS_SUCCESS != wdiStatus)
27189 {
27190 //memory allocation failed
27191 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027192 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027193
Jeff Johnson295189b2012-06-20 16:38:30 -070027194 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027195 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027196 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027197 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027198 wdiUpdateScanParamsCb, pEventData->pUserData,
27199 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027200}
27201
27202/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027203 @brief Process Update Channel Params function
27204
27205 @param pWDICtx: pointer to the WLAN DAL context
27206 pEventData: pointer to the event information structure
27207
27208 @see
27209 @return Result of the function call
27210*/
27211WDI_Status
27212WDI_ProcessUpdateChannelParamsReq
27213(
27214 WDI_ControlBlockType* pWDICtx,
27215 WDI_EventInfoType* pEventData
27216)
27217{
27218 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27219 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27220 wpt_uint8* pSendBuffer = NULL;
27221 wpt_uint16 usDataOffset = 0;
27222 wpt_uint16 usSendSize = 0;
27223 tUpdateChannelReqType *updateChannelParams;
27224 wpt_uint32 usUpdateChanParamSize;
27225 wpt_uint8 num_channels = 0;
27226
27227 /*-------------------------------------------------------------------------
27228 Sanity check
27229 -------------------------------------------------------------------------*/
27230 if (( NULL == pEventData ) ||
27231 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27232 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27233 {
27234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27235 "%s: Invalid parameters", __func__);
27236 WDI_ASSERT(0);
27237 return WDI_STATUS_E_FAILURE;
27238 }
27239 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027240 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027241
27242 /*-----------------------------------------------------------------------
27243 Get message buffer
27244 -----------------------------------------------------------------------*/
27245 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27246 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27247 &pSendBuffer, &usDataOffset, &usSendSize))||
27248 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27249 {
27250 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27251 "Unable to get send buffer in Update Channel Params req %p",
27252 pwdiUpdateChanListParams);
27253 WDI_ASSERT(0);
27254 return WDI_STATUS_E_FAILURE;
27255 }
27256 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27257
27258 updateChannelParams->numChan = num_channels;
27259 wpalMemoryCopy(&updateChannelParams->chanParam,
27260 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27261 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27262
27263 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27264 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27265
27266 /*-------------------------------------------------------------------------
27267 Send Update channel request to fw
27268 -------------------------------------------------------------------------*/
27269 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27270 wdiUpdateChanParamsCb, pEventData->pUserData,
27271 WDI_UPDATE_CHAN_RESP);
27272}
27273
27274/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027275 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027276
27277 @param pWDICtx: pointer to the WLAN DAL context
27278 pEventData: pointer to the event information structure
27279
Jeff Johnson295189b2012-06-20 16:38:30 -070027280 @see
27281 @return Result of the function call
27282*/
27283WDI_Status
27284WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027285(
Jeff Johnson295189b2012-06-20 16:38:30 -070027286 WDI_ControlBlockType* pWDICtx,
27287 WDI_EventInfoType* pEventData
27288)
27289{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027290 WDI_LowLevelIndType wdiInd;
27291 tpPrefNetwFoundParams pNetwFoundParams;
27292 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027293
27294
27295 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027296 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027297 -------------------------------------------------------------------------*/
27298 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27299 ( NULL == pEventData->pEventData ))
27300 {
27301 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027302 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027303 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027304 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027305 }
27306
27307 /*-------------------------------------------------------------------------
27308 Extract indication and send it to UMAC
27309 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027310 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27311
27312 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27313 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27314 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27315
27316 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27317 {
27318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27319 "%s: fail to allocate memory", __func__);
27320 return WDI_STATUS_MEM_FAILURE;
27321 }
27322
27323 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27324 (pNetwFoundParams->ssId.length < 32 )?
27325 pNetwFoundParams->ssId.length : 32;
27326 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27327 pNetwFoundParams->ssId.ssId,
27328 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27329 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27330 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27331 pNetwFoundParams->frameLength;
27332 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27333 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27334 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027335
27336 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027337 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027338
Jeff Johnson295189b2012-06-20 16:38:30 -070027339 // DEBUG
27340 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027341 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027342 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027343 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027344 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027345 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027346 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27347
ltimariub77f24b2013-01-24 18:54:33 -080027348 if ( pWDICtx->wdiLowLevelIndCB )
27349 {
27350 /*Notify UMAC*/
27351 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27352 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027353
27354 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027355}
27356
27357/**
27358 @brief Process PNO Rsp function (called when a
27359 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027360
27361 @param pWDICtx: pointer to the WLAN DAL context
27362 pEventData: pointer to the event information structure
27363
Jeff Johnson295189b2012-06-20 16:38:30 -070027364 @see
27365 @return Result of the function call
27366*/
27367WDI_Status
27368WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027369(
Jeff Johnson295189b2012-06-20 16:38:30 -070027370 WDI_ControlBlockType* pWDICtx,
27371 WDI_EventInfoType* pEventData
27372)
27373{
27374 WDI_Status wdiStatus;
27375 eHalStatus halStatus;
27376 WDI_PNOScanCb wdiPNOScanCb = NULL;
27377 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27378
27379 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027380 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027381 -------------------------------------------------------------------------*/
27382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27383 ( NULL == pEventData->pEventData ))
27384 {
27385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027386 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027387 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027388 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027389 }
27390
27391
Jeff Johnsone7245742012-09-05 17:12:55 -070027392 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027393
27394 /*-------------------------------------------------------------------------
27395 Extract response and send it to UMAC
27396 -------------------------------------------------------------------------*/
27397 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027398 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027399
27400 /*Notify UMAC*/
27401 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27402
Jeff Johnsone7245742012-09-05 17:12:55 -070027403 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027404}/*WDI_ProcessSetPreferredNetworkRsp*/
27405
27406/**
27407 @brief Process RSSI Filter Rsp function (called when a
27408 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027409
27410 @param pWDICtx: pointer to the WLAN DAL context
27411 pEventData: pointer to the event information structure
27412
Jeff Johnson295189b2012-06-20 16:38:30 -070027413 @see
27414 @return Result of the function call
27415*/
27416WDI_Status
27417WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027418(
Jeff Johnson295189b2012-06-20 16:38:30 -070027419 WDI_ControlBlockType* pWDICtx,
27420 WDI_EventInfoType* pEventData
27421)
27422{
27423 WDI_Status wdiStatus;
27424 eHalStatus halStatus;
27425 WDI_RssiFilterCb wdiRssiFilterCb;
27426 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27427
27428 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027429 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027430 -------------------------------------------------------------------------*/
27431 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27432 ( NULL == pEventData->pEventData ))
27433 {
27434 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027435 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027436 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027437 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027438 }
27439
Jeff Johnsone7245742012-09-05 17:12:55 -070027440 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027441
27442 /*-------------------------------------------------------------------------
27443 Extract response and send it to UMAC
27444 -------------------------------------------------------------------------*/
27445 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027446 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027447
27448 /*Notify UMAC*/
27449 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27450
Jeff Johnsone7245742012-09-05 17:12:55 -070027451 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027452}/*WDI_ProcessSetRssiFilterRsp*/
27453
27454/**
27455 @brief Process Update Scan Params Rsp function (called when a
27456 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027457
27458 @param pWDICtx: pointer to the WLAN DAL context
27459 pEventData: pointer to the event information structure
27460
Jeff Johnson295189b2012-06-20 16:38:30 -070027461 @see
27462 @return Result of the function call
27463*/
27464WDI_Status
27465WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027466(
Jeff Johnson295189b2012-06-20 16:38:30 -070027467 WDI_ControlBlockType* pWDICtx,
27468 WDI_EventInfoType* pEventData
27469)
27470{
27471 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027472 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027473 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027474 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027475 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27476
27477 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027478 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027479 -------------------------------------------------------------------------*/
27480 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27481 ( NULL == pEventData->pEventData ))
27482 {
27483 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027484 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027485 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027486 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027487 }
27488
27489 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027490 "%s: Process UPD scan params ptr : %p",
27491 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027492
Jeff Johnsone7245742012-09-05 17:12:55 -070027493 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027494
27495 /*-------------------------------------------------------------------------
27496 Extract response and send it to UMAC
27497 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027498 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27499 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027500 sizeof(halUpdScanParams.status));
27501
27502 uStatus = halUpdScanParams.status;
27503
27504 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027505 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027506
27507 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027508 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027509
Jeff Johnsone7245742012-09-05 17:12:55 -070027510 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027511
27512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027513 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027514 halUpdScanParams.status);
27515
27516 /*Notify UMAC*/
27517 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27518
Jeff Johnsone7245742012-09-05 17:12:55 -070027519 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027520}
27521#endif // FEATURE_WLAN_SCAN_PNO
27522
27523#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027524WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027525WDI_8023MulticastListReq
27526(
27527 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27528 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27529 void* pUserData
27530)
27531{
27532 WDI_EventInfoType wdiEventData;
27533 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27534
27535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027536 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027537
27538 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027539 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027540 ------------------------------------------------------------------------*/
27541 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27542 {
27543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27544 "WDI API call before module is initialized - Fail request");
27545
Jeff Johnsone7245742012-09-05 17:12:55 -070027546 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027547 }
27548
27549 /*------------------------------------------------------------------------
27550 Fill in Event data and post to the Main FSM
27551 ------------------------------------------------------------------------*/
27552 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027553 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027554 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027555 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027556 wdiEventData.pUserData = pUserData;
27557
27558 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27559}
27560
Jeff Johnsone7245742012-09-05 17:12:55 -070027561WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027562WDI_ReceiveFilterSetFilterReq
27563(
27564 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
27565 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
27566 void* pUserData
27567)
27568{
27569 WDI_EventInfoType wdiEventData;
27570 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27571
27572 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027573 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027574
27575 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027576 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027577 ------------------------------------------------------------------------*/
27578 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27579 {
27580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27581 "WDI API call before module is initialized - Fail request");
27582
Jeff Johnsone7245742012-09-05 17:12:55 -070027583 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027584 }
27585
27586 /*------------------------------------------------------------------------
27587 Fill in Event data and post to the Main FSM
27588 ------------------------------------------------------------------------*/
27589 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027590 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
27591 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070027592 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27593 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070027594 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027595 wdiEventData.pUserData = pUserData;
27596
27597
27598 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27599}
27600
Jeff Johnsone7245742012-09-05 17:12:55 -070027601WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027602WDI_FilterMatchCountReq
27603(
27604 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
27605 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
27606 void* pUserData
27607)
27608{
27609 WDI_EventInfoType wdiEventData;
27610 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27611
27612 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027613 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027614
27615 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027616 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027617 ------------------------------------------------------------------------*/
27618 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27619 {
27620 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27621 "WDI API call before module is initialized - Fail request");
27622
Jeff Johnsone7245742012-09-05 17:12:55 -070027623 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027624 }
27625
27626 /*------------------------------------------------------------------------
27627 Fill in Event data and post to the Main FSM
27628 ------------------------------------------------------------------------*/
27629 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027630 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027631 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027632 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027633 wdiEventData.pUserData = pUserData;
27634
27635
27636 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27637}
27638
Jeff Johnsone7245742012-09-05 17:12:55 -070027639WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027640WDI_ReceiveFilterClearFilterReq
27641(
27642 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
27643 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
27644 void* pUserData
27645)
27646{
27647 WDI_EventInfoType wdiEventData;
27648 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27649
27650 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027651 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027652
27653 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027654 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027655 ------------------------------------------------------------------------*/
27656 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27657 {
27658 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27659 "WDI API call before module is initialized - Fail request");
27660
Jeff Johnsone7245742012-09-05 17:12:55 -070027661 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027662 }
27663
27664 /*------------------------------------------------------------------------
27665 Fill in Event data and post to the Main FSM
27666 ------------------------------------------------------------------------*/
27667 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027668 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027669 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027670 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027671 wdiEventData.pUserData = pUserData;
27672
27673
27674 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27675}
27676
27677/**
27678 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027679
27680 @param pWDICtx: pointer to the WLAN DAL context
27681 pEventData: pointer to the event information structure
27682
Jeff Johnson295189b2012-06-20 16:38:30 -070027683 @see
27684 @return Result of the function call
27685*/
27686WDI_Status
27687WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027688(
Jeff Johnson295189b2012-06-20 16:38:30 -070027689 WDI_ControlBlockType* pWDICtx,
27690 WDI_EventInfoType* pEventData
27691)
27692{
27693 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
27694 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027695 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027696 wpt_uint16 usDataOffset = 0;
27697 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027698 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070027699 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027700 wpt_uint8 ucCurrentBSSSesIdx = 0;
27701 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027702
27703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027704 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027705
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027706 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
27707 if( NULL == pRcvFltMcAddrListType )
27708 {
27709 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27710 "Failed to alloc in WDI_Process8023MulticastListReq");
27711 return WDI_STATUS_E_FAILURE;
27712 }
27713
Jeff Johnson295189b2012-06-20 16:38:30 -070027714 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027715 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027716 -------------------------------------------------------------------------*/
27717 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027718 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070027719 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027720 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027721 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
27722 {
27723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027724 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027725 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027726 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027727 return WDI_STATUS_E_FAILURE;
27728 }
27729
27730 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27731 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
27732 &pBSSSes);
27733 if ( NULL == pBSSSes )
27734 {
27735 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027736 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027737 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070027738 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027739 }
27740
27741 /*-----------------------------------------------------------------------
27742 Get message buffer
27743 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027744 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27745 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027746 sizeof(tHalRcvFltMcAddrListType),
27747 &pSendBuffer, &usDataOffset, &usSendSize))||
27748 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
27749 {
27750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27751 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027752 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027753 pEventData, pwdiFltPktSetMcListReqParamsType,
27754 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070027755 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027756 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027757 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027758 }
27759
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027760 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070027761 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027762 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070027763 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027764 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070027765 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
27766 sizeof(tSirMacAddr));
27767 }
27768
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027769 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070027770 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027771 pRcvFltMcAddrListType,
27772 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070027773
27774 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070027775 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070027776
27777
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070027778 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070027779 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027780 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027781 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027782 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070027783 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070027784 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027785}
27786
27787/**
27788 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070027789
27790 @param pWDICtx: pointer to the WLAN DAL context
27791 pEventData: pointer to the event information structure
27792
Jeff Johnson295189b2012-06-20 16:38:30 -070027793 @see
27794 @return Result of the function call
27795*/
27796WDI_Status
27797WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027798(
Jeff Johnson295189b2012-06-20 16:38:30 -070027799 WDI_ControlBlockType* pWDICtx,
27800 WDI_EventInfoType* pEventData
27801)
27802{
27803 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
27804 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027805 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027806 wpt_uint16 usDataOffset = 0;
27807 wpt_uint16 usSendSize = 0;
27808 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027809 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027810 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070027811 wpt_uint8 ucCurrentBSSSesIdx = 0;
27812 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027813 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
27814 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027815
27816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027817 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027818
27819 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027820 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027821 -------------------------------------------------------------------------*/
27822 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027823 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070027824 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070027825 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070027826 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
27827 {
27828 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027829 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027830 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027831 return WDI_STATUS_E_FAILURE;
27832 }
27833
27834 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
27835 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
27836 &pBSSSes);
27837 if ( NULL == pBSSSes )
27838 {
27839 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027840 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070027841 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027842 }
27843
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027844 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
27845 {
Jeff Johnson295189b2012-06-20 16:38:30 -070027846
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027847 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
27848 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27849 * sizeof(tHalSessionizedRcvPktFilterCfgType));
27850
27851 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
27852 usSessRcvPktFilterCfgSize);
27853
27854 if(NULL == pSessRcvPktFilterCfg)
27855 {
27856 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27857 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027858 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027859 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027860 WDI_ASSERT(0);
27861 return WDI_STATUS_E_FAILURE;
27862 }
27863
27864 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
27865
27866 /*-----------------------------------------------------------------------
27867 Get message buffer
27868 -----------------------------------------------------------------------*/
27869
27870 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
27871 usSessRcvPktFilterCfgSize,
27872 &pSendBuffer, &usDataOffset, &usSendSize))||
27873 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
27874 {
27875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27876 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027877 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027878 pEventData, pwdiSetRcvPktFilterReqInfo,
27879 wdiReceiveFilterSetFilterCb);
27880 WDI_ASSERT(0);
27881 wpalMemoryFree(pSessRcvPktFilterCfg);
27882 return WDI_STATUS_E_FAILURE;
27883 }
27884
27885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027886 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027887 usSendSize,pSessRcvPktFilterCfg);
27888
27889 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
27890 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
27891 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
27892 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
27893
27894 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
27895
27896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27897 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
27898 pSessRcvPktFilterCfg->filterType);
27899 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27900 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
27901 pSessRcvPktFilterCfg->coleasceTime);
27902
27903 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
27904 {
27905 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
27906 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
27907 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
27908 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
27909 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
27910 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
27911 pSessRcvPktFilterCfg->paramsData[i].dataLength =
27912 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
27913
27914 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
27915 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
27916 8);
27917 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
27918 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
27919 8);
27920
27921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027922 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027923 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
27924 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
27925
27926 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027927 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027928 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
27929 pSessRcvPktFilterCfg->paramsData[i].dataLength);
27930
27931 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027932 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027933 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
27934 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
27935 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
27936 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
27937 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
27938 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
27939
27940 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080027941 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027942 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
27943 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
27944 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
27945 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
27946 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
27947 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
27948 }
27949
27950 wpalMemoryCopy( pSendBuffer+usDataOffset,
27951 pSessRcvPktFilterCfg,
27952 usSessRcvPktFilterCfgSize);
27953
27954
27955 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
27956 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
27957
27958 wpalMemoryFree(pSessRcvPktFilterCfg);
27959
27960 }
27961 /*If SLM_SESSIONIZATION is not supported then do this */
27962 else
27963 {
27964 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
27965 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
27966 * sizeof(tHalRcvPktFilterParams));
27967
27968 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070027969 usRcvPktFilterCfgSize);
27970
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027971 if(NULL == pRcvPktFilterCfg)
27972 {
27973 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27974 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027975 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027976 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027977 WDI_ASSERT(0);
27978 return WDI_STATUS_E_FAILURE;
27979 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027980
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027981 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070027982
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027983 /*-----------------------------------------------------------------------
27984 Get message buffer
27985 -----------------------------------------------------------------------*/
27986 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070027987 usRcvPktFilterCfgSize,
27988 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027989 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
27990 {
27991 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070027992 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027993 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070027994 pEventData, pwdiSetRcvPktFilterReqInfo,
27995 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070027996 WDI_ASSERT(0);
27997 wpalMemoryFree(pRcvPktFilterCfg);
27998 return WDI_STATUS_E_FAILURE;
27999 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028000
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028002 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070028003 usSendSize,usRcvPktFilterCfgSize);
28004
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028005 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
28006 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
28007 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
28008 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070028009
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028011 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070028012 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028013 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070028014 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070028015 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070028016
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028017 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
28018 {
28019 pRcvPktFilterCfg->paramsData[i].protocolLayer =
28020 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
28021 pRcvPktFilterCfg->paramsData[i].cmpFlag =
28022 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28023 pRcvPktFilterCfg->paramsData[i].dataOffset =
28024 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28025 pRcvPktFilterCfg->paramsData[i].dataLength =
28026 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070028027
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028028 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028029 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28030 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028031 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070028032 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28033 8);
28034
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028036 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070028037 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070028038 pRcvPktFilterCfg->paramsData[i].cmpFlag);
28039
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028041 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028042 pRcvPktFilterCfg->paramsData[i].dataOffset,
28043 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028044
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028045 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028046 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028047 pRcvPktFilterCfg->paramsData[i].compareData[0],
28048 pRcvPktFilterCfg->paramsData[i].compareData[1],
28049 pRcvPktFilterCfg->paramsData[i].compareData[2],
28050 pRcvPktFilterCfg->paramsData[i].compareData[3],
28051 pRcvPktFilterCfg->paramsData[i].compareData[4],
28052 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070028053
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028054 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028055 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028056 pRcvPktFilterCfg->paramsData[i].dataMask[0],
28057 pRcvPktFilterCfg->paramsData[i].dataMask[1],
28058 pRcvPktFilterCfg->paramsData[i].dataMask[2],
28059 pRcvPktFilterCfg->paramsData[i].dataMask[3],
28060 pRcvPktFilterCfg->paramsData[i].dataMask[4],
28061 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
28062 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028063
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028064 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070028065 pRcvPktFilterCfg,
28066 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028067
28068
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028069 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28070 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028071
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028073 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028074 wpalMemoryFree(pRcvPktFilterCfg);
28075 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028076 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028077 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028078 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028079 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028080 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028081 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028082}
28083
28084/**
28085 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028086
28087 @param pWDICtx: pointer to the WLAN DAL context
28088 pEventData: pointer to the event information structure
28089
Jeff Johnson295189b2012-06-20 16:38:30 -070028090 @see
28091 @return Result of the function call
28092*/
28093WDI_Status
28094WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028095(
Jeff Johnson295189b2012-06-20 16:38:30 -070028096 WDI_ControlBlockType* pWDICtx,
28097 WDI_EventInfoType* pEventData
28098)
28099{
28100 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28101 NULL;
28102 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28103 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028104 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028105 wpt_uint16 usDataOffset = 0;
28106 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028107 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28108 wpt_uint8 ucCurrentBSSSesIdx = 0;
28109 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028110
28111 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028112 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028113
28114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028116 -------------------------------------------------------------------------*/
28117 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028118 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028119 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028120 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028121 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28122 {
28123 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028124 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028125 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028126 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028127 }
28128
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028129 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28130 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28131 &pBSSSes);
28132 if ( NULL == pBSSSes )
28133 {
28134 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028135 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028136 return WDI_STATUS_E_FAILURE;
28137 }
28138
Jeff Johnson295189b2012-06-20 16:38:30 -070028139 /*-----------------------------------------------------------------------
28140 Get message buffer
28141 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028142 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28143 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028144 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028145 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028146 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028147 {
28148 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28149 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028150 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028151 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28152 wdiFilterMatchCountCb);
28153 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028154 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028155 }
28156
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028157 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28158 wpalMemoryCopy( pSendBuffer+usDataOffset,
28159 &rcvFltPktMatchCntReqParam,
28160 sizeof(rcvFltPktMatchCntReqParam));
28161
Jeff Johnson295189b2012-06-20 16:38:30 -070028162 //
28163 // Don't need to fill send buffer other than header
28164 //
28165 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028166 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028167
28168
28169 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028170 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028171 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028172 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28173 wdiFilterMatchCountCb,
28174 pEventData->pUserData,
28175 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028176}
28177
28178/**
28179 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028180
28181 @param pWDICtx: pointer to the WLAN DAL context
28182 pEventData: pointer to the event information structure
28183
Jeff Johnson295189b2012-06-20 16:38:30 -070028184 @see
28185 @return Result of the function call
28186*/
28187WDI_Status
28188WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028189(
Jeff Johnson295189b2012-06-20 16:38:30 -070028190 WDI_ControlBlockType* pWDICtx,
28191 WDI_EventInfoType* pEventData
28192)
Jeff Johnsone7245742012-09-05 17:12:55 -070028193{
Jeff Johnson295189b2012-06-20 16:38:30 -070028194 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28195 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028196 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028197 wpt_uint16 usDataOffset = 0;
28198 wpt_uint16 usSendSize = 0;
28199 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028200 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028201 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028202
28203 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028204 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028205
28206 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028207 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028208 -------------------------------------------------------------------------*/
28209 if (( NULL == pEventData ) ||
28210 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28211 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028212 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028213 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28214 {
28215 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028216 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028217 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028218 return WDI_STATUS_E_FAILURE;
28219 }
28220
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028221 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028222 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28223 &pBSSSes);
28224 if ( NULL == pBSSSes )
28225 {
28226 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028227 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028229 }
28230
28231 /*-----------------------------------------------------------------------
28232 Get message buffer
28233 -----------------------------------------------------------------------*/
28234 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028235 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028236 sizeof(tHalRcvFltPktClearParam),
28237 &pSendBuffer, &usDataOffset, &usSendSize))||
28238 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28239 {
28240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28241 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028242 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028243 pEventData, pwdiRcvFltPktClearReqParamsType,
28244 wdiRcvFltPktClearFilterCb);
28245 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028246 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028247 }
28248
28249
28250 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028251 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028252 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028253 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028254
Jeff Johnsone7245742012-09-05 17:12:55 -070028255 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28256 wpalMemoryCopy( pSendBuffer+usDataOffset,
28257 &rcvFltPktClearParam,
28258 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028259
28260 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028261 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028262
28263
28264 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028265 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028266 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028268 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028269 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028270}
28271
28272/**
28273 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028274
28275 @param pWDICtx: pointer to the WLAN DAL context
28276 pEventData: pointer to the event information structure
28277
Jeff Johnson295189b2012-06-20 16:38:30 -070028278 @see
28279 @return Result of the function call
28280*/
28281WDI_Status
28282WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028283(
Jeff Johnson295189b2012-06-20 16:38:30 -070028284 WDI_ControlBlockType* pWDICtx,
28285 WDI_EventInfoType* pEventData
28286)
28287{
Jeff Johnson295189b2012-06-20 16:38:30 -070028288 eHalStatus halStatus;
28289 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028290 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28291 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028292 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28293
28294 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028295 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028296
28297 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028298 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028299 -------------------------------------------------------------------------*/
28300 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28301 ( NULL == pEventData->pEventData ))
28302 {
28303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028304 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028307 }
28308
Jeff Johnsone7245742012-09-05 17:12:55 -070028309 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028310
28311 /*-------------------------------------------------------------------------
28312 Extract response and send it to UMAC
28313 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028314 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28315 {
28316 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28317 pEventData->pEventData,
28318 sizeof(halRcvFltPktSetMcListRsp));
28319
28320 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28321 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28322 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28323 halRcvFltPktSetMcListRsp.bssIdx;
28324 }
28325 else
28326 {
28327 halStatus = *((eHalStatus*)pEventData->pEventData);
28328 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28329 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028330
28331 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028332 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028333
Jeff Johnsone7245742012-09-05 17:12:55 -070028334 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028335}
28336
28337/**
28338 @brief Process Set Rsp function (called when a
28339 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028340
28341 @param pWDICtx: pointer to the WLAN DAL context
28342 pEventData: pointer to the event information structure
28343
Jeff Johnson295189b2012-06-20 16:38:30 -070028344 @see
28345 @return Result of the function call
28346*/
28347WDI_Status
28348WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028349(
Jeff Johnson295189b2012-06-20 16:38:30 -070028350 WDI_ControlBlockType* pWDICtx,
28351 WDI_EventInfoType* pEventData
28352)
28353{
Jeff Johnson295189b2012-06-20 16:38:30 -070028354 eHalStatus halStatus;
28355 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028356 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28357 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28359
28360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028361 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028362
28363 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028364 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028365 -------------------------------------------------------------------------*/
28366 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28367 ( NULL == pEventData->pEventData ))
28368 {
28369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028371 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028372 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028373 }
28374
28375 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028376 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028377
28378 /*-------------------------------------------------------------------------
28379 Extract response and send it to UMAC
28380 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028381 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28382 {
28383 wpalMemoryCopy( &halSetPktFilterRspParams,
28384 pEventData->pEventData,
28385 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028386
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028387 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28388 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28389 }
28390 else
28391 {
28392 halStatus = *((eHalStatus*)pEventData->pEventData);
28393 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28394 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028395 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028396 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028397
Jeff Johnsone7245742012-09-05 17:12:55 -070028398 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028399}
28400
28401/**
28402 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028403
28404 @param pWDICtx: pointer to the WLAN DAL context
28405 pEventData: pointer to the event information structure
28406
Jeff Johnson295189b2012-06-20 16:38:30 -070028407 @see
28408 @return Result of the function call
28409*/
28410WDI_Status
28411WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028412(
Jeff Johnson295189b2012-06-20 16:38:30 -070028413 WDI_ControlBlockType* pWDICtx,
28414 WDI_EventInfoType* pEventData
28415)
28416{
Jeff Johnson295189b2012-06-20 16:38:30 -070028417 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028418 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028419 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28420 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028421
28422 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28423
28424 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028425 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028426
28427 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028428 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028429 -------------------------------------------------------------------------*/
28430 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28431 ( NULL == pEventData->pEventData ))
28432 {
28433 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028434 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028435 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028436 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028437 }
28438
Jeff Johnsone7245742012-09-05 17:12:55 -070028439 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028440
28441 /*-------------------------------------------------------------------------
28442 Extract response and send it to UMAC
28443 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028444 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28445 {
28446 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28447 pEventData->pEventData,
28448 sizeof(halRcvFltrPktMatachRsp));
28449
28450 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28451 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28452 }
28453 else
28454 {
28455 halStatus = *((eHalStatus*)pEventData->pEventData);
28456 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28457 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028458
28459 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028460 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028461
Jeff Johnsone7245742012-09-05 17:12:55 -070028462 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028463}
28464
28465/**
28466 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028467
28468 @param pWDICtx: pointer to the WLAN DAL context
28469 pEventData: pointer to the event information structure
28470
Jeff Johnson295189b2012-06-20 16:38:30 -070028471 @see
28472 @return Result of the function call
28473*/
28474WDI_Status
28475WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028476(
Jeff Johnson295189b2012-06-20 16:38:30 -070028477 WDI_ControlBlockType* pWDICtx,
28478 WDI_EventInfoType* pEventData
28479)
28480{
Jeff Johnson295189b2012-06-20 16:38:30 -070028481 eHalStatus halStatus;
28482 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028483 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28484 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028485 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28486
28487 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028488 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028489
28490 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028491 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028492 -------------------------------------------------------------------------*/
28493 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28494 ( NULL == pEventData->pEventData ))
28495 {
28496 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028497 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028498 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028499 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028500 }
28501
28502 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028503 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028504
28505 /*-------------------------------------------------------------------------
28506 Extract response and send it to UMAC
28507 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028508 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28509 {
28510 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28511 pEventData->pEventData,
28512 sizeof(halRcvFltPktClearRspMsg));
28513
28514 wdiRcvFltPktClearRspParamsType.wdiStatus =
28515 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28516 wdiRcvFltPktClearRspParamsType.bssIdx =
28517 halRcvFltPktClearRspMsg.bssIdx;
28518 }
28519 else
28520 {
28521 halStatus = *((eHalStatus*)pEventData->pEventData);
28522 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28523 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028524
28525 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028526 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028527
Jeff Johnsone7245742012-09-05 17:12:55 -070028528 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028529}
28530#endif // WLAN_FEATURE_PACKET_FILTERING
28531
28532/**
28533 @brief Process Shutdown Rsp function
28534 There is no shutdown response comming from HAL
28535 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028536
Jeff Johnson295189b2012-06-20 16:38:30 -070028537 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028538 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028539
28540 @see
28541 @return Result of the function call
28542*/
28543WDI_Status
28544WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028545(
Jeff Johnson295189b2012-06-20 16:38:30 -070028546 WDI_ControlBlockType* pWDICtx,
28547 WDI_EventInfoType* pEventData
28548)
28549{
28550 /*There is no shutdown response comming from HAL - function just kept for
28551 simmetry */
28552 WDI_ASSERT(0);
28553 return WDI_STATUS_SUCCESS;
28554}/*WDI_ProcessShutdownRsp*/
28555
28556/**
28557 @brief WDI_SetPowerParamsReq
28558
Jeff Johnsone7245742012-09-05 17:12:55 -070028559 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028560 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028561
Jeff Johnson295189b2012-06-20 16:38:30 -070028562 wdiPowerParamsCb: callback for passing back the response
28563 of the Set Power Params operation received from the
28564 device
Jeff Johnsone7245742012-09-05 17:12:55 -070028565
Jeff Johnson295189b2012-06-20 16:38:30 -070028566 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070028567 callback
28568
Jeff Johnson295189b2012-06-20 16:38:30 -070028569 @return Result of the function call
28570*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028571WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028572WDI_SetPowerParamsReq
28573(
28574 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
28575 WDI_SetPowerParamsCb wdiPowerParamsCb,
28576 void* pUserData
28577)
28578{
28579 WDI_EventInfoType wdiEventData;
28580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28581
28582 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028583 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028584 ------------------------------------------------------------------------*/
28585 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28586 {
28587 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28588 "WDI API call before module is initialized - Fail request");
28589
Jeff Johnsone7245742012-09-05 17:12:55 -070028590 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028591 }
28592
28593 /*------------------------------------------------------------------------
28594 Fill in Event data and post to the Main FSM
28595 ------------------------------------------------------------------------*/
28596 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028597 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028598 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028599 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070028600 wdiEventData.pUserData = pUserData;
28601
28602 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28603}/*WDI_SetPowerParamsReq*/
28604
28605/**
28606 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028607
28608 @param pWDICtx: pointer to the WLAN DAL context
28609 pEventData: pointer to the event information structure
28610
Jeff Johnson295189b2012-06-20 16:38:30 -070028611 @see
28612 @return Result of the function call
28613*/
28614WDI_Status
28615WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028616(
Jeff Johnson295189b2012-06-20 16:38:30 -070028617 WDI_ControlBlockType* pWDICtx,
28618 WDI_EventInfoType* pEventData
28619)
28620{
28621 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
28622 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028623 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028624 wpt_uint16 usDataOffset = 0;
28625 wpt_uint16 usSendSize = 0;
28626 tSetPowerParamsType powerParams;
28627
28628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028629 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028630 -------------------------------------------------------------------------*/
28631 if (( NULL == pEventData ) ||
28632 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
28633 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
28634 {
28635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028636 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028637 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028638 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028639 }
28640
28641 /*-----------------------------------------------------------------------
28642 Get message buffer
28643 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028644 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028645 sizeof(powerParams),
28646 &pSendBuffer, &usDataOffset, &usSendSize))||
28647 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
28648 {
28649 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028650 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028651 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
28652 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028653 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028654 }
28655
28656 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070028657 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070028658 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
28659
28660 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028661 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070028662 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
28663
28664 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028665 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070028666 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
28667
28668 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070028669 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070028670 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
28671
28672 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070028673 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070028674 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
28675
28676 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070028677 powerParams.uBETInterval =
28678 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070028679
Yue Mac24062f2013-05-13 17:01:29 -070028680 /* MAX LI for modulated DTIM */
28681 powerParams.uMaxLIModulatedDTIM =
28682 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070028683
28684 wpalMemoryCopy( pSendBuffer+usDataOffset,
28685 &powerParams,
28686 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028687
28688 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028689 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028690
28691 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028692 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028693 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028694 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28695 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028696}
28697
28698/**
28699 @brief Process Power Params Rsp function (called when a
28700 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028701
28702 @param pWDICtx: pointer to the WLAN DAL context
28703 pEventData: pointer to the event information structure
28704
Jeff Johnson295189b2012-06-20 16:38:30 -070028705 @see
28706 @return Result of the function call
28707*/
28708WDI_Status
28709WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028710(
Jeff Johnson295189b2012-06-20 16:38:30 -070028711 WDI_ControlBlockType* pWDICtx,
28712 WDI_EventInfoType* pEventData
28713)
28714{
28715 WDI_Status wdiStatus;
28716 eHalStatus halStatus;
28717 WDI_SetPowerParamsCb wdiPowerParamsCb;
28718 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28719
28720 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028721 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028722 -------------------------------------------------------------------------*/
28723 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28724 ( NULL == pEventData->pEventData ))
28725 {
28726 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028727 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028730 }
28731
Jeff Johnsone7245742012-09-05 17:12:55 -070028732 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028733
28734 /*-------------------------------------------------------------------------
28735 Extract response and send it to UMAC
28736 -------------------------------------------------------------------------*/
28737 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070028738 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070028739
28740 /*Notify UMAC*/
28741 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
28742
Jeff Johnsone7245742012-09-05 17:12:55 -070028743 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028744}/*WDI_ProcessSetPowerParamsRsp*/
28745
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028746/**
28747 @brief WDI_dhcpStartInd
28748 Host will send an event to the FW when DHCP is initiated
28749
28750 @param
28751 WDI_DHCPInd: DHCP Indication
28752 @see
28753 @return Result of the function call
28754*/
28755WDI_Status
28756WDI_dhcpStartInd
28757(
28758 WDI_DHCPInd *wdiDHCPInd
28759)
28760{
28761 WDI_EventInfoType wdiEventData;
28762
28763 /*------------------------------------------------------------------------
28764 Sanity Check
28765 ------------------------------------------------------------------------*/
28766 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28767 {
28768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28769 "WDI API call before module is initialized - Fail request");
28770
28771 return WDI_STATUS_E_NOT_ALLOWED;
28772 }
28773
28774 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
28775 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028776 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028777 wdiEventData.pCBfnc = NULL;
28778 wdiEventData.pUserData = NULL;
28779
28780 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28781}
28782
28783
28784/**
28785 @brief WDI_dhcpStopInd
28786 Host will send an event to the FW when DHCP is completed
28787
28788 @param
28789 WDI_DHCPInd: DHCP Indication
28790 @see
28791 @return Result of the function call
28792*/
28793WDI_Status
28794WDI_dhcpStopInd
28795(
28796 WDI_DHCPInd *wdiDHCPInd
28797)
28798{
28799 WDI_EventInfoType wdiEventData;
28800
28801 /*------------------------------------------------------------------------
28802 Sanity Check
28803 ------------------------------------------------------------------------*/
28804 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28805 {
28806 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28807 "WDI API call before module is initialized - Fail request");
28808
28809 return WDI_STATUS_E_NOT_ALLOWED;
28810 }
28811
28812 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
28813 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053028814 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028815 wdiEventData.pCBfnc = NULL;
28816 wdiEventData.pUserData = NULL;
28817
28818 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28819}
28820
28821
28822/**
28823 @brief Process DHCP Start Indication message and post it to HAL
28824
28825 @param pWDICtx: pointer to the WLAN DAL context
28826 pEventData: pointer to the event information structure
28827
28828 @see
28829 @return Result of the function call
28830*/
28831WDI_Status
28832WDI_ProcessDHCPStartInd
28833(
28834 WDI_ControlBlockType* pWDICtx,
28835 WDI_EventInfoType* pEventData
28836)
28837{
28838 wpt_uint8* pSendBuffer = NULL;
28839 wpt_uint16 usDataOffset = 0;
28840 wpt_uint16 usSendSize = 0;
28841 wpt_uint16 usLen = 0;
28842 WDI_DHCPInd* pwdiDHCPInd = NULL;
28843 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028844 WDI_Status wdiStatus;
28845
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028846
28847 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28848
28849 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28850 "%s", __func__);
28851
28852 /*-------------------------------------------------------------------------
28853 Sanity check
28854 -------------------------------------------------------------------------*/
28855 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28856 {
28857 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28858 "%s: Invalid parameters", __func__);
28859 WDI_ASSERT(0);
28860 return WDI_STATUS_E_FAILURE;
28861 }
28862 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28863 /*-----------------------------------------------------------------------
28864 Get message buffer
28865 -----------------------------------------------------------------------*/
28866
28867 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28868 WDI_DHCP_START_IND,
28869 sizeof(tDHCPInfo),
28870 &pSendBuffer, &usDataOffset, &usSendSize))||
28871 ( usSendSize < (usDataOffset + usLen )))
28872 {
28873 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28874 "Unable to get send buffer in DHCP Start req %p ",
28875 pEventData);
28876 WDI_ASSERT(0);
28877 return WDI_STATUS_E_FAILURE;
28878 }
28879
Sandeep Puligillaee789512014-02-13 19:14:52 +053028880 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028881 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28882 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28883 WDI_MAC_ADDR_LEN);
28884
28885 pWDICtx->pReqStatusUserData = NULL;
28886 pWDICtx->pfncRspCB = NULL;
28887
28888 /*-------------------------------------------------------------------------
28889 Send DHCP Start Indication to HAL
28890 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028891 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28892 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028893}/*WDI_ProcessDHCPStartInd*/
28894
28895/**
28896 @brief Process DHCP Stop indication message and post it to HAL
28897
28898 @param pWDICtx: pointer to the WLAN DAL context
28899 pEventData: pointer to the event information structure
28900
28901 @see
28902 @return Result of the function call
28903*/
28904WDI_Status
28905WDI_ProcessDHCPStopInd
28906(
28907 WDI_ControlBlockType* pWDICtx,
28908 WDI_EventInfoType* pEventData
28909)
28910{
28911 wpt_uint8* pSendBuffer = NULL;
28912 wpt_uint16 usDataOffset = 0;
28913 wpt_uint16 usSendSize = 0;
28914 wpt_uint16 usLen = 0;
28915 WDI_DHCPInd* pwdiDHCPInd = NULL;
28916 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053028917 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028918
28919 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28920
28921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
28922 "%s", __func__);
28923
28924 /*-------------------------------------------------------------------------
28925 Sanity check
28926 -------------------------------------------------------------------------*/
28927
28928 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
28929 {
28930 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28931 "%s: Invalid parameters", __func__);
28932 WDI_ASSERT(0);
28933 return WDI_STATUS_E_FAILURE;
28934 }
28935 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
28936 /*-----------------------------------------------------------------------
28937 Get message buffer
28938 -----------------------------------------------------------------------*/
28939
28940 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28941 WDI_DHCP_STOP_IND,
28942 sizeof(tDHCPInfo),
28943 &pSendBuffer, &usDataOffset, &usSendSize))||
28944 ( usSendSize < (usDataOffset + usLen )))
28945 {
28946 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
28947 "Unable to get send buffer in DHCP Start req %p ",
28948 pEventData);
28949 WDI_ASSERT(0);
28950 return WDI_STATUS_E_FAILURE;
28951 }
28952
Sandeep Puligillaee789512014-02-13 19:14:52 +053028953 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028954 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
28955 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
28956 WDI_MAC_ADDR_LEN);
28957
28958 pWDICtx->pReqStatusUserData = NULL;
28959 pWDICtx->pfncRspCB = NULL;
28960 /*-------------------------------------------------------------------------
28961 Send DHCP Stop indication to HAL
28962 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053028963 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
28964 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053028965
28966}/*WDI_ProcessDHCPStopInd*/
28967
28968
Jeff Johnson295189b2012-06-20 16:38:30 -070028969#ifdef WLAN_FEATURE_GTK_OFFLOAD
28970/**
28971 @brief WDI_GTKOffloadReq will be called when the upper MAC
28972 wants to set GTK Rekey Counter while in power save. Upon
28973 the call of this API the WLAN DAL will pack and send a
28974 HAL GTK offload request message to the lower RIVA
28975 sub-system if DAL is in state STARTED.
28976
28977 In state BUSY this request will be queued. Request won't
28978 be allowed in any other state.
28979
28980 WDI_PostAssocReq must have been called.
28981
28982 @param pwdiGtkOffloadParams: the GTK offload as specified
28983 by the Device Interface
28984
28985 wdiGtkOffloadCb: callback for passing back the response
28986 of the GTK offload operation received from the device
28987
28988 pUserData: user data will be passed back with the
28989 callback
28990
28991 @see WDI_PostAssocReq
28992 @return Result of the function call
28993*/
28994WDI_Status
28995WDI_GTKOffloadReq
28996(
28997 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
28998 WDI_GtkOffloadCb wdiGtkOffloadCb,
28999 void* pUserData
29000)
29001{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029002 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29004
29005 /*------------------------------------------------------------------------
29006 Sanity Check
29007 ------------------------------------------------------------------------*/
29008 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29009 {
29010 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29011 "WDI API call before module is initialized - Fail request");
29012
29013 return WDI_STATUS_E_NOT_ALLOWED;
29014 }
29015
29016 /*------------------------------------------------------------------------
29017 Fill in Event data and post to the Main FSM
29018 ------------------------------------------------------------------------*/
29019 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
29020 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070029021 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070029022 wdiEventData.pCBfnc = wdiGtkOffloadCb;
29023 wdiEventData.pUserData = pUserData;
29024
29025 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29026}
29027
29028
29029/**
29030 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
29031 MAC wants to get GTK Rekey Counter while in power save.
29032 Upon the call of this API the WLAN DAL will pack and
29033 send a HAL GTK offload request message to the lower RIVA
29034 sub-system if DAL is in state STARTED.
29035
29036 In state BUSY this request will be queued. Request won't
29037 be allowed in any other state.
29038
29039 WDI_PostAssocReq must have been called.
29040
29041 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
29042 Information Message as specified by the
29043 Device Interface
29044
29045 wdiGtkOffloadGetInfoCb: callback for passing back the
29046 response of the GTK offload operation received from the
29047 device
29048
29049 pUserData: user data will be passed back with the
29050 callback
29051
29052 @see WDI_PostAssocReq
29053 @return Result of the function call
29054*/
29055WDI_Status
29056WDI_GTKOffloadGetInfoReq
29057(
29058 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
29059 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
29060 void* pUserData
29061)
29062{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029063 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029064 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29065
29066 /*------------------------------------------------------------------------
29067 Sanity Check
29068 ------------------------------------------------------------------------*/
29069 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29070 {
29071 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29072 "WDI API call before module is initialized - Fail request");
29073
29074 return WDI_STATUS_E_NOT_ALLOWED;
29075 }
29076
29077 /*------------------------------------------------------------------------
29078 Fill in Event data and post to the Main FSM
29079 ------------------------------------------------------------------------*/
29080 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
29081 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29082 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29083 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29084 wdiEventData.pUserData = pUserData;
29085
29086 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29087}
29088
29089
29090/**
29091 @brief Process set GTK Offload Request function
29092
29093 @param pWDICtx: pointer to the WLAN DAL context
29094 pEventData: pointer to the event information structure
29095
29096 @see
29097 @return Result of the function call
29098*/
29099WDI_Status
29100WDI_ProcessGTKOffloadReq
29101(
29102 WDI_ControlBlockType* pWDICtx,
29103 WDI_EventInfoType* pEventData
29104)
29105{
29106 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29107 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29108 wpt_uint8* pSendBuffer = NULL;
29109 wpt_uint16 usDataOffset = 0;
29110 wpt_uint16 usSendSize = 0;
29111 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029112 wpt_uint8 ucCurrentSessionId = 0;
29113 WDI_BSSSessionType* pBSSSes = NULL;
29114
Jeff Johnson295189b2012-06-20 16:38:30 -070029115 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29116
29117 /*-------------------------------------------------------------------------
29118 Sanity check
29119 -------------------------------------------------------------------------*/
29120 if (( NULL == pEventData ) ||
29121 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29122 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29123 {
29124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029125 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029126 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029127 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029128 }
29129
29130 /*-----------------------------------------------------------------------
29131 Get message buffer
29132 -----------------------------------------------------------------------*/
29133 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29134 sizeof(gtkOffloadReqParams),
29135 &pSendBuffer, &usDataOffset, &usSendSize))||
29136 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29137 {
29138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029139 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029140 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29141 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029142 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029143 }
29144
29145 //
29146 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29147 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029148 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29149 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29150 &pBSSSes);
29151 if ( NULL == pBSSSes )
29152 {
29153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029154 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029155 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029156 }
29157
29158 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29159
Jeff Johnson295189b2012-06-20 16:38:30 -070029160 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29161 // Copy KCK
29162 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29163 // Copy KEK
29164 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29165 // Copy KeyReplayCounter
29166 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29167
29168 wpalMemoryCopy( pSendBuffer+usDataOffset,
29169 &gtkOffloadReqParams,
29170 sizeof(gtkOffloadReqParams));
29171
29172 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29173 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29174
29175 /*-------------------------------------------------------------------------
29176 Send Get STA Request to HAL
29177 -------------------------------------------------------------------------*/
29178 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29179 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029180
29181fail:
29182 // Release the message buffer so we don't leak
29183 wpalMemoryFree(pSendBuffer);
29184
29185failRequest:
29186 //WDA should have failure check to avoid the memory leak
29187 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029188}
29189
29190
29191/**
29192 @brief Process GTK Offload Get Information Request function
29193
29194 @param pWDICtx: pointer to the WLAN DAL context
29195 pEventData: pointer to the event information structure
29196
29197 @see
29198 @return Result of the function call
29199*/
29200WDI_Status
29201WDI_ProcessGTKOffloadGetInfoReq
29202(
29203 WDI_ControlBlockType* pWDICtx,
29204 WDI_EventInfoType* pEventData
29205)
29206{
29207 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29208 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29209 wpt_uint8* pSendBuffer = NULL;
29210 wpt_uint16 usDataOffset = 0;
29211 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029212 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29213 wpt_uint8 ucCurrentSessionId = 0;
29214 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029215
29216 /*-------------------------------------------------------------------------
29217 Sanity check
29218 -------------------------------------------------------------------------*/
29219 if (( NULL == pEventData ) ||
29220 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29221 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29222 {
29223 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029224 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029225 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029226 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029227 }
29228
29229 /*-----------------------------------------------------------------------
29230 Get message buffer
29231 -----------------------------------------------------------------------*/
29232 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029233 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029234 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029235 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029236 {
29237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029238 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029239 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29240 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029241 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029242 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029243 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29244 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29245 &pBSSSes);
29246 if ( NULL == pBSSSes )
29247 {
29248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029249 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029250 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029251 }
29252 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029253
29254 //
29255 // Don't need to fill send buffer other than header
29256 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029257 wpalMemoryCopy( pSendBuffer+usDataOffset,
29258 &halGtkOffloadGetInfoReqParams,
29259 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029260
29261 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29262 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29263
29264 /*-------------------------------------------------------------------------
29265 Send Get STA Request to HAL
29266 -------------------------------------------------------------------------*/
29267 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29268 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029269fail:
29270 // Release the message buffer so we don't leak
29271 wpalMemoryFree(pSendBuffer);
29272
29273failRequest:
29274 //WDA should have failure check to avoid the memory leak
29275 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029276}
29277
29278/**
29279 @brief Process host offload Rsp function (called when a
29280 response is being received over the bus from HAL)
29281
29282 @param pWDICtx: pointer to the WLAN DAL context
29283 pEventData: pointer to the event information structure
29284
29285 @see
29286 @return Result of the function call
29287*/
29288WDI_Status
29289WDI_ProcessGtkOffloadRsp
29290(
29291 WDI_ControlBlockType* pWDICtx,
29292 WDI_EventInfoType* pEventData
29293)
29294{
Jeff Johnson295189b2012-06-20 16:38:30 -070029295 eHalStatus halStatus;
29296 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029297 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29298 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029299
29300 /*-------------------------------------------------------------------------
29301 Sanity check
29302 -------------------------------------------------------------------------*/
29303 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29304 ( NULL == pEventData->pEventData))
29305 {
29306 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029307 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029308 WDI_ASSERT(0);
29309 return WDI_STATUS_E_FAILURE;
29310 }
29311
Wilson Yang00256342013-10-10 23:13:38 -070029312 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29313
Jeff Johnson295189b2012-06-20 16:38:30 -070029314 /*-------------------------------------------------------------------------
29315 Extract response and send it to UMAC
29316 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029317 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29318 {
29319 wpalMemoryCopy( &halGtkOffloadRspParams,
29320 pEventData->pEventData,
29321 sizeof(halGtkOffloadRspParams));
29322
29323 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029324 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029325 wdiGtkOffloadRsparams.bssIdx =
29326 halGtkOffloadRspParams.bssIdx;
29327 }
29328 else
29329 {
29330 halStatus = *((eHalStatus*)pEventData->pEventData);
29331 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29332 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029333
29334 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029335 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029336
29337 return WDI_STATUS_SUCCESS;
29338}
29339
29340/**
29341 @brief Process GTK Offload Get Information Response function
29342
29343 @param pWDICtx: pointer to the WLAN DAL context
29344 pEventData: pointer to the event information structure
29345
29346 @see
29347 @return Result of the function call
29348*/
29349WDI_Status
29350WDI_ProcessGTKOffloadGetInfoRsp
29351(
29352 WDI_ControlBlockType* pWDICtx,
29353 WDI_EventInfoType* pEventData
29354)
29355{
Jeff Johnson295189b2012-06-20 16:38:30 -070029356 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029357 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029358 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29359 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029360 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029361
Jeff Johnson295189b2012-06-20 16:38:30 -070029362
29363 /*-------------------------------------------------------------------------
29364 Sanity check
29365 -------------------------------------------------------------------------*/
29366 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29367 ( NULL == pEventData->pEventData ))
29368 {
29369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029370 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029371 WDI_ASSERT(0);
29372 return WDI_STATUS_E_FAILURE;
29373 }
29374
Wilson Yang00256342013-10-10 23:13:38 -070029375 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29376
29377 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029378 Extract response and send it to UMAC
29379 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029380 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29381 {
29382 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29383 pEventData->pEventData,
29384 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029385
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029386 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029387 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029388 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29389 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29390 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29391 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29392 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29393 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29394 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29395 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029396
29397 wpalMutexAcquire(&pWDICtx->wptMutex);
29398 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29399 &pBSSSes);
29400
29401 if ( NULL == pBSSSes )
29402 {
29403 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29404 "Association sequence for this BSS does not exist or "
29405 "association no longer in progress - mysterious HAL response");
29406 wpalMutexRelease(&pWDICtx->wptMutex);
29407 return WDI_STATUS_E_NOT_ALLOWED;
29408 }
29409
29410 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29411 sizeof (wpt_macAddr));
29412 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029413 }
29414 else
29415 {
29416 halStatus = *((eHalStatus*)pEventData->pEventData);
29417 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29418 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029419 /*Notify UMAC*/
29420 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29421 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029422 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029423
29424 return WDI_STATUS_SUCCESS;
29425}
29426#endif // WLAN_FEATURE_GTK_OFFLOAD
29427
29428#ifdef WLAN_WAKEUP_EVENTS
29429WDI_Status
29430WDI_ProcessWakeReasonInd
29431(
29432 WDI_ControlBlockType* pWDICtx,
29433 WDI_EventInfoType* pEventData
29434)
29435{
29436 WDI_LowLevelIndType *pWdiInd;
29437 tpWakeReasonParams pWakeReasonParams;
29438 wpt_uint32 allocSize = 0;
29439
29440 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029441 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029442
29443 /*-------------------------------------------------------------------------
29444 Sanity check
29445 -------------------------------------------------------------------------*/
29446 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29447 ( NULL == pEventData->pEventData ))
29448 {
29449 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029450 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029451 WDI_ASSERT( 0 );
29452 return WDI_STATUS_E_FAILURE;
29453 }
29454
29455 /*-------------------------------------------------------------------------
29456 Extract indication and send it to UMAC
29457 -------------------------------------------------------------------------*/
29458 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
29459
29460 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
29461
29462 //Allocate memory for WDI_WakeReasonIndType structure
29463 pWdiInd = wpalMemoryAllocate(allocSize) ;
29464
29465 if(NULL == pWdiInd)
29466 {
29467 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029468 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029469 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029470 WDI_ASSERT(0);
29471 return WDI_STATUS_E_FAILURE;
29472 }
29473
29474 wpalMemoryZero(pWdiInd, allocSize);
29475
29476 /* Fill in the indication parameters*/
29477 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
29478 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
29479 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
29480 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
29481 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
29482 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
29483 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
29484 &(pWakeReasonParams->aDataStart[0]),
29485 pWakeReasonParams->ulStoredDataLen);
29486
ltimariub77f24b2013-01-24 18:54:33 -080029487
29488 if ( pWDICtx->wdiLowLevelIndCB )
29489 {
29490 /*Notify UMAC*/
29491 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
29492 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029493
29494 //Free memory allocated for WDI_WakeReasonIndType structure
29495 wpalMemoryFree(pWdiInd);
29496
29497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029498 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029499
29500 return WDI_STATUS_SUCCESS;
29501}
29502#endif // WLAN_WAKEUP_EVENTS
29503
29504void WDI_GetWcnssCompiledApiVersion
29505(
29506 WDI_WlanVersionType *pWcnssApiVersion
29507)
29508{
29509 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
29510 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
29511 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
29512 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
29513}
29514
29515/**
29516 @brief Process Set TM Level Rsp function (called when a
29517 response is being received over the bus from HAL)
29518
29519 @param pWDICtx: pointer to the WLAN DAL context
29520 pEventData: pointer to the event information structure
29521
29522 @see
29523 @return Result of the function call
29524*/
29525WDI_Status
29526WDI_ProcessSetTmLevelRsp
29527(
29528 WDI_ControlBlockType* pWDICtx,
29529 WDI_EventInfoType* pEventData
29530)
29531{
29532 WDI_Status wdiStatus;
29533 eHalStatus halStatus;
29534 WDI_SetTmLevelCb wdiSetTmLevelCb;
29535 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29536
29537 /*-------------------------------------------------------------------------
29538 Sanity check
29539 -------------------------------------------------------------------------*/
29540 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29541 ( NULL == pEventData->pEventData ))
29542 {
29543 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029544 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029545 WDI_ASSERT(0);
29546 return WDI_STATUS_E_FAILURE;
29547 }
29548
29549 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
29550
29551 /*-------------------------------------------------------------------------
29552 Extract response and send it to UMAC
29553 -------------------------------------------------------------------------*/
29554 halStatus = *((eHalStatus*)pEventData->pEventData);
29555 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29556
29557 /*Notify UMAC*/
29558 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
29559
29560 return WDI_STATUS_SUCCESS;
29561}/*WDI_ProcessSetTmLevelRsp*/
29562
29563/**
29564 @brief Process Set Thermal Mitigation level Changed request
29565
29566 @param pWDICtx: pointer to the WLAN DAL context
29567 pEventData: pointer to the event information structure
29568
29569 @see
29570 @return Result of the function call
29571*/
29572WDI_Status
29573WDI_ProcessSetTmLevelReq
29574(
29575 WDI_ControlBlockType* pWDICtx,
29576 WDI_EventInfoType* pEventData
29577)
29578{
29579 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
29580 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
29581 wpt_uint8* pSendBuffer = NULL;
29582 wpt_uint16 usDataOffset = 0;
29583 wpt_uint16 usSendSize = 0;
29584 tSetThermalMitgationType halTmMsg;
29585
29586 /*-------------------------------------------------------------------------
29587 Sanity check
29588 -------------------------------------------------------------------------*/
29589 if (( NULL == pEventData ) ||
29590 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
29591 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
29592 {
29593 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029594 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029595 WDI_ASSERT(0);
29596 return WDI_STATUS_E_FAILURE;
29597 }
29598
29599 /*-----------------------------------------------------------------------
29600 Get message buffer
29601 -----------------------------------------------------------------------*/
29602 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
29603 sizeof(halTmMsg),
29604 &pSendBuffer, &usDataOffset, &usSendSize))||
29605 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
29606 {
29607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029608 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029609 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
29610 WDI_ASSERT(0);
29611 return WDI_STATUS_E_FAILURE;
29612 }
29613
29614 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
29615 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
29616
29617 wpalMemoryCopy( pSendBuffer+usDataOffset,
29618 &halTmMsg,
29619 sizeof(halTmMsg));
29620
29621 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
29622 pWDICtx->pfncRspCB = NULL;
29623 /*-------------------------------------------------------------------------
29624 Send Get STA Request to HAL
29625 -------------------------------------------------------------------------*/
29626 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29627 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
29628}
29629
29630/* Fill the value from the global features enabled array to the global capabilities
29631 * bitmap struct
29632 */
29633static void
29634FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
29635{
29636 wpt_int8 i;
29637 for (i=0; i<len; i++)
29638 {
29639 setFeatCaps(fCaps, enabledFeat[i]);
29640 }
29641}
29642
29643/**
29644 @brief WDI_featureCapsExchangeReq
29645 Post feature capability bitmap exchange event.
29646 Host will send its own capability to FW in this req and
29647 expect FW to send its capability back as a bitmap in Response
29648
29649 @param
29650
29651 wdiFeatureCapsExchangeCb: callback called on getting the response.
29652 It is kept to mantain similarity between WDI reqs and if needed, can
29653 be used in future. Currently, It is set to NULL
29654
29655 pUserData: user data will be passed back with the
29656 callback
29657
29658 @see
29659 @return Result of the function call
29660*/
29661WDI_Status
29662WDI_featureCapsExchangeReq
29663(
29664 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
29665 void* pUserData
29666)
29667{
29668 WDI_EventInfoType wdiEventData;
29669 wpt_int32 fCapsStructSize;
29670
29671 /*------------------------------------------------------------------------
29672 Sanity Check
29673 ------------------------------------------------------------------------*/
29674 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29675 {
29676 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29677 "WDI API call before module is initialized - Fail request");
29678
29679 return WDI_STATUS_E_NOT_ALLOWED;
29680 }
29681
29682 /* Allocate memory separately for global variable carrying FW caps */
29683 fCapsStructSize = sizeof(tWlanFeatCaps);
29684 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29685 if ( NULL == gpHostWlanFeatCaps )
29686 {
29687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029688 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029689 WDI_ASSERT(0);
29690 return WDI_STATUS_MEM_FAILURE;
29691 }
29692
29693 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
29694
29695 /*------------------------------------------------------------------------
29696 Fill in Event data and post to the Main FSM
29697 ------------------------------------------------------------------------*/
29698 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
29699 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053029700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029701 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029702 gpHostWlanFeatCaps->featCaps[0],
29703 gpHostWlanFeatCaps->featCaps[1],
29704 gpHostWlanFeatCaps->featCaps[2],
29705 gpHostWlanFeatCaps->featCaps[3]
29706 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053029707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029708 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029709 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
29710 wdiEventData.pEventData = gpHostWlanFeatCaps;
29711 wdiEventData.uEventDataSize = fCapsStructSize;
29712 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
29713 wdiEventData.pUserData = pUserData;
29714
29715 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29716}
29717
29718/**
Yathish9f22e662012-12-10 14:21:35 -080029719 @brief Disable Active mode offload in Host
29720
29721 @param void
29722 @see
29723 @return void
29724*/
29725void
29726WDI_disableCapablityFeature(wpt_uint8 feature_index)
29727{
29728 supportEnabledFeatures[feature_index] = 0;
29729 return;
29730}
29731
29732/**
Jeff Johnson295189b2012-06-20 16:38:30 -070029733 @brief Process Host-FW Capability Exchange Request function
29734
29735 @param pWDICtx: pointer to the WLAN DAL context
29736 pEventData: pointer to the event information structure
29737
29738 @see
29739 @return Result of the function call
29740*/
29741WDI_Status
29742WDI_ProcessFeatureCapsExchangeReq
29743(
29744 WDI_ControlBlockType* pWDICtx,
29745 WDI_EventInfoType* pEventData
29746)
29747{
29748 wpt_uint8* pSendBuffer = NULL;
29749 wpt_uint16 usDataOffset = 0;
29750 wpt_uint16 usSendSize = 0;
29751 wpt_uint16 usLen = 0;
29752
29753 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29754
29755 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029756 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029757
29758 /*-------------------------------------------------------------------------
29759 Sanity check
29760 -------------------------------------------------------------------------*/
29761 /* Call back function is NULL since not required for cap exchange req */
29762 if (( NULL == pEventData ) ||
29763 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
29764 {
29765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029766 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029767 WDI_ASSERT(0);
29768 return WDI_STATUS_E_FAILURE;
29769 }
29770
29771 /*-----------------------------------------------------------------------
29772 Get message buffer
29773 -----------------------------------------------------------------------*/
29774 usLen = sizeof(tWlanFeatCaps);
29775
29776 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29777 WDI_FEATURE_CAPS_EXCHANGE_REQ,
29778 usLen,
29779 &pSendBuffer, &usDataOffset, &usSendSize))||
29780 ( usSendSize < (usDataOffset + usLen )))
29781 {
29782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029783 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029784 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
29785 WDI_ASSERT(0);
29786 return WDI_STATUS_E_FAILURE;
29787 }
29788
29789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029790 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029791 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
29792 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
29793 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
29794 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
29795 );
29796
29797 /* Copy host caps after the offset in the send buffer */
29798 wpalMemoryCopy( pSendBuffer+usDataOffset,
29799 (tWlanFeatCaps *)pEventData->pEventData,
29800 usLen);
29801
29802 /*-------------------------------------------------------------------------
29803 Send Start Request to HAL
29804 -------------------------------------------------------------------------*/
29805 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29806 (WDI_StartRspCb)pEventData->pCBfnc,
29807 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
29808
29809}/*WDI_ProcessFeatureCapsExchangeReq*/
29810
29811/**
29812 @brief Process Host-FW Capability Exchange Response function
29813
29814 @param pWDICtx: pointer to the WLAN DAL context
29815 pEventData: pointer to the event information structure
29816
29817 @see
29818 @return Result of the function call
29819*/
29820WDI_Status
29821WDI_ProcessFeatureCapsExchangeRsp
29822(
29823 WDI_ControlBlockType* pWDICtx,
29824 WDI_EventInfoType* pEventData
29825)
29826{
29827 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
29828 wpt_int32 fCapsStructSize;
29829 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29830
29831 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029832 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029833
29834 /*-------------------------------------------------------------------------
29835 Sanity check
29836 -------------------------------------------------------------------------*/
29837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29838 ( NULL == pEventData->pEventData ))
29839 {
29840 /* It will go here when riva is old (doesn't understand this msg) and host is new */
29841 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029842 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029843 WDI_ASSERT(0);
29844 return WDI_STATUS_E_FAILURE;
29845 }
29846
29847 /* Allocate memory separately for global variable carrying FW caps */
29848 fCapsStructSize = sizeof(tWlanFeatCaps);
29849 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
29850 if ( NULL == gpFwWlanFeatCaps )
29851 {
29852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029853 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070029854 WDI_ASSERT(0);
29855 return WDI_STATUS_MEM_FAILURE;
29856 }
29857
29858 /*-------------------------------------------------------------------------
29859 Unpack HAL Response Message - the header was already extracted by the
29860 main Response Handling procedure
29861 -------------------------------------------------------------------------*/
29862 /*-------------------------------------------------------------------------
29863 Extract response and send it to UMAC
29864 -------------------------------------------------------------------------*/
29865
29866 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
29867 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053029868 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080029869 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070029870 gpFwWlanFeatCaps->featCaps[0],
29871 gpFwWlanFeatCaps->featCaps[1],
29872 gpFwWlanFeatCaps->featCaps[2],
29873 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029874 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053029875
Ratheesh S P36dbc932015-08-07 14:28:57 +053029876 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053029877 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070029878 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
29879
29880 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
29881 if (wdiFeatureCapsExchangeCb != NULL)
29882 wdiFeatureCapsExchangeCb(NULL, NULL);
29883
29884 return WDI_STATUS_SUCCESS;
29885}
29886
Mohit Khanna4a70d262012-09-11 16:30:12 -070029887#ifdef WLAN_FEATURE_11AC
29888WDI_Status
29889WDI_ProcessUpdateVHTOpModeRsp
29890(
29891 WDI_ControlBlockType* pWDICtx,
29892 WDI_EventInfoType* pEventData
29893)
29894{
29895 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
29896 WDI_Status wdiStatus;
29897 eHalStatus halStatus;
29898
29899 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29900
29901 /*-------------------------------------------------------------------------
29902 Sanity check
29903 -------------------------------------------------------------------------*/
29904 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29905 ( NULL == pEventData->pEventData))
29906 {
29907 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029908 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070029909 WDI_ASSERT(0);
29910 return WDI_STATUS_E_FAILURE;
29911 }
29912 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
29913
29914 /*-------------------------------------------------------------------------
29915 Extract response and send it to UMAC
29916 -------------------------------------------------------------------------*/
29917 halStatus = *((eHalStatus*)pEventData->pEventData);
29918 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29919
29920 /*Notify UMAC*/
29921 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
29922
29923 return WDI_STATUS_SUCCESS;
29924}
29925#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070029926/**
29927 @brief WDI_getHostWlanFeatCaps
29928 WDI API that returns whether the feature passed to it as enum value in
29929 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
29930 variable storing host capability bitmap to find this. This can be used by
29931 other moduels to decide certain things like call different APIs based on
29932 whether a particular feature is supported.
29933
29934 @param
29935
29936 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
29937
29938 @see
29939 @return
29940 0 - if the feature is NOT supported in host
29941 any non-zero value - if the feature is SUPPORTED in host.
29942*/
29943wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
29944{
29945 wpt_uint8 featSupported = 0;
29946 if (gpHostWlanFeatCaps != NULL)
29947 {
29948 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
29949 }
29950 else
29951 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029952 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029953 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029954 }
29955 return featSupported;
29956}
29957
29958/**
29959 @brief WDI_getFwWlanFeatCaps
29960 WDI API that returns whether the feature passed to it as enum value in
29961 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
29962 variable storing host capability bitmap to find this. This can be used by
29963 other moduels to decide certain things like call different APIs based on
29964 whether a particular feature is supported.
29965
29966 @param
29967
29968 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
29969 in wlan_hal_msg.h.
29970
29971 @see
29972 @return
29973 0 - if the feature is NOT supported in FW
29974 any non-zero value - if the feature is SUPPORTED in FW.
29975*/
29976wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
29977{
29978 wpt_uint8 featSupported = 0;
29979 if (gpFwWlanFeatCaps != NULL)
29980 {
29981 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
29982 }
29983 else
29984 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070029985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070029986 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070029987 }
29988 return featSupported;
29989}
Mohit Khanna4a70d262012-09-11 16:30:12 -070029990
Katya Nigamf0511f62015-05-05 16:40:57 +053029991wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
29992{
29993 /* 5gHz Channel */
29994 if( channel >= 34 && channel <= 165 )
29995 {
29996 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
29997 {
29998 if ( channel== 36 || channel == 52 || channel == 100 ||
29999 channel == 116 || channel == 149 )
30000 {
30001 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
30002 }
30003 else if ( channel == 40 || channel == 56 || channel == 104 ||
30004 channel == 120 || channel == 153 )
30005 {
30006 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
30007 }
30008 else if ( channel == 44 || channel == 60 || channel == 108 ||
30009 channel == 124 || channel == 157 )
30010 {
30011 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
30012 }
30013 else if ( channel == 48 || channel == 64 || channel == 112 ||
30014 channel == 128 || channel == 144 || channel == 161 )
30015 {
30016 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
30017 }
30018 else if ( channel == 165 )
30019 {
30020 return PHY_SINGLE_CHANNEL_CENTERED;
30021 }
30022 }
30023
30024 else
30025 {
30026 if ( channel== 40 || channel == 48 || channel == 56 ||
30027 channel == 64 || channel == 104 || channel == 112 ||
30028 channel == 120 || channel == 128 || channel == 136 ||
30029 channel == 144 || channel == 153 || channel == 161 )
30030 {
30031 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30032 }
30033 else if ( channel== 36 || channel == 44 || channel == 52 ||
30034 channel == 60 || channel == 100 || channel == 108 ||
30035 channel == 116 || channel == 124 || channel == 132 ||
30036 channel == 140 || channel == 149 || channel == 157 )
30037 {
30038 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30039 }
30040 else if ( channel == 165 )
30041 {
30042 return PHY_SINGLE_CHANNEL_CENTERED;
30043 }
30044 }
30045 }
30046
30047 /* 2.4Ghz Channel */
30048 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
30049 {
30050 if (channel >= 1 && channel <= 7)
30051 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30052 else if (channel >= 8 && channel <= 13)
30053 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30054 else if (channel ==14)
30055 return PHY_SINGLE_CHANNEL_CENTERED;
30056 }
30057 return PHY_SINGLE_CHANNEL_CENTERED;
30058}
30059
Mohit Khanna4a70d262012-09-11 16:30:12 -070030060#ifdef WLAN_FEATURE_11AC
30061WDI_Status
30062WDI_ProcessUpdateVHTOpModeReq
30063(
30064 WDI_ControlBlockType* pWDICtx,
30065 WDI_EventInfoType* pEventData
30066)
30067{
30068 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
30069 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30070 wpt_uint8* pSendBuffer = NULL;
30071 wpt_uint16 usDataOffset = 0;
30072 wpt_uint16 usSendSize = 0;
30073
30074 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30075
30076 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030077 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030078
30079 /*-------------------------------------------------------------------------
30080 Sanity check
30081 -------------------------------------------------------------------------*/
30082 if (( NULL == pEventData ) ||
30083 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30084 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30085 {
30086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030087 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030088 WDI_ASSERT(0);
30089 return WDI_STATUS_E_FAILURE;
30090 }
30091
30092 /*-----------------------------------------------------------------------
30093 Get message buffer
30094 -----------------------------------------------------------------------*/
30095 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30096 sizeof(WDI_UpdateVHTOpMode),
30097 &pSendBuffer, &usDataOffset, &usSendSize))||
30098 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30099 {
30100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30101 "Unable to get send buffer in update vht opMode req");
30102 WDI_ASSERT(0);
30103 return WDI_STATUS_E_FAILURE;
30104 }
30105
30106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030107 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030108
30109 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30110 sizeof(WDI_UpdateVHTOpMode));
30111
30112 /*-------------------------------------------------------------------------
30113 Send Start Request to HAL
30114 -------------------------------------------------------------------------*/
30115 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30116 wdiVHTOpModeCb,
30117 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30118
30119}
30120
30121WDI_Status
30122WDI_UpdateVHTOpModeReq
30123(
30124 WDI_UpdateVHTOpMode *pData,
30125 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30126 void* pUserData
30127)
30128{
30129 WDI_EventInfoType wdiEventData;
30130
30131 /*------------------------------------------------------------------------
30132 Sanity Check
30133 ------------------------------------------------------------------------*/
30134 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30135 {
30136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30137 "WDI API call before module is initialized - Fail request");
30138
30139 return WDI_STATUS_E_NOT_ALLOWED;
30140 }
30141
30142 /*------------------------------------------------------------------------
30143 Fill in Event data and post to the Main FSM
30144 ------------------------------------------------------------------------*/
30145 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30146 wdiEventData.pEventData = pData;
30147 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30148 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30149 wdiEventData.pUserData = pUserData;
30150
30151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030152 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030153
30154 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30155
30156}
30157#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030158
30159/**
30160 @brief WDI_TransportChannelDebug -
30161 Display DXE Channel debugging information
30162 User may request to display DXE channel snapshot
30163 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030164
Jeff Johnsonb88db982012-12-10 13:34:59 -080030165 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030166 @param debugFlags : Enable stall detect features
30167 defined by WPAL_DeviceDebugFlags
30168 These features may effect
30169 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030170 @see
30171 @return none
30172*/
30173void WDI_TransportChannelDebug
30174(
30175 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030176 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030177)
30178{
Mihir Shete40a55652014-03-02 14:14:47 +053030179 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030180 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030181}
Sravan Kumar Kairam6eac7522015-11-27 23:37:02 +053030182
30183/**
30184 @brief WDI_TransportKickDxe -
30185 Request Kick DXE when HDD TX time out happen
30186
30187 @param none
30188 @see
30189 @return none
30190*/
30191void WDI_TransportKickDxe()
30192{
30193 WDTS_ChannelKickDxe();
30194 return;
30195}
30196
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030197/**
30198 @brief WDI_SsrTimerCB
30199 Callback function for SSR timer, if this is called then the graceful
30200 shutdown for Riva did not happen.
30201
30202 @param pUserData : user data to timer
30203
30204 @see
30205 @return none
30206*/
30207void
30208WDI_SsrTimerCB
30209(
30210 void *pUserData
30211)
30212{
30213 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30214 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30215
30216 if (NULL == pWDICtx )
30217 {
30218 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030219 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030220 WDI_ASSERT(0);
30221 return;
30222 }
30223 wpalRivaSubystemRestart();
30224
30225 return;
30226
30227}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030228
30229/**
30230 @brief WDI_SetEnableSSR -
30231 This API is called to enable/disable SSR on WDI timeout.
30232
30233 @param enableSSR : enable/disable SSR
30234
30235 @see
30236 @return none
30237*/
30238void WDI_SetEnableSSR(wpt_boolean enableSSR)
30239{
30240 gWDICb.bEnableSSR = enableSSR;
30241}
Leo Chang9056f462013-08-01 19:21:11 -070030242
Agrawal Ashishaf1de652016-03-02 18:03:43 +053030243/**
30244 * WDI_SetMgmtPktViaWQ5() - Set INI params sendMgmtPktViaWQ5 to Control
30245 * Block Type.
30246 * @sendMgmtPktViaWQ5: INI params to enable/disable sending mgmt pkt via WQ5.
30247 *
30248 * Return: void
30249 */
30250void WDI_SetMgmtPktViaWQ5(wpt_boolean sendMgmtPktViaWQ5)
30251{
30252 gWDICb.sendMgmtPktViaWQ5 = sendMgmtPktViaWQ5;
30253}
30254
Leo Chang9056f462013-08-01 19:21:11 -070030255
30256#ifdef FEATURE_WLAN_LPHB
30257/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030258 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030259 This function will be invoked when FW detects low power
30260 heart beat failure
30261
30262 @param pWDICtx : wdi context
30263 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030264 @see
30265 @return Result of the function call
30266*/
30267WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030268WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030269(
30270 WDI_ControlBlockType* pWDICtx,
30271 WDI_EventInfoType* pEventData
30272)
30273{
30274 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030275 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030276 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30277
30278 /*-------------------------------------------------------------------------
30279 Sanity check
30280 -------------------------------------------------------------------------*/
30281 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30282 (NULL == pEventData->pEventData))
30283 {
30284 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30285 "%s: Invalid parameters", __func__);
30286 WDI_ASSERT(0);
30287 return WDI_STATUS_E_FAILURE;
30288 }
30289
30290 /*-------------------------------------------------------------------------
30291 Extract indication and send it to UMAC
30292 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030293 wpalMemoryCopy(&lphbIndicationParam,
30294 pEventData->pEventData,
30295 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030296
Leo Changd9df8aa2013-09-26 13:32:26 -070030297 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030298 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030299 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030300 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030301 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030302 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030303 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030304 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030305 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030306 /*Notify UMAC*/
30307 if (pWDICtx->wdiLowLevelIndCB)
30308 {
30309 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30310 }
30311
30312 return WDI_STATUS_SUCCESS;
30313}
30314
30315/**
30316 @brief WDI_ProcessLphbCfgRsp -
30317 LPHB configuration response from FW
30318
30319 @param pWDICtx : wdi context
30320 pEventData : indication data
30321
30322 @see
30323 @return Result of the function call
30324*/
30325WDI_Status WDI_ProcessLphbCfgRsp
30326(
30327 WDI_ControlBlockType* pWDICtx,
30328 WDI_EventInfoType* pEventData
30329)
30330{
30331 WDI_Status wdiStatus;
30332 eHalStatus halStatus;
30333 WDI_LphbCfgCb wdiLphbCfgCb;
30334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30335
30336 /*-------------------------------------------------------------------------
30337 Sanity check
30338 -------------------------------------------------------------------------*/
30339 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30340 (NULL == pEventData->pEventData))
30341 {
30342 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30343 "%s: Invalid parameters", __func__);
30344 WDI_ASSERT(0);
30345 return WDI_STATUS_E_FAILURE;
30346 }
30347
30348 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30349
30350 /*-------------------------------------------------------------------------
30351 Extract response and send it to UMAC
30352 -------------------------------------------------------------------------*/
30353 halStatus = *((eHalStatus*)pEventData->pEventData);
30354 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30355
30356 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30357 "LPHB Cfg Rsp Return status %d", wdiStatus);
30358 /*Notify UMAC*/
30359 if (NULL != wdiLphbCfgCb)
30360 {
30361 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30362 }
30363
30364 return WDI_STATUS_SUCCESS;
30365}
30366
30367/**
30368 @brief WDI_ProcessLPHBConfReq -
30369 LPHB configuration request to FW
30370
30371 @param pWDICtx : wdi context
30372 pEventData : indication data
30373
30374 @see
30375 @return none
30376*/
30377WDI_Status WDI_ProcessLPHBConfReq
30378(
30379 WDI_ControlBlockType* pWDICtx,
30380 WDI_EventInfoType* pEventData
30381)
30382{
30383 WDI_LPHBReq *pLphbReqParams;
30384 WDI_Status wdiStatus;
30385 wpt_uint8* pSendBuffer = NULL;
30386 wpt_uint16 usDataOffset = 0;
30387 wpt_uint16 usSendSize = 0;
30388 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30389 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30390
30391 /*-------------------------------------------------------------------------
30392 Sanity check
30393 -------------------------------------------------------------------------*/
30394 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30395 {
30396 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30397 "%s: Invalid parameters in Suspend ind",__func__);
30398 WDI_ASSERT(0);
30399 return WDI_STATUS_E_FAILURE;
30400 }
30401
30402 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30403
30404 /*-----------------------------------------------------------------------
30405 Get message buffer
30406 -----------------------------------------------------------------------*/
30407 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30408 WDI_LPHB_CFG_REQ,
30409 sizeof(tHalLowPowerHeartBeatReqMsg),
30410 &pSendBuffer, &usDataOffset, &usSendSize))||
30411 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30412 {
30413 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30414 "Unable to get send buffer in LPHB Ind ");
30415 WDI_ASSERT(0);
30416 return WDI_STATUS_E_FAILURE;
30417 }
30418
30419 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30420 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30421
30422 halLphbReqRarams->lowPowerHeartBeatCmdType =
30423 (tANI_U16)(++pLphbReqParams->cmd);
30424 switch ((tANI_U16)pLphbReqParams->cmd)
30425 {
30426 case WDI_LPHB_SET_EN_PARAMS_INDID:
30427 halLphbReqRarams->sessionIdx =
30428 pLphbReqParams->params.lphbEnableReq.session;
30429 halLphbReqRarams->options.control.heartBeatEnable =
30430 pLphbReqParams->params.lphbEnableReq.enable;
30431 halLphbReqRarams->options.control.heartBeatType =
30432 pLphbReqParams->params.lphbEnableReq.item;
30433 break;
30434
30435 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30436 halLphbReqRarams->sessionIdx =
30437 pLphbReqParams->params.lphbTcpParamReq.session;
30438 halLphbReqRarams->options.tcpParams.timeOutSec =
30439 pLphbReqParams->params.lphbTcpParamReq.timeout;
30440 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30441 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30442 sizeof(v_U32_t));
30443 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30444 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30445 sizeof(v_U32_t));
30446
30447 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30448 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30449 WDI_MAC_ADDR_LEN);
30450
30451 halLphbReqRarams->options.tcpParams.hostPort =
30452 pLphbReqParams->params.lphbTcpParamReq.src_port;
30453 halLphbReqRarams->options.tcpParams.destPort =
30454 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070030455 halLphbReqRarams->options.tcpParams.timePeriodSec =
30456 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
30457 halLphbReqRarams->options.tcpParams.tcpSn =
30458 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070030459 break;
30460
30461 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
30462 halLphbReqRarams->sessionIdx =
30463 pLphbReqParams->params.lphbTcpFilterReq.session;
30464 halLphbReqRarams->options.tcpUdpFilter.offset =
30465 pLphbReqParams->params.lphbTcpFilterReq.offset;
30466 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30467 pLphbReqParams->params.lphbTcpFilterReq.length;
30468 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30469 pLphbReqParams->params.lphbTcpFilterReq.filter,
30470 WDI_LPHB_FILTER_LEN);
30471 break;
30472
30473 case WDI_LPHB_SET_UDP_PARAMS_INDID:
30474 halLphbReqRarams->sessionIdx =
30475 pLphbReqParams->params.lphbUdpParamReq.session;
30476 halLphbReqRarams->options.udpParams.timeOutSec =
30477 pLphbReqParams->params.lphbUdpParamReq.timeout;
30478 halLphbReqRarams->options.udpParams.timePeriodSec =
30479 pLphbReqParams->params.lphbUdpParamReq.interval;
30480 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
30481 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
30482 sizeof(v_U32_t));
30483 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
30484 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
30485 sizeof(v_U32_t));
30486
30487 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
30488 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
30489 WDI_MAC_ADDR_LEN);
30490
30491 halLphbReqRarams->options.udpParams.hostPort =
30492 pLphbReqParams->params.lphbUdpParamReq.src_port;
30493 halLphbReqRarams->options.udpParams.destPort =
30494 pLphbReqParams->params.lphbUdpParamReq.dst_port;
30495 break;
30496
30497 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
30498 halLphbReqRarams->sessionIdx =
30499 pLphbReqParams->params.lphbUdpFilterReq.session;
30500 halLphbReqRarams->options.tcpUdpFilter.offset =
30501 pLphbReqParams->params.lphbUdpFilterReq.offset;
30502 halLphbReqRarams->options.tcpUdpFilter.filterLength =
30503 pLphbReqParams->params.lphbUdpFilterReq.length;
30504 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
30505 pLphbReqParams->params.lphbUdpFilterReq.filter,
30506 WDI_LPHB_FILTER_LEN);
30507 break;
30508
30509 case WDI_LPHB_SET_NETWORK_INFO_INDID:
30510 /* NA */
30511 break;
30512
30513 default:
30514 break;
30515 }
30516
30517 /*-------------------------------------------------------------------------
30518 Send Suspend Request to HAL
30519 -------------------------------------------------------------------------*/
30520 pWDICtx->pfncRspCB = pEventData->pCBfnc;
30521 pWDICtx->pReqStatusUserData = pEventData->pUserData;
30522
30523 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
30524 usSendSize, pWDICtx->pfncRspCB,
30525 pWDICtx->pReqStatusUserData,
30526 WDI_LPHB_CFG_RESP);
30527
30528 return wdiStatus;
30529}
30530
30531/**
30532 @brief WDI_LPHBConfReq -
30533 LPHB configuration request API
30534
30535 @param lphbconfParam : configuration parameter
30536 usrData : client context
30537 lphbCfgCb : callback function pointer
30538
30539 @see
30540 @return Success or fail status code
30541*/
30542WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
30543 void *usrData, WDI_LphbCfgCb lphbCfgCb)
30544{
30545 WDI_EventInfoType wdiEventData;
30546
30547 /*------------------------------------------------------------------------
30548 Sanity Check
30549 ------------------------------------------------------------------------*/
30550 if (eWLAN_PAL_FALSE == gWDIInitialized)
30551 {
30552 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30553 "WDI API call before module is initialized - Fail request");
30554
30555 return WDI_STATUS_E_NOT_ALLOWED;
30556 }
30557
30558 /*------------------------------------------------------------------------
30559 Fill in Event data and post to the Main FSM
30560 ------------------------------------------------------------------------*/
30561 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
30562 wdiEventData.pEventData = lphbconfParam;
30563 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
30564 wdiEventData.pCBfnc = lphbCfgCb;
30565 wdiEventData.pUserData = usrData;
30566
30567 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30568}
30569#endif /* FEATURE_WLAN_LPHB */
30570
Ravi Joshid2ca7c42013-07-23 08:37:49 -070030571/**
30572 @brief WDI_ProcessIbssPeerInactivityInd
30573 Process peer inactivity indication coming from HAL
30574
30575 @param pWDICtx: pointer to the WLAN DAL context
30576 pEventData: pointer to the event information structure
30577 @see
30578 @return Result of the function call
30579*/
30580WDI_Status
30581WDI_ProcessIbssPeerInactivityInd
30582(
30583 WDI_ControlBlockType* pWDICtx,
30584 WDI_EventInfoType* pEventData
30585)
30586{
30587 WDI_LowLevelIndType wdiInd;
30588 tIbssPeerInactivityIndMsg halIbssIndMsg;
30589
30590 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30591
30592 /*-------------------------------------------------------------------------
30593 Sanity check
30594 -------------------------------------------------------------------------*/
30595 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30596 ( NULL == pEventData->pEventData ))
30597 {
30598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30599 "%s: Invalid parameters", __func__);
30600 WDI_ASSERT( 0 );
30601 return WDI_STATUS_E_FAILURE;
30602 }
30603
30604 /*-------------------------------------------------------------------------
30605 Extract indication and send it to UMAC
30606 -------------------------------------------------------------------------*/
30607 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
30608 pEventData->pEventData,
30609 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
30610
30611 /*Fill in the indication parameters*/
30612 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
30613
30614 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
30615 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
30616
30617 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
30618 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
30619
30620 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
30621 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
30622 sizeof(tSirMacAddr));
30623
30624 /*Notify UMAC*/
30625 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
30626
30627 return WDI_STATUS_SUCCESS;
30628
30629} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053030630
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030631/**
30632*@brief WDI_RateUpdateInd will be called when the upper MAC
30633 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053030634
Chittajit Mitraf5413a42013-10-18 14:20:08 -070030635
30636 @param wdiRateUpdateIndParams:
30637
30638
30639 @see
30640 @return Result of the function call
30641*/
30642WDI_Status
30643WDI_RateUpdateInd
30644(
30645 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
30646)
30647{
30648 WDI_EventInfoType wdiEventData;
30649 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30650
30651 /*------------------------------------------------------------------------
30652 Sanity Check
30653 ------------------------------------------------------------------------*/
30654 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30655 {
30656 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30657 "WDI API call before module is initialized - Fail request");
30658
30659 return WDI_STATUS_E_NOT_ALLOWED;
30660 }
30661
30662 /*------------------------------------------------------------------------
30663 Fill in Event data and post to the Main FSM
30664 ------------------------------------------------------------------------*/
30665 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
30666 wdiEventData.pEventData = wdiRateUpdateIndParams;
30667 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
30668 wdiEventData.pCBfnc = NULL;
30669 wdiEventData.pUserData = NULL;
30670
30671 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30672
30673}/* WDI_RateUpdateInd */
30674
30675/**
30676 @brief Process Rate Update Indication and post it to HAL
30677
30678 @param pWDICtx: pointer to the WLAN DAL context
30679 pEventData: pointer to the event information structure
30680
30681 @see
30682 @return Result of the function call
30683*/
30684WDI_Status
30685WDI_ProcessRateUpdateInd
30686(
30687 WDI_ControlBlockType* pWDICtx,
30688 WDI_EventInfoType* pEventData
30689)
30690{
30691 wpt_uint8* pSendBuffer = NULL;
30692 wpt_uint16 usDataOffset = 0;
30693 wpt_uint16 usSendSize = 0;
30694 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
30695 tHalRateUpdateInd *pRateUpdateInd;
30696 WDI_Status wdiStatus;
30697
30698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30699
30700 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30701 "%s", __func__);
30702
30703 /*-------------------------------------------------------------------------
30704 Sanity check
30705 -------------------------------------------------------------------------*/
30706 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30707 {
30708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30709 "%s: Invalid parameters", __func__);
30710 WDI_ASSERT(0);
30711 return WDI_STATUS_E_FAILURE;
30712 }
30713 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
30714 /*-----------------------------------------------------------------------
30715 Get message buffer
30716 -----------------------------------------------------------------------*/
30717
30718 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30719 WDI_RATE_UPDATE_IND,
30720 sizeof(tHalRateUpdateParams),
30721 &pSendBuffer, &usDataOffset, &usSendSize))||
30722 ( usSendSize < (usDataOffset +
30723 sizeof(tHalRateUpdateParams) )))
30724 {
30725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30726 "Unable to get send buffer in Rate Update Indication %p ",
30727 pEventData);
30728 WDI_ASSERT(0);
30729 return WDI_STATUS_E_FAILURE;
30730 }
30731
30732 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
30733
30734 /* Copy the bssid */
30735 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
30736 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
30737
30738 /* Copy the tx flags */
30739 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
30740 pwdiRateUpdateInd->ucastDataRateTxFlag;
30741 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRateTxFlag =
30742 pwdiRateUpdateInd->reliableMcastDataRateTxFlag;
30743 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
30744 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
30745 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
30746 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
30747
30748 /* Copy the tx rates */
30749 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
30750 pwdiRateUpdateInd->ucastDataRate;
30751 pRateUpdateInd->halRateUpdateParams.reliableMcastDataRate =
30752 pwdiRateUpdateInd->reliableMcastDataRate;
30753 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
30754 pwdiRateUpdateInd->mcastDataRate24GHz;
30755 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
30756 pwdiRateUpdateInd->mcastDataRate5GHz;
30757
30758 /*-------------------------------------------------------------------------
30759 Send Rate Update Indication to HAL
30760 -------------------------------------------------------------------------*/
30761 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
30762 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
30763
30764 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
30765
30766 return (wdiStatus != WDI_STATUS_SUCCESS) ?
30767 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
30768
30769} /* WDI_ProcessRateUpdateInd */
30770
30771#ifdef FEATURE_WLAN_BATCH_SCAN
Rajeev79dbe4c2013-10-05 11:03:42 +053030772/**
30773 @brief Process stop batch indication from WDA
30774
30775 @param pWDICtx: pointer to the WLAN DAL context
30776 pEventData: pointer to the event information structure
30777
30778 @see
30779 @return Result of the function call
30780*/
30781WDI_Status
30782WDI_ProcessStopBatchScanInd
30783(
30784 WDI_ControlBlockType* pWDICtx,
30785 WDI_EventInfoType* pEventData
30786)
30787{
30788 wpt_uint8* pSendBuffer = NULL;
30789 wpt_uint16 usDataOffset = 0;
30790 wpt_uint16 usSendSize = 0;
30791 WDI_Status wdiStatus;
30792 tHalBatchScanStopIndParam *pHalInd = NULL;
30793 WDI_StopBatchScanIndType *pWdiInd = NULL;
30794
30795
30796 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30797
30798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30799 "%s", __func__);
30800
30801 /*-------------------------------------------------------------------------
30802 Sanity check
30803 -------------------------------------------------------------------------*/
30804
30805 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30806 {
30807 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30808 "%s: Invalid parameters", __func__);
30809 WDI_ASSERT(0);
30810 return WDI_STATUS_E_FAILURE;
30811 }
30812 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
30813 /*-----------------------------------------------------------------------
30814 Get message buffer
30815 -----------------------------------------------------------------------*/
30816
30817 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30818 WDI_STOP_BATCH_SCAN_IND,
30819 sizeof(tHalBatchScanStopIndParam),
30820 &pSendBuffer, &usDataOffset, &usSendSize))||
30821 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
30822 {
30823 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30824 "Unable to get send buffer in stop batch scan ind %p ",
30825 pEventData);
30826 WDI_ASSERT(0);
30827 return WDI_STATUS_E_FAILURE;
30828 }
30829
30830 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
30831 pHalInd->param = pWdiInd->param;
30832
30833 pWDICtx->pReqStatusUserData = NULL;
30834 pWDICtx->pfncRspCB = NULL;
30835 /*-------------------------------------------------------------------------
30836 Send Stop batch scan indication to HAL
30837 -------------------------------------------------------------------------*/
30838 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30839 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30840}
30841
30842/**
30843 @brief This API is called to trigger batch scan results from FW
30844
30845 @param pWDICtx: pointer to the WLAN DAL context
30846 pEventData: pointer to the event information structure
30847
30848 @see
30849 @return Result of the function call
30850*/
30851WDI_Status
30852WDI_ProcessTriggerBatchScanResultInd
30853(
30854 WDI_ControlBlockType* pWDICtx,
30855 WDI_EventInfoType* pEventData
30856)
30857{
30858 WDI_Status wdiStatus;
30859 wpt_uint8* pSendBuffer = NULL;
30860 wpt_uint16 usDataOffset = 0;
30861 wpt_uint16 usSendSize = 0;
30862 tHalBatchScanTriggerResultParam *pHalInd = NULL;
30863 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
30864
30865
30866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30867
30868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
30869 "%s", __func__);
30870
30871 /*-------------------------------------------------------------------------
30872 Sanity check
30873 -------------------------------------------------------------------------*/
30874
30875 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
30876 {
30877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30878 "%s: Invalid parameters", __func__);
30879 WDI_ASSERT(0);
30880 return WDI_STATUS_E_FAILURE;
30881 }
30882 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
30883 /*-----------------------------------------------------------------------
30884 Get message buffer
30885 -----------------------------------------------------------------------*/
30886
30887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30888 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
30889 sizeof(tHalBatchScanTriggerResultParam),
30890 &pSendBuffer, &usDataOffset, &usSendSize))||
30891 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
30892 {
30893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30894 "Unable to get send buffer in stop batch scan ind %p ",
30895 pEventData);
30896 WDI_ASSERT(0);
30897 return WDI_STATUS_E_FAILURE;
30898 }
30899
30900 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
30901 pHalInd->param = pWdiInd->param;
30902
30903 pWDICtx->pReqStatusUserData = NULL;
30904 pWDICtx->pfncRspCB = NULL;
30905 /*-------------------------------------------------------------------------
30906 Send trigger batch scan result indication to HAL
30907 -------------------------------------------------------------------------*/
30908 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
30909 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
30910}
30911
30912
30913/**
30914 @brief Process set batch scan response from FW
30915
30916 @param pWDICtx: pointer to the WLAN DAL context
30917 pEventData: pointer to the event information structure
30918
30919 @see
30920 @return Result of the function call
30921*/
30922WDI_Status
30923WDI_ProcessSetBatchScanRsp
30924(
30925 WDI_ControlBlockType* pWDICtx,
30926 WDI_EventInfoType* pEventData
30927)
30928{
30929 WDI_SetBatchScanCb wdiSetBatchScanCb;
30930 WDI_SetBatchScanRspType *pSetBatchScanRsp;
30931
30932 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
30933 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30934
30935 /*sanity check*/
30936 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30937 ( NULL == pEventData->pEventData))
30938 {
30939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30940 "%s: Invalid parameters", __func__);
30941 WDI_ASSERT(0);
30942 return WDI_STATUS_E_FAILURE;
30943 }
30944
30945 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
30946 if ( NULL == wdiSetBatchScanCb)
30947 {
30948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
30949 "%s: call back function is NULL", __func__);
30950 WDI_ASSERT(0);
30951 return WDI_STATUS_E_FAILURE;
30952 }
30953
30954 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
30955
30956 if (NULL == pSetBatchScanRsp)
30957 {
30958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030959 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053030960 pWDICtx, pEventData, pEventData->pEventData);
30961 WDI_ASSERT(0);
30962 return WDI_STATUS_E_FAILURE;
30963 }
30964
Sunil Duttbd736ed2014-05-26 21:19:41 +053030965 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030966 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
30967
30968 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
30969
Sunil Duttbd736ed2014-05-26 21:19:41 +053030970 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053030971 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
30972
30973 wpalMemoryFree(pSetBatchScanRsp);
30974
30975 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053030976}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053030977
30978/**
30979 @brief Process batch scan result indication from FW
30980
30981 @param pWDICtx: pointer to the WLAN DAL context
30982 pEventData: pointer to the event information structure
30983
30984 @see
30985 @return Result of the function call
30986*/
30987WDI_Status
30988WDI_ProcessBatchScanResultInd
30989(
30990 WDI_ControlBlockType* pWDICtx,
30991 WDI_EventInfoType* pEventData
30992)
30993{
30994 void *pBatchScanResultInd;
30995 WDI_LowLevelIndType wdiInd;
30996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30997
Sunil Duttbd736ed2014-05-26 21:19:41 +053030998 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053030999 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31000 ( NULL == pEventData->pEventData))
31001 {
31002 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31003 "%s: Invalid parameters", __func__);
31004 WDI_ASSERT(0);
31005 return WDI_STATUS_E_FAILURE;
31006 }
31007
Sunil Duttbd736ed2014-05-26 21:19:41 +053031008 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053031009 pBatchScanResultInd = (void *)pEventData->pEventData;
31010
Sunil Duttbd736ed2014-05-26 21:19:41 +053031011 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053031012 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
31013
31014 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
31015
Sunil Duttbd736ed2014-05-26 21:19:41 +053031016 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053031017 if (pWDICtx->wdiLowLevelIndCB)
31018 {
31019 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31020 }
31021 else
31022 {
31023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31024 "%s: WDILowLevelIndCb is null", __func__);
31025 WDI_ASSERT(0);
31026 return WDI_STATUS_E_FAILURE;
31027 }
31028
31029 return WDI_STATUS_SUCCESS;
31030} /*End of WDI_ProcessBatchScanResultInd*/
31031
Sunil Duttbd736ed2014-05-26 21:19:41 +053031032#ifdef WLAN_FEATURE_LINK_LAYER_STATS
31033/**
31034 @brief Process Link Layer Statistics Result indication from FW
31035
31036 @param pWDICtx: pointer to the WLAN DAL context
31037 pEventData: pointer to the event information structure
31038
31039 @see
31040 @return Result of the function call
31041*/
31042WDI_Status
31043WDI_ProcessLinkLayerStatsResultsInd
31044(
31045 WDI_ControlBlockType* pWDICtx,
31046 WDI_EventInfoType* pEventData
31047)
31048{
31049 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053031050 WDI_LLstatsResultsType *halLLStatsResults;
31051 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053031052 WDI_LowLevelIndType wdiInd;
31053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31054
31055 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31056 "%s: Event RESULTS Indication", __func__);
31057
31058 /* sanity check */
31059 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31060 ( NULL == pEventData->pEventData))
31061 {
31062 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31063 "%s: Invalid parameters", __func__);
31064 WDI_ASSERT(0);
31065 return WDI_STATUS_E_FAILURE;
31066 }
31067
31068 /* extract response and send it to UMAC */
31069 pLinkLayerStatsInd = (void *)pEventData->pEventData;
31070
31071 /* Fill in the indication parameters */
31072 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
31073
Dino Mycled3d50022014-07-07 12:58:25 +053031074 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
31075 = pLinkLayerStatsInd;
31076
31077 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
31078
31079
31080 /* Need to fill in the MAC address */
31081 if ( WDI_STATUS_SUCCESS !=
31082 WDI_STATableGetStaMacAddr(pWDICtx,
31083 halLLStatsResults->iface_id,
31084 &macAddr))
31085 {
31086 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
31087 " ifaceId: %u does not exist in the WDI Station Table",
31088 halLLStatsResults->iface_id);
31089
31090 return WDI_STATUS_E_FAILURE;
31091 }
31092 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
31093 macAddr, WDI_MAC_ADDR_LEN);
31094
31095 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31096 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
31097 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053031098
31099 /* Notify UMAC */
31100 if (pWDICtx->wdiLowLevelIndCB)
31101 {
31102 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31103 }
31104 else
31105 {
31106 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
31107 "%s: WDILowLevelIndCb is null", __func__);
31108 WDI_ASSERT(0);
31109 return WDI_STATUS_E_FAILURE;
31110 }
31111
31112 return WDI_STATUS_SUCCESS;
31113} /* End of WDI_ProcessLinkLayerStatsResultsInd */
31114#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
31115
Rajeev79dbe4c2013-10-05 11:03:42 +053031116/**
31117 @brief WDI_ProcessSetBatchScanReq -
31118 Set batch scan request to FW
31119
31120 @param pWDICtx : wdi context
31121 pEventData : indication data
31122
31123 @see
31124 @return none
31125*/
31126WDI_Status WDI_ProcessSetBatchScanReq
31127(
31128 WDI_ControlBlockType* pWDICtx,
31129 WDI_EventInfoType* pEventData
31130)
31131{
31132 WDI_SetBatchScanReqType *pWdiReq;
31133 WDI_Status wdiStatus;
31134 wpt_uint8* pSendBuffer = NULL;
31135 wpt_uint16 usDataOffset = 0;
31136 wpt_uint16 usSendSize = 0;
31137 tHalBatchScanSetParams *pHalReq;
31138 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31139
31140 /*sanity check*/
31141 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
31142 {
31143 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31144 "%s: Invalid parameters in set batch scan request", __func__);
31145 WDI_ASSERT(0);
31146 return WDI_STATUS_E_FAILURE;
31147 }
31148
31149
31150 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
31151
31152
31153 /*get message buffer*/
31154 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
31155 WDI_SET_BATCH_SCAN_REQ,
31156 sizeof(tHalBatchScanSetParams),
31157 &pSendBuffer, &usDataOffset, &usSendSize))||
31158 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
31159 {
31160 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31161 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
31162 WDI_ASSERT(0);
31163 return WDI_STATUS_E_FAILURE;
31164 }
31165
31166 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
31167
31168 pHalReq->rtt = pWdiReq->rtt;
31169 pHalReq->rfBand = pWdiReq->rfBand;
31170 pHalReq->bestNetworks = pWdiReq->bestNetwork;
31171 pHalReq->scanInterval = pWdiReq->scanFrequency;
31172 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
31173
31174 /*send set batch scan request to fw*/
31175 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31176 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31177
31178 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31179 usSendSize, pWDICtx->pfncRspCB,
31180 pWDICtx->pReqStatusUserData,
31181 WDI_SET_BATCH_SCAN_RESP);
31182
31183 return wdiStatus;
31184}
31185
31186/**
31187 @brief WDI_SetBatchScanReq
31188 This API is called to set batch scan request in FW
31189
31190 @param pBatchScanReqParam : pointer to set batch scan re param
31191 usrData : Client context
31192 setBatchScanRspCb : set batch scan resp callback
31193 @see
31194 @return SUCCESS or FAIL
31195*/
31196WDI_Status WDI_SetBatchScanReq
31197(
31198 void *pBatchScanReqParam,
31199 void *usrData,
31200 WDI_SetBatchScanCb setBatchScanRspCb
31201)
31202{
31203 WDI_EventInfoType wdiEventData;
31204
31205 /*sanity check*/
31206 if (eWLAN_PAL_FALSE == gWDIInitialized)
31207 {
31208 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31209 "WDI API call before module is initialized - Fail request");
31210
31211 return WDI_STATUS_E_NOT_ALLOWED;
31212 }
31213
31214 /* fill in event data and post to the main FSM */
31215 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
31216 wdiEventData.pEventData = pBatchScanReqParam;
31217 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
31218 wdiEventData.pCBfnc = setBatchScanRspCb;
31219 wdiEventData.pUserData = usrData;
31220
31221 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31222}
31223
31224/**
31225 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
31226
31227 @param None
31228
31229 @see
31230
31231 @return Status of the request
31232*/
31233WDI_Status
31234WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
31235{
31236 WDI_EventInfoType wdiEventData;
31237
31238 /*-------------------------------------------------------------------------
31239 Sanity Check
31240 ------------------------------------------------------------------------*/
31241 if (eWLAN_PAL_FALSE == gWDIInitialized)
31242 {
31243 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31244 "WDI API call before module is initialized - Fail request!");
31245
31246 return WDI_STATUS_E_NOT_ALLOWED;
31247 }
31248
31249 /*-------------------------------------------------------------------------
31250 Fill in Event data and post to the Main FSM
31251 ------------------------------------------------------------------------*/
31252 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
31253 wdiEventData.pEventData = pWdiReq;
31254 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
31255 wdiEventData.pCBfnc = NULL;
31256 wdiEventData.pUserData = NULL;
31257
31258 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31259}
31260
31261/**
31262 @brief WDI_TriggerBatchScanResultInd
31263 This API is called to pull batch scan result from FW
31264
31265 @param pWdiReq : pointer to get batch scan ind param
31266 @see
31267 @return SUCCESS or FAIL
31268*/
31269WDI_Status WDI_TriggerBatchScanResultInd
31270(
31271 WDI_TriggerBatchScanResultIndType *pWdiReq
31272)
31273{
31274 WDI_EventInfoType wdiEventData;
31275 /*-------------------------------------------------------------------------
31276 Sanity Check
31277 ------------------------------------------------------------------------*/
31278 if (eWLAN_PAL_FALSE == gWDIInitialized)
31279 {
31280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31281 "WDI API call before module is initialized - Fail request!");
31282
31283 return WDI_STATUS_E_NOT_ALLOWED;
31284 }
31285
31286 /*-------------------------------------------------------------------------
31287 Fill in Event data and post to the Main FSM
31288 ------------------------------------------------------------------------*/
31289 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
31290 wdiEventData.pEventData = pWdiReq;
31291 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
31292 wdiEventData.pCBfnc = NULL;
31293 wdiEventData.pUserData = NULL;
31294
31295 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31296}
Rajeev79dbe4c2013-10-05 11:03:42 +053031297#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080031298
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080031299/**
31300 @brief Process Update Channel Rsp function (called when a response is
31301 being received over the bus from HAL)
31302
31303 @param pWDICtx: pointer to the WLAN DAL context
31304 pEventData: pointer to the event information structure
31305
31306 @see
31307 @return Result of the function call
31308*/
31309WDI_Status
31310WDI_ProcessUpdateChanRsp
31311(
31312 WDI_ControlBlockType* pWDICtx,
31313 WDI_EventInfoType* pEventData
31314)
31315{
31316 WDI_Status wdiStatus;
31317 eHalStatus halStatus;
31318 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
31319 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31320
31321 /*-------------------------------------------------------------------------
31322 Sanity check
31323 -------------------------------------------------------------------------*/
31324 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31325 ( NULL == pEventData->pEventData))
31326 {
31327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31328 "%s: Invalid parameters", __func__);
31329 WDI_ASSERT(0);
31330 return WDI_STATUS_E_FAILURE;
31331 }
31332
31333 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
31334
31335 /*-------------------------------------------------------------------------
31336 Extract response and send it to UMAC
31337 -------------------------------------------------------------------------*/
31338 halStatus = *((eHalStatus*)pEventData->pEventData);
31339 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
31340
31341 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
31342
31343 return WDI_STATUS_SUCCESS;
31344}/*WDI_ProcessUpdateChanRsp*/
31345
Leo Chang0b0e45a2013-12-15 15:18:55 -080031346#ifdef FEATURE_WLAN_CH_AVOID
31347/**
31348 @brief v -WDI_ProcessChAvoidInd
31349
31350
31351 @param pWDICtx : wdi context
31352 pEventData : indication data
31353 @see
31354 @return Result of the function call
31355*/
31356WDI_Status
31357WDI_ProcessChAvoidInd
31358(
31359 WDI_ControlBlockType* pWDICtx,
31360 WDI_EventInfoType* pEventData
31361)
31362{
31363 WDI_LowLevelIndType wdiInd;
31364 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
31365 wpt_uint16 rangeLoop;
Abhishek Singhf5590652016-02-09 16:53:03 +053031366 wpt_uint32 dataSize;
Leo Chang0b0e45a2013-12-15 15:18:55 -080031367 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31368
31369 /*-------------------------------------------------------------------------
31370 Sanity check
31371 -------------------------------------------------------------------------*/
31372 if ((NULL == pWDICtx) || (NULL == pEventData) ||
31373 (NULL == pEventData->pEventData))
31374 {
31375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31376 "%s: Invalid parameters", __func__);
31377 WDI_ASSERT(0);
31378 return WDI_STATUS_E_FAILURE;
31379 }
31380
Abhishek Singhf5590652016-02-09 16:53:03 +053031381 dataSize = sizeof(tHalAvoidFreqRangeIndParams);
31382 if (dataSize > pEventData->uEventDataSize)
31383 dataSize = pEventData->uEventDataSize;
31384
Leo Chang0b0e45a2013-12-15 15:18:55 -080031385 /*-------------------------------------------------------------------------
31386 Extract indication and send it to UMAC
31387 -------------------------------------------------------------------------*/
31388 wpalMemoryCopy(&chAvoidIndicationParam,
31389 pEventData->pEventData,
Abhishek Singhf5590652016-02-09 16:53:03 +053031390 dataSize);
Leo Chang0b0e45a2013-12-15 15:18:55 -080031391
Abhishek Singhe34eb552015-06-18 10:12:15 +053031392 /* Avoid Over flow */
31393 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
31394 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
31395
Leo Chang0b0e45a2013-12-15 15:18:55 -080031396 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
31397 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
31398 chAvoidIndicationParam.avoidCnt;
31399 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
31400 (void *)chAvoidIndicationParam.avoidRange,
31401 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
31402 sizeof(WDI_ChAvoidFreqType));
31403 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31404 "%s: band count %d", __func__,
31405 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
31406 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
31407 {
31408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31409 "%s: srart freq %d, end freq %d", __func__,
31410 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
31411 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
31412 }
31413
31414 /*Notify UMAC*/
31415 if (pWDICtx->wdiLowLevelIndCB)
31416 {
31417 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
31418 }
31419
31420 return WDI_STATUS_SUCCESS;
31421}
Atul Mittalc0f739f2014-07-31 13:47:47 +053031422
Leo Chang0b0e45a2013-12-15 15:18:55 -080031423#endif /* FEATURE_WLAN_CH_AVOID */
31424
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031425/**
31426 @brief Process OBSS Start scan result indication
31427
31428 @param pWDICtx: pointer to the WLAN DAL context
31429 pEventData: pointer to the event information structure
31430
31431 @see
31432 @return Result of the function call
31433*/
31434WDI_Status
31435WDI_ProcessHT40OBSSScanInd
31436(
31437 WDI_ControlBlockType* pWDICtx,
31438 WDI_EventInfoType* pEventData
31439)
31440{
31441 wpt_uint8* pSendBuffer = NULL;
31442 wpt_uint16 usDataOffset = 0;
31443 wpt_uint16 usSendSize = 0;
31444 wpt_uint16 usLen = 0;
31445 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
31446 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
31447 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
31448 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31449
31450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31451
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053031452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031453 "%s", __func__);
31454
31455 /*-------------------------------------------------------------------------
31456 Sanity check
31457 -------------------------------------------------------------------------*/
31458 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31459 {
31460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31461 "%s: Invalid parameters", __func__);
31462 WDI_ASSERT(0);
31463 return WDI_STATUS_E_FAILURE;
31464 }
31465 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
31466
31467 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
31468 /*-----------------------------------------------------------------------
31469 Get message buffer
31470 -----------------------------------------------------------------------*/
31471
31472 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31473 WDI_START_HT40_OBSS_SCAN_IND,
31474 sizeof(tHT40ObssScanIndType),
31475 &pSendBuffer, &usDataOffset, &usSendSize))||
31476 ( usSendSize < (usDataOffset + usLen )))
31477 {
31478 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31479 "Unable to get send buffer in HT40 OBSS Start req %p ",
31480 pEventData);
31481 WDI_ASSERT(0);
31482 return WDI_STATUS_E_FAILURE;
31483 }
31484 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
31485 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
31486 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
31487 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
31488 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
31489 pHT40ObssScanInd->OBSSScanActiveDwellTime =
31490 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
31491 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
31492 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
31493 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
31494 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
31495 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
31496 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
31497 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
31498 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
31499 pHT40ObssScanInd->OBSSScanActivityThreshold =
31500 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
31501 pHT40ObssScanInd->selfStaIdx =
31502 pwdiHT40OBSSScanInd->selfStaIdx;
31503 pHT40ObssScanInd->bssIdx =
31504 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053031505 pHT40ObssScanInd->currentOperatingClass =
31506 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053031507 pHT40ObssScanInd->fortyMHZIntolerent =
31508 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
31509 pHT40ObssScanInd->channelCount =
31510 pwdiHT40OBSSScanInd->channelCount;
31511
31512 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
31513 WDI_ROAM_SCAN_MAX_CHANNELS);
31514 pHT40ObssScanInd->ieFieldLen =
31515 pwdiHT40OBSSScanInd->ieFieldLen;
31516
31517 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
31518 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
31519 pWDICtx->pReqStatusUserData = NULL;
31520 pWDICtx->pfncRspCB = NULL;
31521
31522 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
31523 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
31524
31525 /*-------------------------------------------------------------------------
31526 Send OBSS Start Indication to HAL
31527 -------------------------------------------------------------------------*/
31528 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31529 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31530
31531} /*End of WDI_ProcessHT40OBSSStartScanInd*/
31532
31533
31534/**
31535 @brief wdi_HT40OBSSScanInd
31536 This API is called to start OBSS scan
31537
31538 @param pWdiReq : pointer to get ind param
31539 @see
31540 @return SUCCESS or FAIL
31541*/
31542WDI_Status WDI_HT40OBSSScanInd
31543(
31544 WDI_HT40ObssScanParamsType *pWdiReq
31545)
31546{
31547 WDI_EventInfoType wdiEventData;
31548
31549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31550 "%s", __func__);
31551 /*-------------------------------------------------------------------------
31552 Sanity Check
31553 ------------------------------------------------------------------------*/
31554 if (eWLAN_PAL_FALSE == gWDIInitialized)
31555 {
31556 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31557 "WDI API call before module is initialized - Fail request!");
31558
31559 return WDI_STATUS_E_NOT_ALLOWED;
31560 }
31561
31562 /*-------------------------------------------------------------------------
31563 Fill in Event data and post to the Main FSM
31564 ------------------------------------------------------------------------*/
31565 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
31566 wdiEventData.pEventData = pWdiReq;
31567 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
31568 wdiEventData.pCBfnc = NULL;
31569 wdiEventData.pUserData = NULL;
31570
31571
31572 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31573}
31574
31575/**
31576 @brief Process OBSS Stop scan result
31577
31578 @param pWDICtx: pointer to the WLAN DAL context
31579 pEventData: pointer to the event information structure
31580
31581 @see
31582 @return Result of the function call
31583*/
31584WDI_Status
31585WDI_ProcessHT40OBSSStopScanInd
31586(
31587 WDI_ControlBlockType* pWDICtx,
31588 WDI_EventInfoType* pEventData
31589)
31590{
31591 wpt_uint8* pSendBuffer = NULL;
31592 wpt_uint16 usDataOffset = 0;
31593 wpt_uint16 usSendSize = 0;
31594 wpt_uint16 usLen = 0;
31595 wpt_uint8 *wdiBssIdx = 0;
31596 tANI_U8 *bssIdx = 0;
31597 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
31598
31599 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31600
31601 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31602 "%s", __func__);
31603
31604 /*-------------------------------------------------------------------------
31605 Sanity check
31606 -------------------------------------------------------------------------*/
31607 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31608 {
31609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31610 "%s: Invalid parameters", __func__);
31611 WDI_ASSERT(0);
31612 return WDI_STATUS_E_FAILURE;
31613 }
31614 bssIdx = (wpt_uint8*)pEventData->pEventData;
31615 /*-----------------------------------------------------------------------
31616 Get message buffer
31617 -----------------------------------------------------------------------*/
31618
31619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31620 WDI_STOP_HT40_OBSS_SCAN_IND,
31621 sizeof(tANI_U8),
31622 &pSendBuffer, &usDataOffset, &usSendSize))||
31623 ( usSendSize < (usDataOffset + usLen )))
31624 {
31625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31626 "Unable to get send buffer in HT40 OBSS Start req %p ",
31627 pEventData);
31628 WDI_ASSERT(0);
31629 return WDI_STATUS_E_FAILURE;
31630 }
31631
31632 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
31633 bssIdx = wdiBssIdx;
31634
31635 pWDICtx->pReqStatusUserData = NULL;
31636 pWDICtx->pfncRspCB = NULL;
31637
31638 /*-------------------------------------------------------------------------
31639 Send DHCP Start Indication to HAL
31640 -------------------------------------------------------------------------*/
31641 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31642 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31643} /*End of WDI_ProcessHT40OBSSStopScanInd*/
31644
31645/**
31646 @brief WDI_HT40OBSSStopScanInd
31647 This API is called to start OBSS scan
31648 @param pWdiReq : pointer to get ind param
31649 @see
31650 @return SUCCESS or FAIL
31651*/
31652WDI_Status WDI_HT40OBSSStopScanInd
31653(
31654 wpt_uint8 bssIdx
31655)
31656{
31657 WDI_EventInfoType wdiEventData;
31658
31659 /*-------------------------------------------------------------------------
31660 Sanity Check
31661 ------------------------------------------------------------------------*/
31662 if (eWLAN_PAL_FALSE == gWDIInitialized)
31663 {
31664 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31665 "WDI API call before module is initialized - Fail request!");
31666
31667 return WDI_STATUS_E_NOT_ALLOWED;
31668 }
31669
31670 /*-------------------------------------------------------------------------
31671 Fill in Event data and post to the Main FSM
31672 ------------------------------------------------------------------------*/
31673 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
31674 wdiEventData.pEventData = &bssIdx;
31675 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
31676 wdiEventData.pCBfnc = NULL;
31677 wdiEventData.pUserData = NULL;
31678
31679 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31680}
31681
c_hpothu86041002014-04-14 19:06:51 +053031682WDI_Status
31683WDI_printRegInfo
31684(
31685 WDI_ControlBlockType* pWDICtx,
31686 WDI_EventInfoType* pEventData
31687)
31688{
31689 tHalRegDebugInfo *pRegTable;
31690 tHalRegDebugInfoParams *pRegParams;
31691 uint32 cnt=0;
31692
31693 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31694 "%s: ", __func__);
31695 /*-------------------------------------------------------------------------
31696 Sanity check
31697 -------------------------------------------------------------------------*/
31698 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31699 ( NULL == pEventData->pEventData))
31700 {
31701 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31702 "%s: Invalid parameters", __func__);
31703 WDI_ASSERT(0);
31704 return WDI_STATUS_E_FAILURE;
31705 }
31706
31707 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
31708
31709 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31710 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
31711 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
31712
31713 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
31714
31715 if (pRegParams->regCount <= 0)
31716 {
31717 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31718 "%s incorrect parameters passed", __func__);
31719 return WDI_STATUS_E_FAILURE;
31720 }
31721
31722 while(pRegParams->regCount--)
31723 {
31724 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31725 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
31726 cnt++;
31727 }
31728
31729 return WDI_STATUS_SUCCESS;
31730}
c_hpothu92367912014-05-01 15:18:17 +053031731
31732/*
Abhishek Singh66c16762014-08-14 19:13:19 +053031733 * FUNCTION: WDI_delBaInd
31734 * send the delBA to peer.
31735 */
31736
31737WDI_Status
31738WDI_delBaInd
31739(
31740 WDI_ControlBlockType* pWDICtx,
31741 WDI_EventInfoType* pEventData
31742
31743)
31744{
31745 tHalWlanDelBaIndMsg halDelBaInd;
31746 WDI_LowLevelIndType wdiInd;
31747 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31748
31749 /*-------------------------------------------------------------------------
31750 Sanity check
31751 -------------------------------------------------------------------------*/
31752 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31753 ( NULL == pEventData->pEventData))
31754 {
31755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31756 "%s: Invalid parameters", __func__);
31757 WDI_ASSERT(0);
31758 return WDI_STATUS_E_FAILURE;
31759 }
31760
31761 /*-------------------------------------------------------------------------
31762 Extract indication and send it to UMAC
31763 -------------------------------------------------------------------------*/
31764
31765 /* Parameters need to be unpacked according to HAL struct*/
31766 wpalMemoryCopy( &halDelBaInd,
31767 pEventData->pEventData,
31768 sizeof(halDelBaInd));
31769
31770 /*Fill in the indication parameters*/
31771 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
31772
31773 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
31774 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
31775 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
31776
31777 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
31778 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
31779 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
31780
31781 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
31782 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
31783 if ( pWDICtx->wdiLowLevelIndCB )
31784 {
31785 /*Notify UMAC*/
31786 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31787 }
31788
31789 return WDI_STATUS_SUCCESS;
31790
31791
31792}
31793
31794/*
c_hpothu92367912014-05-01 15:18:17 +053031795 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
31796 * send the response to PE with beacon miss count
31797 * received from WDI.
31798 */
31799WDI_Status
31800WDI_ProcessGetBcnMissRateRsp
31801(
31802 WDI_ControlBlockType* pWDICtx,
31803 WDI_EventInfoType* pEventData
31804)
31805{
31806 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
31807 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
31808
31809 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31810 "In %s",__func__);
31811 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31812
31813 /*-------------------------------------------------------------------------
31814 Sanity check
31815 -------------------------------------------------------------------------*/
31816 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31817 ( NULL == pEventData->pEventData))
31818 {
31819 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31820 "%s: Invalid parameters", __func__);
31821 WDI_ASSERT(0);
31822 return WDI_STATUS_E_FAILURE;
31823 }
31824
31825 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
31826 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
31827
31828 /*Notify UMAC*/
31829 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
31830 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
31831 return WDI_STATUS_SUCCESS;
31832}
31833
31834/*
31835 * FUNCTION: WDI_ProcessGetBcnMissRateReq
31836 * Request to WDI to get missed beacon rate.
31837 */
31838WDI_Status
31839WDI_ProcessGetBcnMissRateReq
31840(
31841 WDI_ControlBlockType* pWDICtx,
31842 WDI_EventInfoType* pEventData
31843)
31844{
31845 wpt_uint8* pSendBuffer = NULL;
31846 wpt_uint16 usDataOffset = 0;
31847 wpt_uint16 usSendSize = 0;
31848 wpt_uint8 ucCurrentBSSSesIdx = 0;
31849 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053031850 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
31851 tHalBcnMissRateReqParams halBcnMissRateReq;
31852
31853/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31854
31855 /*-------------------------------------------------------------------------
31856 Sanity check
31857 -------------------------------------------------------------------------*/
31858 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
31859 ( NULL == pEventData->pCBfnc ) )
31860 {
31861 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31862 "%s: Invalid parameters", __func__);
31863 WDI_ASSERT(0);
31864 return WDI_STATUS_E_FAILURE;
31865 }
31866
31867 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
31868
31869 wpalMutexAcquire(&pWDICtx->wptMutex);
31870
31871 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
31872 pEventData->pEventData, &pBSSSes);
31873 if ( NULL == pBSSSes )
31874 {
31875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31876 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053031877 MAC_ADDRESS_STR, __func__,
31878 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053031879 wpalMutexRelease(&pWDICtx->wptMutex);
31880 return WDI_STATUS_E_NOT_ALLOWED;
31881 }
31882 wpalMutexRelease(&pWDICtx->wptMutex);
31883
31884 /*-----------------------------------------------------------------------
31885 Get message buffer
31886 -----------------------------------------------------------------------*/
31887 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
31888 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
31889 sizeof(tHalBcnMissRateReqParams),
31890 &pSendBuffer, &usDataOffset, &usSendSize)) ||
31891 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
31892 {
31893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31894 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
31895 pEventData);
31896 WDI_ASSERT(0);
31897 return WDI_STATUS_E_FAILURE;
31898 }
31899
31900 pWDICtx->wdiReqStatusCB = NULL;
31901 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31902
31903 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
31904
31905 wpalMemoryCopy( pSendBuffer+usDataOffset,
31906 &halBcnMissRateReq,
31907 sizeof(tHalBcnMissRateReqParams));
31908 /*-------------------------------------------------------------------------
31909 Send Get STA Request to HAL
31910 -------------------------------------------------------------------------*/
31911 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
31912 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
31913}
31914
31915/**
31916 @brief WDI_GetBcnMissRate
31917
31918 @param pUserData: user data will be passed back with the
31919 callback
31920 WDI_GetBcnMissRateCb: callback for passing back the response
31921 of the get stats operation received from the device
31922 bssid: bssid, to send bssIdx to FW
31923
31924 @return SUCCESS or FAIL
31925*/
31926WDI_Status WDI_GetBcnMissRate( void *pUserData,
31927 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
31928 tANI_U8 *bssid )
31929{
31930 WDI_EventInfoType wdiEventData;
31931
31932 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31933
31934 /*------------------------------------------------------------------------
31935 Sanity Check
31936 ------------------------------------------------------------------------*/
31937 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31938 {
31939 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31940 "WDI API call before module is initialized - Fail request");
31941
31942 return WDI_STATUS_E_NOT_ALLOWED;
31943 }
31944
31945 /*------------------------------------------------------------------------
31946 Fill in Event data and post to the Main FSM
31947 ------------------------------------------------------------------------*/
31948 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
31949 wdiEventData.pEventData = bssid;
31950 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
31951 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
31952 wdiEventData.pUserData = pUserData;
31953
31954 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31955}
Abhishek Singh85b74712014-10-08 11:38:19 +053031956
31957/*
31958 * FUNCTION: WDI_ProcessGetFwStatsRsp
31959 * send the response with FW stats asked.
31960 */
31961WDI_Status
31962 WDI_ProcessGetFwStatsRsp
31963(
31964 WDI_ControlBlockType* pWDICtx,
31965 WDI_EventInfoType* pEventData
31966)
31967{
31968 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
31969 tpHalfwStatsRspParams pHalFwstatsRsp;
31970 WDI_FWStatsResults fwStats;
31971
31972 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31973
31974 /*-------------------------------------------------------------------------
31975 Sanity check
31976 -------------------------------------------------------------------------*/
31977 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31978 ( NULL == pEventData->pEventData))
31979 {
31980 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31981 "%s: Invalid parameters", __func__);
31982 WDI_ASSERT(0);
31983 return WDI_STATUS_E_FAILURE;
31984 }
31985 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
31986 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
31987
31988 if(pHalFwstatsRsp->length)
31989 {
31990 switch( pHalFwstatsRsp->type )
31991 {
31992 case FW_UBSP_STATS:
31993 {
31994 ubspFwStats *ubspStatsfromFw;
31995
31996 fwStats.type = pHalFwstatsRsp->type;
31997 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
31998 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
31999 ubspStatsfromFw->ubsp_enter_cnt;
32000 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
32001 ubspStatsfromFw->ubsp_jump_ddr_cnt;
32002 }
32003 break;
32004 default:
32005 {
32006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32007 "%s: No handling for stats type %d", __func__,
32008 pHalFwstatsRsp->type);
32009 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
32010 NULL, pWDICtx->pRspCBUserData);
32011 return WDI_STATUS_E_FAILURE;
32012 }
32013 }
32014 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
32015 }
32016 else
32017 {
32018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32019 "%s: Length = 0 for type %d return failure ", __func__,
32020 pHalFwstatsRsp->type);
32021 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
32022 NULL, pWDICtx->pRspCBUserData);
32023 return WDI_STATUS_E_FAILURE;
32024 }
32025 return WDI_STATUS_SUCCESS;
32026}
32027
32028/*
32029 * FUNCTION: WDI_ProcessGetFwStatsReq
32030 * Request to WDI to get FW Stats.
32031 */
32032WDI_Status
32033 WDI_ProcessGetFwStatsReq
32034(
32035 WDI_ControlBlockType* pWDICtx,
32036 WDI_EventInfoType* pEventData
32037)
32038{
32039 wpt_uint8* pSendBuffer = NULL;
32040 wpt_uint16 usDataOffset = 0;
32041 wpt_uint16 usSendSize = 0;
32042 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
32043 tHalfwStatsReqParams halFwStatsReq;
32044
32045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32046
32047 /*-------------------------------------------------------------------------
32048 Sanity check
32049 -------------------------------------------------------------------------*/
32050 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
32051 ( NULL == pEventData->pCBfnc ) )
32052 {
32053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32054 "%s: Invalid parameters", __func__);
32055 WDI_ASSERT(0);
32056 return WDI_STATUS_E_FAILURE;
32057 }
32058
32059 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
32060
32061 /*-----------------------------------------------------------------------
32062 Get message buffer
32063 -----------------------------------------------------------------------*/
32064 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32065 pWDICtx, WDI_GET_FW_STATS_REQ,
32066 sizeof(tHalfwStatsReqParams),
32067 &pSendBuffer, &usDataOffset, &usSendSize)) ||
32068 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
32069 {
32070 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32071 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
32072 pEventData);
32073 WDI_ASSERT(0);
32074 return WDI_STATUS_E_FAILURE;
32075 }
32076
32077 pWDICtx->wdiReqStatusCB = NULL;
32078 pWDICtx->pReqStatusUserData = pEventData->pEventData;
32079 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
32080 wpalMemoryCopy( pSendBuffer+usDataOffset,
32081 &halFwStatsReq,
32082 sizeof(tHalfwStatsReqParams));
32083 /*-------------------------------------------------------------------------
32084 Send Get STA Request to HAL
32085 -------------------------------------------------------------------------*/
32086 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
32087 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
32088}
32089
Sunil Duttbd736ed2014-05-26 21:19:41 +053032090#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32091
32092/**
32093 @brief WDI_LLStatsSetReq
32094 This API is called to set link layer stats request in FW
32095
32096 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
32097 wdiLLStatsSetRspCb : set link layer stats resp callback
32098 usrData : Client context
32099 @see
32100 @return SUCCESS or FAIL
32101*/
32102WDI_Status
32103WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
32104 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
32105 void* pUserData)
32106{
32107 WDI_EventInfoType wdiEventData;
32108
32109 /*------------------------------------------------------------------------
32110 Sanity Check
32111 ------------------------------------------------------------------------*/
32112 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32113 {
32114 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32115 "WDI API call before module is initialized - Fail request");
32116
32117 return WDI_STATUS_E_NOT_ALLOWED;
32118 }
32119
32120 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
32121 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
32122 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
32123 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
32124 wdiEventData.pUserData = pUserData;
32125
32126 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32127}
32128
32129/**
32130 @brief WDI_ProcessLLStatsSetReq -
32131 Set Link Layer Stats request to FW
32132
32133 @param pWDICtx : wdi context
32134 pEventData : indication data
32135
32136 @see
32137 @return none
32138*/
32139WDI_Status
32140WDI_ProcessLLStatsSetReq
32141(
32142 WDI_ControlBlockType* pWDICtx,
32143 WDI_EventInfoType* pEventData
32144)
32145{
32146 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
32147 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
32148 wpt_uint8* pSendBuffer = NULL;
32149 wpt_uint16 usSendSize = 0;
32150 wpt_uint16 usDataOffset = 0;
32151 tHalMacLlSetStatsReqParams halLLStatsSetParams;
32152
32153 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32154 ( NULL == pEventData->pCBfnc ))
32155 {
32156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32157 "%s: Invalid parameters", __func__);
32158 WDI_ASSERT(0);
32159 return WDI_STATUS_E_FAILURE;
32160 }
32161
32162 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
32163 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
32164
32165 /*-----------------------------------------------------------------------
32166 Get message buffer
32167 ! TO DO : proper conversion into the HAL Message Request Format
32168 -----------------------------------------------------------------------*/
32169 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32170 pWDICtx,
32171 WDI_LL_STATS_SET_REQ,
32172 sizeof(tHalMacLlSetStatsReqParams),
32173 &pSendBuffer, &usDataOffset,
32174 &usSendSize))||
32175 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
32176 {
32177 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32178 "Unable to get send buffer in %s %p %p %p", __func__,
32179 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
32180 WDI_ASSERT(0);
32181 return WDI_STATUS_E_FAILURE;
32182 }
32183
32184
Dino Mycled3d50022014-07-07 12:58:25 +053032185 /* Need to fill in the self STA Index */
32186 if ( WDI_STATUS_SUCCESS !=
32187 WDI_STATableFindStaidByAddr(pWDICtx,
32188 pwdiLLStatsSetReqParams->macAddr,
32189 &halLLStatsSetParams.sta_id))
32190 {
32191 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32192 MAC_ADDRESS_STR
32193 ": This station does not exist in the WDI Station Table",
32194 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
32195
32196 wpalMemoryFree(pSendBuffer);
32197 return WDI_STATUS_E_FAILURE;
32198 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032199
32200 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032201 halLLStatsSetParams.mpdu_size_threshold =
32202 pwdiLLStatsSetReqParams->mpduSizeThreshold;
32203 halLLStatsSetParams.aggressive_statistics_gathering =
32204 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
32205
32206 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32207 " halLLStatsSetParams.req_id = %u",
32208 halLLStatsSetParams.req_id);
32209 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32210 " halLLStatsSetParams.sta_id = %u",
32211 halLLStatsSetParams.sta_id);
32212 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32213 " halLLStatsSetParams.mpdu_size_threshold = %u",
32214 halLLStatsSetParams.mpdu_size_threshold);
32215 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32216 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
32217 halLLStatsSetParams.aggressive_statistics_gathering);
32218
32219 wpalMemoryCopy(pSendBuffer+usDataOffset,
32220 &halLLStatsSetParams,
32221 sizeof(halLLStatsSetParams));
32222
32223 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32224
32225 /*-------------------------------------------------------------------------
32226 Send Clear Link Layer Stats Request to HAL
32227 -------------------------------------------------------------------------*/
32228 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32229 wdiLLStatsSetCb, pEventData->pUserData,
32230 WDI_LL_STATS_SET_RSP);
32231}
32232
32233/**
32234 @brief WDI_LLStatsGetReq
32235 This API is called to get link layer stats request in FW
32236
32237 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
32238 wdiLLStatsGetRspCb : get link layer stats resp callback
32239 usrData : Client context
32240 @see
32241 @return SUCCESS or FAIL
32242*/
32243WDI_Status
32244WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
32245 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
32246 void* pUserData)
32247{
32248 WDI_EventInfoType wdiEventData;
32249
32250 /*------------------------------------------------------------------------
32251 Sanity Check
32252 ------------------------------------------------------------------------*/
32253 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32254 {
32255 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32256 "WDI API call before module is initialized - Fail request");
32257
32258 return WDI_STATUS_E_NOT_ALLOWED;
32259 }
32260
32261 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
32262 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
32263 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
32264 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
32265 wdiEventData.pUserData = pUserData;
32266
32267 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32268}
32269
32270/**
32271 @brief WDI_ProcessLLStatsGetReq -
32272 Get Link Layer Stats request to FW
32273
32274 @param pWDICtx : wdi context
32275 pEventData : indication data
32276
32277 @see
32278 @return none
32279*/
32280WDI_Status
32281WDI_ProcessLLStatsGetReq
32282(
32283 WDI_ControlBlockType* pWDICtx,
32284 WDI_EventInfoType* pEventData
32285)
32286{
32287 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
32288 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
32289 wpt_uint8* pSendBuffer = NULL;
32290 wpt_uint16 usSendSize = 0;
32291 wpt_uint16 usDataOffset = 0;
32292 tHalMacLlGetStatsReqParams halLLStatsGetParams;
32293
32294 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32295 ( NULL == pEventData->pCBfnc ))
32296 {
32297 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32298 "%s: Invalid parameters", __func__);
32299 WDI_ASSERT(0);
32300 return WDI_STATUS_E_FAILURE;
32301 }
32302
32303 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
32304 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
32305
32306 /*-----------------------------------------------------------------------
32307 Get message buffer
32308 ! TO DO : proper conversion into the HAL Message Request Format
32309 -----------------------------------------------------------------------*/
32310 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32311 pWDICtx,
32312 WDI_LL_STATS_GET_REQ,
32313 sizeof(tHalMacLlGetStatsReqParams),
32314 &pSendBuffer, &usDataOffset,
32315 &usSendSize))||
32316 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
32317 {
32318 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32319 "Unable to get send buffer in %s %p %p %p", __func__,
32320 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
32321 WDI_ASSERT(0);
32322 return WDI_STATUS_E_FAILURE;
32323 }
Dino Mycled3d50022014-07-07 12:58:25 +053032324 /* Need to fill in the self STA Index */
32325 if ( WDI_STATUS_SUCCESS !=
32326 WDI_STATableFindStaidByAddr(pWDICtx,
32327 pwdiLLStatsGetReqParams->macAddr,
32328 &halLLStatsGetParams.sta_id))
32329 {
32330 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32331 MAC_ADDRESS_STR
32332 ": This station does not exist in the WDI Station Table",
32333 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
32334
32335 wpalMemoryFree(pSendBuffer);
32336 return WDI_STATUS_E_FAILURE;
32337 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032338
32339 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032340 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
32341
32342 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32343 " halLLStatsGetParams.req_id = %u",
32344 halLLStatsGetParams.req_id);
32345 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32346 " halLLStatsGetParams.staId = %u",
32347 halLLStatsGetParams.sta_id);
32348 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32349 " halLLStatsGetParams.Mask = %u",
32350 halLLStatsGetParams.param_id_mask);
32351
32352 wpalMemoryCopy(pSendBuffer+usDataOffset,
32353 &halLLStatsGetParams,
32354 sizeof(halLLStatsGetParams));
32355
32356 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32357
32358 /*-------------------------------------------------------------------------
32359 Send Clear Link Layer Stats Request to HAL
32360 -------------------------------------------------------------------------*/
32361 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32362 wdiLLStatsGetCb, pEventData->pUserData,
32363 WDI_LL_STATS_GET_RSP);
32364}
32365
32366/**
32367 @brief WDI_LLStatsClearReq
32368 This API is called to clear link layer stats request in FW
32369
32370 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
32371 wdiLLStatsSetRspCb : clear link layer stats resp callback
32372 usrData : Client context
32373 @see
32374 @return SUCCESS or FAIL
32375*/
32376WDI_Status
32377WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
32378 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
32379 void* pUserData)
32380{
32381 WDI_EventInfoType wdiEventData;
32382
32383 /*------------------------------------------------------------------------
32384 Sanity Check
32385 ------------------------------------------------------------------------*/
32386 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32387 {
32388 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32389 "WDI API call before module is initialized - Fail request");
32390
32391 return WDI_STATUS_E_NOT_ALLOWED;
32392 }
32393
32394 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
32395 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
32396 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
32397 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
32398 wdiEventData.pUserData = pUserData;
32399
32400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32401 "%s:%d Enter", __func__, __LINE__);
32402
32403 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32404}
32405
32406/**
32407 @brief WDI_ProcessLLStatsClearReq -
32408 Clear Link Layer Stats request to FW
32409
32410 @param pWDICtx : wdi context
32411 pEventData : indication data
32412
32413 @see
32414 @return none
32415*/
32416WDI_Status
32417WDI_ProcessLLStatsClearReq
32418(
32419 WDI_ControlBlockType* pWDICtx,
32420 WDI_EventInfoType* pEventData
32421)
32422{
32423 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
32424 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
32425 wpt_uint8* pSendBuffer = NULL;
32426 wpt_uint16 usSendSize = 0;
32427 wpt_uint16 usDataOffset = 0;
32428 tHalMacLlClearStatsReqParams halLLStatsClearParams;
32429
32430 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32431 ( NULL == pEventData->pCBfnc ))
32432 {
32433 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32434 "%s: Invalid parameters", __func__);
32435 WDI_ASSERT(0);
32436 return WDI_STATUS_E_FAILURE;
32437 }
32438
32439 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
32440 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
32441
32442 /*-----------------------------------------------------------------------
32443 Get message buffer
32444 ! TO DO : proper conversion into the HAL Message Request Format
32445 -----------------------------------------------------------------------*/
32446 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32447 pWDICtx,
32448 WDI_LL_STATS_CLEAR_REQ,
32449 sizeof(tHalMacLlClearStatsReqParams),
32450 &pSendBuffer, &usDataOffset,
32451 &usSendSize))||
32452 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
32453 {
32454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32455 "Unable to get send buffer in %s %p %p %p", __func__,
32456 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
32457 WDI_ASSERT(0);
32458 return WDI_STATUS_E_FAILURE;
32459 }
Dino Mycled3d50022014-07-07 12:58:25 +053032460 /* Need to fill in the self STA Index */
32461 if ( WDI_STATUS_SUCCESS !=
32462 WDI_STATableFindStaidByAddr(pWDICtx,
32463 pwdiLLStatsClearReqParams->macAddr,
32464 &halLLStatsClearParams.sta_id))
32465 {
32466 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32467 MAC_ADDRESS_STR
32468 ": This station does not exist in the WDI Station Table",
32469 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
32470
32471 wpalMemoryFree(pSendBuffer);
32472 return WDI_STATUS_E_FAILURE;
32473 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053032474
32475 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032476 halLLStatsClearParams.stats_clear_req_mask =
32477 pwdiLLStatsClearReqParams->statsClearReqMask;
32478 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
32479
32480 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32481 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
32482 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32483 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
32484 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32485 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
32486 halLLStatsClearParams.stats_clear_req_mask);
32487 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32488 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
32489
32490 wpalMemoryCopy(pSendBuffer+usDataOffset,
32491 &halLLStatsClearParams,
32492 sizeof(halLLStatsClearParams));
32493
32494 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32495
32496 /*-------------------------------------------------------------------------
32497 Send Clear Link Layer Stats Request to HAL
32498 -------------------------------------------------------------------------*/
32499 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32500 wdiLLStatsClearCb, pEventData->pUserData,
32501 WDI_LL_STATS_CLEAR_RSP);
32502}
32503#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053032504
Abhishek Singh85b74712014-10-08 11:38:19 +053032505WDI_Status WDI_FWStatsGetReq( void* pUserData,
32506 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
32507 wpt_uint32 stats)
32508{
32509 WDI_EventInfoType wdiEventData;
32510
32511 /*------------------------------------------------------------------------
32512 Sanity Check
32513 ------------------------------------------------------------------------*/
32514 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32515 {
32516 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32517 "WDI API call before module is initialized - Fail request");
32518 return WDI_STATUS_E_NOT_ALLOWED;
32519 }
32520 /*------------------------------------------------------------------------
32521 Fill in Event data and post to the Main FSM
32522 ------------------------------------------------------------------------*/
32523 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
32524 wdiEventData.pEventData = (void *)&stats;
32525 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
32526 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
32527 wdiEventData.pUserData = pUserData;
32528
32529 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32530
32531}
32532
Katya Nigamf0511f62015-05-05 16:40:57 +053032533WDI_Status
32534WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032535 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032536 void* pUserData)
32537{
32538 WDI_EventInfoType wdiEventData;
32539
32540 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32541 "%s", __func__);
32542
32543 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32544 {
32545 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32546 "WDI API call before module is initialized - Fail request");
32547
32548 return WDI_STATUS_E_NOT_ALLOWED;
32549 }
32550
32551 wdiEventData.wdiRequest = WDI_MON_START_REQ;
32552 wdiEventData.pEventData = pwdiMonStartReqParams;
32553 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032554 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032555 wdiEventData.pUserData = pUserData;
32556
32557 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32558}
32559
32560WDI_Status
32561WDI_ProcessMonStartReq
32562(
32563 WDI_ControlBlockType* pWDICtx,
32564 WDI_EventInfoType* pEventData
32565)
32566{
32567 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032568 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032569 wpt_uint8* pSendBuffer = NULL;
32570 wpt_uint16 usSendSize = 0;
32571 wpt_uint16 usDataOffset = 0;
32572 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
32573
32574 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32575 "%s", __func__);
32576
32577 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
32578 ( NULL == pEventData->pCBfnc ))
32579 {
32580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32581 "%s: Invalid parameters", __func__);
32582 WDI_ASSERT(0);
32583 return WDI_STATUS_E_FAILURE;
32584 }
32585
32586 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032587 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032588
32589 /*-----------------------------------------------------------------------
32590 Get message buffer
32591 ! TO DO : proper conversion into the HAL Message Request Format
32592 -----------------------------------------------------------------------*/
32593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32594 pWDICtx,
32595 WDI_MON_START_REQ,
32596 sizeof(tHalEnableMonitorModeReqParams),
32597 &pSendBuffer, &usDataOffset,
32598 &usSendSize))||
32599 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
32600 {
32601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32602 "Unable to get send buffer in %s %p %p %p", __func__,
32603 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
32604 WDI_ASSERT(0);
32605 return WDI_STATUS_E_FAILURE;
32606 }
32607
32608 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
32609 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
32610 pwdiMonStartReqParams->ChannelBW);
32611 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
32612 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
32613 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
32614 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
32615 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
32616 pwdiMonStartReqParams->mmFilters[0].macAddr,
32617 sizeof( wpt_macAddr ));
32618 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
32619 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
32620 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
32621 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
32622
32623 wpalMemoryCopy(pSendBuffer+usDataOffset,
32624 &halEnableMonitorModeParams,
32625 sizeof(halEnableMonitorModeParams));
32626
32627 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32628
32629 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32630 wdiMonStartCb, pEventData->pUserData,
32631 WDI_MON_START_RSP);
32632}
32633
32634WDI_Status
32635WDI_ProcessMonStartRsp
32636(
32637 WDI_ControlBlockType* pWDICtx,
32638 WDI_EventInfoType* pEventData
32639)
32640{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032641 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032642
32643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32644 "%s: Enter ", __func__);
32645 /*-------------------------------------------------------------------------
32646 Sanity check
32647 -------------------------------------------------------------------------*/
32648 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32649 ( NULL == pEventData->pEventData))
32650 {
32651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32652 "%s: Invalid parameters", __func__);
32653 WDI_ASSERT(0);
32654 return WDI_STATUS_E_FAILURE;
32655 }
32656
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032657 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032658
32659 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
32660
32661 return WDI_STATUS_SUCCESS;
32662}
32663
32664WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032665WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053032666 void* pUserData)
32667{
32668 WDI_EventInfoType wdiEventData;
32669
32670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32671 "%s", __func__);
32672
32673 if ( eWLAN_PAL_FALSE == gWDIInitialized )
32674 {
32675 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32676 "WDI API call before module is initialized - Fail request");
32677
32678 return WDI_STATUS_E_NOT_ALLOWED;
32679 }
32680
32681 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
32682 wdiEventData.pEventData = NULL;
32683 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032684 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032685 wdiEventData.pUserData = pUserData;
32686
32687 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32688}
32689
32690WDI_Status
32691WDI_ProcessMonStopReq
32692(
32693 WDI_ControlBlockType* pWDICtx,
32694 WDI_EventInfoType* pEventData
32695)
32696{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032697 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032698 wpt_uint8* pSendBuffer = NULL;
32699 wpt_uint16 usSendSize = 0;
32700 wpt_uint16 usDataOffset = 0;
32701 wpt_uint8 resetConfiguration;
32702
32703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32704 "%s", __func__);
32705
32706 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
32707 {
32708 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32709 "%s: Invalid parameters", __func__);
32710 WDI_ASSERT(0);
32711 return WDI_STATUS_E_FAILURE;
32712 }
32713
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032714 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053032715
32716 /*-----------------------------------------------------------------------
32717 Get message buffer
32718 ! TO DO : proper conversion into the HAL Message Request Format
32719 -----------------------------------------------------------------------*/
32720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
32721 pWDICtx,
32722 WDI_MON_STOP_REQ,
32723 sizeof(wpt_uint8),
32724 &pSendBuffer, &usDataOffset,
32725 &usSendSize))||
32726 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
32727 {
32728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32729 "Unable to get send buffer in %s %p %p", __func__,
32730 pEventData, wdiMonStopCb);
32731 WDI_ASSERT(0);
32732 return WDI_STATUS_E_FAILURE;
32733 }
32734
32735 wpalMemoryCopy(pSendBuffer+usDataOffset,
32736 &resetConfiguration,
32737 sizeof(wpt_uint8));
32738
32739 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32740
32741 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
32742 wdiMonStopCb, pEventData->pUserData,
32743 WDI_MON_STOP_RSP);
32744}
32745
32746WDI_Status
32747WDI_ProcessMonStopRsp
32748(
32749 WDI_ControlBlockType* pWDICtx,
32750 WDI_EventInfoType* pEventData
32751)
32752{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032753 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053032754
32755 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32756 "%s: Enter ", __func__);
32757 /*-------------------------------------------------------------------------
32758 Sanity check
32759 -------------------------------------------------------------------------*/
32760 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
32761 {
32762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32763 "%s: Invalid parameters", __func__);
32764 WDI_ASSERT(0);
32765 return WDI_STATUS_E_FAILURE;
32766 }
32767
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032768 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053032769
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053032770 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053032771
32772 return WDI_STATUS_SUCCESS;
32773}
32774
Dino Mycle41bdc942014-06-10 11:30:24 +053032775#ifdef WLAN_FEATURE_EXTSCAN
32776
32777/**
32778 @brief Process EXTSCAN BUffer full indication from FW
32779
32780 @param pWDICtx: pointer to the WLAN DAL context
32781 pEventData: pointer to the event information structure
32782
32783 @see
32784 @return Result of the function call
32785*/
32786WDI_Status
32787WDI_ProcessEXTScanProgressInd
32788(
32789 WDI_ControlBlockType* pWDICtx,
32790 WDI_EventInfoType* pEventData
32791)
32792{
32793 WDI_LowLevelIndType wdiInd;
32794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32795
32796 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32797 "%s: ", __func__);
32798
32799 /* sanity check */
32800 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32801 ( NULL == pEventData->pEventData))
32802 {
32803 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32804 "%s: Invalid parameters", __func__);
32805 WDI_ASSERT(0);
32806 return WDI_STATUS_E_FAILURE;
32807 }
32808
32809 /* Fill in the indication parameters */
32810 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
32811
32812 /* extract response and send it to UMAC */
32813 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32814
32815 /* Notify UMAC */
32816 if (pWDICtx->wdiLowLevelIndCB)
32817 {
32818 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32819 }
32820 else
32821 {
Dino Mycled3d50022014-07-07 12:58:25 +053032822 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053032823 "%s: WDILowLevelIndCb is null", __func__);
32824 WDI_ASSERT(0);
32825 return WDI_STATUS_E_FAILURE;
32826 }
32827 return WDI_STATUS_SUCCESS;
32828
32829} /* End of WDI_ProcessEXTScanProgressInd */
32830
32831
32832/**
32833 @brief Process EXTScan Scan Available indication from FW
32834
32835 @param pWDICtx: pointer to the WLAN DAL context
32836 pEventData: pointer to the event information structure
32837
32838 @see
32839 @return Result of the function call
32840*/
32841WDI_Status
32842WDI_ProcessEXTScanScanAvailableInd
32843(
32844 WDI_ControlBlockType* pWDICtx,
32845 WDI_EventInfoType* pEventData
32846)
32847{
32848 WDI_LowLevelIndType wdiInd;
32849 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32850
32851 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32852 "%s: ", __func__);
32853
32854 /* sanity check */
32855 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32856 ( NULL == pEventData->pEventData))
32857 {
32858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32859 "%s: Invalid parameters", __func__);
32860 WDI_ASSERT(0);
32861 return WDI_STATUS_E_FAILURE;
32862 }
32863
32864
32865
32866 /* Fill in the indication parameters */
32867 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
32868
32869 /* extract response and send it to UMAC */
32870 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32871
32872 /* Notify UMAC */
32873 if (pWDICtx->wdiLowLevelIndCB)
32874 {
32875 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32876 }
32877 else
32878 {
32879 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32880 "%s: WDILowLevelIndCb is null", __func__);
32881 WDI_ASSERT(0);
32882 return WDI_STATUS_E_FAILURE;
32883 }
32884 return WDI_STATUS_SUCCESS;
32885} /* End of WDI_ProcessEXTScanScanDoneInd */
32886
32887/**
32888 @brief Process EXTScan Result Indication indication from FW
32889
32890 @param pWDICtx: pointer to the WLAN DAL context
32891 pEventData: pointer to the event information structure
32892
32893 @see
32894 @return Result of the function call
32895*/
32896WDI_Status
32897WDI_ProcessEXTScanResultInd
32898(
32899 WDI_ControlBlockType* pWDICtx,
32900 WDI_EventInfoType* pEventData
32901)
32902{
32903 WDI_LowLevelIndType wdiInd;
32904 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32905
32906 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32907 "%s: ", __func__);
32908
32909 /* sanity check */
32910 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32911 ( NULL == pEventData->pEventData))
32912 {
32913 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32914 "%s: Invalid parameters", __func__);
32915 WDI_ASSERT(0);
32916 return WDI_STATUS_E_FAILURE;
32917 }
32918
32919 /* Fill in the indication parameters */
32920 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
32921
32922 /* extract response and send it to UMAC */
32923 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32924
32925 /* Notify UMAC */
32926 if (pWDICtx->wdiLowLevelIndCB)
32927 {
32928 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32929 }
32930 else
32931 {
32932 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32933 "%s: WDILowLevelIndCb is null", __func__);
32934 WDI_ASSERT(0);
32935 return WDI_STATUS_E_FAILURE;
32936 }
32937 return WDI_STATUS_SUCCESS;
32938} /* End of WDI_ProcessEXTScanResultInd */
32939
32940/**
32941 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
32942
32943 @param pWDICtx: pointer to the WLAN DAL context
32944 pEventData: pointer to the event information structure
32945
32946 @see
32947 @return Result of the function call
32948*/
32949WDI_Status
32950WDI_ProcessEXTScanBssidHotListResultInd
32951(
32952 WDI_ControlBlockType* pWDICtx,
32953 WDI_EventInfoType* pEventData
32954)
32955{
32956 WDI_LowLevelIndType wdiInd;
32957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32958
32959 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32960 "%s: ", __func__);
32961
32962 /* sanity check */
32963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32964 ( NULL == pEventData->pEventData))
32965 {
32966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32967 "%s: Invalid parameters", __func__);
32968 WDI_ASSERT(0);
32969 return WDI_STATUS_E_FAILURE;
32970 }
32971
32972 /* Fill in the indication parameters */
32973 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
32974
32975 /* extract response and send it to UMAC */
32976 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
32977
32978 /* Notify UMAC */
32979 if (pWDICtx->wdiLowLevelIndCB)
32980 {
32981 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32982 }
32983 else
32984 {
32985 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32986 "%s: WDILowLevelIndCb is null", __func__);
32987 WDI_ASSERT(0);
32988 return WDI_STATUS_E_FAILURE;
32989 }
32990 return WDI_STATUS_SUCCESS;
32991} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
32992
32993/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053032994 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
32995
32996 @param pWDICtx: pointer to the WLAN DAL context
32997 pEventData: pointer to the event information structure
32998
32999 @see
33000 @return Result of the function call
33001*/
33002WDI_Status
33003WDI_ProcessEXTScanSsidHotListResultInd
33004(
33005 WDI_ControlBlockType* pWDICtx,
33006 WDI_EventInfoType* pEventData
33007)
33008{
33009 WDI_LowLevelIndType wdiInd;
33010 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33011
33012 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33013 "%s: ", __func__);
33014
33015 /* sanity check */
33016 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33017 ( NULL == pEventData->pEventData))
33018 {
33019 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33020 "%s: Invalid parameters", __func__);
33021 WDI_ASSERT(0);
33022 return WDI_STATUS_E_FAILURE;
33023 }
33024
33025 /* Fill in the indication parameters */
33026 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
33027
33028 /* extract response and send it to UMAC */
33029 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
33030
33031 /* Notify UMAC */
33032 if (pWDICtx->wdiLowLevelIndCB)
33033 {
33034 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
33035 }
33036 else
33037 {
33038 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33039 "%s: WDILowLevelIndCb is null", __func__);
33040 WDI_ASSERT(0);
33041 return WDI_STATUS_E_FAILURE;
33042 }
33043 return WDI_STATUS_SUCCESS;
33044} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
33045
33046
33047/**
Dino Mycle41bdc942014-06-10 11:30:24 +053033048 @brief WDI_EXTScanGetCapabilitiesReq
33049
33050 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
33051 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
33052 of the Req operation received from the device
33053 pUserData: user data will be passed back with the callback
33054
33055 @return SUCCESS or FAIL
33056*/
33057WDI_Status
33058WDI_EXTScanGetCapabilitiesReq(
33059 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
33060 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
33061 void* pUserData)
33062{
33063 WDI_EventInfoType wdiEventData;
33064
33065 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33066 "%s: %d ",__func__, __LINE__);
33067 /*------------------------------------------------------------------------
33068 Sanity Check
33069 ------------------------------------------------------------------------*/
33070 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33071 {
33072 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33073 "WDI API call before module is initialized - Fail request");
33074
33075 return WDI_STATUS_E_NOT_ALLOWED;
33076 }
33077
33078 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
33079 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
33080 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
33081 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
33082 wdiEventData.pUserData = pUserData;
33083
33084 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33085}
33086
33087/**
33088 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
33089 Extended Scan Get Capability request to FW
33090
33091 @param pWDICtx : wdi context
33092 pEventData : indication data
33093
33094 @see
33095 @return none
33096*/
33097WDI_Status
33098WDI_ProcessEXTScanGetCapabilitiesReq
33099(
33100 WDI_ControlBlockType* pWDICtx,
33101 WDI_EventInfoType* pEventData
33102)
33103{
33104 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
33105 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
33106 wpt_uint8* pSendBuffer = NULL;
33107 wpt_uint16 usSendSize = 0;
33108 wpt_uint16 usDataOffset = 0;
33109 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
33110
33111 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33112 "%s: %d Enter",__func__, __LINE__);
33113
33114 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33115 ( NULL == pEventData->pCBfnc ))
33116 {
33117 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33118 "%s: Invalid parameters", __func__);
33119 WDI_ASSERT(0);
33120 return WDI_STATUS_E_FAILURE;
33121 }
33122
33123 pwdiEXTScanGetCapabilitiesReqParams =
33124 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
33125 wdiEXTScanGetCapabilitiesRspCb =
33126 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
33127
33128 /*-----------------------------------------------------------------------
33129 Get message buffer
33130 ! TO DO : proper conversion into the HAL Message Request Format
33131 -----------------------------------------------------------------------*/
33132 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33133 pWDICtx,
33134 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
33135 sizeof(halEXTScanGetCapReqParams),
33136 &pSendBuffer, &usDataOffset,
33137 &usSendSize))||
33138 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
33139 {
33140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33141 "Unable to get send buffer in %s %p %p %p", __func__,
33142 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
33143 wdiEXTScanGetCapabilitiesRspCb);
33144 WDI_ASSERT(0);
33145 return WDI_STATUS_E_FAILURE;
33146 }
33147
33148 halEXTScanGetCapReqParams.requestId =
33149 pwdiEXTScanGetCapabilitiesReqParams->requestId;
33150 halEXTScanGetCapReqParams.sessionId =
33151 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
33152
33153 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33154 " requestId %u "
33155 " sessionId %u ",
33156 halEXTScanGetCapReqParams.requestId,
33157 halEXTScanGetCapReqParams.sessionId);
33158
33159 wpalMemoryCopy(pSendBuffer+usDataOffset,
33160 &halEXTScanGetCapReqParams,
33161 sizeof(halEXTScanGetCapReqParams));
33162
33163 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33164
33165
33166 /*-------------------------------------------------------------------------
33167 Send EXTScan Stop Request to HAL
33168 -------------------------------------------------------------------------*/
33169 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33170 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
33171 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
33172}
33173
33174/**
33175 @brief WDI_EXTScanGetCachedResultsReq
33176
33177 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
33178 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
33179 of the Req operation received from the device
33180 pUserData: user data will be passed back with the callback
33181
33182 @return SUCCESS or FAIL
33183*/
33184
33185WDI_Status
33186WDI_EXTScanGetCachedResultsReq(
33187 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
33188 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
33189 void* pUserData)
33190{
33191 WDI_EventInfoType wdiEventData;
33192
33193 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33194 "%s: %d Enter",__func__, __LINE__);
33195 /*------------------------------------------------------------------------
33196 Sanity Check
33197 ------------------------------------------------------------------------*/
33198 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33199 {
33200 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33201 "WDI API call before module is initialized - Fail request");
33202
33203 return WDI_STATUS_E_NOT_ALLOWED;
33204 }
33205
33206 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
33207 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
33208 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
33209 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
33210 wdiEventData.pUserData = pUserData;
33211
33212 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33213}
33214
33215/**
33216 @brief WDI_ProcessEXTScanGetCachedResultsReq -
33217 Extended Scan Get Cached Result request to FW
33218
33219 @param pWDICtx : wdi context
33220 pEventData : indication data
33221
33222 @see
33223 @return none
33224*/
33225WDI_Status
33226WDI_ProcessEXTScanGetCachedResultsReq
33227(
33228 WDI_ControlBlockType* pWDICtx,
33229 WDI_EventInfoType* pEventData
33230)
33231{
33232 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
33233 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
33234 wpt_uint8* pSendBuffer = NULL;
33235 wpt_uint16 usSendSize = 0;
33236 wpt_uint16 usDataOffset = 0;
33237 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
33238
33239 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33240 "%s: %d Enter",__func__, __LINE__);
33241
33242 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33243 ( NULL == pEventData->pCBfnc ))
33244 {
33245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33246 "%s: Invalid parameters", __func__);
33247 WDI_ASSERT(0);
33248 return WDI_STATUS_E_FAILURE;
33249 }
33250
33251 pwdiEXTScanGetCachedResultsReqParams =
33252 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
33253 wdiEXTScanGetCachedResultsCb =
33254 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
33255
33256 /*-----------------------------------------------------------------------
33257 Get message buffer
33258 ! TO DO : proper conversion into the HAL Message Request Format
33259 -----------------------------------------------------------------------*/
33260 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33261 pWDICtx,
33262 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
33263 sizeof(tHalExtScanGetScanReq),
33264 &pSendBuffer, &usDataOffset,
33265 &usSendSize))||
33266 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
33267 {
33268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33269 "Unable to get send buffer in %s %p %p %p", __func__,
33270 pEventData, pwdiEXTScanGetCachedResultsReqParams,
33271 wdiEXTScanGetCachedResultsCb);
33272 WDI_ASSERT(0);
33273 return WDI_STATUS_E_FAILURE;
33274 }
33275
33276 halEXTScanGetScanReqParams.requestId =
33277 pwdiEXTScanGetCachedResultsReqParams->requestId;
33278 halEXTScanGetScanReqParams.sessionId =
33279 pwdiEXTScanGetCachedResultsReqParams->sessionId;
33280 halEXTScanGetScanReqParams.flush =
33281 pwdiEXTScanGetCachedResultsReqParams->flush;
33282
33283 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33284 " requestId %u "
33285 " sessionId %u "
33286 " flush %u ",
33287 halEXTScanGetScanReqParams.requestId,
33288 halEXTScanGetScanReqParams.sessionId,
33289 halEXTScanGetScanReqParams.flush);
33290
33291 wpalMemoryCopy(pSendBuffer+usDataOffset,
33292 &halEXTScanGetScanReqParams,
33293 sizeof(halEXTScanGetScanReqParams));
33294
33295 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33296
33297
33298 /*-------------------------------------------------------------------------
33299 Send EXTScan Stop Request to HAL
33300 -------------------------------------------------------------------------*/
33301 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33302 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
33303 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
33304}
33305
33306/**
33307 @brief WDI_EXTScanStopReq
33308
33309 @param WDI_EXTScanStopReqParams: Req parameter for the FW
33310 WDI_EXTScanStopRspCb: callback for passing back the response
33311 of the Req operation received from the device
33312 pUserData: user data will be passed back with the callback
33313
33314 @return SUCCESS or FAIL
33315*/
33316WDI_Status
33317WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
33318 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
33319 void* pUserData)
33320{
33321 WDI_EventInfoType wdiEventData;
33322
33323 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33324 "%s: %d ",__func__, __LINE__);
33325 /*------------------------------------------------------------------------
33326 Sanity Check
33327 ------------------------------------------------------------------------*/
33328 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33329 {
33330 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33331 "WDI API call before module is initialized - Fail request");
33332
33333 return WDI_STATUS_E_NOT_ALLOWED;
33334 }
33335
33336 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
33337 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
33338 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
33339 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
33340 wdiEventData.pUserData = pUserData;
33341
33342 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33343}
33344
33345/**
33346 @brief WDI_ProcessEXTScanStopReq -
33347 Extended Scan Stop request to FW
33348
33349 @param pWDICtx : wdi context
33350 pEventData : indication data
33351
33352 @see
33353 @return none
33354*/
33355WDI_Status
33356WDI_ProcessEXTScanStopReq
33357(
33358 WDI_ControlBlockType* pWDICtx,
33359 WDI_EventInfoType* pEventData
33360)
33361{
33362 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
33363 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
33364 wpt_uint8* pSendBuffer = NULL;
33365 wpt_uint16 usSendSize = 0;
33366 wpt_uint16 usDataOffset = 0;
33367 tHalExtScanStopReq halEXTScanStopReqParams;
33368
33369 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33370 "%s: %d ",__func__, __LINE__);
33371
33372 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33373 ( NULL == pEventData->pCBfnc ))
33374 {
33375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33376 "%s: Invalid parameters", __func__);
33377 WDI_ASSERT(0);
33378 return WDI_STATUS_E_FAILURE;
33379 }
33380
33381 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
33382 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
33383
33384 /*-----------------------------------------------------------------------
33385 Get message buffer
33386 ! TO DO : proper conversion into the HAL Message Request Format
33387 -----------------------------------------------------------------------*/
33388 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33389 pWDICtx,
33390 WDI_EXTSCAN_STOP_REQ,
33391 sizeof(tHalExtScanStopReq),
33392 &pSendBuffer, &usDataOffset,
33393 &usSendSize))||
33394 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
33395 {
33396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33397 "Unable to get send buffer in %s %p %p %p", __func__,
33398 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
33399 WDI_ASSERT(0);
33400 return WDI_STATUS_E_FAILURE;
33401 }
33402
33403 halEXTScanStopReqParams.requestId =
33404 pwdiEXTScanStopReqParams->requestId;
33405 halEXTScanStopReqParams.sessionId =
33406 pwdiEXTScanStopReqParams->sessionId;
33407
33408 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33409 " halEXTScanStopReqParams.requestId %u "
33410 " halEXTScanStopReqParams.sessionId %u ",
33411 halEXTScanStopReqParams.requestId,
33412 halEXTScanStopReqParams.sessionId);
33413
33414 wpalMemoryCopy(pSendBuffer+usDataOffset,
33415 &halEXTScanStopReqParams,
33416 sizeof(halEXTScanStopReqParams));
33417
33418 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33419
33420
33421 /*-------------------------------------------------------------------------
33422 Send EXTScan Stop Request to HAL
33423 -------------------------------------------------------------------------*/
33424 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33425 wdiEXTScanStopCb, pEventData->pUserData,
33426 WDI_EXTSCAN_STOP_RSP);
33427}
33428
33429/**
33430 @brief WDI_EXTScanStartReq
33431
33432 @param WDI_EXTScanStartReqParams: Req parameter for the FW
33433 WDI_EXTScanStartRspCb: callback for passing back the response
33434 of the Req operation received from the device
33435 pUserData: user data will be passed back with the callback
33436
33437 @return SUCCESS or FAIL
33438*/
33439WDI_Status
33440WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
33441 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
33442 void* pUserData)
33443{
33444 WDI_EventInfoType wdiEventData;
33445
33446 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33447 "%s: %d Enter",__func__, __LINE__);
33448 /*------------------------------------------------------------------------
33449 Sanity Check
33450 ------------------------------------------------------------------------*/
33451 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33452 {
33453 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33454 "WDI API call before module is initialized - Fail request");
33455
33456 return WDI_STATUS_E_NOT_ALLOWED;
33457 }
33458
33459 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
33460 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
33461 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
33462 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
33463 wdiEventData.pUserData = pUserData;
33464
33465 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33466}
33467
33468/**
33469 @brief WDI_ProcessEXTScanStartReq -
33470 Extended Scan Start Request to FW
33471
33472 @param pWDICtx : wdi context
33473 pEventData : indication data
33474
33475 @see
33476 @return none
33477*/
33478WDI_Status
33479WDI_ProcessEXTScanStartReq
33480(
33481 WDI_ControlBlockType* pWDICtx,
33482 WDI_EventInfoType* pEventData
33483)
33484{
33485 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
33486 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
33487 wpt_uint8* pSendBuffer = NULL;
33488 wpt_uint16 usSendSize = 0;
33489 wpt_uint16 usDataOffset = 0;
33490 tpHalExtScanStartReq pHalExtScanStartReqParams;
33491 int i = 0;
33492 int j = 0;
33493
33494 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33495 "%s: %d Enter",__func__, __LINE__);
33496
33497 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33498 ( NULL == pEventData->pCBfnc ))
33499 {
33500 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33501 "%s: Invalid parameters", __func__);
33502 WDI_ASSERT(0);
33503 return WDI_STATUS_E_FAILURE;
33504 }
33505
33506 pwdiEXTScanStartReqParams =
33507 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
33508 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
33509
33510 /*-----------------------------------------------------------------------
33511 Get message buffer
33512 ! TO DO : proper conversion into the HAL Message Request Format
33513 -----------------------------------------------------------------------*/
33514 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33515 pWDICtx,
33516 WDI_EXTSCAN_START_REQ,
33517 sizeof(tHalExtScanStartReq),
33518 &pSendBuffer, &usDataOffset,
33519 &usSendSize))||
33520 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
33521 {
33522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33523 "Unable to get send buffer in %s %p %p %p", __func__,
33524 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
33525 WDI_ASSERT(0);
33526 return WDI_STATUS_E_FAILURE;
33527 }
33528
33529 pHalExtScanStartReqParams =
33530 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
33531
33532 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
33533 pHalExtScanStartReqParams->maxApPerScan =
33534 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033535 pHalExtScanStartReqParams->reportThresholdPercent =
33536 pwdiEXTScanStartReqParams->reportThresholdPercent;
33537 pHalExtScanStartReqParams->reportThresholdNumScans =
33538 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053033539 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
33540 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
33541 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033542 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053033543
33544 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
33545 {
33546 pHalExtScanStartReqParams->bucketData[i].bucketId =
33547 pwdiEXTScanStartReqParams->buckets[i].bucket;
33548 pHalExtScanStartReqParams->bucketData[i].channelBand =
33549 pwdiEXTScanStartReqParams->buckets[i].band;
33550 pHalExtScanStartReqParams->bucketData[i].period =
33551 pwdiEXTScanStartReqParams->buckets[i].period;
33552 pHalExtScanStartReqParams->bucketData[i].reportEvents =
33553 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033554 pHalExtScanStartReqParams->bucketData[i].max_period =
33555 pwdiEXTScanStartReqParams->buckets[i].max_period;
33556 pHalExtScanStartReqParams->bucketData[i].exponent =
33557 pwdiEXTScanStartReqParams->buckets[i].exponent;
33558 pHalExtScanStartReqParams->bucketData[i].step_count =
33559 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053033560 pHalExtScanStartReqParams->bucketData[i].numChannels =
33561 pwdiEXTScanStartReqParams->buckets[i].numChannels;
33562
33563 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
33564 {
33565 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
33566 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
33567 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
33568 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
33569 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
33570 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
33571 }
33572
33573 }
33574
33575
33576 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033577 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
33578 "reportThresholdNumScans %u requestId %u"
33579 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033580 pHalExtScanStartReqParams->basePeriod,
33581 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033582 pHalExtScanStartReqParams->reportThresholdPercent,
33583 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053033584 pHalExtScanStartReqParams->requestId,
33585 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033586 pHalExtScanStartReqParams->numBuckets,
33587 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053033588
33589 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
33590 {
33591 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
33592 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033593 " reportEvents %u numChannels %u "
33594 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053033595 pHalExtScanStartReqParams->bucketData[i].bucketId,
33596 pHalExtScanStartReqParams->bucketData[i].channelBand,
33597 pHalExtScanStartReqParams->bucketData[i].period,
33598 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053033599 pHalExtScanStartReqParams->bucketData[i].numChannels,
33600 pHalExtScanStartReqParams->bucketData[i].max_period,
33601 pHalExtScanStartReqParams->bucketData[i].exponent,
33602 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053033603
33604 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
33605 {
33606 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33607 "%d) channel %u dwellTimeMs %u passive %u ",j,
33608 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
33609 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
33610 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
33611 }
33612
33613 }
33614
Dino Mycle41bdc942014-06-10 11:30:24 +053033615 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33616
33617 /*-------------------------------------------------------------------------
33618 Send EXTSCAN Start Request to HAL
33619 -------------------------------------------------------------------------*/
33620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33621 wdiEXTScanStartCb, pEventData->pUserData,
33622 WDI_EXTSCAN_START_RSP);
33623}
33624
33625/**
33626 @brief WDI_EXTScanSetBSSIDHotlistReq
33627
33628 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
33629 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
33630 of the Req operation received from the device
33631 pUserData: user data will be passed back with the callback
33632
33633 @return SUCCESS or FAIL
33634*/
33635WDI_Status
33636WDI_EXTScanSetBSSIDHotlistReq(
33637 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
33638 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
33639 void* pUserData)
33640{
33641 WDI_EventInfoType wdiEventData;
33642
33643 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33644 "%s: %d Enter ",__func__, __LINE__);
33645 /*------------------------------------------------------------------------
33646 Sanity Check
33647 ------------------------------------------------------------------------*/
33648 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33649 {
33650 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33651 "WDI API call before module is initialized - Fail request");
33652
33653 return WDI_STATUS_E_NOT_ALLOWED;
33654 }
33655
33656 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
33657 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
33658 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
33659 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
33660 wdiEventData.pUserData = pUserData;
33661
33662 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33663}
33664
33665/**
33666 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
33667 Extended Scan Set BSSSID Hotlist Request to FW
33668
33669 @param pWDICtx : wdi context
33670 pEventData : indication data
33671
33672 @see
33673 @return none
33674*/
33675WDI_Status
33676WDI_ProcessEXTScanSetBSSIDHotlistReq
33677(
33678 WDI_ControlBlockType* pWDICtx,
33679 WDI_EventInfoType* pEventData
33680)
33681{
33682 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
33683 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
33684 wpt_uint8* pSendBuffer = NULL;
33685 wpt_uint16 usSendSize = 0;
33686 wpt_uint16 usDataOffset = 0;
33687 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
33688 int i;
33689
33690 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33691 "%s: %d Enter",__func__, __LINE__);
33692
33693 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33694 ( NULL == pEventData->pCBfnc ))
33695 {
33696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33697 "%s: Invalid parameters", __func__);
33698 WDI_ASSERT(0);
33699 return WDI_STATUS_E_FAILURE;
33700 }
33701
33702 pwdiEXTScanSetBSSIDHotlistReqParams =
33703 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
33704 wdiEXTScanSetBSSIDHotlistRspCb =
33705 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
33706
33707 /*-----------------------------------------------------------------------
33708 Get message buffer
33709 ! TO DO : proper conversion into the HAL Message Request Format
33710 -----------------------------------------------------------------------*/
33711 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33712 pWDICtx,
33713 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
33714 sizeof(tHalBssidHotlistSetReq),
33715 &pSendBuffer, &usDataOffset,
33716 &usSendSize))||
33717 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
33718 {
33719 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33720 "Unable to get send buffer in %s %p %p %p", __func__,
33721 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
33722 wdiEXTScanSetBSSIDHotlistRspCb);
33723 WDI_ASSERT(0);
33724 return WDI_STATUS_E_FAILURE;
33725 }
33726 pHalBssidHotlistSetReqParams =
33727 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
33728
33729 pHalBssidHotlistSetReqParams->requestId =
33730 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
33731
33732 pHalBssidHotlistSetReqParams->sessionId =
33733 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
33734
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033735 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
33736 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
33737
33738 pHalBssidHotlistSetReqParams->numBssid =
33739 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053033740
33741 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
33742
33743 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
33744 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
33745 WDI_MAC_ADDR_LEN);
33746
33747 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
33748 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
33749
33750 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
33751 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
33752
Dino Mycle41bdc942014-06-10 11:30:24 +053033753 }
33754
33755 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033756 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053033757 pHalBssidHotlistSetReqParams->requestId,
33758 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033759 pHalBssidHotlistSetReqParams->numBssid,
33760 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053033761
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033762 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053033763
33764 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033765 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053033766 __func__, __LINE__, i,
33767 pHalBssidHotlistSetReqParams->ap[i].bssid,
33768 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053033769 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053033770
33771 }
33772
33773 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33774
33775
33776 /*-------------------------------------------------------------------------
33777 Send EXTScan Stop Request to HAL
33778 -------------------------------------------------------------------------*/
33779 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33780 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
33781 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
33782}
33783
33784/**
33785 @brief WDI_EXTScanResetBSSIDHotlistReq
33786
33787 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
33788 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
33789 of the Req operation received from the device
33790 pUserData: user data will be passed back with the callback
33791
33792 @return SUCCESS or FAIL
33793*/
33794WDI_Status
33795WDI_EXTScanResetBSSIDHotlistReq(
33796 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
33797 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
33798 void* pUserData)
33799{
33800 WDI_EventInfoType wdiEventData;
33801
33802 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33803 "%s: %d",__func__, __LINE__);
33804 /*------------------------------------------------------------------------
33805 Sanity Check
33806 ------------------------------------------------------------------------*/
33807 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33808 {
33809 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33810 "WDI API call before module is initialized - Fail request");
33811
33812 return WDI_STATUS_E_NOT_ALLOWED;
33813 }
33814
33815 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
33816 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
33817 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
33818 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
33819 wdiEventData.pUserData = pUserData;
33820
33821 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33822}
33823
33824/**
33825 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
33826 Extended Scan reset BSSID hotlist Request to FW
33827
33828 @param pWDICtx : wdi context
33829 pEventData : indication data
33830
33831 @see
33832 @return none
33833*/
33834WDI_Status
33835WDI_ProcessEXTScanResetBSSIDHotlistReq
33836(
33837 WDI_ControlBlockType* pWDICtx,
33838 WDI_EventInfoType* pEventData
33839)
33840{
33841 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
33842 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
33843 wpt_uint8* pSendBuffer = NULL;
33844 wpt_uint16 usSendSize = 0;
33845 wpt_uint16 usDataOffset = 0;
33846 tpHalHotlistResetReq pHalHotlistResetReqParams;
33847
33848 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33849 "%s: %d",__func__, __LINE__);
33850
33851 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33852 ( NULL == pEventData->pCBfnc ))
33853 {
33854 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33855 "%s: Invalid parameters", __func__);
33856 WDI_ASSERT(0);
33857 return WDI_STATUS_E_FAILURE;
33858 }
33859
33860 pwdiEXTScanResetBSSIDHotlistReqParams =
33861 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
33862 wdiEXTScanResetBSSIDHotlistRspCb =
33863 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
33864
33865 /*-----------------------------------------------------------------------
33866 Get message buffer
33867 ! TO DO : proper conversion into the HAL Message Request Format
33868 -----------------------------------------------------------------------*/
33869 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33870 pWDICtx,
33871 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
33872 sizeof(tHalHotlistResetReq),
33873 &pSendBuffer, &usDataOffset,
33874 &usSendSize))||
33875 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
33876 {
33877 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33878 "Unable to get send buffer in %s %p %p %p", __func__,
33879 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
33880 wdiEXTScanResetBSSIDHotlistRspCb);
33881 WDI_ASSERT(0);
33882 return WDI_STATUS_E_FAILURE;
33883 }
33884 pHalHotlistResetReqParams =
33885 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
33886
33887 pHalHotlistResetReqParams->requestId =
33888 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
33889
33890 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33891
33892 /*-------------------------------------------------------------------------
33893 Send EXTScan Stop Request to HAL
33894 -------------------------------------------------------------------------*/
33895 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33896 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
33897 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
33898}
33899
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053033900
33901/**
33902 @brief WDI_EXTScanSetSSIDHotlistReq
33903
33904 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
33905 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
33906 of the Req operation received from the device
33907 pUserData: user data will be passed back with the callback
33908
33909 @return SUCCESS or FAIL
33910*/
33911WDI_Status
33912WDI_EXTScanSetSSIDHotlistReq(
33913 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
33914 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
33915 void* pUserData)
33916{
33917 WDI_EventInfoType wdiEventData;
33918
33919 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33920 "%s: %d Enter ",__func__, __LINE__);
33921 /*------------------------------------------------------------------------
33922 Sanity Check
33923 ------------------------------------------------------------------------*/
33924 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33925 {
33926 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33927 "WDI API call before module is initialized - Fail request");
33928
33929 return WDI_STATUS_E_NOT_ALLOWED;
33930 }
33931
33932 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
33933 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
33934 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
33935 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
33936 wdiEventData.pUserData = pUserData;
33937
33938 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33939}
33940
33941/**
33942 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
33943 Extended Scan Set SSSID Hotlist Request to FW
33944
33945 @param pWDICtx : wdi context
33946 pEventData : indication data
33947
33948 @see
33949 @return none
33950*/
33951WDI_Status
33952WDI_ProcessEXTScanSetSSIDHotlistReq
33953(
33954 WDI_ControlBlockType* pWDICtx,
33955 WDI_EventInfoType* pEventData
33956)
33957{
33958 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
33959 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
33960 wpt_uint8* pSendBuffer = NULL;
33961 wpt_uint16 usSendSize = 0;
33962 wpt_uint16 usDataOffset = 0;
33963 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
33964 int i;
33965
33966 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33967 "%s: %d Enter",__func__, __LINE__);
33968
33969 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33970 ( NULL == pEventData->pCBfnc ))
33971 {
33972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33973 "%s: Invalid parameters", __func__);
33974 WDI_ASSERT(0);
33975 return WDI_STATUS_E_FAILURE;
33976 }
33977
33978 pwdiEXTScanSetSSIDHotlistReqParams =
33979 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
33980 wdiEXTScanSetSSIDHotlistRspCb =
33981 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
33982
33983 /*-----------------------------------------------------------------------
33984 Get message buffer
33985 ! TO DO : proper conversion into the HAL Message Request Format
33986 -----------------------------------------------------------------------*/
33987 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33988 pWDICtx,
33989 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
33990 sizeof(tHalSsidHotlistSetReq),
33991 &pSendBuffer, &usDataOffset,
33992 &usSendSize))||
33993 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
33994 {
33995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33996 "Unable to get send buffer in %s %p %p %p", __func__,
33997 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
33998 wdiEXTScanSetSSIDHotlistRspCb);
33999 WDI_ASSERT(0);
34000 return WDI_STATUS_E_FAILURE;
34001 }
34002 pHalSsidHotlistSetReqParams =
34003 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
34004
34005 pHalSsidHotlistSetReqParams->requestId =
34006 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
34007
34008 pHalSsidHotlistSetReqParams->sessionId =
34009 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
34010
34011 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
34012 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
34013
34014 pHalSsidHotlistSetReqParams->numSsid =
34015 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
34016
34017 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
34018
34019 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
34020 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
34021 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
34022 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
34023
34024 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
34025 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
34026
34027 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
34028 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
34029
34030 pHalSsidHotlistSetReqParams->ssid[i].band =
34031 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
34032 }
34033
34034 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34035 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
34036 pHalSsidHotlistSetReqParams->requestId,
34037 pHalSsidHotlistSetReqParams->sessionId,
34038 pHalSsidHotlistSetReqParams->numSsid,
34039 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
34040
34041 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
34042
34043 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34044 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
34045 __func__, __LINE__, i,
34046 pHalSsidHotlistSetReqParams->ssid[i].ssid,
34047 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
34048 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
34049 pHalSsidHotlistSetReqParams->ssid[i].band);
34050 }
34051
34052 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34053
34054
34055 /*-------------------------------------------------------------------------
34056 Send EXTScan Stop Request to HAL
34057 -------------------------------------------------------------------------*/
34058 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34059 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
34060 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
34061}
34062
34063/**
34064 @brief WDI_EXTScanResetSSIDHotlistReq
34065
34066 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
34067 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
34068 of the Req operation received from the device
34069 pUserData: user data will be passed back with the callback
34070
34071 @return SUCCESS or FAIL
34072*/
34073WDI_Status
34074WDI_EXTScanResetSSIDHotlistReq(
34075 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
34076 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
34077 void* pUserData)
34078{
34079 WDI_EventInfoType wdiEventData;
34080
34081 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34082 "%s: %d",__func__, __LINE__);
34083 /*------------------------------------------------------------------------
34084 Sanity Check
34085 ------------------------------------------------------------------------*/
34086 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34087 {
34088 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34089 "WDI API call before module is initialized - Fail request");
34090
34091 return WDI_STATUS_E_NOT_ALLOWED;
34092 }
34093
34094 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
34095 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
34096 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
34097 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
34098 wdiEventData.pUserData = pUserData;
34099
34100 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34101}
34102
34103/**
34104 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
34105 Extended Scan reset SSID hotlist Request to FW
34106
34107 @param pWDICtx : wdi context
34108 pEventData : indication data
34109
34110 @see
34111 @return none
34112*/
34113WDI_Status
34114WDI_ProcessEXTScanResetSSIDHotlistReq
34115(
34116 WDI_ControlBlockType* pWDICtx,
34117 WDI_EventInfoType* pEventData
34118)
34119{
34120 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
34121 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34122 wpt_uint8* pSendBuffer = NULL;
34123 wpt_uint16 usSendSize = 0;
34124 wpt_uint16 usDataOffset = 0;
34125 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
34126
34127 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34128 "%s: %d",__func__, __LINE__);
34129
34130 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34131 ( NULL == pEventData->pCBfnc ))
34132 {
34133 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34134 "%s: Invalid parameters", __func__);
34135 WDI_ASSERT(0);
34136 return WDI_STATUS_E_FAILURE;
34137 }
34138
34139 pwdiEXTScanResetSSIDHotlistReqParams =
34140 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
34141 wdiEXTScanResetSSIDHotlistRspCb =
34142 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
34143
34144 /*-----------------------------------------------------------------------
34145 Get message buffer
34146 ! TO DO : proper conversion into the HAL Message Request Format
34147 -----------------------------------------------------------------------*/
34148 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34149 pWDICtx,
34150 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
34151 sizeof(tHalSsidHotlistResetReq),
34152 &pSendBuffer, &usDataOffset,
34153 &usSendSize))||
34154 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
34155 {
34156 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34157 "Unable to get send buffer in %s %p %p %p", __func__,
34158 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
34159 wdiEXTScanResetSSIDHotlistRspCb);
34160 WDI_ASSERT(0);
34161 return WDI_STATUS_E_FAILURE;
34162 }
34163 pHalSsidHotlistResetReqParams =
34164 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
34165
34166 pHalSsidHotlistResetReqParams->requestId =
34167 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
34168
34169 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34170
34171 /*-------------------------------------------------------------------------
34172 Send RESET_HOTLIST_SSID Request to HAL
34173 -------------------------------------------------------------------------*/
34174 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34175 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
34176 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
34177}
34178
34179
Dino Mycle41bdc942014-06-10 11:30:24 +053034180/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053034181 @brief WDI_HighPriorityDataInfoInd
34182
34183 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
34184
34185 @return SUCCESS or FAIL
34186*/
34187WDI_Status
34188WDI_HighPriorityDataInfoInd
34189(
34190 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
34191)
34192{
34193 WDI_EventInfoType wdiEventData;
34194
34195 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34196 "%s: %d",__func__, __LINE__);
34197 /*------------------------------------------------------------------------
34198 Sanity Check
34199 ------------------------------------------------------------------------*/
34200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34201 {
34202 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34203 "WDI API call before module is initialized - Fail request");
34204
34205 return WDI_STATUS_E_NOT_ALLOWED;
34206 }
34207
34208 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
34209 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
34210 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
34211 wdiEventData.pCBfnc = NULL;
34212 wdiEventData.pUserData = NULL;
34213
34214 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34215}
34216
34217/**
34218 @brief WDI_ProcessHighPriorityDataInfoInd -
34219 Send WFD indication to FW
34220
34221 @param pWDICtx : wdi context
34222 pEventData : indication data
34223
34224 @see
34225 @return none
34226*/
34227WDI_Status
34228WDI_ProcessHighPriorityDataInfoInd
34229(
34230 WDI_ControlBlockType* pWDICtx,
34231 WDI_EventInfoType* pEventData
34232)
34233{
34234 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
34235 wpt_uint8* pSendBuffer = NULL;
34236 wpt_uint16 usSendSize = 0;
34237 wpt_uint16 usDataOffset = 0;
34238 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
34239 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
34240
34241 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34242 "%s: %d",__func__, __LINE__);
34243
34244 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34245 ( NULL == pEventData->pEventData))
34246 {
34247 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34248 "%s: Invalid parameters", __func__);
34249 WDI_ASSERT(0);
34250 return WDI_STATUS_E_FAILURE;
34251 }
34252
34253 pHighPriorityDataInfoIndParams =
34254 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
34255
34256 /*-----------------------------------------------------------------------
34257 Get message buffer
34258 -----------------------------------------------------------------------*/
34259 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34260 pWDICtx,
34261 WDI_HIGH_PRIORITY_DATA_INFO_IND,
34262 sizeof(tHalHighPriorityDataInfoInd),
34263 &pSendBuffer, &usDataOffset,
34264 &usSendSize))||
34265 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
34266 {
34267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34268 "Unable to get send buffer in %s %p %p", __func__,
34269 pEventData, pHighPriorityDataInfoIndParams);
34270 WDI_ASSERT(0);
34271 return WDI_STATUS_E_FAILURE;
34272 }
34273 pHalHighPriorityDataInfoIndParams =
34274 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
34275
34276 pHalHighPriorityDataInfoIndParams->pause =
34277 pHighPriorityDataInfoIndParams->pause;
34278
34279 pWDICtx->pReqStatusUserData = NULL;
34280 pWDICtx->pfncRspCB = NULL;
34281
34282 /*-------------------------------------------------------------------------
34283 Send HIGH_PRIORITY_DATA_INFO Request to HAL
34284 -------------------------------------------------------------------------*/
34285 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
34286 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
34287}
34288
34289/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034290 @brief Process Extended Scan Start Rsp function (called when a response
34291 is being received over the bus from HAL)
34292
34293 @param pWDICtx: pointer to the WLAN DAL context
34294 pEventData: pointer to the event information structure
34295
34296 @see
34297 @return Result of the function call
34298*/
34299WDI_Status
34300WDI_ProcessEXTScanStartRsp
34301(
34302 WDI_ControlBlockType* pWDICtx,
34303 WDI_EventInfoType* pEventData
34304)
34305{
34306 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
34307
34308 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34309 "%s: %d",__func__, __LINE__);
34310 /*-------------------------------------------------------------------------
34311 Sanity check
34312 -------------------------------------------------------------------------*/
34313 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34314 ( NULL == pEventData->pEventData))
34315 {
34316 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34317 "%s: Invalid parameters", __func__);
34318 WDI_ASSERT(0);
34319 return WDI_STATUS_E_FAILURE;
34320 }
34321
34322 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34323 if ( NULL == wdiEXTScanStartRspCb)
34324 {
34325 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34326 "%s: Callback function Invalid", __func__);
34327 WDI_ASSERT(0);
34328 return WDI_STATUS_E_FAILURE;
34329 }
34330
34331 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
34332
34333 return WDI_STATUS_SUCCESS;
34334}
34335
34336
34337/**
34338 @brief Process Extended Scan Stop Rsp function (called when a response
34339 is being received over the bus from HAL)
34340
34341 @param pWDICtx: pointer to the WLAN DAL context
34342 pEventData: pointer to the event information structure
34343
34344 @see
34345 @return Result of the function call
34346*/
34347WDI_Status
34348WDI_ProcessEXTScanStopRsp
34349(
34350 WDI_ControlBlockType* pWDICtx,
34351 WDI_EventInfoType* pEventData
34352)
34353{
34354 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
34355
34356 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34357 "%s: %d",__func__, __LINE__);
34358
34359
34360 /*-------------------------------------------------------------------------
34361 Sanity check
34362 -------------------------------------------------------------------------*/
34363 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34364 ( NULL == pEventData->pEventData))
34365 {
34366 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34367 "%s: Invalid parameters", __func__);
34368 WDI_ASSERT(0);
34369 return WDI_STATUS_E_FAILURE;
34370 }
34371
34372 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34373 if ( NULL == wdiEXTScanStopRspCb)
34374 {
34375 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34376 "%s: Callback function Invalid", __func__);
34377 WDI_ASSERT(0);
34378 return WDI_STATUS_E_FAILURE;
34379 }
34380
34381 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34382
34383 return WDI_STATUS_SUCCESS;
34384}
34385
34386/**
34387 @brief Process Extended Scan Get Cached Rsp function (called when a response
34388 is being received over the bus from HAL)
34389
34390 @param pWDICtx: pointer to the WLAN DAL context
34391 pEventData: pointer to the event information structure
34392
34393 @see
34394 @return Result of the function call
34395*/
34396WDI_Status
34397WDI_ProcessEXTScanGetCachedResultsRsp
34398(
34399 WDI_ControlBlockType* pWDICtx,
34400 WDI_EventInfoType* pEventData
34401)
34402{
34403 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
34404
34405 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34406 "%s: %d Enter",__func__, __LINE__);
34407
34408
34409 /*-------------------------------------------------------------------------
34410 Sanity check
34411 -------------------------------------------------------------------------*/
34412 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34413 ( NULL == pEventData->pEventData))
34414 {
34415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34416 "%s: Invalid parameters", __func__);
34417 WDI_ASSERT(0);
34418 return WDI_STATUS_E_FAILURE;
34419 }
34420
34421 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
34422 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
34423 {
34424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34425 "%s: Callback function Invalid", __func__);
34426 WDI_ASSERT(0);
34427 return WDI_STATUS_E_FAILURE;
34428 }
34429
34430 wdiEXTScanGetCachedResultsRspCb(
34431 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34432
34433 return WDI_STATUS_SUCCESS;
34434}
34435
34436/**
34437 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
34438 is being received over the bus from HAL)
34439
34440 @param pWDICtx: pointer to the WLAN DAL context
34441 pEventData: pointer to the event information structure
34442
34443 @see
34444 @return Result of the function call
34445*/
34446WDI_Status
34447WDI_ProcessEXTScanGetCapabilitiesRsp
34448(
34449 WDI_ControlBlockType* pWDICtx,
34450 WDI_EventInfoType* pEventData
34451)
34452{
34453 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34454
34455 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34456 "%s: %d ",__func__, __LINE__);
34457
34458
34459 /*-------------------------------------------------------------------------
34460 Sanity check
34461 -------------------------------------------------------------------------*/
34462 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34463 ( NULL == pEventData->pEventData))
34464 {
34465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34466 "%s: Invalid parameters", __func__);
34467 WDI_ASSERT(0);
34468 return WDI_STATUS_E_FAILURE;
34469 }
34470
34471 wdiEXTScanGetCapabilitiesRspCb =
34472 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
34473 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
34474 {
34475 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34476 "%s: Callback function Invalid", __func__);
34477 WDI_ASSERT(0);
34478 return WDI_STATUS_E_FAILURE;
34479 }
34480
34481 wdiEXTScanGetCapabilitiesRspCb(
34482 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34483
34484 return WDI_STATUS_SUCCESS;
34485}
34486
34487/**
34488 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
34489 response is being received over the bus from HAL)
34490
34491 @param pWDICtx: pointer to the WLAN DAL context
34492 pEventData: pointer to the event information structure
34493
34494 @see
34495 @return Result of the function call
34496*/
34497WDI_Status
34498WDI_ProcessEXTScanSetHotlistBSSIDRsp
34499(
34500 WDI_ControlBlockType* pWDICtx,
34501 WDI_EventInfoType* pEventData
34502)
34503{
34504 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34505
34506 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34507 "%s: %d ",__func__, __LINE__);
34508
34509
34510 /*-------------------------------------------------------------------------
34511 Sanity check
34512 -------------------------------------------------------------------------*/
34513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34514 ( NULL == pEventData->pEventData))
34515 {
34516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34517 "%s: Invalid parameters", __func__);
34518 WDI_ASSERT(0);
34519 return WDI_STATUS_E_FAILURE;
34520 }
34521
34522 wdiEXTScanSetBSSIDHotlistRspCb =
34523 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34524 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
34525 {
34526 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34527 "%s: Callback function Invalid", __func__);
34528 WDI_ASSERT(0);
34529 return WDI_STATUS_E_FAILURE;
34530 }
34531
34532 wdiEXTScanSetBSSIDHotlistRspCb(
34533 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34534
34535 return WDI_STATUS_SUCCESS;
34536}
34537
34538/**
34539 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34540 when a response is being received over the bus from HAL)
34541
34542 @param pWDICtx: pointer to the WLAN DAL context
34543 pEventData: pointer to the event information structure
34544
34545 @see
34546 @return Result of the function call
34547*/
34548WDI_Status
34549WDI_ProcessEXTScanResetHotlistBSSIDRsp
34550(
34551 WDI_ControlBlockType* pWDICtx,
34552 WDI_EventInfoType* pEventData
34553)
34554{
34555 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34556
34557 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34558 "%s: %d ",__func__, __LINE__);
34559
34560
34561 /*-------------------------------------------------------------------------
34562 Sanity check
34563 -------------------------------------------------------------------------*/
34564 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34565 ( NULL == pEventData->pEventData))
34566 {
34567 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34568 "%s: Invalid parameters", __func__);
34569 WDI_ASSERT(0);
34570 return WDI_STATUS_E_FAILURE;
34571 }
34572
34573 wdiEXTScanResetBSSIDHotlistRspCb =
34574 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34575 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
34576 {
34577 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34578 "%s: Callback function Invalid", __func__);
34579 WDI_ASSERT(0);
34580 return WDI_STATUS_E_FAILURE;
34581 }
34582
34583 wdiEXTScanResetBSSIDHotlistRspCb(
34584 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34585
34586 return WDI_STATUS_SUCCESS;
34587}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034588
34589/**
34590 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
34591 response is being received over the bus from HAL)
34592
34593 @param pWDICtx: pointer to the WLAN DAL context
34594 pEventData: pointer to the event information structure
34595
34596 @see
34597 @return Result of the function call
34598*/
34599WDI_Status
34600WDI_ProcessEXTScanSetHotlistSSIDRsp
34601(
34602 WDI_ControlBlockType* pWDICtx,
34603 WDI_EventInfoType* pEventData
34604)
34605{
34606 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
34607
34608 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34609 "%s: %d ",__func__, __LINE__);
34610
34611
34612 /*-------------------------------------------------------------------------
34613 Sanity check
34614 -------------------------------------------------------------------------*/
34615 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34616 ( NULL == pEventData->pEventData))
34617 {
34618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34619 "%s: Invalid parameters", __func__);
34620 WDI_ASSERT(0);
34621 return WDI_STATUS_E_FAILURE;
34622 }
34623
34624 wdiEXTScanSetSSIDHotlistRspCb =
34625 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34626 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
34627 {
34628 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34629 "%s: Callback function Invalid", __func__);
34630 WDI_ASSERT(0);
34631 return WDI_STATUS_E_FAILURE;
34632 }
34633
34634 wdiEXTScanSetSSIDHotlistRspCb(
34635 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34636
34637 return WDI_STATUS_SUCCESS;
34638}
34639
34640
34641/**
34642 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
34643 when a response is being received over the bus from HAL)
34644
34645 @param pWDICtx: pointer to the WLAN DAL context
34646 pEventData: pointer to the event information structure
34647
34648 @see
34649 @return Result of the function call
34650*/
34651WDI_Status
34652WDI_ProcessEXTScanResetHotlistSSIDRsp
34653(
34654 WDI_ControlBlockType* pWDICtx,
34655 WDI_EventInfoType* pEventData
34656)
34657{
34658 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
34659
34660 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34661 "%s: %d ",__func__, __LINE__);
34662
34663
34664 /*-------------------------------------------------------------------------
34665 Sanity check
34666 -------------------------------------------------------------------------*/
34667 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34668 ( NULL == pEventData->pEventData))
34669 {
34670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34671 "%s: Invalid parameters", __func__);
34672 WDI_ASSERT(0);
34673 return WDI_STATUS_E_FAILURE;
34674 }
34675
34676 wdiEXTScanResetSSIDHotlistRspCb =
34677 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
34678 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
34679 {
34680 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34681 "%s: Callback function Invalid", __func__);
34682 WDI_ASSERT(0);
34683 return WDI_STATUS_E_FAILURE;
34684 }
34685
34686 wdiEXTScanResetSSIDHotlistRspCb(
34687 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
34688
34689 return WDI_STATUS_SUCCESS;
34690}
Dino Mycle41bdc942014-06-10 11:30:24 +053034691#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053034692
34693/**
34694 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
34695
34696 @param None
34697
34698 @see
34699
34700 @return Status of the request
34701*/
34702WDI_Status
34703WDI_SetSpoofMacAddrReq
34704(
34705 WDI_SpoofMacAddrInfoType* pWdiReq,
34706 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
34707 void* pUserData)
34708{
34709 WDI_EventInfoType wdiEventData;
34710
34711 /*-------------------------------------------------------------------------
34712 Sanity Check
34713 ------------------------------------------------------------------------*/
34714 if (eWLAN_PAL_FALSE == gWDIInitialized)
34715 {
34716 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34717 "WDI API call before module is initialized - Fail request!");
34718
34719 return WDI_STATUS_E_NOT_ALLOWED;
34720 }
34721
34722 /*-------------------------------------------------------------------------
34723 Fill in Event data and post to the Main FSM
34724 ------------------------------------------------------------------------*/
34725 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
34726 wdiEventData.pEventData = pWdiReq;
34727 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
34728 wdiEventData.pCBfnc = spoofMacAddrRspCb;
34729 wdiEventData.pUserData = pUserData;
34730
34731 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34732}
34733
34734/**
34735 @brief Process SpoofMacAddr Request
34736
34737 @param pWDICtx: pointer to the WLAN DAL context
34738 pEventData: pointer to the event information structure
34739
34740 @see
34741 @return Result of the function call
34742*/
34743WDI_Status
34744WDI_ProcessSpoofMacAddrReq
34745(
34746 WDI_ControlBlockType* pWDICtx,
34747 WDI_EventInfoType* pEventData
34748)
34749{
34750 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
34751 wpt_uint8* pSendBuffer = NULL;
34752 wpt_uint16 usDataOffset = 0;
34753 wpt_uint16 usSendSize = 0;
34754 WDI_Status wdiStatus;
34755 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
34756 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
34757
34758
34759 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34760 "%s: %d Enter",__func__, __LINE__);
34761
34762 /*-------------------------------------------------------------------------
34763 Sanity check
34764 -------------------------------------------------------------------------*/
34765 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34766 ( NULL == pEventData->pEventData))
34767 {
34768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34769 "%s: Invalid parameters", __func__);
34770 WDI_ASSERT(0);
34771 return WDI_STATUS_E_FAILURE;
34772 }
34773 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
34774
34775 /*-----------------------------------------------------------------------
34776 Get message buffer
34777 -----------------------------------------------------------------------*/
34778 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34779 WDI_SPOOF_MAC_ADDR_REQ,
34780 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
34781 &pSendBuffer, &usDataOffset, &usSendSize))||
34782 (usSendSize < (usDataOffset +
34783 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
34784 {
34785 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34786 "Unable to get send buffer in Process Spoof Mac Addr Req");
34787 WDI_ASSERT(0);
34788 return WDI_STATUS_E_FAILURE;
34789 }
34790
34791 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
34792 wdiSpoofMacAddr->macAddr,
34793 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
34794
34795 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
34796
34797 wpalMemoryCopy( pSendBuffer+usDataOffset,
34798 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
34799 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
34800
34801 /*-------------------------------------------------------------------------
34802 Send Suspend Request to HAL
34803 -------------------------------------------------------------------------*/
34804 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34805 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
34806
34807 return wdiStatus;
34808}
34809
34810/**
34811 @brief Process Spoof Mac Address Rsp function
34812 (called when a response is being received over the bus from HAL)
34813
34814 @param pWDICtx: pointer to the WLAN DAL context
34815 pEventData: pointer to the event information structure
34816
34817 @see
34818 @return Result of the function call
34819*/
34820WDI_Status
34821WDI_ProcessSpoofMacAddrRsp
34822(
34823 WDI_ControlBlockType* pWDICtx,
34824 WDI_EventInfoType* pEventData
34825)
34826{
34827 tMacSpoofedScanResp halRsp;
34828 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
34829 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
34830
34831 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34832 "%s: %d Enter",__func__, __LINE__);
34833
34834 /*-------------------------------------------------------------------------
34835 Sanity check
34836 -------------------------------------------------------------------------*/
34837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34838 ( NULL == pEventData->pEventData))
34839 {
34840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34841 "%s: Invalid parameters", __func__);
34842 WDI_ASSERT(0);
34843 return WDI_STATUS_E_FAILURE;
34844 }
34845 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
34846
34847 /*-------------------------------------------------------------------------
34848 Extract response and send it to UMAC
34849 -------------------------------------------------------------------------*/
34850 wpalMemoryCopy( &halRsp,
34851 pEventData->pEventData, sizeof(halRsp));
34852
34853 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34854
34855 /*Notify UMAC*/
34856 wdiSpoofMacAddrRspCb(
34857 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
34858
34859 return WDI_STATUS_SUCCESS;
34860}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053034861
34862/**
Siddharth Bhal64246172015-02-27 01:04:37 +053034863 @brief Process Get Frame Log Rsp function
34864 (called when a response is being received over the bus from HAL)
34865
34866 @param pWDICtx: pointer to the WLAN DAL context
34867 pEventData: pointer to the event information structure
34868
34869 @see
34870 @return Result of the function call
34871*/
34872WDI_Status
34873WDI_ProcessGetFrameLogRsp
34874(
34875 WDI_ControlBlockType* pWDICtx,
34876 WDI_EventInfoType* pEventData
34877)
34878{
34879 tGetFrameLogResp halRsp;
34880 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
34881 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
34882
34883 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34884 "%s: %d Enter",__func__, __LINE__);
34885
34886 /*-------------------------------------------------------------------------
34887 Sanity check
34888 -------------------------------------------------------------------------*/
34889 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34890 ( NULL == pEventData->pEventData))
34891 {
34892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34893 "%s: Invalid parameters", __func__);
34894 WDI_ASSERT(0);
34895 return WDI_STATUS_E_FAILURE;
34896 }
34897
34898 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
34899
34900 /*-------------------------------------------------------------------------
34901 Extract response and send it to UMAC
34902 -------------------------------------------------------------------------*/
34903 wpalMemoryCopy( &halRsp,
34904 pEventData->pEventData, sizeof(halRsp));
34905
34906 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
34907
34908 /*Notify UMAC*/
34909 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
34910
34911 return WDI_STATUS_SUCCESS;
34912}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053034913
34914/**
34915 @brief Process RssiMonitorStartReq Request
34916
34917 @param pWDICtx: pointer to the WLAN DAL context
34918 pEventData: pointer to the event information structure
34919
34920 @see
34921 @return Result of the function call
34922*/
34923WDI_Status
34924WDI_ProcessRssiMonitorStartReq
34925(
34926 WDI_ControlBlockType* pWDICtx,
34927 WDI_EventInfoType* pEventData
34928)
34929{
34930 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
34931 wpt_uint8* pSendBuffer = NULL;
34932 wpt_uint16 usDataOffset = 0;
34933 wpt_uint16 usSendSize = 0;
34934 WDI_Status wdiStatus;
34935 tHalStartRssimonitoringReq halStartRssiMonitorReq;
34936 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
34937
34938
34939 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34940 "%s: %d Enter",__func__, __LINE__);
34941
34942 /*-------------------------------------------------------------------------
34943 Sanity check
34944 ------------------------------------------------------------------------*/
34945 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34946 ( NULL == pEventData->pEventData))
34947 {
34948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34949 "%s: Invalid parameters", __func__);
34950 WDI_ASSERT(0);
34951 return WDI_STATUS_E_FAILURE;
34952 }
34953
34954 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
34955
34956 /*-----------------------------------------------------------------------
34957 Get message buffer
34958 -----------------------------------------------------------------------*/
34959 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
34960 WDI_START_RSSI_MONITOR_REQ,
34961 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
34962 &pSendBuffer, &usDataOffset, &usSendSize))||
34963 (usSendSize < (usDataOffset +
34964 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
34965 {
34966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
34967 "Unable to get send buffer in GetFrameLog Req");
34968 WDI_ASSERT(0);
34969 return WDI_STATUS_E_FAILURE;
34970 }
34971
34972 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
34973 wdiRssiMonitorStartReq->requestId;
34974
34975 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
34976 wdiRssiMonitorStartReq->minRssi;
34977
34978 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
34979 wdiRssiMonitorStartReq->maxRssi;
34980 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
34981 &(wdiRssiMonitorStartReq->currentBssId),
34982 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
34983
34984 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
34985
34986 wpalMemoryCopy(pSendBuffer+usDataOffset,
34987 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
34988 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
34989
34990 /*-------------------------------------------------------------------------
34991 Send Suspend Request to HAL
34992 ------------------------------------------------------------------------*/
34993 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34994 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
34995
34996 return wdiStatus;
34997}
34998
34999
35000/**
35001 @brief Process FWLoggingInit Request
35002
35003 @param pWDICtx: pointer to the WLAN DAL context
35004 pEventData: pointer to the event information structure
35005
35006 @see
35007 @return Result of the function call
35008*/
35009WDI_Status
35010WDI_ProcessRssiMonitorStopReq
35011(
35012 WDI_ControlBlockType* pWDICtx,
35013 WDI_EventInfoType* pEventData
35014)
35015{
35016 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
35017 wpt_uint8* pSendBuffer = NULL;
35018 wpt_uint16 usDataOffset = 0;
35019 wpt_uint16 usSendSize = 0;
35020 WDI_Status wdiStatus;
35021 tHalStopRssimonitoringReq halStopRssiMonitorReq;
35022 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
35023
35024
35025 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35026 "%s: %d Enter",__func__, __LINE__);
35027
35028 /*-------------------------------------------------------------------------
35029 Sanity check
35030 ------------------------------------------------------------------------*/
35031 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35032 ( NULL == pEventData->pEventData))
35033 {
35034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35035 "%s: Invalid parameters", __func__);
35036 WDI_ASSERT(0);
35037 return WDI_STATUS_E_FAILURE;
35038 }
35039 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
35040
35041 /*-----------------------------------------------------------------------
35042 Get message buffer
35043 -----------------------------------------------------------------------*/
35044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35045 WDI_STOP_RSSI_MONITOR_REQ,
35046 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
35047 &pSendBuffer, &usDataOffset, &usSendSize))||
35048 (usSendSize < (usDataOffset +
35049 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
35050 {
35051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35052 "Unable to get send buffer in GetFrameLog Req");
35053 WDI_ASSERT(0);
35054 return WDI_STATUS_E_FAILURE;
35055 }
35056
35057 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
35058 wdiRssiMonitorStopReq->requestId;
35059
35060 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
35061 &(wdiRssiMonitorStopReq->currentBssId),
35062 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
35063
35064 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
35065
35066 wpalMemoryCopy(pSendBuffer+usDataOffset,
35067 &halStopRssiMonitorReq.stopRssiMonitoringParams,
35068 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
35069
35070 /*-------------------------------------------------------------------------
35071 Send Suspend Request to HAL
35072 ------------------------------------------------------------------------*/
35073 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35074 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
35075
35076 return wdiStatus;
35077}
35078
35079/**
35080 @brief Process MgmtFrame Logging Init Rsp function
35081 (called when a response is being received over the bus from HAL)
35082
35083 @param pWDICtx: pointer to the WLAN DAL context
35084 pEventData: pointer to the event information structure
35085
35086 @see
35087 @return Result of the function call
35088*/
35089WDI_Status
35090WDI_ProcessRssiMonitorStopRsp
35091(
35092 WDI_ControlBlockType* pWDICtx,
35093 WDI_EventInfoType* pEventData
35094)
35095{
35096 tHalStopRssimonitoringRspParams halRsp;
35097 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
35098 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
35099
35100 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35101 "%s: %d Enter",__func__, __LINE__);
35102
35103 /*-------------------------------------------------------------------------
35104 Sanity check
35105 -------------------------------------------------------------------------*/
35106 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35107 ( NULL == pEventData->pEventData))
35108 {
35109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35110 "%s: Invalid parameters", __func__);
35111 WDI_ASSERT(0);
35112 return WDI_STATUS_E_FAILURE;
35113 }
35114 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35115
35116 /*-------------------------------------------------------------------------
35117 Extract response and send it to UMAC
35118 -------------------------------------------------------------------------*/
35119 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35120
35121 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35122
35123 /*Notify UMAC*/
35124 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
35125
35126 return WDI_STATUS_SUCCESS;
35127}
35128
35129
35130/**
35131 @brief Process MgmtFrame Logging Init Rsp function
35132 (called when a response is being received over the bus from HAL)
35133
35134 @param pWDICtx: pointer to the WLAN DAL context
35135 pEventData: pointer to the event information structure
35136
35137 @see
35138 @return Result of the function call
35139*/
35140WDI_Status
35141WDI_ProcessRssiMonitorStartRsp
35142(
35143 WDI_ControlBlockType* pWDICtx,
35144 WDI_EventInfoType* pEventData
35145)
35146{
35147 tHalStartRssimonitoringRspParams halRsp;
35148 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
35149 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
35150
35151 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35152 "%s: %d Enter",__func__, __LINE__);
35153
35154 /*-------------------------------------------------------------------------
35155 Sanity check
35156 -------------------------------------------------------------------------*/
35157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35158 ( NULL == pEventData->pEventData))
35159 {
35160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35161 "%s: Invalid parameters", __func__);
35162 WDI_ASSERT(0);
35163 return WDI_STATUS_E_FAILURE;
35164 }
35165 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
35166
35167 /*-------------------------------------------------------------------------
35168 Extract response and send it to UMAC
35169 -------------------------------------------------------------------------*/
35170 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35171
35172 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
35173
35174 /*Notify UMAC*/
35175 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
35176
35177 return WDI_STATUS_SUCCESS;
35178}
35179
Siddharth Bhal64246172015-02-27 01:04:37 +053035180/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035181 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053035182
35183 @param pWDICtx: pointer to the WLAN DAL context
35184 pEventData: pointer to the event information structure
35185
35186 @see
35187 @return Result of the function call
35188*/
35189WDI_Status
35190WDI_ProcessGetFrameLogReq
35191(
35192 WDI_ControlBlockType* pWDICtx,
35193 WDI_EventInfoType* pEventData
35194)
35195{
35196 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
35197 wpt_uint8* pSendBuffer = NULL;
35198 wpt_uint16 usDataOffset = 0;
35199 wpt_uint16 usSendSize = 0;
35200 WDI_Status wdiStatus;
35201 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035202 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053035203
35204
35205 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35206 "%s: %d Enter",__func__, __LINE__);
35207
35208 /*-------------------------------------------------------------------------
35209 Sanity check
35210 ------------------------------------------------------------------------*/
35211 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35212 ( NULL == pEventData->pEventData))
35213 {
35214 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35215 "%s: Invalid parameters", __func__);
35216 WDI_ASSERT(0);
35217 return WDI_STATUS_E_FAILURE;
35218 }
35219
35220 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
35221
35222 /*-----------------------------------------------------------------------
35223 Get message buffer
35224 -----------------------------------------------------------------------*/
35225 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35226 WDI_GET_FRAME_LOG_REQ,
35227 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
35228 &pSendBuffer, &usDataOffset, &usSendSize))||
35229 (usSendSize < (usDataOffset +
35230 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
35231 {
35232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35233 "Unable to get send buffer in GetFrameLog Req");
35234 WDI_ASSERT(0);
35235 return WDI_STATUS_E_FAILURE;
35236 }
35237
35238 halGetFrameLogReq.tGetFrameLogReqParams.flags =
35239 wdiGetFrameLogReq->flags;
35240
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035241 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053035242
35243 wpalMemoryCopy( pSendBuffer+usDataOffset,
35244 &halGetFrameLogReq.tGetFrameLogReqParams,
35245 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
35246
35247 /*-------------------------------------------------------------------------
35248 Send Suspend Request to HAL
35249 ------------------------------------------------------------------------*/
35250 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35251 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
35252
35253 return wdiStatus;
35254}
35255/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035256 @brief Process MgmtFrame Logging Init Rsp function
35257 (called when a response is being received over the bus from HAL)
35258
35259 @param pWDICtx: pointer to the WLAN DAL context
35260 pEventData: pointer to the event information structure
35261
35262 @see
35263 @return Result of the function call
35264*/
35265WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035266WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035267(
35268 WDI_ControlBlockType* pWDICtx,
35269 WDI_EventInfoType* pEventData
35270)
35271{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035272 tFWLoggingInitResp halRsp;
35273 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
35274 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035275
35276 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35277 "%s: %d Enter",__func__, __LINE__);
35278
35279 /*-------------------------------------------------------------------------
35280 Sanity check
35281 -------------------------------------------------------------------------*/
35282 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35283 ( NULL == pEventData->pEventData))
35284 {
35285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35286 "%s: Invalid parameters", __func__);
35287 WDI_ASSERT(0);
35288 return WDI_STATUS_E_FAILURE;
35289 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035290 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035291
35292 /*-------------------------------------------------------------------------
35293 Extract response and send it to UMAC
35294 -------------------------------------------------------------------------*/
35295 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35296
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035297 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053035298 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035299
35300 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035301 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035302
35303 return WDI_STATUS_SUCCESS;
35304}
35305
c_manjeecfd1efb2015-09-25 19:32:34 +053035306/**
35307 @brief Process Fwr Mem Dump Rsp function
35308 (called when a response is being received over the bus from HAL)
35309
35310 @param pWDICtx: pointer to the WLAN DAL context
35311 pEventData: pointer to the event information structure
35312
35313 @see
35314 @return Result of the function call
35315*/
35316WDI_Status
35317 WDI_ProcessFwrMemDumpRsp
35318
35319(
35320 WDI_ControlBlockType* pWDICtx,
35321 WDI_EventInfoType* pEventData
35322)
35323{
35324 tHalFwMemoryDumpRespMsg halRsp;
35325 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35326 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
35327
35328 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35329 "%s: %d Enter",__func__, __LINE__);
35330
35331 /*-------------------------------------------------------------------------
35332 Sanity check
35333 -------------------------------------------------------------------------*/
35334 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35335 ( NULL == pEventData->pEventData))
35336 {
35337 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35338 "%s: Invalid parameters", __func__);
35339 WDI_ASSERT(0);
35340 return WDI_STATUS_E_FAILURE;
35341 }
35342 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
35343
35344 /*-------------------------------------------------------------------------
35345 Extract response and send it to UMAC
35346 -------------------------------------------------------------------------*/
c_manjee107ae7a2015-11-13 22:28:50 +053035347 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp.tFwMemoryDumpResp));
c_manjeecfd1efb2015-09-25 19:32:34 +053035348
35349 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
35350
35351 /*Notify UMAC*/
35352 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
35353
35354 return WDI_STATUS_SUCCESS;
35355}
35356
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035357WDI_Status
35358WDI_ProcessFWLoggingDXEdoneInd
35359(
35360 WDI_ControlBlockType* pWDICtx,
35361 WDI_EventInfoType* pEventData
35362)
35363{
35364 wpt_uint8* pSendBuffer = NULL;
35365 wpt_uint16 usDataOffset = 0;
35366 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035367 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053035368 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035369 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035370 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035371
35372
35373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
35374
35375 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35376 "%s", __func__);
35377
35378 /*-------------------------------------------------------------------------
35379 Sanity check
35380 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035381 if (NULL == pEventData ||
35382 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035383 {
35384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35385 "%s: Invalid parameters", __func__);
35386 WDI_ASSERT(0);
35387 return WDI_STATUS_E_FAILURE;
35388 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035389 pLogType = (wpt_uint32 *)pEventData->pEventData;
35390
Mihir Shete5affadc2015-05-29 20:54:57 +053035391 pLoggingSession = (WDI_DS_LoggingSessionType *)
35392 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
35393 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035394 /*-----------------------------------------------------------------------
35395 Get message buffer
35396 -----------------------------------------------------------------------*/
35397
35398 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35399 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053035400 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035401 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053035402 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035403 {
35404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35405 "Unable to get send buffer in RTS CTS ind %p ",
35406 pEventData);
35407 WDI_ASSERT(0);
35408 return WDI_STATUS_E_FAILURE;
35409 }
35410 FWLoggingDxeDoneIndParams =
35411 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
35412
35413 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053035414 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035415 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053035416
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053035417 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053035418 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053035419
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035420 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053035421 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035422 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
35423
35424 pWDICtx->pReqStatusUserData = NULL;
35425 pWDICtx->pfncRspCB = NULL;
35426 /*-------------------------------------------------------------------------
35427 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
35428 -------------------------------------------------------------------------*/
35429 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35430 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35431}
35432
Sachin Ahuja715aafc2015-07-21 23:35:10 +053035433
35434/**
35435 @brief Process Fatal Event Logs Rsp function
35436 (called when a response is being received over the bus from HAL)
35437
35438 @param pWDICtx: pointer to the WLAN DAL context
35439 pEventData: pointer to the event information structure
35440
35441 @see
35442 @return Result of the function call
35443*/
35444WDI_Status
35445WDI_ProcessFatalEventLogsRsp
35446(
35447 WDI_ControlBlockType* pWDICtx,
35448 WDI_EventInfoType* pEventData
35449)
35450{
35451 tHalFatalEventLoggingRspParams halRsp;
35452 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35453 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
35454
35455 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35456 "%s: %d Enter",__func__, __LINE__);
35457
35458 /*-------------------------------------------------------------------------
35459 Sanity check
35460 -------------------------------------------------------------------------*/
35461 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35462 ( NULL == pEventData->pEventData))
35463 {
35464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35465 "%s: Invalid parameters", __func__);
35466 WDI_ASSERT(0);
35467 return WDI_STATUS_E_FAILURE;
35468 }
35469 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
35470
35471 /*-------------------------------------------------------------------------
35472 Extract response and send it to UMAC
35473 -------------------------------------------------------------------------*/
35474 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
35475
35476 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
35477
35478 /*Notify UMAC*/
35479 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
35480 pWDICtx->pRspCBUserData);
35481
35482 return WDI_STATUS_SUCCESS;
35483}
35484
35485/**
35486 @brief Process FatalEventLogs Request
35487
35488 @param pWDICtx: pointer to the WLAN DAL context
35489 pEventData: pointer to the event information structure
35490
35491 @see
35492 @return Result of the function call
35493*/
35494
35495WDI_Status
35496WDI_ProcessFatalEventLogsReq
35497
35498(
35499 WDI_ControlBlockType* pWDICtx,
35500 WDI_EventInfoType* pEventData
35501)
35502{
35503 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
35504 wpt_uint8* pSendBuffer = NULL;
35505 wpt_uint16 usDataOffset = 0;
35506 wpt_uint16 usSendSize = 0;
35507 WDI_Status wdiStatus;
35508 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
35509 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
35510
35511
35512 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35513 "%s: %d Enter",__func__, __LINE__);
35514
35515 /*-------------------------------------------------------------------------
35516 Sanity check
35517 ------------------------------------------------------------------------*/
35518 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35519 ( NULL == pEventData->pEventData))
35520 {
35521 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35522 "%s: Invalid parameters", __func__);
35523 WDI_ASSERT(0);
35524 return WDI_STATUS_E_FAILURE;
35525 }
35526 wdiFatalEventLogsReq =
35527 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
35528
35529 /*-----------------------------------------------------------------------
35530 Get message buffer
35531 -----------------------------------------------------------------------*/
35532 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35533 WDI_FATAL_EVENT_LOGGING_REQ,
35534 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
35535 &pSendBuffer, &usDataOffset, &usSendSize))||
35536 (usSendSize < (usDataOffset +
35537 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
35538 {
35539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35540 "Unable to get send buffer in Fatal Event Req");
35541 WDI_ASSERT(0);
35542 return WDI_STATUS_E_FAILURE;
35543 }
35544 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
35545 wdiFatalEventLogsReq->reason_code;
35546
35547 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
35548
35549 wpalMemoryCopy( pSendBuffer+usDataOffset,
35550 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
35551 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
35552
35553 /*-------------------------------------------------------------------------
35554 Send Mgmt Logging Init Request to HAL
35555 ------------------------------------------------------------------------*/
35556 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35557 wdiFatalEventLogsRspCb, pEventData->pUserData,
35558 WDI_FATAL_EVENT_LOGGING_RSP);
35559
35560 return wdiStatus;
35561
35562
35563}
35564
35565
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035566/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035567 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035568
35569 @param pWDICtx: pointer to the WLAN DAL context
35570 pEventData: pointer to the event information structure
35571
35572 @see
35573 @return Result of the function call
35574*/
35575WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035576WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035577(
35578 WDI_ControlBlockType* pWDICtx,
35579 WDI_EventInfoType* pEventData
35580)
35581{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035582 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035583 wpt_uint8* pSendBuffer = NULL;
35584 wpt_uint16 usDataOffset = 0;
35585 wpt_uint16 usSendSize = 0;
35586 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035587 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
35588 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035589
35590
35591 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35592 "%s: %d Enter",__func__, __LINE__);
35593
35594 /*-------------------------------------------------------------------------
35595 Sanity check
35596 ------------------------------------------------------------------------*/
35597 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35598 ( NULL == pEventData->pEventData))
35599 {
35600 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35601 "%s: Invalid parameters", __func__);
35602 WDI_ASSERT(0);
35603 return WDI_STATUS_E_FAILURE;
35604 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035605 wdiFWLoggingInitReq =
35606 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035607
35608 /*-----------------------------------------------------------------------
35609 Get message buffer
35610 -----------------------------------------------------------------------*/
35611 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035612 WDI_FW_LOGGING_INIT_REQ,
35613 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035614 &pSendBuffer, &usDataOffset, &usSendSize))||
35615 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035616 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035617 {
35618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35619 "Unable to get send buffer in Process Mgmt Logging Init Req");
35620 WDI_ASSERT(0);
35621 return WDI_STATUS_E_FAILURE;
35622 }
35623
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035624 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
35625 wdiFWLoggingInitReq->enableFlag;
35626 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
35627 wdiFWLoggingInitReq->frameSize;
35628 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
35629 wdiFWLoggingInitReq->frameType;
35630 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
35631 wdiFWLoggingInitReq->bufferMode;
35632 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
35633 wdiFWLoggingInitReq->continuousFrameLogging;
35634 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
35635 wdiFWLoggingInitReq->minLogBufferSize;
35636 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
35637 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053035638 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
35639 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
35640 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
35641 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035642
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035643 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035644
35645 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035646 &halFWLoggingInitReq.tFWLoggingInitReqParams,
35647 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035648
35649 /*-------------------------------------------------------------------------
35650 Send Mgmt Logging Init Request to HAL
35651 ------------------------------------------------------------------------*/
35652 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053035653 wdiFWLoggingInitRspCb, pEventData->pUserData,
35654 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053035655
35656 return wdiStatus;
35657}
35658
35659/**
c_manjeecfd1efb2015-09-25 19:32:34 +053035660 @brief Process FwrMemDumpReq Request
35661
35662 @param pWDICtx: pointer to the WLAN DAL context
35663 pEventData: pointer to the event information structure
35664
35665 @see
35666 @return Result of the function call
35667*/
35668WDI_Status
35669 WDI_ProcessFwrMemDumpReq
35670
35671(
35672 WDI_ControlBlockType* pWDICtx,
35673 WDI_EventInfoType* pEventData
35674)
35675{
35676 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
35677 wpt_uint8* pSendBuffer = NULL;
35678 wpt_uint16 usDataOffset = 0;
35679 wpt_uint16 usSendSize = 0;
35680 WDI_Status wdiStatus;
35681 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
35682 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
35683
35684 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35685 "%s: %d Enter",__func__, __LINE__);
35686
35687 /*-------------------------------------------------------------------------
35688 Sanity check
35689 ------------------------------------------------------------------------*/
35690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35691 ( NULL == pEventData->pEventData))
35692 {
35693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35694 "%s: Invalid parameters", __func__);
35695 WDI_ASSERT(0);
35696 return WDI_STATUS_E_FAILURE;
35697 }
35698
35699 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
35700
35701 /*-----------------------------------------------------------------------
35702 Get message buffer
35703 -----------------------------------------------------------------------*/
35704 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35705 WDI_FWR_MEM_DUMP_REQ,
35706 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
35707 &pSendBuffer, &usDataOffset, &usSendSize))||
35708 (usSendSize < (usDataOffset +
35709 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
35710 {
35711 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35712 "Unable to get send buffer in Process Fwr Mem Dump Req");
35713 WDI_ASSERT(0);
35714 return WDI_STATUS_E_FAILURE;
35715 }
35716
35717 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
35718 wpalMemoryCopy( pSendBuffer+usDataOffset,
35719 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
35720 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
35721
35722 /*-------------------------------------------------------------------------
35723 Send Fwr Mem Dump Request to HAL
35724 ------------------------------------------------------------------------*/
35725 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35726 wdiFwrMemDumpRspCb, pEventData->pUserData,
35727 WDI_FWR_MEM_DUMP_RSP);
35728 return wdiStatus;
35729}
35730
35731/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053035732 @brief WDI_EncryptMsgReq
35733
35734 @param pwdiEncryptMsgParams: Req parameter for the FW
35735 wdiEncryptMsgCbRsp: callback for passing back the response
35736 of the Req operation received from the device
35737 pUserData: user data will be passed back with the callback
35738
35739 @return SUCCESS or FAIL
35740*/
35741WDI_Status
35742WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
35743 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
35744 void* pUserData)
35745{
35746 WDI_EventInfoType wdiEventData;
35747
35748 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35749 "%s: %d Enter" ,__func__, __LINE__);
35750 /*------------------------------------------------------------------------
35751 Sanity Check
35752 ------------------------------------------------------------------------*/
35753 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35754 {
35755 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35756 "WDI API call before module is initialized - Fail request");
35757
35758 return WDI_STATUS_E_NOT_ALLOWED;
35759 }
35760
35761 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
35762 wdiEventData.pEventData = pwdiEncryptMsgParams;
35763 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
35764 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
35765 wdiEventData.pUserData = pUserData;
35766
35767 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35768}
35769
35770/*
35771 * FUNCTION: WDI_ProcessEncryptMsgReq
35772 * Request to WDI to encrypt the given message.
35773 *
35774 * @param pWDICtx: pointer to the WLAN DAL context
35775 * pEventData: pointer to the event information structure
35776 *
35777 * @return Result of the function call
35778 */
35779
35780WDI_Status
35781WDI_ProcessEncryptMsgReq
35782(
35783 WDI_ControlBlockType* pWDICtx,
35784 WDI_EventInfoType* pEventData
35785)
35786{
35787 wpt_uint8* pSendBuffer = NULL;
35788 wpt_uint16 usDataOffset = 0;
35789 wpt_uint16 usSendSize = 0;
35790 WDI_EncryptMsgRspCb* wdiEncMsgCb;
35791 tSetEncryptedDataParams *pHalEncryptDataReq;
35792 wpt_pkt80211 *pkt = NULL;
35793
35794 /*-------------------------------------------------------------------------
35795 Sanity check
35796 -------------------------------------------------------------------------*/
35797 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
35798 ( NULL == pEventData->pCBfnc ) )
35799 {
35800 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35801 "%s: Invalid parameters", __func__);
35802 WDI_ASSERT(0);
35803 return WDI_STATUS_E_FAILURE;
35804 }
35805
35806 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
35807
35808 /*-----------------------------------------------------------------------
35809 Get message buffer
35810 -----------------------------------------------------------------------*/
35811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35812 pWDICtx, WDI_ENCRYPT_MSG_REQ,
35813 sizeof(tSetEncryptedDataReqMsg),
35814 &pSendBuffer, &usDataOffset, &usSendSize)) ||
35815 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
35816 {
35817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35818 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
35819 pEventData);
35820 WDI_ASSERT(0);
35821 return WDI_STATUS_E_FAILURE;
35822 }
35823
35824 pWDICtx->wdiReqStatusCB = NULL;
35825 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35826 pkt = (wpt_pkt80211 *)pEventData->pEventData;
35827
35828 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
35829 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
35830
35831 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
35832
35833 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
35834 pkt->encParams.keyParams.key[0].keyId;
35835
35836 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
35837 &pkt->encParams.keyParams.key[0].key[0], 16);
35838
35839 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
35840
35841 pHalEncryptDataReq->data.length = pkt->data.length;
35842 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
35843
35844 /*-------------------------------------------------------------------------
35845 Send Get STA Request to HAL
35846 -------------------------------------------------------------------------*/
35847 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
35848 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
35849}
35850
35851/*
35852 * FUNCTION: WDI_ProcessEncryptMsgRsp
35853 * Receives the encrypted message from the firmware
35854 * @param pWDICtx: pointer to the WLAN DAL context
35855 * pEventData: pointer to the event information structure
35856 *
35857 * @return Result of the function call
35858 */
35859WDI_Status
35860WDI_ProcessEncryptMsgRsp
35861(
35862 WDI_ControlBlockType* pWDICtx,
35863 WDI_EventInfoType* pEventData
35864)
35865{
35866 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
35867 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
35868
35869 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35870 "In %s",__func__);
35871
35872 /*-------------------------------------------------------------------------
35873 Sanity check
35874 -------------------------------------------------------------------------*/
35875 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35876 ( NULL == pEventData->pEventData))
35877 {
35878 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35879 "%s: Invalid parameters", __func__);
35880 WDI_ASSERT(0);
35881 return WDI_STATUS_E_FAILURE;
35882 }
35883
35884 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
35885
35886 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
35887
35888 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
35889 pEventData->pEventData,
35890 pWDICtx->pRspCBUserData);
35891 return WDI_STATUS_SUCCESS;
35892}
Srinivas Dasari32a79262015-02-19 13:04:49 +053035893
35894WDI_Status
35895WDI_NanRequest
35896(
35897 WDI_NanRequestType *pwdiNanRequest,
35898 void *usrData
35899)
35900{
35901 WDI_EventInfoType wdiEventData;
35902
35903 /*------------------------------------------------------------------------
35904 Sanity Check
35905 ------------------------------------------------------------------------*/
35906 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35907 {
35908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35909 "WDI API call before module is initialized - Fail request");
35910
35911 return WDI_STATUS_E_NOT_ALLOWED;
35912 }
35913
35914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35915 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
35916 pwdiNanRequest->request_data_len);
35917
35918 /*------------------------------------------------------------------------
35919 Fill in Event data and post to the Main FSM
35920 ------------------------------------------------------------------------*/
35921 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
35922 wdiEventData.pEventData = pwdiNanRequest;
35923 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
35924 + pwdiNanRequest->request_data_len;
35925 wdiEventData.pUserData = usrData;
35926 wdiEventData.pCBfnc = NULL;
35927
35928
35929 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35930}
35931
35932WDI_Status
35933WDI_ProcessNanRequest
35934(
35935 WDI_ControlBlockType* pWDICtx,
35936 WDI_EventInfoType* pEventData
35937)
35938{
35939 WDI_NanRequestType *pwdiNanRequest = NULL;
35940 wpt_uint8* pSendBuffer = NULL;
35941 wpt_uint16 usDataOffset = 0;
35942 wpt_uint16 usSendSize = 0;
35943
35944 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
35945 "WDI_ProcessNanRequest");
35946
35947 /*-------------------------------------------------------------------------
35948 Sanity check
35949 -------------------------------------------------------------------------*/
35950 if (( NULL == pEventData ) ||
35951 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
35952 {
35953 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35954 "%s: Invalid parameters", __FUNCTION__);
35955 WDI_ASSERT(0);
35956 return WDI_STATUS_E_FAILURE;
35957 }
35958
35959 /*-----------------------------------------------------------------------
35960 Get message buffer
35961 -----------------------------------------------------------------------*/
35962 if (( WDI_STATUS_SUCCESS
35963 != WDI_GetMessageBuffer( pWDICtx,
35964 WDI_NAN_REQUEST,
35965 pwdiNanRequest->request_data_len,
35966 &pSendBuffer,
35967 &usDataOffset,
35968 &usSendSize))||
35969 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
35970 {
35971 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35972 "Unable to get send buffer in NAN request %p %p",
35973 pEventData, pwdiNanRequest);
35974 WDI_ASSERT(0);
35975 return WDI_STATUS_E_FAILURE;
35976 }
35977
35978 wpalMemoryCopy( pSendBuffer+usDataOffset,
35979 pwdiNanRequest->request_data,
35980 pwdiNanRequest->request_data_len);
35981
35982 pWDICtx->pReqStatusUserData = NULL;
35983 pWDICtx->pfncRspCB = NULL;
35984 vos_mem_free( pEventData->pUserData);
35985
35986 /*-------------------------------------------------------------------------
35987 Send NAN Request to HAL
35988 -------------------------------------------------------------------------*/
35989 return WDI_SendMsg( pWDICtx,
35990 pSendBuffer,
35991 usSendSize,
35992 NULL,
35993 NULL,
35994 WDI_NAN_RESPONSE);
35995}
35996
35997/**
35998 @brief Process NAN Response function (called when a
35999 response is being received over the bus from HAL)
36000
36001 @param pWDICtx: pointer to the WLAN DAL context
36002 pEventData: pointer to the event information structure
36003
36004 @see
36005 @return Result of the function call
36006*/
36007WDI_Status
36008WDI_ProcessNanResponse
36009(
36010 WDI_ControlBlockType* pWDICtx,
36011 WDI_EventInfoType* pEventData
36012)
36013{
36014 WDI_Status wdiStatus;
36015 eHalStatus halStatus;
36016
36017 /*-------------------------------------------------------------------------
36018 Sanity check
36019 -------------------------------------------------------------------------*/
36020 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36021 ( NULL == pEventData->pEventData))
36022 {
36023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36024 "%s: Invalid parameters", __func__);
36025 WDI_ASSERT(0);
36026 return WDI_STATUS_E_FAILURE;
36027 }
36028
36029 halStatus = *((eHalStatus*)pEventData->pEventData);
36030 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
36031
36032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36033 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
36034
36035 return WDI_STATUS_SUCCESS;
36036}/*WDI_ProcessNanResponse*/
36037
36038
36039/**
36040 @brief Process NAN Event function (called when
36041 an indication is being received over the
36042 bus from HAL)
36043
36044 @param pWDICtx: pointer to the WLAN DAL context
36045 pEventData: pointer to the event information structure
36046
36047 @see
36048 @return Result of the function call
36049*/
36050WDI_Status
36051WDI_ProcessNanEvent
36052(
36053 WDI_ControlBlockType* pWDICtx,
36054 WDI_EventInfoType* pEventData
36055)
36056{
36057 WDI_LowLevelIndType wdiInd;
36058
36059 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36060
36061 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36062 ( NULL == pEventData->pEventData ))
36063 {
36064 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36065 "%s: Invalid parameters", __func__);
36066 WDI_ASSERT( 0 );
36067 return WDI_STATUS_E_FAILURE;
36068 }
36069
36070 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36071 "%s: Received NAN event", __func__);
36072 /*-------------------------------------------------------------------------
36073 Extract indication and send it to UMAC
36074 -------------------------------------------------------------------------*/
36075 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
36076 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
36077 pEventData->uEventDataSize;
36078 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
36079 pEventData->pEventData;
36080
36081 /*Notify UMAC*/
36082 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36083
36084 return WDI_STATUS_SUCCESS;
36085}/*WDI_ProcessNanEvent*/
36086
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036087
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036088WDI_Status
36089WDI_Process_RssiBreachedInd
36090(
36091 WDI_ControlBlockType* pWDICtx,
36092 WDI_EventInfoType* pEventData
36093)
36094{
36095 WDI_LowLevelIndType wdiInd;
Abhishek Singhe3636482016-02-10 17:43:32 +053036096 tHalRssiMonitorIndParams *halRssiBreachedInd;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36098
36099 /*-------------------------------------------------------------------------
36100 Sanity check
36101 -------------------------------------------------------------------------*/
36102 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36103 ( NULL == pEventData->pEventData))
36104 {
36105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36106 "%s: Invalid parameters", __func__);
36107 WDI_ASSERT(0);
36108 return WDI_STATUS_E_FAILURE;
36109 }
36110
36111 /*-------------------------------------------------------------------------
36112 Extract indication and send it to UMAC
36113 -------------------------------------------------------------------------*/
Abhishek Singhe3636482016-02-10 17:43:32 +053036114 halRssiBreachedInd = pEventData->pEventData;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036115
36116 /*Fill in the indication parameters*/
36117 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
Abhishek Singhe3636482016-02-10 17:43:32 +053036118 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id =
36119 halRssiBreachedInd->request_id;
36120 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId,
36121 halRssiBreachedInd->bssId,
36122 WDI_MAC_ADDR_LEN);
36123 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi =
36124 halRssiBreachedInd->rssi;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036125 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36126 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
36127 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
36128 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
36129 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
36130 /*Notify UMAC*/
36131 if (pWDICtx->wdiLowLevelIndCB)
36132 {
36133 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36134 }
36135
36136 return WDI_STATUS_SUCCESS;
36137
36138}
36139
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053036140
36141WDI_Status
36142WDI_Process_LostLinkParamInd
36143(
36144 WDI_ControlBlockType* pWDICtx,
36145 WDI_EventInfoType* pEventData
36146)
36147{
36148 WDI_LowLevelIndType wdiInd;
36149 tHalLostLinkParametersIndParams halLostLinkParamInd;
36150 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36151
36152 /*-------------------------------------------------------------------------
36153 Sanity check
36154 -------------------------------------------------------------------------*/
36155 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36156 ( NULL == pEventData->pEventData))
36157 {
36158 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36159 "%s: Invalid parameters", __func__);
36160 WDI_ASSERT(0);
36161 return WDI_STATUS_E_FAILURE;
36162 }
36163
36164 /*-------------------------------------------------------------------------
36165 Extract indication and send it to UMAC
36166 -------------------------------------------------------------------------*/
36167 wpalMemoryCopy( (void *)&halLostLinkParamInd,
36168 pEventData->pEventData,
36169 sizeof(tHalLostLinkParametersIndParams));
36170
36171
36172 /*Fill in the indication parameters*/
36173 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
36174 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
36175 (void *)&halLostLinkParamInd,
36176 sizeof(WDI_LostLinkParamsIndType));
36177 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36178 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
36179 "linkFlTx : %d,lastDataRate : %d", __func__,
36180 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
36181 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
36182 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
36183 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
36184 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
36185 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
36186 /*Notify UMAC*/
36187 if (pWDICtx->wdiLowLevelIndCB)
36188 {
36189 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
36190 }
36191
36192 return WDI_STATUS_SUCCESS;
36193
36194}
36195
Abhishek Singh41988ba2015-05-25 19:42:29 +053036196WDI_Status
36197WDI_ProcessSetRtsCtsHtvhtInd
36198(
36199 WDI_ControlBlockType* pWDICtx,
36200 WDI_EventInfoType* pEventData
36201)
36202{
36203 wpt_uint8* pSendBuffer = NULL;
36204 wpt_uint16 usDataOffset = 0;
36205 wpt_uint16 usSendSize = 0;
36206 wpt_uint32 *rtsCtsVal;
36207 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
36208 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36209
36210
36211 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36212
36213 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36214 "%s", __func__);
36215
36216 /*-------------------------------------------------------------------------
36217 Sanity check
36218 -------------------------------------------------------------------------*/
36219 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36220 {
36221 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36222 "%s: Invalid parameters", __func__);
36223 WDI_ASSERT(0);
36224 return WDI_STATUS_E_FAILURE;
36225 }
36226 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
36227 /*-----------------------------------------------------------------------
36228 Get message buffer
36229 -----------------------------------------------------------------------*/
36230
36231 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36232 WDI_SET_RTS_CTS_HTVHT_IND,
36233 sizeof(tHalRtsCtsHtvhtIndParams),
36234 &pSendBuffer, &usDataOffset, &usSendSize))||
36235 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
36236 {
36237 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36238 "Unable to get send buffer in RTS CTS ind %p ",
36239 pEventData);
36240 WDI_ASSERT(0);
36241 return WDI_STATUS_E_FAILURE;
36242 }
36243 rtsCtsHtvhtIndParams =
36244 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
36245 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
36246
36247 pWDICtx->pReqStatusUserData = NULL;
36248 pWDICtx->pfncRspCB = NULL;
36249 /*-------------------------------------------------------------------------
36250 Send SET_RTS_CTS_HTVHT Indication to HAL
36251 -------------------------------------------------------------------------*/
36252 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36253 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36254}
36255
36256WDI_Status
36257WDI_SetRtsCtsHTVhtInd
36258(
36259 wpt_uint32 rtsCtsVal
36260)
36261{
36262 WDI_EventInfoType wdiEventData;
36263 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36264
36265 /*------------------------------------------------------------------------
36266 Sanity Check
36267 ------------------------------------------------------------------------*/
36268 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36269 {
36270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36271 "WDI API call before module is initialized - Fail request");
36272 return WDI_STATUS_E_NOT_ALLOWED;
36273 }
36274
36275 /*------------------------------------------------------------------------
36276 Fill in Event data and post to the Main FSM
36277 ------------------------------------------------------------------------*/
36278 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
36279 wdiEventData.pEventData = (void *) &rtsCtsVal;
36280 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36281 wdiEventData.pCBfnc = NULL;
36282 wdiEventData.pUserData = NULL;
36283
36284 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36285
36286}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053036287
36288WDI_Status
36289WDI_ProcessEnableDisableCAEventInd
36290(
36291 WDI_ControlBlockType* pWDICtx,
36292 WDI_EventInfoType* pEventData
36293)
36294{
36295 wpt_uint8* pSendBuffer = NULL;
36296 wpt_uint16 usDataOffset = 0;
36297 wpt_uint16 usSendSize = 0;
36298 wpt_uint32 *val;
36299 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
36300 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36301
36302
36303 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36304
36305 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36306 "%s", __func__);
36307
36308 /*-------------------------------------------------------------------------
36309 Sanity check
36310 -------------------------------------------------------------------------*/
36311 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36312 {
36313 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36314 "%s: Invalid parameters", __func__);
36315 WDI_ASSERT(0);
36316 return WDI_STATUS_E_FAILURE;
36317 }
36318 val = (wpt_uint32*)pEventData->pEventData;
36319 /*-----------------------------------------------------------------------
36320 Get message buffer
36321 -----------------------------------------------------------------------*/
36322
36323 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36324 WDI_SEND_FREQ_RANGE_CONTROL_IND,
36325 sizeof(tHalAvoidFreqRangeCtrlParam),
36326 &pSendBuffer, &usDataOffset, &usSendSize))||
36327 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
36328 {
36329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36330 "Unable to get send buffer in Channel Avoidance Ind %p ",
36331 pEventData);
36332 WDI_ASSERT(0);
36333 return WDI_STATUS_E_FAILURE;
36334 }
36335 avoidFreqRangeCtrlParam =
36336 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
36337 avoidFreqRangeCtrlParam->status = *val;
36338
36339 pWDICtx->pReqStatusUserData = NULL;
36340 pWDICtx->pfncRspCB = NULL;
36341 /*-------------------------------------------------------------------------
36342 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
36343 -------------------------------------------------------------------------*/
36344 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36345 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36346}
36347
36348WDI_Status
36349WDI_EnableDisableCAEventInd
36350(
36351 wpt_uint32 val
36352)
36353{
36354 WDI_EventInfoType wdiEventData;
36355 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36356
36357 /*------------------------------------------------------------------------
36358 Sanity Check
36359 ------------------------------------------------------------------------*/
36360 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36361 {
36362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36363 "WDI API call before module is initialized - Fail request");
36364 return WDI_STATUS_E_NOT_ALLOWED;
36365 }
36366
36367 /*------------------------------------------------------------------------
36368 Fill in Event data and post to the Main FSM
36369 ------------------------------------------------------------------------*/
36370 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
36371 wdiEventData.pEventData = (void *) &val;
36372 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36373 wdiEventData.pCBfnc = NULL;
36374 wdiEventData.pUserData = NULL;
36375
36376 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36377
36378} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053036379
36380/**
36381 @brief WDI_WifiConfigSetReq
36382 This API is called to set WifiConfig params request in FW
36383
36384 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
36385 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
36386 usrData : Client context
36387 @see
36388 @return SUCCESS or FAIL
36389*/
36390WDI_Status
36391WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
36392 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
36393 void* pUserData)
36394{
36395 WDI_EventInfoType wdiEventData;
36396
36397 /*------------------------------------------------------------------------
36398 Sanity Check
36399 ------------------------------------------------------------------------*/
36400 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36401 {
36402 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36403 "WDI API call before module is initialized - Fail request");
36404
36405 return WDI_STATUS_E_NOT_ALLOWED;
36406 }
36407
36408 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
36409 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
36410 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
36411 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
36412 wdiEventData.pUserData = pUserData;
36413
36414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36415}
36416
36417/**
36418 @brief WDI_ProcessWifiConfigReq -
36419 Set WifiConfig request to FW
36420
36421 @param pWDICtx : wdi context
36422 pEventData : indication data
36423
36424 @see
36425 @return none
36426*/
36427 WDI_Status
36428 WDI_ProcessWifiConfigReq
36429 (
36430 WDI_ControlBlockType* pWDICtx,
36431 WDI_EventInfoType* pEventData
36432 )
36433 {
36434 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
36435 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36436 wpt_uint8* pSendBuffer = NULL;
36437 wpt_uint16 usSendSize = 0;
36438 wpt_uint16 usDataOffset = 0;
36439 tSetWifiConfigParamsReq halWifiConfigSetParams;
36440
36441 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
36442 ( NULL == pEventData->pCBfnc ))
36443 {
36444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36445 "%s: Invalid parameters", __func__);
36446 WDI_ASSERT(0);
36447 return WDI_STATUS_E_FAILURE;
36448 }
36449 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
36450 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
36451
36452 /*-----------------------------------------------------------------------
36453 Get message buffer
36454 ! TO DO : proper conversion into the HAL Message Request Format
36455 -----------------------------------------------------------------------*/
36456 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36457 pWDICtx,
36458 WDI_WIFI_CONFIG_SET_REQ,
36459 sizeof(halWifiConfigSetParams.wifiConfigParams),
36460 &pSendBuffer, &usDataOffset,
36461 &usSendSize))||
36462 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
36463 {
36464 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36465 "Unable to get send buffer in %s %p %p %p", __func__,
36466 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
36467 WDI_ASSERT(0);
36468 return WDI_STATUS_E_FAILURE;
36469 }
36470
36471 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
36472 halWifiConfigSetParams.wifiConfigParams.paramValue =
36473 pwdiWifiConfigSetReqParams->paramValue;
36474 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
36475 sizeof(tSirMacAddr));
36476
36477 wpalMemoryCopy(pSendBuffer+usDataOffset,
36478 &halWifiConfigSetParams.wifiConfigParams,
36479 sizeof(halWifiConfigSetParams.wifiConfigParams));
36480
36481 pWDICtx->pReqStatusUserData = pEventData->pUserData;
36482
36483 /*-------------------------------------------------------------------------
36484 Send Clear Link Layer Stats Request to HAL
36485 -------------------------------------------------------------------------*/
36486 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36487 wdiWifiConfigSetRspCb, pEventData->pUserData,
36488 WDI_WIFI_CONFIG_SET_RSP);
36489 }
36490
36491WDI_Status
36492WDI_ProcessWificonfigSetRsp
36493( WDI_ControlBlockType* pWDICtx,
36494 WDI_EventInfoType* pEventData )
36495
36496{
36497 tHalSetWifiConfigRspParams halRsp;
36498 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
36499 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
36500
36501 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36502 "%s: %d Enter",__func__, __LINE__);
36503
36504 /*-------------------------------------------------------------------------
36505 Sanity check
36506 -------------------------------------------------------------------------*/
36507 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36508 ( NULL == pEventData->pEventData))
36509 {
36510 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36511 "%s: Invalid parameters", __func__);
36512 WDI_ASSERT(0);
36513 return WDI_STATUS_E_FAILURE;
36514 }
36515 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
36516
36517 /*-------------------------------------------------------------------------
36518 Extract response and send it to UMAC
36519 -------------------------------------------------------------------------*/
36520 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
36521
36522 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36523
36524 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36525 "WifiConfig RSP status = %d",
36526 wdiWifconfigSetRsp.wificonfigset_status);
36527 /*Notify UMAC*/
36528 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
36529
36530 return WDI_STATUS_SUCCESS;
36531}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036532
36533#ifdef FEATURE_OEM_DATA_SUPPORT
36534
36535/**
36536 @brief WDI_StartOemDataReqIndNew
36537
36538 @param pOemDataReqNewConfig: Req parameter for the FW
36539
36540 @return SUCCESS or FAIL
36541*/
36542WDI_Status
36543WDI_StartOemDataReqIndNew
36544(
36545 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
36546)
36547{
36548 WDI_EventInfoType wdiEventData;
36549
36550 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36551 "%s: %d",__func__, __LINE__);
36552 /*------------------------------------------------------------------------
36553 Sanity Check
36554 ------------------------------------------------------------------------*/
36555 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36556 {
36557 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36558 "WDI API call before module is initialized - Fail request");
36559
36560 return WDI_STATUS_E_NOT_ALLOWED;
36561 }
36562
36563 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
36564 wdiEventData.pEventData = pOemDataReqNewConfig;
36565 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
36566 wdiEventData.pCBfnc = NULL;
36567 wdiEventData.pUserData = NULL;
36568
36569 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36570}
36571
36572/**
36573 @brief WDI_ProcessStartOemDataReqIndNew -
36574 Send OEM Data request new indication to FW
36575
36576 @param pWDICtx : wdi context
36577 pEventData : indication data
36578
36579 @see
36580 @return none
36581*/
36582WDI_Status
36583WDI_ProcessStartOemDataReqIndNew
36584(
36585 WDI_ControlBlockType* pWDICtx,
36586 WDI_EventInfoType* pEventData
36587)
36588{
36589 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
36590 wpt_uint8* pSendBuffer = NULL;
36591 wpt_uint16 usSendSize = 0;
36592 wpt_uint16 usDataOffset = 0;
36593 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
36594 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36595
36596 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36597 "%s: %d",__func__, __LINE__);
36598
36599 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36600 ( NULL == pEventData->pEventData))
36601 {
36602 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36603 "%s: Invalid parameters", __func__);
36604 WDI_ASSERT(0);
36605 return WDI_STATUS_E_FAILURE;
36606 }
36607
36608 wdiOemDataReqNewConfig =
36609 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
36610
36611 /*-----------------------------------------------------------------------
36612 Get message buffer
36613 -----------------------------------------------------------------------*/
36614 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36615 pWDICtx,
36616 WDI_START_OEM_DATA_REQ_IND_NEW,
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036617 sizeof(*pHalStartOemDataReqParamsNew),
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036618 &pSendBuffer, &usDataOffset,
36619 &usSendSize))||
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036620 ( usSendSize < (usDataOffset + sizeof(*pHalStartOemDataReqParamsNew) )))
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036621 {
36622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36623 "Unable to get send buffer in %s %p %p", __func__,
36624 pEventData, wdiOemDataReqNewConfig);
36625 WDI_ASSERT(0);
36626 return WDI_STATUS_E_FAILURE;
36627 }
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036628
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036629 pHalStartOemDataReqParamsNew =
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036630 (tpStartOemDataReqParamsNew) (pSendBuffer + usDataOffset);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036631
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036632 wpalMemoryCopy(pHalStartOemDataReqParamsNew,
36633 wdiOemDataReqNewConfig,
36634 sizeof(*pHalStartOemDataReqParamsNew));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036635
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053036636 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36637 "%s: selfMacAddr: " MAC_ADDRESS_STR" ", __func__,
36638 MAC_ADDR_ARRAY(pHalStartOemDataReqParamsNew->selfMacAddr));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036639
36640 pWDICtx->pReqStatusUserData = NULL;
36641 pWDICtx->pfncRspCB = NULL;
36642
36643 /*-------------------------------------------------------------------------
36644 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
36645 -------------------------------------------------------------------------*/
36646 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36647 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36648}
36649
36650/**
36651 @brief Process OemDataRsp New Indication indication from FW
36652
36653 @param pWDICtx: pointer to the WLAN DAL context
36654 pEventData: pointer to the event information structure
36655
36656 @see
36657 @return Result of the function call
36658*/
36659WDI_Status
36660WDI_ProcessStartOemDataRspIndNew
36661(
36662 WDI_ControlBlockType* pWDICtx,
36663 WDI_EventInfoType* pEventData
36664)
36665{
36666 WDI_LowLevelIndType wdiInd;
36667 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36668
36669 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36670 "%s: ", __func__);
36671
36672 /* sanity check */
36673 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36674 ( NULL == pEventData->pEventData))
36675 {
36676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36677 "%s: Invalid parameters", __func__);
36678 WDI_ASSERT(0);
36679 return WDI_STATUS_E_FAILURE;
36680 }
36681
36682 /* Fill in the indication parameters */
36683 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
36684
Padma, Santhosh Kumarf75c37b2016-01-25 10:36:08 +053036685 wdiInd.wdiIndicationData.wdiOemDataRspNew.pOemRspNewIndData =
36686 (void *)pEventData->pEventData;
36687 wdiInd.wdiIndicationData.wdiOemDataRspNew.OemRspNewLen =
36688 pEventData->uEventDataSize;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036689 /* Notify UMAC */
36690 if (pWDICtx->wdiLowLevelIndCB)
36691 {
36692 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
36693 }
36694 else
36695 {
36696 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36697 "%s: WDILowLevelIndCb is null", __func__);
36698 WDI_ASSERT(0);
36699 return WDI_STATUS_E_FAILURE;
36700 }
36701 return WDI_STATUS_SUCCESS;
36702} /* End of WDI_ProcessEXTScanResultInd */
36703
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053036704/**
36705 @brief Process Current Antenna Index information from FW
36706
36707 @param pWDICtx: pointer to the WLAN DAL context
36708 pEventData: pointer to the event information structure
36709
36710 @see
36711 @return Result of the function call
36712*/
36713WDI_Status
36714WDI_ProcessGetCurrentAntennaIndexRsp
36715(
36716 WDI_ControlBlockType* pWDICtx,
36717 WDI_EventInfoType* pEventData
36718)
36719{
36720 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
36721 tHalAntennaDiversitySelectionRspParams *pHalAntDivSelRsp;
36722
36723 /*-------------------------------------------------------------------------
36724 Sanity check
36725 -------------------------------------------------------------------------*/
36726 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36727 ( NULL == pEventData->pEventData))
36728 {
36729 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36730 "%s: Invalid parameters", __func__);
36731 WDI_ASSERT(0);
36732 return WDI_STATUS_E_FAILURE;
36733 }
36734 pHalAntDivSelRsp =
36735 (tHalAntennaDiversitySelectionRspParams*)pEventData->pEventData;
36736 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pWDICtx->pfncRspCB;
36737
36738 if (pHalAntDivSelRsp->status != 0)
36739 {
36740 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_E_FAILURE,
36741 (void *)pHalAntDivSelRsp, pWDICtx->pRspCBUserData);
36742 }
36743 else
36744 {
36745 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_SUCCESS,
36746 (void *)pHalAntDivSelRsp,
36747 pWDICtx->pRspCBUserData);
36748 }
36749
36750 return WDI_STATUS_SUCCESS;
36751}
36752
36753/**
36754 @brief Process Get Current Antenna Index request command
36755
36756 @param pWDICtx: pointer to the WLAN DAL context
36757 pEventData: pointer to the event information structure
36758
36759 @see
36760 @return Result of the function call
36761*/
36762WDI_Status
36763WDI_ProcessGetCurrentAntennaIndex
36764(
36765 WDI_ControlBlockType* pWDICtx,
36766 WDI_EventInfoType* pEventData
36767)
36768{
36769 wpt_uint8* pSendBuffer = NULL;
36770 wpt_uint16 usDataOffset = 0;
36771 wpt_uint16 usSendSize = 0;
36772 tHalAntennaDiversitySelectionReqParams halAntDivSelReq;
36773 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
36774
36775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36776 "%s", __func__);
36777
36778 /*-------------------------------------------------------------------------
36779 Sanity check
36780 -------------------------------------------------------------------------*/
36781 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
36782 ( NULL == pEventData->pCBfnc ))
36783 {
36784 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36785 "%s: Invalid parameters", __func__);
36786 WDI_ASSERT(0);
36787 return WDI_STATUS_E_FAILURE;
36788 }
36789 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pEventData->pCBfnc;
36790
36791 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36792 WDI_ANTENNA_DIVERSITY_SELECTION_REQ,
36793 sizeof(tHalAntennaDiversitySelectionReqParams),
36794 &pSendBuffer, &usDataOffset, &usSendSize))||
36795 ( usSendSize < (usDataOffset +
36796 sizeof(tHalAntennaDiversitySelectionReqParams) )))
36797 {
36798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36799 "Unable to get send buffer in GetCurrentAntennaIndex %p",
36800 pEventData);
36801 WDI_ASSERT(0);
36802 return WDI_STATUS_E_FAILURE;
36803 }
36804 pWDICtx->wdiReqStatusCB = NULL;
36805 pWDICtx->pReqStatusUserData = pEventData->pEventData;
36806 halAntDivSelReq.reserved = *((wpt_uint32 *)(pEventData->pEventData));
36807 wpalMemoryCopy( pSendBuffer+usDataOffset,
36808 &halAntDivSelReq,
36809 sizeof(tHalAntennaDiversitySelectionReqParams));
36810
36811 /*-------------------------------------------------------------------------
36812 Send Get STA Request to HAL
36813 -------------------------------------------------------------------------*/
36814 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36815 wdiGetCurrentAntennaIndexRspCb,
36816 pEventData->pUserData,
36817 WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
36818}
36819
36820/**
36821 @brief WDI_GetCurrentAntennaIndex
36822
36823 @param pOemDataReqNewConfig: Req parameter for the FW
36824
36825 @return SUCCESS or FAIL
36826*/
36827WDI_Status
36828WDI_GetCurrentAntennaIndex
36829(
36830 void *pUserData,
36831 WDI_AntennaDivSelRspCb wdiAntennaDivSelRspCb,
36832 wpt_uint32 reserved
36833)
36834{
36835 WDI_EventInfoType wdiEventData;
36836
36837 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36838
36839 /*------------------------------------------------------------------------
36840 Sanity Check
36841 ------------------------------------------------------------------------*/
36842 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36843 {
36844 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36845 "WDI API call before module is initialized - Fail request");
36846 return WDI_STATUS_E_NOT_ALLOWED;
36847 }
36848 /*------------------------------------------------------------------------
36849 Fill in Event data and post to the Main FSM
36850 ------------------------------------------------------------------------*/
36851 wdiEventData.wdiRequest = WDI_ANTENNA_DIVERSITY_SELECTION_REQ;
36852 wdiEventData.pEventData = (void *)&reserved;
36853 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
36854 wdiEventData.pCBfnc = wdiAntennaDivSelRspCb;
36855 wdiEventData.pUserData = pUserData;
36856
36857 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36858}
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053036859
36860/**
36861 @brief Process Set beacon miss penalty count command
36862
36863 @param pWDICtx: pointer to the WLAN DAL context
36864 pEventData: pointer to the event information structure
36865
36866 @see
36867 @return Result of the function call
36868*/
36869WDI_Status
36870WDI_ProcessBcnMissPenaltyCount
36871(
36872 WDI_ControlBlockType* pWDICtx,
36873 WDI_EventInfoType* pEventData
36874)
36875{
36876 wpt_uint8* pSendBuffer = NULL;
36877 wpt_uint16 usDataOffset = 0;
36878 wpt_uint16 usSendSize = 0;
36879 tHalModifyRoamParamsIndParams halModifyRoamParams;
36880 WDI_ModifyRoamParamsReqType *modifyRoamParams;
36881 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
36882
36883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36884
36885 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36886 "%s", __func__);
36887 /*-------------------------------------------------------------------------
36888 Sanity check
36889 -------------------------------------------------------------------------*/
36890 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
36891 {
36892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36893 "%s: Invalid parameters", __func__);
36894 WDI_ASSERT(0);
36895 return WDI_STATUS_E_FAILURE;
36896 }
36897
36898 /*-----------------------------------------------------------------------
36899 Get message buffer
36900 -----------------------------------------------------------------------*/
36901
36902 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36903 WDI_MODIFY_ROAM_PARAMS_IND,
36904 sizeof(tHalModifyRoamParamsIndParams),
36905 &pSendBuffer, &usDataOffset, &usSendSize))||
36906 ( usSendSize < (usDataOffset + sizeof(tHalModifyRoamParamsIndParams) )))
36907 {
36908 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36909 "Unable to get send buffer for Modify roam req params %p ",
36910 pEventData);
36911 WDI_ASSERT(0);
36912 return WDI_STATUS_E_FAILURE;
36913 }
36914
36915 modifyRoamParams = (WDI_ModifyRoamParamsReqType *)pEventData->pEventData;
36916 halModifyRoamParams.param = modifyRoamParams->param;
36917 halModifyRoamParams.value = modifyRoamParams->value;
36918 wpalMemoryCopy( pSendBuffer+usDataOffset, &halModifyRoamParams,
36919 sizeof(halModifyRoamParams));
36920 pWDICtx->pReqStatusUserData = NULL;
36921 pWDICtx->pfncRspCB = NULL;
36922
36923 /*-------------------------------------------------------------------------
36924 Send WDI_MODIFY_ROAM_PARAMS_IND to HAL
36925 -------------------------------------------------------------------------*/
36926 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36927 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36928
36929}
36930
36931/**
36932 @brief WDI_SetBcnMissPenaltyCount
36933
36934 @param params: Req parameter for the FW
36935
36936 @return SUCCESS or FAIL
36937*/
36938
36939WDI_Status
36940WDI_SetBcnMissPenaltyCount
36941(
36942 WDI_ModifyRoamParamsReqType *params
36943)
36944{
36945 WDI_EventInfoType wdiEventData;
36946
36947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36948
36949 /*------------------------------------------------------------------------
36950 Sanity Check
36951 ------------------------------------------------------------------------*/
36952 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36953 {
36954 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
36955 "WDI API call before module is initialized - Fail request");
36956 return WDI_STATUS_E_NOT_ALLOWED;
36957 }
36958
36959 /*------------------------------------------------------------------------
36960 Fill in Event data and post to the Main FSM
36961 ------------------------------------------------------------------------*/
36962 wdiEventData.wdiRequest = WDI_MODIFY_ROAM_PARAMS_IND;
36963 wdiEventData.pEventData = (void *)params;
36964 wdiEventData.uEventDataSize = sizeof(*params);
36965 wdiEventData.pCBfnc = NULL;
36966 wdiEventData.pUserData = NULL;
36967
36968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36969
36970} /* WDI_SetBcnMissPenaltyCount */
36971
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053036972#endif