blob: 18eb5755e14cf610afdfcdd7bc2477b7eccdacab [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
Kapil Guptab3a981b2016-06-26 13:36:51 +0530222 ,PER_BASED_ROAMING //63
Anurag Chouhan1deaa252016-12-05 15:48:47 +0530223 ,SAP_MODE_WOW //64
224 ,SAP_OFFLOADS //65
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +0530225};
Jeff Johnson295189b2012-06-20 16:38:30 -0700226
227/*--------------------------------------------------------------------------
228 WLAN DAL State Machine
229 --------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700230WPT_STATIC const WDI_MainFsmEntryType wdiMainFSM[WDI_MAX_ST] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700231{
232 /*WDI_INIT_ST*/
233 {{
234 WDI_MainStart, /*WDI_START_EVENT*/
235 NULL, /*WDI_STOP_EVENT*/
236 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
237 WDI_MainRspInit, /*WDI_RESPONSE_EVENT*/
238 WDI_MainClose, /*WDI_CLOSE_EVENT*/
239 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
240 }},
241
242 /*WDI_STARTED_ST*/
243 {{
244 WDI_MainStartStarted, /*WDI_START_EVENT*/
245 WDI_MainStopStarted, /*WDI_STOP_EVENT*/
246 WDI_MainReqStarted, /*WDI_REQUEST_EVENT*/
247 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
248 NULL, /*WDI_CLOSE_EVENT*/
249 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
250 }},
251
252 /*WDI_STOPPED_ST*/
253 {{
254 WDI_MainStart, /*WDI_START_EVENT*/
255 WDI_MainStopStopped, /*WDI_STOP_EVENT*/
256 NULL, /*WDI_REQUEST_EVENT*/
257 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
258 WDI_MainClose, /*WDI_CLOSE_EVENT*/
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -0700259 WDI_MainShutdown /*WDI_SHUTDOWN_EVENT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700260 }},
261
262 /*WDI_BUSY_ST*/
263 {{
264 WDI_MainStartBusy, /*WDI_START_EVENT*/
265 WDI_MainStopBusy, /*WDI_STOP_EVENT*/
266 WDI_MainReqBusy, /*WDI_REQUEST_EVENT*/
267 WDI_MainRsp, /*WDI_RESPONSE_EVENT*/
268 WDI_MainCloseBusy, /*WDI_CLOSE_EVENT*/
269 WDI_MainShutdownBusy /*WDI_SHUTDOWN_EVENT*/
270 }}
271};
272
Jeff Johnsone7245742012-09-05 17:12:55 -0700273/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700274 DAL Request Processing Array - the functions in this table will only be
275 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700276 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700277 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700278WDI_ReqProcFuncType pfnReqProcTbl[WDI_MAX_UMAC_IND] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700279{
280 /*INIT*/
281 WDI_ProcessStartReq, /* WDI_START_REQ */
282 WDI_ProcessStopReq, /* WDI_STOP_REQ */
283 WDI_ProcessCloseReq, /* WDI_CLOSE_REQ */
284
285 /*SCAN*/
286 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_REQ */
287 WDI_ProcessStartScanReq, /* WDI_START_SCAN_REQ */
288 WDI_ProcessEndScanReq, /* WDI_END_SCAN_REQ */
289 WDI_ProcessFinishScanReq, /* WDI_FINISH_SCAN_REQ */
290
291 /*ASSOCIATION*/
292 WDI_ProcessJoinReq, /* WDI_JOIN_REQ */
293 WDI_ProcessConfigBSSReq, /* WDI_CONFIG_BSS_REQ */
294 WDI_ProcessDelBSSReq, /* WDI_DEL_BSS_REQ */
295 WDI_ProcessPostAssocReq, /* WDI_POST_ASSOC_REQ */
296 WDI_ProcessDelSTAReq, /* WDI_DEL_STA_REQ */
297
298 /* Security */
299 WDI_ProcessSetBssKeyReq, /* WDI_SET_BSS_KEY_REQ */
300 WDI_ProcessRemoveBssKeyReq, /* WDI_RMV_BSS_KEY_REQ */
301 WDI_ProcessSetStaKeyReq, /* WDI_SET_STA_KEY_REQ */
302 WDI_ProcessRemoveStaKeyReq, /* WDI_RMV_BSS_KEY_REQ */
303
304 /* QoS and BA APIs */
305 WDI_ProcessAddTSpecReq, /* WDI_ADD_TS_REQ */
306 WDI_ProcessDelTSpecReq, /* WDI_DEL_TS_REQ */
307 WDI_ProcessUpdateEDCAParamsReq, /* WDI_UPD_EDCA_PRMS_REQ */
308 WDI_ProcessAddBASessionReq, /* WDI_ADD_BA_SESSION_REQ */
309 WDI_ProcessDelBAReq, /* WDI_DEL_BA_REQ */
310
311 /* Miscellaneous Control APIs */
312 WDI_ProcessChannelSwitchReq, /* WDI_CH_SWITCH_REQ */
313 WDI_ProcessConfigStaReq, /* WDI_CONFIG_STA_REQ */
314 WDI_ProcessSetLinkStateReq, /* WDI_SET_LINK_ST_REQ */
315 WDI_ProcessGetStatsReq, /* WDI_GET_STATS_REQ */
316 WDI_ProcessUpdateCfgReq, /* WDI_UPDATE_CFG_REQ */
317
318 /*BA APIs*/
319 WDI_ProcessAddBAReq, /* WDI_ADD_BA_REQ */
320 WDI_ProcessTriggerBAReq, /* WDI_TRIGGER_BA_REQ */
321
322 /*Beacon processing APIs*/
323 WDI_ProcessUpdateBeaconParamsReq, /* WDI_UPD_BCON_PRMS_REQ */
324 WDI_ProcessSendBeaconParamsReq, /* WDI_SND_BCON_REQ */
325
326 WDI_ProcessUpdateProbeRspTemplateReq, /* WDI_UPD_PROBE_RSP_TEMPLATE_REQ */
327 WDI_ProcessSetStaBcastKeyReq, /* WDI_SET_STA_BCAST_KEY_REQ */
328 WDI_ProcessRemoveStaBcastKeyReq, /* WDI_RMV_STA_BCAST_KEY_REQ */
329 WDI_ProcessSetMaxTxPowerReq, /*WDI_SET_MAX_TX_POWER_REQ*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700330 WDI_ProcessP2PGONOAReq, /* WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700331 /* PowerSave APIs */
332 WDI_ProcessEnterImpsReq, /* WDI_ENTER_IMPS_REQ */
333 WDI_ProcessExitImpsReq, /* WDI_EXIT_IMPS_REQ */
334 WDI_ProcessEnterBmpsReq, /* WDI_ENTER_BMPS_REQ */
335 WDI_ProcessExitBmpsReq, /* WDI_EXIT_BMPS_REQ */
336 WDI_ProcessEnterUapsdReq, /* WDI_ENTER_UAPSD_REQ */
337 WDI_ProcessExitUapsdReq, /* WDI_EXIT_UAPSD_REQ */
338 WDI_ProcessSetUapsdAcParamsReq, /* WDI_SET_UAPSD_PARAM_REQ */
339 WDI_ProcessUpdateUapsdParamsReq, /* WDI_UPDATE_UAPSD_PARAM_REQ */
340 WDI_ProcessConfigureRxpFilterReq, /* WDI_CONFIGURE_RXP_FILTER_REQ */
341 WDI_ProcessSetBeaconFilterReq, /* WDI_SET_BEACON_FILTER_REQ */
342 WDI_ProcessRemBeaconFilterReq, /* WDI_REM_BEACON_FILTER_REQ */
343 WDI_ProcessSetRSSIThresholdsReq, /* WDI_SET_RSSI_THRESHOLDS_REQ */
344 WDI_ProcessHostOffloadReq, /* WDI_HOST_OFFLOAD_REQ */
345 WDI_ProcessWowlAddBcPtrnReq, /* WDI_WOWL_ADD_BC_PTRN_REQ */
346 WDI_ProcessWowlDelBcPtrnReq, /* WDI_WOWL_DEL_BC_PTRN_REQ */
347 WDI_ProcessWowlEnterReq, /* WDI_WOWL_ENTER_REQ */
348 WDI_ProcessWowlExitReq, /* WDI_WOWL_EXIT_REQ */
349 WDI_ProcessConfigureAppsCpuWakeupStateReq, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ */
350 /*NV Download APIs*/
351 WDI_ProcessNvDownloadReq, /* WDI_NV_DOWNLOAD_REQ*/
352 WDI_ProcessFlushAcReq, /* WDI_FLUSH_AC_REQ */
353 WDI_ProcessBtAmpEventReq, /* WDI_BTAMP_EVENT_REQ */
354#ifdef WLAN_FEATURE_VOWIFI_11R
355 WDI_ProcessAggrAddTSpecReq, /* WDI_AGGR_ADD_TS_REQ */
356#else
357 NULL,
358#endif /* WLAN_FEATURE_VOWIFI_11R */
359 WDI_ProcessAddSTASelfReq, /* WDI_ADD_STA_SELF_REQ */
360 WDI_ProcessDelSTASelfReq, /* WDI DEL STA SELF REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700361 WDI_ProcessFTMCommandReq, /* WDI_FTM_CMD_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700362
363#ifdef FEATURE_OEM_DATA_SUPPORT
364 WDI_ProcessStartOemDataReq, /*WDI_START_OEM_DATA_REQ*/
365#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700366 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700367#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700368 WDI_ProcessHostResumeReq, /*WDI_HOST_RESUME_REQ*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700369
370 WDI_ProcessKeepAliveReq, /* WDI_KEEP_ALIVE_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700371
372#ifdef FEATURE_WLAN_SCAN_PNO
373 WDI_ProcessSetPreferredNetworkReq, /* WDI_SET_PREF_NETWORK_REQ */
374 WDI_ProcessSetRssiFilterReq, /* WDI_SET_RSSI_FILTER_REQ */
375 WDI_ProcessUpdateScanParamsReq, /* WDI_UPDATE_SCAN_PARAMS_REQ */
376#else
377 NULL,
378 NULL,
379 NULL,
380#endif /* FEATURE_WLAN_SCAN_PNO */
381
382 WDI_ProcessSetTxPerTrackingReq, /* WDI_SET_TX_PER_TRACKING_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700383
Jeff Johnson295189b2012-06-20 16:38:30 -0700384#ifdef WLAN_FEATURE_PACKET_FILTERING
385 /* WDI_8023_MULTICAST_LIST_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700386 WDI_Process8023MulticastListReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700387 /* WDI_RECEIVE_FILTER_SET_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700388 WDI_ProcessReceiveFilterSetFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700389 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700390 WDI_ProcessFilterMatchCountReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700391 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ */
Jeff Johnsone7245742012-09-05 17:12:55 -0700392 WDI_ProcessReceiveFilterClearFilterReq,
Jeff Johnson295189b2012-06-20 16:38:30 -0700393#else
394 NULL,
395 NULL,
396 NULL,
397 NULL,
398#endif // WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -0700399 WDI_ProcessInitScanReq, /* WDI_INIT_SCAN_CON_REQ */
Jeff Johnson295189b2012-06-20 16:38:30 -0700400 WDI_ProcessHALDumpCmdReq, /*WDI_HAL_DUMP_CMD_REQ */
401 WDI_ProcessShutdownReq, /* WDI_SHUTDOWN_REQ */
402
403 WDI_ProcessSetPowerParamsReq, /*WDI_SET_POWER_PARAMS_REQ*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800404#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700405 WDI_ProcessTSMStatsReq, /* WDI_TSM_STATS_REQ */
406#else
407 NULL,
408#endif
409
410#ifdef WLAN_FEATURE_GTK_OFFLOAD
411 WDI_ProcessGTKOffloadReq, /* WDI_GTK_OFFLOAD_REQ */
412 WDI_ProcessGTKOffloadGetInfoReq, /* WDI_GTK_OFFLOAD_GETINFO_REQ */
413#else
414 NULL,
415 NULL,
416#endif // WLAN_FEATURE_GTK_OFFLOAD
417
418 WDI_ProcessSetTmLevelReq, /*WDI_SET_TM_LEVEL_REQ*/
419 WDI_ProcessFeatureCapsExchangeReq, /* WDI_FEATURE_CAPS_EXCHANGE_REQ */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700420#ifdef WLAN_FEATURE_11AC
421 WDI_ProcessUpdateVHTOpModeReq, /* WDI_UPDATE_VHT_OP_MODE_REQ */
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800422#else
423 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700424#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800425#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800426 WDI_ProcessGetRoamRssiReq, /* WDI_GET_ROAM_RSSI_REQ */
427#else
schang86c22c42013-03-13 18:41:24 -0700428 NULL,
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800429#endif
schang86c22c42013-03-13 18:41:24 -0700430 WDI_ProcessSetTxPowerReq, /* WDI_SET_TX_POWER_REQ*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700431#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700432 WDI_ProcessRoamScanOffloadReq, /* WDI_ROAM_SCAN_OFFLOAD_REQ */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700433#else
434 NULL,
435#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530436#ifdef FEATURE_WLAN_TDLS
437 WDI_ProcessTdlsLinkEstablishReq, /* WDI_TDLS_LINK_ESTABLISH_REQ */
438#else
439 NULL,
440#endif
Leo Chang9056f462013-08-01 19:21:11 -0700441#ifdef FEATURE_WLAN_LPHB
442 WDI_ProcessLPHBConfReq, /* WDI_LPHB_CFG_REQ */
443#else
444 NULL,
445#endif /* FEATURE_WLAN_LPHB */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530446#ifdef WLAN_FEATURE_RMC
447 WDI_ProcessRMCRulerReq, /* WDI_LBP_RULER_REQ */
448 WDI_ProcessIbssPeerInfoReq, /* WDI_HAL_IBSS_PEER_INFO_REQ */
449#else
450 NULL,
451 NULL,
452#endif /* WLAN_FEATURE_RMC */
Rajeev79dbe4c2013-10-05 11:03:42 +0530453
454#ifdef FEATURE_WLAN_BATCH_SCAN
455 WDI_ProcessSetBatchScanReq, /* WDI_SET_BATCH_SCAN_REQ */
456#else
457 NULL,
458#endif /* FEATURE_WLAN_BATCH_SCAN */
459
Arif Hussaina5ebce02013-08-09 15:09:58 -0700460 WDI_ProcessSetMaxTxPowerPerBandReq, /* WDI_SET_MAX_TX_POWER_PER_BAND_REQ*/
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800461
462 WDI_ProcessUpdateChannelParamsReq, /* WDI_UPDATE_CHAN_REQ */
c_hpothu92367912014-05-01 15:18:17 +0530463
464 WDI_ProcessGetBcnMissRateReq, /* WDI_GET_BCN_MISS_RATE_REQ */
Sunil Duttbd736ed2014-05-26 21:19:41 +0530465
466#ifdef WLAN_FEATURE_LINK_LAYER_STATS
467 WDI_ProcessLLStatsSetReq, /* WDI_LL_STATS_SET_REQ */
468 WDI_ProcessLLStatsGetReq, /* WDI_LL_STATS_GET_REQ */
469 WDI_ProcessLLStatsClearReq, /* WDI_LL_STATS_CLEAR_REQ */
470#else
471 NULL,
472 NULL,
473 NULL,
474#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530475#ifdef WLAN_FEATURE_EXTSCAN
476 WDI_ProcessEXTScanStartReq, /* WDI_EXTSCAN_START_REQ */
477 WDI_ProcessEXTScanStopReq, /* WDI_EXTSCAN_STOP_REQ */
478 WDI_ProcessEXTScanGetCachedResultsReq, /* WDI_EXTSCAN_GET_CACHED_RESULTS_REQ */
479 WDI_ProcessEXTScanGetCapabilitiesReq, /* WDI_EXTSCAN_GET_CAPABILITIES_REQ */
480 WDI_ProcessEXTScanSetBSSIDHotlistReq, /* WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ */
481 WDI_ProcessEXTScanResetBSSIDHotlistReq, /* WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530482 WDI_ProcessEXTScanSetSSIDHotlistReq, /* WDI_EXTSCAN_SET_SSID_HOTLIST_REQ */
483 WDI_ProcessEXTScanResetSSIDHotlistReq, /* WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ */
Dino Mycle41bdc942014-06-10 11:30:24 +0530484#else
485 NULL,
486 NULL,
487 NULL,
488 NULL,
489 NULL,
490 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530491 NULL,
492 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530493#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530494 WDI_ProcessSpoofMacAddrReq, /* WDI_SPOOF_MAC_ADDR_REQ */
Abhishek Singh85b74712014-10-08 11:38:19 +0530495
496 WDI_ProcessGetFwStatsReq, /*WDI_GET_FW_STATS_REQ*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530497
498 WDI_ProcessEncryptMsgReq, /* WDI_ENCRYPT_MSG_REQ*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530499
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530500 WDI_ProcessFWLoggingInitReq, /* WDI_FW_LOGGING_INIT_REQ*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530501 WDI_ProcessGetFrameLogReq, /* WDI_GET_FRAME_LOG_REQ*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530502
503 WDI_ProcessNanRequest, /* WDI_NAN_REQUEST*/
504
Katya Nigamf0511f62015-05-05 16:40:57 +0530505 WDI_ProcessMonStartReq, /* WDI_MON_START_REQ */
506 WDI_ProcessMonStopReq, /* WDI_MON_STOP_REQ */
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530507 WDI_ProcessFatalEventLogsReq, /*WDI_FATAL_EVENT_LOGGING_REQ*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530508 WDI_ProcessFwrMemDumpReq, /* WDI_FWR_MEM_DUMP_REQ*/
509
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530510 WDI_ProcessRssiMonitorStartReq, /* WDI_START_RSSI_MONITOR_REQ */
511 WDI_ProcessRssiMonitorStopReq, /* WDI_STOP_RSSI_MONITOR_REQ */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530512
513 WDI_ProcessWifiConfigReq, /*WDI_WIFI_CONFIG_SET_REQ*/
Kapil Guptab3a981b2016-06-26 13:36:51 +0530514#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
515 WDI_ProcessPERRoamScanOffloadReq, /* WDI_PER_ROAM_SCAN_OFFLOAD_REQ */
516 WDI_ProcessPERRoamScanTriggerReq, /* WDI_PER_ROAM_SCAN_TRIGGER_REQ */
517#else
518 NULL,
519 NULL,
520#endif /* WLAN_FEATURE_ROAM_SCAN_OFFLOAD */
schang86c22c42013-03-13 18:41:24 -0700521 /*-------------------------------------------------------------------------
522 Indications
523 -------------------------------------------------------------------------*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700524 WDI_ProcessHostSuspendInd, /* WDI_HOST_SUSPEND_IND*/
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -0800525 WDI_ProcessTrafficStatsInd, /* WDI_TRAFFIC_STATS_IND*/
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +0530526 WDI_ProcessDHCPStartInd, /* WDI_DHCP_START_IND*/
527 WDI_ProcessDHCPStopInd, /* WDI_DHCP_STOP_IND*/
Chet Lanctot186b5732013-03-18 10:26:30 -0700528#ifdef WLAN_FEATURE_11W
529 WDI_ProcessExcludeUnencryptInd, /* WDI_EXCLUDE_UNENCRYPTED_IND */
530#else
531 NULL,
532#endif
Yue Mab9c86f42013-08-14 15:59:08 -0700533 WDI_ProcessAddPeriodicTxPtrnInd, /* WDI_ADD_PERIODIC_TX_PATTERN_IND */
534 WDI_ProcessDelPeriodicTxPtrnInd, /* WDI_DEL_PERIODIC_TX_PATTERN_IND */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530535#ifdef WLAN_FEATURE_RMC
536 WDI_ProcessRMCUpdateInd, /* WDI_RMC_UPDATE_IND */
537#else
538 NULL,
539#endif /* WLAN_FEATURE_RMC */
540 WDI_ProcessRateUpdateInd, /* WDI_RATE_UPDATE_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530541#ifdef FEATURE_WLAN_BATCH_SCAN
542 WDI_ProcessStopBatchScanInd, /* WDI_STOP_BATCH_SCAN_IND */
543 WDI_ProcessTriggerBatchScanResultInd, /* WDI_TRIGGER_BATCH_SCAN_RESULT_IND */
544#else
545 NULL,
546 NULL,
547#endif /* FEATURE_WLAN_BATCH_SCAN */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530548#ifdef WLAN_FEATURE_RMC
549 WDI_ProcessTXFailMonitor,
550#else
551 NULL,
552#endif
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800553
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +0530554 WDI_ProcessHT40OBSSScanInd, /*WDI_START_HT40_OBSS_SCAN_IND */
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800555 WDI_ProcessHT40OBSSStopScanInd, /*WDI_STOP_HT40_OBSS_SCAN_IND */
556
557 WDI_ProcessChannelSwitchReq_V1, /* WDI_CH_SWITCH_REQ_V1*/
Atul Mittalc0f739f2014-07-31 13:47:47 +0530558#ifdef FEATURE_WLAN_TDLS
559 WDI_ProcessTdlsChanSwitchReq, /* WDI_TDLS_CHAN_SWITCH_REQ */
560#else
561 NULL,
562#endif
Abhishek Singh41988ba2015-05-25 19:42:29 +0530563 WDI_ProcessSetRtsCtsHtvhtInd, /* WDI_SET_RTS_CTS_HTVHT_IND */
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530564 WDI_ProcessFWLoggingDXEdoneInd, /* WDI_FW_LOGGING_DXE_DONE_IND */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +0530565 WDI_ProcessEnableDisableCAEventInd, /* WDI_SEND_FREQ_RANGE_CONTROL_IND */
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +0530566
567#ifdef WLAN_FEATURE_EXTSCAN
568 WDI_ProcessHighPriorityDataInfoInd, /* WDI_HIGH_PRIORITY_DATA_INFO_IND */
569#else
570 NULL,
571#endif /* WLAN_FEATURE_EXTSCAN */
572
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530573#ifdef FEATURE_OEM_DATA_SUPPORT
574 WDI_ProcessStartOemDataReqIndNew, /* WDI_START_OEM_DATA_REQ_IND_NEW */
575#else
576 NULL,
577#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530578 WDI_ProcessGetCurrentAntennaIndex, /* WDI_ANTENNA_DIVERSITY_SELECTION_REQ */
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +0530579 WDI_ProcessBcnMissPenaltyCount, /* WDI_MODIFY_ROAM_PARAMS_IND */
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +0530580 WDI_ProcessSetAllowedActionFramesInd, /* WDI_SET_ALLOWED_ACTION_FRAMES_IND */
Jeff Johnson295189b2012-06-20 16:38:30 -0700581};
582
583
Jeff Johnsone7245742012-09-05 17:12:55 -0700584/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700585 DAL Request Processing Array - the functions in this table will only be
586 called when the processing of the specific request is allowed by the
Jeff Johnsone7245742012-09-05 17:12:55 -0700587 Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -0700588 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700589WDI_RspProcFuncType pfnRspProcTbl[WDI_MAX_RESP] =
Jeff Johnson295189b2012-06-20 16:38:30 -0700590{
591 /*INIT*/
592 WDI_ProcessStartRsp, /* WDI_START_RESP */
593 WDI_ProcessStopRsp, /* WDI_STOP_RESP */
594 WDI_ProcessCloseRsp, /* WDI_CLOSE_RESP */
595
596 /*SCAN*/
597 WDI_ProcessInitScanRsp, /* WDI_INIT_SCAN_RESP */
598 WDI_ProcessStartScanRsp, /* WDI_START_SCAN_RESP */
599 WDI_ProcessEndScanRsp, /* WDI_END_SCAN_RESP */
600 WDI_ProcessFinishScanRsp, /* WDI_FINISH_SCAN_RESP */
601
602 /* ASSOCIATION*/
603 WDI_ProcessJoinRsp, /* WDI_JOIN_RESP */
604 WDI_ProcessConfigBSSRsp, /* WDI_CONFIG_BSS_RESP */
605 WDI_ProcessDelBSSRsp, /* WDI_DEL_BSS_RESP */
606 WDI_ProcessPostAssocRsp, /* WDI_POST_ASSOC_RESP */
607 WDI_ProcessDelSTARsp, /* WDI_DEL_STA_RESP */
608
609 /* Security */
610 WDI_ProcessSetBssKeyRsp, /* WDI_SET_BSS_KEY_RESP */
611 WDI_ProcessRemoveBssKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
612 WDI_ProcessSetStaKeyRsp, /* WDI_SET_STA_KEY_RESP */
613 WDI_ProcessRemoveStaKeyRsp, /* WDI_RMV_BSS_KEY_RESP */
614
615 /* QoS and BA APIs */
616 WDI_ProcessAddTSpecRsp, /* WDI_ADD_TS_RESP */
617 WDI_ProcessDelTSpecRsp, /* WDI_DEL_TS_RESP */
618 WDI_ProcessUpdateEDCAParamsRsp, /* WDI_UPD_EDCA_PRMS_RESP */
619 WDI_ProcessAddBASessionRsp, /* WDI_ADD_BA_SESSION_RESP */
620 WDI_ProcessDelBARsp, /* WDI_DEL_BA_RESP */
621
622 /* Miscellaneous Control APIs */
623 WDI_ProcessChannelSwitchRsp, /* WDI_CH_SWITCH_RESP */
624 WDI_ProcessConfigStaRsp, /* WDI_CONFIG_STA_RESP */
625 WDI_ProcessSetLinkStateRsp, /* WDI_SET_LINK_ST_RESP */
626 WDI_ProcessGetStatsRsp, /* WDI_GET_STATS_RESP */
627 WDI_ProcessUpdateCfgRsp, /* WDI_UPDATE_CFG_RESP */
628
629 /* BA APIs*/
630 WDI_ProcessAddBARsp, /* WDI_ADD_BA_RESP */
631 WDI_ProcessTriggerBARsp, /* WDI_TRIGGER_BA_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700632
Jeff Johnson295189b2012-06-20 16:38:30 -0700633 /* IBSS APIs*/
634 WDI_ProcessUpdateBeaconParamsRsp, /* WDI_UPD_BCON_PRMS_RSP */
635 WDI_ProcessSendBeaconParamsRsp, /* WDI_SND_BCON_RSP */
636
637 /*Soft AP APIs*/
638 WDI_ProcessUpdateProbeRspTemplateRsp,/*WDI_UPD_PROBE_RSP_TEMPLATE_RESP */
639 WDI_ProcessSetStaBcastKeyRsp, /*WDI_SET_STA_BCAST_KEY_RESP */
640 WDI_ProcessRemoveStaBcastKeyRsp, /*WDI_RMV_STA_BCAST_KEY_RESP */
641 WDI_ProcessSetMaxTxPowerRsp, /*WDI_SET_MAX_TX_POWER_RESP */
642
643 /* PowerSave APIs */
644 WDI_ProcessEnterImpsRsp, /* WDI_ENTER_IMPS_RESP */
645 WDI_ProcessExitImpsRsp, /* WDI_EXIT_IMPS_RESP */
646 WDI_ProcessEnterBmpsRsp, /* WDI_ENTER_BMPS_RESP */
647 WDI_ProcessExitBmpsRsp, /* WDI_EXIT_BMPS_RESP */
648 WDI_ProcessEnterUapsdRsp, /* WDI_ENTER_UAPSD_RESP */
649 WDI_ProcessExitUapsdRsp, /* WDI_EXIT_UAPSD_RESP */
650 WDI_ProcessSetUapsdAcParamsRsp, /* WDI_SET_UAPSD_PARAM_RESP */
651 WDI_ProcessUpdateUapsdParamsRsp, /* WDI_UPDATE_UAPSD_PARAM_RESP */
652 WDI_ProcessConfigureRxpFilterRsp,/* WDI_CONFIGURE_RXP_FILTER_RESP */
653 WDI_ProcessSetBeaconFilterRsp, /* WDI_SET_BEACON_FILTER_RESP */
654 WDI_ProcessRemBeaconFilterRsp, /* WDI_REM_BEACON_FILTER_RESP */
655 WDI_ProcessSetRSSIThresoldsRsp, /* WDI_SET_RSSI_THRESHOLDS_RESP */
656 WDI_ProcessHostOffloadRsp, /* WDI_HOST_OFFLOAD_RESP */
657 WDI_ProcessWowlAddBcPtrnRsp, /* WDI_WOWL_ADD_BC_PTRN_RESP */
658 WDI_ProcessWowlDelBcPtrnRsp, /* WDI_WOWL_DEL_BC_PTRN_RESP */
659 WDI_ProcessWowlEnterRsp, /* WDI_WOWL_ENTER_RESP */
660 WDI_ProcessWowlExitRsp, /* WDI_WOWL_EXIT_RESP */
661 WDI_ProcessConfigureAppsCpuWakeupStateRsp, /* WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700662
Jeff Johnson295189b2012-06-20 16:38:30 -0700663
664 WDI_ProcessNvDownloadRsp, /* WDI_NV_DOWNLOAD_RESP*/
665
666 WDI_ProcessFlushAcRsp, /* WDI_FLUSH_AC_RESP */
667 WDI_ProcessBtAmpEventRsp, /* WDI_BTAMP_EVENT_RESP */
668#ifdef WLAN_FEATURE_VOWIFI_11R
669 WDI_ProcessAggrAddTSpecRsp, /* WDI_AGGR_ADD_TS_RESP */
670#else
671 NULL,
672#endif /* WLAN_FEATURE_VOWIFI_11R */
673 WDI_ProcessAddSTASelfRsp, /* WDI_ADD_STA_SELF_RESP */
674 WDI_ProcessDelSTASelfRsp, /* WDI_DEL_STA_SELF_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700675#ifdef FEATURE_OEM_DATA_SUPPORT
676 WDI_ProcessStartOemDataRsp, /*WDI_START_OEM_DATA_RESP*/
677#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700678 NULL,
Jeff Johnsone7245742012-09-05 17:12:55 -0700679#endif /*FEATURE_OEM_DATA_SUPPORT*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700680 WDI_ProcessHostResumeRsp, /*WDI_HOST_RESUME_RESP*/
681
Jeff Johnson295189b2012-06-20 16:38:30 -0700682 WDI_ProcessP2PGONOARsp, /*WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700683
Jeff Johnson295189b2012-06-20 16:38:30 -0700684 WDI_ProcessFTMCommandRsp, /* WDI_FTM_CMD_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700685
Jeff Johnsone7245742012-09-05 17:12:55 -0700686 WDI_ProcessKeepAliveRsp, /* WDI_KEEP_ALIVE_RESP */
687
Jeff Johnson295189b2012-06-20 16:38:30 -0700688#ifdef FEATURE_WLAN_SCAN_PNO
689 WDI_ProcessSetPreferredNetworkRsp, /* WDI_SET_PREF_NETWORK_RESP */
690 WDI_ProcessSetRssiFilterRsp, /* WDI_SET_RSSI_FILTER_RESP */
691 WDI_ProcessUpdateScanParamsRsp, /* WDI_UPDATE_SCAN_PARAMS_RESP */
692#else
693 NULL,
694 NULL,
695 NULL,
696#endif // FEATURE_WLAN_SCAN_PNO
697
698 WDI_ProcessSetTxPerTrackingRsp, /* WDI_SET_TX_PER_TRACKING_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700699 /*---------------------------------------------------------------------
700 Indications
701 ---------------------------------------------------------------------*/
702#ifdef WLAN_FEATURE_PACKET_FILTERING
703 /* WDI_8023_MULTICAST_LIST_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700704 WDI_Process8023MulticastListRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700705 /* WDI_RECEIVE_FILTER_SET_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700706 WDI_ProcessReceiveFilterSetFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700707 /* WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700708 WDI_ProcessFilterMatchCountRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700709 /* WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP */
Jeff Johnsone7245742012-09-05 17:12:55 -0700710 WDI_ProcessReceiveFilterClearFilterRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -0700711#else
712 NULL,
713 NULL,
714 NULL,
715 NULL,
716#endif // WLAN_FEATURE_PACKET_FILTERING
717
718 WDI_ProcessHALDumpCmdRsp, /* WDI_HAL_DUMP_CMD_RESP */
719 WDI_ProcessShutdownRsp, /* WDI_SHUTDOWN_RESP */
720
721 WDI_ProcessSetPowerParamsRsp, /*WDI_SET_POWER_PARAMS_RESP*/
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800722#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -0700723 WDI_ProcessTsmStatsRsp, /* WDI_TSM_STATS_RESP */
724#else
725 NULL,
726#endif
727
728#ifdef WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700729 WDI_ProcessGtkOffloadRsp, /* WDI_GTK_OFFLOAD_RESP */
730 WDI_ProcessGTKOffloadGetInfoRsp, /* WDI_GTK_OFFLOAD_GETINFO_RESP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700731#else
732 NULL,
733 NULL,
734#endif // WLAN_FEATURE_GTK_OFFLOAD
Jeff Johnsone7245742012-09-05 17:12:55 -0700735 WDI_ProcessSetTmLevelRsp, /* WDI_SET_TM_LEVEL_RESP */
736 WDI_ProcessFeatureCapsExchangeRsp, /* WDI_FEATURE_CAPS_EXCHANGE_RESP */
Mohit Khanna4a70d262012-09-11 16:30:12 -0700737#ifdef WLAN_FEATURE_11AC
738 WDI_ProcessUpdateVHTOpModeRsp, /* WDI_UPDATE_VHT_OP_MODE_RESP */
schang86c22c42013-03-13 18:41:24 -0700739#else
740 NULL,
Mohit Khanna4a70d262012-09-11 16:30:12 -0700741#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -0800742#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -0800743 WDI_ProcessGetRoamRssiRsp, /* WDI_GET_ROAM_RSSI_RESP */
744#else
745 NULL,
746#endif
schang86c22c42013-03-13 18:41:24 -0700747 WDI_ProcessSetTxPowerRsp, /* WDI_SET_TX_POWER_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700748#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -0700749 WDI_ProcessRoamScanOffloadRsp, /* WDI_ROAM_SCAN_OFFLOAD_RESP */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -0700750#else
751 NULL,
752#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530753#ifdef FEATURE_WLAN_TDLS
754 WDI_ProcessLinkEstablishReqRsp, /*WDI_TDLS_LINK_ESTABLISH_REQ_RESP*/
755#else
756 NULL,
757#endif
Leo Chang9056f462013-08-01 19:21:11 -0700758#ifdef FEATURE_WLAN_LPHB
759 WDI_ProcessLphbCfgRsp, /* WDI_LPHB_CFG_RESP */
760#else
761 NULL,
762#endif /* FEATURE_WLAN_LPHB */
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530763#ifdef WLAN_FEATURE_RMC
764 WDI_ProcessRMCRulerResp, /* WDI_RMC_RULER_RESP */
765#else
766 NULL,
767#endif /* WLAN_FEATURE_RMC */
768
769#ifdef WLAN_FEATURE_RMC
770 WDI_ProcessIbssPeerInfoRsp, /* WDI_HAL_GET_IBSS_PEER_INFO_RSP */
771#else
772 NULL,
773#endif /* WLAN_FEATURE_RMC */
Rajeev79dbe4c2013-10-05 11:03:42 +0530774
775#ifdef FEATURE_WLAN_BATCH_SCAN
776 WDI_ProcessSetBatchScanRsp, /* WDI_SET_BATCH_SCAN_RESP */
777#else
778 NULL,
779#endif /*FEATURE_WLAN_BATCH_SCAN*/
Arif Hussain935a8fb2014-01-31 12:12:28 -0800780 WDI_ProcessSetMaxTxPowerPerBandRsp, /* WDI_SET_MAX_TX_POWER_PER_BAND_RSP */
Rajeev79dbe4c2013-10-05 11:03:42 +0530781
c_hpothu92367912014-05-01 15:18:17 +0530782 WDI_ProcessUpdateChanRsp, /* WDI_UPDATE_CHAN_RESP */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -0800783
c_hpothu92367912014-05-01 15:18:17 +0530784 WDI_ProcessChannelSwitchRsp_V1, /* WDI_CH_SWITCH_RESP_V1 */
785
786 WDI_ProcessGetBcnMissRateRsp, /*WDI_GET_BCN_MISS_RATE_RSP*/
Kalikinkar dhara1e83b772014-02-06 12:59:22 -0800787
Sunil Duttbd736ed2014-05-26 21:19:41 +0530788
789#ifdef WLAN_FEATURE_LINK_LAYER_STATS
790 WDI_ProcessLLStatsSetRsp, /* WDI_LL_STATS_SET_RSP */
791 WDI_ProcessLLStatsGetRsp, /* WDI_LL_STATS_GET_RSP */
792 WDI_ProcessLLStatsClearRsp, /* WDI_LL_STATS_CLEAR_RSP */
793#else
794 NULL,
795 NULL,
796 NULL,
797#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530798#ifdef WLAN_FEATURE_EXTSCAN
799 WDI_ProcessEXTScanStartRsp, /* WDI_EXTSCAN_START_RSP */
800 WDI_ProcessEXTScanStopRsp, /* WDI_EXTSCAN_STOP_RSP */
801 WDI_ProcessEXTScanGetCachedResultsRsp, /* WDI_EXTSCAN_GET_CACHED_RESULTS_RSP */
802 WDI_ProcessEXTScanGetCapabilitiesRsp, /* WDI_EXTSCAN_GET_CAPABILITIES_RSP */
803 WDI_ProcessEXTScanSetHotlistBSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP */
804 WDI_ProcessEXTScanResetHotlistBSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530805 WDI_ProcessEXTScanSetHotlistSSIDRsp, /* WDI_EXTSCAN_SET_HOTLIST_SSID_RSP */
806 WDI_ProcessEXTScanResetHotlistSSIDRsp, /* WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP */
Dino Mycle41bdc942014-06-10 11:30:24 +0530807#else
808 NULL,
809 NULL,
810 NULL,
811 NULL,
812 NULL,
813 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530814 NULL,
815 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530816#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +0530817 WDI_ProcessSpoofMacAddrRsp, /* WDI_SPOOF_MAC_ADDR_RSP */
Abhishek Singh85b74712014-10-08 11:38:19 +0530818
819 WDI_ProcessGetFwStatsRsp, /*WDI_GET_FW_STATS_RSP*/
Srinivas Dasari4dae48f2014-11-26 21:14:16 +0530820
821 WDI_ProcessEncryptMsgRsp, /* WDI_ENCRYPT_MSG_RSP*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +0530822 WDI_ProcessFWFrameLoggingInitRsp, /* WDI_FW_LOGGING_INIT_RSP*/
Siddharth Bhal64246172015-02-27 01:04:37 +0530823 WDI_ProcessGetFrameLogRsp, /* WDI_GET_FRAME_LOG_RSP*/
Siddharth Bhalb7c421c2015-02-27 00:26:09 +0530824
Srinivas Dasari32a79262015-02-19 13:04:49 +0530825 WDI_ProcessNanResponse, /* WDI_NAN_RESPONSE */
826
Katya Nigamf0511f62015-05-05 16:40:57 +0530827 WDI_ProcessMonStartRsp, /* WDI_MON_START_RSP*/
828 WDI_ProcessMonStopRsp, /* WDI_MON_STOP_RSP*/
Sachin Ahuja715aafc2015-07-21 23:35:10 +0530829 WDI_ProcessFatalEventLogsRsp, /*WDI_FATAL_EVENT_LOGGING_RSP*/
c_manjeecfd1efb2015-09-25 19:32:34 +0530830 WDI_ProcessFwrMemDumpRsp, /* WDI_FWR_MEM_DUMP_RSP */
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530831 WDI_ProcessRssiMonitorStartRsp, /* WDI_START_RSSI_MONITOR_RSP*/
832 WDI_ProcessRssiMonitorStopRsp, /* WDI_STOP_RSSI_MONITOR_RSP*/
Arun Khandavalli7eeb1592015-10-19 21:36:57 +0530833
834 WDI_ProcessWificonfigSetRsp, /* /WDI_WIFI_CONFIG_SET_RSP*/
Kapil Guptab3a981b2016-06-26 13:36:51 +0530835#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
836 WDI_ProcessPERRoamScanOffloadRsp, /* WDI_PER_ROAM_SCAN_OFFLOAD_RSP */
837 WDI_ProcessPERRoamScanTriggerRsp, /* WDI_PER_ROAM_SCAN_TRIGGER_RSP */
838#else
839 NULL,
840 NULL,
841#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700842 /*---------------------------------------------------------------------
843 Indications
844 ---------------------------------------------------------------------*/
845 WDI_ProcessLowRSSIInd, /* Just threshold crossing not really low WDI_HAL_RSSI_NOTIFICATION_IND */
846 WDI_ProcessMissedBeaconInd, /* WDI_HAL_MISSED_BEACON_IND */
847 WDI_ProcessUnkAddrFrameInd, /* WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND */
848 WDI_ProcessMicFailureInd, /* WDI_HAL_MIC_FAILURE_IND */
849 WDI_ProcessFatalErrorInd, /* WDI_HAL_FATAL_ERROR_IND */
850 WDI_ProcessDelSTAInd, /* WDI_HAL_DEL_STA_IND */
851
852 WDI_ProcessCoexInd, /* WDI_HAL_COEX_IND */
853
854 WDI_ProcessTxCompleteInd, /* WDI_HAL_TX_COMPLETE_IND */
855
Jeff Johnson295189b2012-06-20 16:38:30 -0700856 WDI_ProcessP2pNoaAttrInd, /*WDI_HOST_NOA_ATTR_IND*/
Jeff Johnson295189b2012-06-20 16:38:30 -0700857
858#ifdef FEATURE_WLAN_SCAN_PNO
859 WDI_ProcessPrefNetworkFoundInd, /* WDI_HAL_PREF_NETWORK_FOUND_IND */
860#else
861 NULL,
862#endif // FEATURE_WLAN_SCAN_PNO
863
864#ifdef WLAN_WAKEUP_EVENTS
865 WDI_ProcessWakeReasonInd, /* WDI_WAKE_REASON_IND */
866#else // WLAN_WAKEUP_EVENTS
867 NULL,
868#endif // WLAN_WAKEUP_EVENTS
869
870 WDI_ProcessTxPerHitInd, /* WDI_HAL_TX_PER_HIT_IND */
Viral Modid86bde22012-12-10 13:09:21 -0800871
Viral Modid86bde22012-12-10 13:09:21 -0800872 WDI_ProcessP2pNoaStartInd, /* WDI_NOA_START_IND */
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530873#ifdef FEATURE_WLAN_TDLS
874 WDI_ProcessTdlsInd, /* WDI_HAL_TDLS_IND */
875#else
876 NULL,
877#endif
Leo Chang9056f462013-08-01 19:21:11 -0700878
879#ifdef FEATURE_WLAN_LPHB
Leo Changd9df8aa2013-09-26 13:32:26 -0700880 WDI_ProcessLphbInd, /* WDI_HAL_LPHB_IND */
Leo Chang9056f462013-08-01 19:21:11 -0700881#else
882 NULL,
883#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -0700884
885 WDI_ProcessIbssPeerInactivityInd, /* WDI_HAL_IBSS_PEER_INACTIVITY_IND */
Yue Mab9c86f42013-08-14 15:59:08 -0700886
887 WDI_ProcessPeriodicTxPtrnFwInd, /* WDI_HAL_PERIODIC_TX_PTRN_FW_IND */
Rajeev79dbe4c2013-10-05 11:03:42 +0530888
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530889#ifdef WLAN_FEATURE_RMC
890 WDI_ProcessRMCUpdateIndToHost, /* WDI_RMC_UPDATE_IND_TO_HOST */
891#else
892 NULL,
893#endif /* WLAN_FEATURE_RMC */
894
Rajeev79dbe4c2013-10-05 11:03:42 +0530895#ifdef FEATURE_WLAN_BATCH_SCAN
896 WDI_ProcessBatchScanResultInd, /* WDI_BATCHSCAN_RESULT_IND */
897#else
898 NULL,
899#endif
900
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530901#ifdef WLAN_FEATURE_RMC
902 WDI_ProcessTXFailInd, /*WDI_HAL_TX_FAIL_IND*/
903#else
904 NULL,
905#endif /* WLAN_FEATURE_RMC */
906
Leo Chang0b0e45a2013-12-15 15:18:55 -0800907#ifdef FEATURE_WLAN_CH_AVOID
Abhishek Singh7cd040e2016-01-07 10:51:04 +0530908 WDI_ProcessChAvoidInd, /* WDI_HAL_CH_AVOID_IND */
Leo Chang0b0e45a2013-12-15 15:18:55 -0800909#else
910 NULL,
911#endif /* FEATURE_WLAN_CH_AVOID */
912
Sunil Duttbd736ed2014-05-26 21:19:41 +0530913 WDI_printRegInfo, /* WDI_PRINT_REG_INFO_IND */
914#ifdef WLAN_FEATURE_LINK_LAYER_STATS
915 WDI_ProcessLinkLayerStatsResultsInd, /* WDI_HAL_LL_STATS_RESULTS_IND */
916#else
917 NULL,
918#endif
Dino Mycle41bdc942014-06-10 11:30:24 +0530919#ifdef WLAN_FEATURE_EXTSCAN
920 WDI_ProcessEXTScanProgressInd, /* WDI_HAL_EXTSCAN_PROGRESS_IND */
921 WDI_ProcessEXTScanScanAvailableInd, /* WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND */
922 WDI_ProcessEXTScanResultInd, /* WDI_HAL_EXTSCAN_RESULT_IND */
923 WDI_ProcessEXTScanBssidHotListResultInd, /* WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND */
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530924 WDI_ProcessEXTScanSsidHotListResultInd, /* WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND */
Dino Mycle41bdc942014-06-10 11:30:24 +0530925#else
926 NULL,
927 NULL,
928 NULL,
929 NULL,
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +0530930 NULL,
Dino Mycle41bdc942014-06-10 11:30:24 +0530931#endif /* WLAN_FEATURE_EXTSCAN */
Atul Mittalc0f739f2014-07-31 13:47:47 +0530932#ifdef FEATURE_WLAN_TDLS
933 WDI_ProcessChanSwitchReqRsp, /*WDI_TDLS_CHAN_SWITCH_REQ_RESP*/
934#else
935 NULL,
936#endif
Abhishek Singh66c16762014-08-14 19:13:19 +0530937 WDI_delBaInd, /* WDI_HAL_DEL_BA_IND*/
Srinivas Dasari32a79262015-02-19 13:04:49 +0530938 WDI_ProcessNanEvent, /* WDI_HAL_NAN_EVENT */
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +0530939 WDI_Process_LostLinkParamInd, /* WDI_HAL_LOST_LINK_PARAMS_IND*/
Gupta, Kapil7c34b322015-09-30 13:12:35 +0530940 WDI_Process_RssiBreachedInd, /* WDI_HAL_RSSI_BREACHED_IND */
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +0530941#ifdef FEATURE_OEM_DATA_SUPPORT
942 WDI_ProcessStartOemDataRspIndNew, /* WDI_HAL_START_OEM_DATA_RSP_IND_NEW */
943#else
944 NULL,
945#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +0530946 WDI_ProcessGetCurrentAntennaIndexRsp, /* WDI_ANTENNA_DIVERSITY_SELECTION_RSP */
Jeff Johnson295189b2012-06-20 16:38:30 -0700947};
948
949
Jeff Johnsone7245742012-09-05 17:12:55 -0700950/*---------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -0700951 WLAN DAL Global Control Block
952 ---------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700953WDI_ControlBlockType gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -0700954static wpt_uint8 gWDIInitialized = eWLAN_PAL_FALSE;
955
Jeff Johnsone7245742012-09-05 17:12:55 -0700956const wpt_uint8 szTransportChName[] = "WLAN_CTRL";
Jeff Johnson295189b2012-06-20 16:38:30 -0700957
958/*Helper routine for retrieving the PAL Context from WDI*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700959WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -0700960void* WDI_GET_PAL_CTX( void )
961{
Jeff Johnsone7245742012-09-05 17:12:55 -0700962 return gWDICb.pPALContext;
Jeff Johnson295189b2012-06-20 16:38:30 -0700963}/*WDI_GET_PAL_CTX*/
964
Jeff Johnsone7245742012-09-05 17:12:55 -0700965/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -0700966 Helper inline converters
967 ============================================================================*/
968/*Convert WDI driver type into HAL driver type*/
969WPT_STATIC WPT_INLINE WDI_Status
970WDI_HAL_2_WDI_STATUS
971(
972 eHalStatus halStatus
973);
974
975/*Convert WDI request type into HAL request type*/
976WPT_STATIC WPT_INLINE tHalHostMsgType
977WDI_2_HAL_REQ_TYPE
978(
979 WDI_RequestEnumType wdiReqType
980);
981
982/*Convert WDI response type into HAL response type*/
983WPT_STATIC WPT_INLINE WDI_ResponseEnumType
984HAL_2_WDI_RSP_TYPE
985(
986 tHalHostMsgType halMsg
987);
988
989/*Convert WDI driver type into HAL driver type*/
990WPT_STATIC WPT_INLINE tDriverType
991WDI_2_HAL_DRV_TYPE
992(
993 WDI_DriverType wdiDriverType
994);
995
996/*Convert WDI stop reason into HAL stop reason*/
997WPT_STATIC WPT_INLINE tHalStopType
998WDI_2_HAL_STOP_REASON
999(
1000 WDI_StopType wdiStopType
1001);
1002
1003/*Convert WDI scan mode type into HAL scan mode type*/
1004WPT_STATIC WPT_INLINE eHalSysMode
1005WDI_2_HAL_SCAN_MODE
1006(
1007 WDI_ScanMode wdiScanMode
1008);
1009
1010/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001011WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -07001012WDI_2_HAL_SEC_CH_OFFSET
1013(
1014 WDI_HTSecondaryChannelOffset wdiSecChOffset
1015);
1016
1017/*Convert WDI BSS type into HAL BSS type*/
1018WPT_STATIC WPT_INLINE tSirBssType
1019WDI_2_HAL_BSS_TYPE
1020(
1021 WDI_BssType wdiBSSType
1022);
1023
1024/*Convert WDI NW type into HAL NW type*/
1025WPT_STATIC WPT_INLINE tSirNwType
1026WDI_2_HAL_NW_TYPE
1027(
1028 WDI_NwType wdiNWType
1029);
1030
1031/*Convert WDI chanel bonding type into HAL cb type*/
1032WPT_STATIC WPT_INLINE ePhyChanBondState
1033WDI_2_HAL_CB_STATE
1034(
1035 WDI_PhyChanBondState wdiCbState
1036);
1037
1038/*Convert WDI chanel bonding type into HAL cb type*/
1039WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
1040WDI_2_HAL_HT_OPER_MODE
1041(
1042 WDI_HTOperatingMode wdiHTOperMode
1043);
1044
1045/*Convert WDI mimo PS type into HAL mimo PS type*/
1046WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
1047WDI_2_HAL_MIMO_PS
1048(
1049 WDI_HTMIMOPowerSaveState wdiHTOperMode
1050);
1051
1052/*Convert WDI ENC type into HAL ENC type*/
1053WPT_STATIC WPT_INLINE tAniEdType
1054WDI_2_HAL_ENC_TYPE
1055(
1056 WDI_EncryptType wdiEncType
1057);
1058
1059/*Convert WDI WEP type into HAL WEP type*/
1060WPT_STATIC WPT_INLINE tAniWepType
1061WDI_2_HAL_WEP_TYPE
1062(
1063 WDI_WepType wdiWEPType
1064);
1065
1066/*Convert WDI Link State into HAL Link State*/
1067WPT_STATIC WPT_INLINE tSirLinkState
1068WDI_2_HAL_LINK_STATE
1069(
1070 WDI_LinkStateType wdiLinkState
1071);
1072
Jeff Johnsone7245742012-09-05 17:12:55 -07001073/*Translate a STA Context from WDI into HAL*/
1074WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -07001075void
1076WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -07001077(
Jeff Johnson295189b2012-06-20 16:38:30 -07001078 tConfigStaParams* phalConfigSta,
1079 WDI_ConfigStaReqInfoType* pwdiConfigSta
1080);
Jeff Johnsone7245742012-09-05 17:12:55 -07001081
1082/*Translate a Rate set info from WDI into HAL*/
1083WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -07001084WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -07001085(
Jeff Johnson295189b2012-06-20 16:38:30 -07001086 tSirMacRateSet* pHalRateSet,
1087 WDI_RateSet* pwdiRateSet
1088);
1089
1090/*Translate an EDCA Parameter Record from WDI into HAL*/
1091WPT_STATIC WPT_INLINE void
1092WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -07001093(
Jeff Johnson295189b2012-06-20 16:38:30 -07001094 tSirMacEdcaParamRecord* phalEdcaParam,
1095 WDI_EdcaParamRecord* pWDIEdcaParam
1096);
1097
1098/*Copy a management frame header from WDI fmt into HAL fmt*/
1099WPT_STATIC WPT_INLINE void
1100WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
1101(
1102 tSirMacMgmtHdr* pmacMgmtHdr,
1103 WDI_MacMgmtHdr* pwdiMacMgmtHdr
1104);
1105
1106/*Copy config bss parameters from WDI fmt into HAL fmt*/
1107WPT_STATIC WPT_INLINE void
1108WDI_CopyWDIConfigBSSToHALConfigBSS
1109(
1110 tConfigBssParams* phalConfigBSS,
1111 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
1112);
1113
Jeff Johnsone7245742012-09-05 17:12:55 -07001114/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -07001115 pointed to by user data */
1116WPT_STATIC WPT_INLINE void
1117WDI_ExtractRequestCBFromEvent
1118(
1119 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -07001120 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001121 void** ppUserData
1122);
1123
1124wpt_uint8
1125WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -07001126(
Jeff Johnson295189b2012-06-20 16:38:30 -07001127 WDI_ControlBlockType* pWDICtx,
1128 WDI_BSSSessionType** ppSession
1129);
1130
1131void
1132WDI_AddBcastSTAtoSTATable
1133(
1134 WDI_ControlBlockType* pWDICtx,
1135 WDI_AddStaParams * staParams,
1136 wpt_uint16 usBcastStaIdx
1137);
1138
1139WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -07001140(
Jeff Johnson295189b2012-06-20 16:38:30 -07001141 WDI_ControlBlockType* pWDICtx,
1142 WDI_EventInfoType* pEventData
1143);
1144
1145void
1146WDI_SetPowerStateCb
1147(
1148 wpt_status status,
1149 unsigned int dxePhyAddr,
1150 void *pContext
1151);
1152
Jeff Johnson295189b2012-06-20 16:38:30 -07001153/**
1154 @brief WDI_getReqMsgString prints the WDI request message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001155
1156 @param wdiReqMsgId: WDI Message request Id
1157
1158 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001159 @return Result of the function call
1160*/
1161static char *WDI_getReqMsgString(wpt_uint16 wdiReqMsgId)
1162{
1163 switch (wdiReqMsgId)
1164 {
1165 CASE_RETURN_STRING( WDI_START_REQ );
1166 CASE_RETURN_STRING( WDI_STOP_REQ );
1167 CASE_RETURN_STRING( WDI_CLOSE_REQ );
1168 CASE_RETURN_STRING( WDI_INIT_SCAN_REQ );
1169 CASE_RETURN_STRING( WDI_START_SCAN_REQ );
1170 CASE_RETURN_STRING( WDI_END_SCAN_REQ );
1171 CASE_RETURN_STRING( WDI_FINISH_SCAN_REQ );
1172 CASE_RETURN_STRING( WDI_JOIN_REQ );
1173 CASE_RETURN_STRING( WDI_CONFIG_BSS_REQ );
1174 CASE_RETURN_STRING( WDI_DEL_BSS_REQ );
1175 CASE_RETURN_STRING( WDI_POST_ASSOC_REQ );
1176 CASE_RETURN_STRING( WDI_DEL_STA_REQ );
1177 CASE_RETURN_STRING( WDI_SET_BSS_KEY_REQ );
1178 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_REQ );
1179 CASE_RETURN_STRING( WDI_SET_STA_KEY_REQ );
1180 CASE_RETURN_STRING( WDI_RMV_STA_KEY_REQ );
1181 CASE_RETURN_STRING( WDI_ADD_TS_REQ );
1182 CASE_RETURN_STRING( WDI_DEL_TS_REQ );
1183 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_REQ );
1184 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_REQ );
1185 CASE_RETURN_STRING( WDI_DEL_BA_REQ );
1186 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ );
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08001187 CASE_RETURN_STRING( WDI_CH_SWITCH_REQ_V1);
Jeff Johnson295189b2012-06-20 16:38:30 -07001188 CASE_RETURN_STRING( WDI_CONFIG_STA_REQ );
1189 CASE_RETURN_STRING( WDI_SET_LINK_ST_REQ );
1190 CASE_RETURN_STRING( WDI_GET_STATS_REQ );
1191 CASE_RETURN_STRING( WDI_UPDATE_CFG_REQ );
1192 CASE_RETURN_STRING( WDI_ADD_BA_REQ );
1193 CASE_RETURN_STRING( WDI_TRIGGER_BA_REQ );
1194 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_REQ );
1195 CASE_RETURN_STRING( WDI_SND_BCON_REQ );
1196 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_REQ );
1197 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_REQ );
1198 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_REQ );
1199 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_REQ );
Arif Hussaina5ebce02013-08-09 15:09:58 -07001200 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_PER_BAND_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001201 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301202#ifdef FEATURE_WLAN_TDLS
1203 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301204 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301205#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001206 CASE_RETURN_STRING( WDI_ENTER_IMPS_REQ );
1207 CASE_RETURN_STRING( WDI_EXIT_IMPS_REQ );
1208 CASE_RETURN_STRING( WDI_ENTER_BMPS_REQ );
1209 CASE_RETURN_STRING( WDI_EXIT_BMPS_REQ );
1210 CASE_RETURN_STRING( WDI_ENTER_UAPSD_REQ );
1211 CASE_RETURN_STRING( WDI_EXIT_UAPSD_REQ );
1212 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_REQ );
1213 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_REQ );
1214 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_REQ );
1215 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_REQ);
1216 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_REQ );
1217 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_REQ );
1218 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_REQ );
1219 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_REQ );
1220 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_REQ );
1221 CASE_RETURN_STRING( WDI_WOWL_ENTER_REQ );
1222 CASE_RETURN_STRING( WDI_WOWL_EXIT_REQ );
1223 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ );
1224 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_REQ );
1225 CASE_RETURN_STRING( WDI_FLUSH_AC_REQ );
1226 CASE_RETURN_STRING( WDI_BTAMP_EVENT_REQ );
1227 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_REQ );
1228 CASE_RETURN_STRING( WDI_ADD_STA_SELF_REQ );
1229 CASE_RETURN_STRING( WDI_DEL_STA_SELF_REQ );
1230 CASE_RETURN_STRING( WDI_FTM_CMD_REQ );
Jeff Johnsone7245742012-09-05 17:12:55 -07001231 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ );
Jeff Johnson295189b2012-06-20 16:38:30 -07001232 CASE_RETURN_STRING( WDI_HOST_RESUME_REQ );
1233 CASE_RETURN_STRING( WDI_KEEP_ALIVE_REQ);
1234 #ifdef FEATURE_WLAN_SCAN_PNO
1235 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_REQ );
1236 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_REQ );
1237 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_REQ );
1238 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001239#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001240 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_REQ );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001241#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001242 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_REQ );
1243 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_REQ );
1244 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_REQ );
1245 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ );
1246 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ );
1247 CASE_RETURN_STRING( WDI_INIT_SCAN_CON_REQ );
1248 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_REQ );
1249 CASE_RETURN_STRING( WDI_SHUTDOWN_REQ );
1250 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_REQ );
c_hpothu92367912014-05-01 15:18:17 +05301251 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_REQ );
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08001252 CASE_RETURN_STRING( WDI_TRAFFIC_STATS_IND );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001253 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_REQ );
Chet Lanctot186b5732013-03-18 10:26:30 -07001254#ifdef WLAN_FEATURE_11W
1255 CASE_RETURN_STRING( WDI_EXCLUDE_UNENCRYPTED_IND );
1256#endif
Rajeev79dbe4c2013-10-05 11:03:42 +05301257#ifdef FEATURE_WLAN_BATCH_SCAN
1258 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_REQ);
1259 CASE_RETURN_STRING( WDI_STOP_BATCH_SCAN_IND );
1260 CASE_RETURN_STRING( WDI_TRIGGER_BATCH_SCAN_RESULT_IND);
1261#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +05301262#ifdef WLAN_FEATURE_RMC
1263 CASE_RETURN_STRING( WDI_TX_FAIL_MONITOR_IND );
1264#endif /* WLAN_FEATURE_RMC */
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +05301265 CASE_RETURN_STRING(WDI_START_HT40_OBSS_SCAN_IND);
1266 CASE_RETURN_STRING(WDI_STOP_HT40_OBSS_SCAN_IND);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001267 CASE_RETURN_STRING(WDI_UPDATE_CHAN_REQ);
Sunil Duttbd736ed2014-05-26 21:19:41 +05301268#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1269 CASE_RETURN_STRING( WDI_LL_STATS_SET_REQ);
1270 CASE_RETURN_STRING( WDI_LL_STATS_GET_REQ);
1271 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_REQ);
1272#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301273#ifdef WLAN_FEATURE_EXTSCAN
1274 CASE_RETURN_STRING( WDI_EXTSCAN_START_REQ);
1275 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_REQ);
1276 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_REQ);
1277 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_REQ);
1278 CASE_RETURN_STRING( WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ);
1279 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301280 CASE_RETURN_STRING( WDI_EXTSCAN_SET_SSID_HOTLIST_REQ);
1281 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ);
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +05301282 CASE_RETURN_STRING( WDI_HIGH_PRIORITY_DATA_INFO_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301283#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +05301284 CASE_RETURN_STRING( WDI_SPOOF_MAC_ADDR_REQ);
Abhishek Singh85b74712014-10-08 11:38:19 +05301285 CASE_RETURN_STRING( WDI_GET_FW_STATS_REQ);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301286 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_REQ);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301287 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_REQ);
Siddharth Bhal64246172015-02-27 01:04:37 +05301288 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_REQ);
Srinivas Dasari32a79262015-02-19 13:04:49 +05301289 CASE_RETURN_STRING( WDI_NAN_REQUEST );
Abhishek Singh41988ba2015-05-25 19:42:29 +05301290 CASE_RETURN_STRING( WDI_SET_RTS_CTS_HTVHT_IND );
Katya Nigamf0511f62015-05-05 16:40:57 +05301291 CASE_RETURN_STRING( WDI_MON_START_REQ );
1292 CASE_RETURN_STRING( WDI_MON_STOP_REQ );
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301293 CASE_RETURN_STRING( WDI_FATAL_EVENT_LOGGING_REQ );
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +05301294 CASE_RETURN_STRING( WDI_SEND_FREQ_RANGE_CONTROL_IND );
c_manjeecfd1efb2015-09-25 19:32:34 +05301295 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_REQ);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301296 CASE_RETURN_STRING( WDI_START_RSSI_MONITOR_REQ );
1297 CASE_RETURN_STRING( WDI_STOP_RSSI_MONITOR_REQ );
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301298 CASE_RETURN_STRING( WDI_START_OEM_DATA_REQ_IND_NEW );
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301299 CASE_RETURN_STRING( WDI_ANTENNA_DIVERSITY_SELECTION_REQ );
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +05301300 CASE_RETURN_STRING( WDI_MODIFY_ROAM_PARAMS_IND );
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +05301301 CASE_RETURN_STRING( WDI_SET_ALLOWED_ACTION_FRAMES_IND );
Jeff Johnson295189b2012-06-20 16:38:30 -07001302 default:
1303 return "Unknown WDI MessageId";
1304 }
1305}
1306
1307
1308
1309/**
1310 @brief WDI_getRespMsgString prints the WDI resonse message in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001311
1312 @param wdiRespMsgId: WDI Message response Id
1313
1314 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001315 @return Result of the function call
1316*/
1317static char *WDI_getRespMsgString(wpt_uint16 wdiRespMsgId)
1318{
1319 switch (wdiRespMsgId)
1320 {
1321 CASE_RETURN_STRING( WDI_START_RESP );
1322 CASE_RETURN_STRING( WDI_STOP_RESP );
1323 CASE_RETURN_STRING( WDI_CLOSE_RESP );
1324 CASE_RETURN_STRING( WDI_INIT_SCAN_RESP );
1325 CASE_RETURN_STRING( WDI_START_SCAN_RESP );
1326 CASE_RETURN_STRING( WDI_END_SCAN_RESP );
1327 CASE_RETURN_STRING( WDI_FINISH_SCAN_RESP );
1328 CASE_RETURN_STRING( WDI_JOIN_RESP );
1329 CASE_RETURN_STRING( WDI_CONFIG_BSS_RESP );
1330 CASE_RETURN_STRING( WDI_DEL_BSS_RESP );
1331 CASE_RETURN_STRING( WDI_POST_ASSOC_RESP );
1332 CASE_RETURN_STRING( WDI_DEL_STA_RESP );
1333 CASE_RETURN_STRING( WDI_SET_BSS_KEY_RESP );
1334 CASE_RETURN_STRING( WDI_RMV_BSS_KEY_RESP );
1335 CASE_RETURN_STRING( WDI_SET_STA_KEY_RESP );
1336 CASE_RETURN_STRING( WDI_RMV_STA_KEY_RESP );
1337 CASE_RETURN_STRING( WDI_ADD_TS_RESP );
1338 CASE_RETURN_STRING( WDI_DEL_TS_RESP );
1339 CASE_RETURN_STRING( WDI_UPD_EDCA_PRMS_RESP );
1340 CASE_RETURN_STRING( WDI_ADD_BA_SESSION_RESP );
1341 CASE_RETURN_STRING( WDI_DEL_BA_RESP );
1342 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP );
1343 CASE_RETURN_STRING( WDI_CONFIG_STA_RESP );
1344 CASE_RETURN_STRING( WDI_SET_LINK_ST_RESP );
1345 CASE_RETURN_STRING( WDI_GET_STATS_RESP );
1346 CASE_RETURN_STRING( WDI_UPDATE_CFG_RESP );
1347 CASE_RETURN_STRING( WDI_ADD_BA_RESP );
1348 CASE_RETURN_STRING( WDI_TRIGGER_BA_RESP );
1349 CASE_RETURN_STRING( WDI_UPD_BCON_PRMS_RESP );
1350 CASE_RETURN_STRING( WDI_SND_BCON_RESP );
1351 CASE_RETURN_STRING( WDI_UPD_PROBE_RSP_TEMPLATE_RESP );
1352 CASE_RETURN_STRING( WDI_SET_STA_BCAST_KEY_RESP );
1353 CASE_RETURN_STRING( WDI_RMV_STA_BCAST_KEY_RESP );
1354 CASE_RETURN_STRING( WDI_SET_MAX_TX_POWER_RESP );
1355 CASE_RETURN_STRING( WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301356#ifdef FEATURE_WLAN_TDLS
1357 CASE_RETURN_STRING( WDI_TDLS_LINK_ESTABLISH_REQ_RESP );
Atul Mittalc0f739f2014-07-31 13:47:47 +05301358 CASE_RETURN_STRING( WDI_TDLS_CHAN_SWITCH_REQ_RESP);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05301359 CASE_RETURN_STRING( WDI_HAL_TDLS_IND );
1360#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001361 CASE_RETURN_STRING( WDI_ENTER_IMPS_RESP );
1362 CASE_RETURN_STRING( WDI_EXIT_IMPS_RESP );
1363 CASE_RETURN_STRING( WDI_ENTER_BMPS_RESP );
1364 CASE_RETURN_STRING( WDI_EXIT_BMPS_RESP );
1365 CASE_RETURN_STRING( WDI_ENTER_UAPSD_RESP );
1366 CASE_RETURN_STRING( WDI_EXIT_UAPSD_RESP );
1367 CASE_RETURN_STRING( WDI_SET_UAPSD_PARAM_RESP );
1368 CASE_RETURN_STRING( WDI_UPDATE_UAPSD_PARAM_RESP );
1369 CASE_RETURN_STRING( WDI_CONFIGURE_RXP_FILTER_RESP );
1370 CASE_RETURN_STRING( WDI_SET_BEACON_FILTER_RESP);
1371 CASE_RETURN_STRING( WDI_REM_BEACON_FILTER_RESP );
1372 CASE_RETURN_STRING( WDI_SET_RSSI_THRESHOLDS_RESP );
1373 CASE_RETURN_STRING( WDI_HOST_OFFLOAD_RESP );
1374 CASE_RETURN_STRING( WDI_WOWL_ADD_BC_PTRN_RESP );
1375 CASE_RETURN_STRING( WDI_WOWL_DEL_BC_PTRN_RESP );
1376 CASE_RETURN_STRING( WDI_WOWL_ENTER_RESP );
1377 CASE_RETURN_STRING( WDI_WOWL_EXIT_RESP );
1378 CASE_RETURN_STRING( WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP );
1379 CASE_RETURN_STRING( WDI_NV_DOWNLOAD_RESP );
1380 CASE_RETURN_STRING( WDI_FLUSH_AC_RESP );
1381 CASE_RETURN_STRING( WDI_BTAMP_EVENT_RESP );
1382 CASE_RETURN_STRING( WDI_AGGR_ADD_TS_RESP );
1383 CASE_RETURN_STRING( WDI_ADD_STA_SELF_RESP );
1384 CASE_RETURN_STRING( WDI_DEL_STA_SELF_RESP );
1385 CASE_RETURN_STRING( WDI_FTM_CMD_RESP );
Jeff Johnsone7245742012-09-05 17:12:55 -07001386 CASE_RETURN_STRING( WDI_START_OEM_DATA_RESP );
Jeff Johnson295189b2012-06-20 16:38:30 -07001387 CASE_RETURN_STRING( WDI_HOST_RESUME_RESP );
1388 CASE_RETURN_STRING( WDI_KEEP_ALIVE_RESP);
1389 #ifdef FEATURE_WLAN_SCAN_PNO
1390 CASE_RETURN_STRING( WDI_SET_PREF_NETWORK_RESP );
1391 CASE_RETURN_STRING( WDI_SET_RSSI_FILTER_RESP );
1392 CASE_RETURN_STRING( WDI_UPDATE_SCAN_PARAMS_RESP );
1393 #endif
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001394#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -07001395 CASE_RETURN_STRING( WDI_ROAM_SCAN_OFFLOAD_RESP );
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -07001396#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001397 CASE_RETURN_STRING( WDI_SET_TX_PER_TRACKING_RESP );
1398 CASE_RETURN_STRING( WDI_8023_MULTICAST_LIST_RESP );
1399 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_SET_FILTER_RESP );
1400 CASE_RETURN_STRING( WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP );
1401 CASE_RETURN_STRING( WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP );
1402 CASE_RETURN_STRING( WDI_HAL_DUMP_CMD_RESP );
1403 CASE_RETURN_STRING( WDI_SHUTDOWN_RESP );
1404 CASE_RETURN_STRING( WDI_SET_POWER_PARAMS_RESP );
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08001405 CASE_RETURN_STRING( WDI_GET_ROAM_RSSI_RESP );
Abhishek Singh7cd040e2016-01-07 10:51:04 +05301406#ifdef WLAN_FEATURE_RMC
1407 CASE_RETURN_STRING( WDI_RMC_RULER_RESP );
1408 CASE_RETURN_STRING( WDI_RMC_UPDATE_IND_TO_HOST );
1409
1410 CASE_RETURN_STRING( WDI_HAL_IBSS_PEER_INFO_RSP );
1411#endif /* WLAN_FEATURE_RMC */
Rajeev79dbe4c2013-10-05 11:03:42 +05301412#ifdef FEATURE_WLAN_BATCH_SCAN
1413 CASE_RETURN_STRING( WDI_SET_BATCH_SCAN_RESP);
1414#endif
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08001415 CASE_RETURN_STRING( WDI_UPDATE_CHAN_RESP);
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301416 CASE_RETURN_STRING( WDI_CH_SWITCH_RESP_V1 );
c_hpothu92367912014-05-01 15:18:17 +05301417 CASE_RETURN_STRING( WDI_GET_BCN_MISS_RATE_RSP );
Sunil Duttbd736ed2014-05-26 21:19:41 +05301418#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1419 CASE_RETURN_STRING( WDI_LL_STATS_SET_RSP);
1420 CASE_RETURN_STRING( WDI_LL_STATS_GET_RSP);
1421 CASE_RETURN_STRING( WDI_LL_STATS_CLEAR_RSP);
1422#endif
Dino Mycle41bdc942014-06-10 11:30:24 +05301423#ifdef WLAN_FEATURE_EXTSCAN
1424 CASE_RETURN_STRING( WDI_EXTSCAN_START_RSP);
1425 CASE_RETURN_STRING( WDI_EXTSCAN_STOP_RSP);
1426 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
1427 CASE_RETURN_STRING( WDI_EXTSCAN_GET_CAPABILITIES_RSP);
1428 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
1429 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301430 CASE_RETURN_STRING( WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
1431 CASE_RETURN_STRING( WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
Dino Mycle41bdc942014-06-10 11:30:24 +05301432 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_PROGRESS_IND);
1433 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND);
1434 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_RESULT_IND);
1435 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND);
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +05301436 CASE_RETURN_STRING( WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND);
Dino Mycle41bdc942014-06-10 11:30:24 +05301437#endif /* WLAN_FEATURE_EXTSCAN */
Abhishek Singh85b74712014-10-08 11:38:19 +05301438 CASE_RETURN_STRING( WDI_GET_FW_STATS_RSP);
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301439 CASE_RETURN_STRING( WDI_ENCRYPT_MSG_RSP);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301440 CASE_RETURN_STRING( WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhal64246172015-02-27 01:04:37 +05301441 CASE_RETURN_STRING( WDI_GET_FRAME_LOG_RSP);
Sachin Ahuja715aafc2015-07-21 23:35:10 +05301442 CASE_RETURN_STRING (WDI_FATAL_EVENT_LOGGING_RSP);
c_manjeecfd1efb2015-09-25 19:32:34 +05301443 CASE_RETURN_STRING( WDI_FWR_MEM_DUMP_RSP);
Gupta, Kapil7c34b322015-09-30 13:12:35 +05301444 CASE_RETURN_STRING (WDI_START_RSSI_MONITOR_RSP);
1445 CASE_RETURN_STRING (WDI_STOP_RSSI_MONITOR_RSP);
Arun Khandavalli7eeb1592015-10-19 21:36:57 +05301446 CASE_RETURN_STRING( WDI_WIFI_CONFIG_SET_RSP);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +05301447#ifdef FEATURE_OEM_DATA_SUPPORT
1448 CASE_RETURN_STRING (WDI_HAL_START_OEM_DATA_RSP_IND_NEW);
1449#endif
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301450 CASE_RETURN_STRING (WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
Kapil Guptab3a981b2016-06-26 13:36:51 +05301451#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
1452 CASE_RETURN_STRING (WDI_PER_ROAM_SCAN_OFFLOAD_RSP);
1453 CASE_RETURN_STRING (WDI_PER_ROAM_SCAN_TRIGGER_RSP);
1454#endif
Jeff Johnson295189b2012-06-20 16:38:30 -07001455 default:
1456 return "Unknown WDI MessageId";
1457 }
1458}
1459
1460/**
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301461 @brief WDI_TraceHostFWCapabilities - Parses both host and Firmware
1462 Capability bitmap array.
Abhishek Singh08b60122014-02-04 18:05:23 +05301463 @param capabilityBitmap - Base address of a 4 element Bitmap array
1464 of type tANI_U32.
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301465 @see
1466 @returns None
1467 */
1468void WDI_TraceHostFWCapabilities(tANI_U32 *capabilityBitmap)
1469{
Abhishek Singh08b60122014-02-04 18:05:23 +05301470 int i,j;
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301471 char *pTempCapStr = NULL;
1472 char *pCapStr = NULL;
1473 pTempCapStr = vos_mem_malloc(MAX_FW_HOST_CAP_SIZE);
1474 if (NULL == pTempCapStr)
1475 {
1476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1477 "Memory allocation failed for CapStr");
1478 return;
1479 }
1480
1481 pCapStr = pTempCapStr;
Abhishek Singh08b60122014-02-04 18:05:23 +05301482 for (j = 0; j < 4; j++) {
1483 for (i = 0; i < 32; i++) {
1484 if ((*(capabilityBitmap + j) & (1 << i))) {
1485 switch(i + (j * 32)) {
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301486 case MCC: snprintf(pCapStr, sizeof("MCC"), "%s", "MCC");
1487 pCapStr += strlen("MCC");
1488 break;
1489 case P2P: snprintf(pCapStr, sizeof("P2P"), "%s", "P2P");
1490 pCapStr += strlen("P2P");
1491 break;
1492 case DOT11AC: snprintf(pCapStr, sizeof("DOT11AC") , "%s", "DOT11AC");
1493 pCapStr += strlen("DOT11AC");
1494 break;
1495 case SLM_SESSIONIZATION: snprintf(pCapStr, sizeof("SLM_SESSIONIZATION"), "%s", "SLM_SESSIONIZATION");
1496 pCapStr += strlen("SLM_SESSIONIZATION");
1497 break;
1498 case DOT11AC_OPMODE: snprintf(pCapStr, sizeof("DOT11AC_OPMODE"), "%s", "DOT11AC_OPMODE");
1499 pCapStr += strlen("DOT11AC_OPMODE");
1500 break;
1501 case SAP32STA: snprintf(pCapStr, sizeof("SAP32STA"), "%s", "SAP32STA");
1502 pCapStr += strlen("SAP32STA");
1503 break;
1504 case TDLS: snprintf(pCapStr, sizeof("TDLS"), "%s", "TDLS");
1505 pCapStr += strlen("TDLS");
1506 break;
1507 case P2P_GO_NOA_DECOUPLE_INIT_SCAN: snprintf(pCapStr, sizeof("P2P_GO_NOA_DECOUPLE_INIT_SCAN"), "%s", "P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1508 pCapStr += strlen("P2P_GO_NOA_DECOUPLE_INIT_SCAN");
1509 break;
1510 case WLANACTIVE_OFFLOAD: snprintf(pCapStr, sizeof("WLANACTIVE_OFFLOAD"), "%s", "WLANACTIVE_OFFLOAD");
1511 pCapStr += strlen("WLANACTIVE_OFFLOAD");
1512 break;
1513 case BEACON_OFFLOAD: snprintf(pCapStr, sizeof("BEACON_OFFLOAD"), "%s","BEACON_OFFLOAD");
1514 pCapStr += strlen("BEACON_OFFLOAD");
1515 break;
1516 case SCAN_OFFLOAD: snprintf(pCapStr, sizeof("SCAN_OFFLOAD"), "%s", "SCAN_OFFLOAD");
1517 pCapStr += strlen("SCAN_OFFLOAD");
1518 break;
1519 case ROAM_OFFLOAD: snprintf(pCapStr, sizeof("ROAM_OFFLOAD"), "%s", "ROAM_OFFLOAD");
1520 pCapStr += strlen("ROAM_OFFLOAD");
1521 break;
1522 case BCN_MISS_OFFLOAD: snprintf(pCapStr, sizeof("BCN_MISS_OFFLOAD"), "%s", "BCN_MISS_OFFLOAD");
1523 pCapStr += strlen("BCN_MISS_OFFLOAD");
1524 break;
1525 case STA_POWERSAVE: snprintf(pCapStr, sizeof("STA_POWERSAVE"), "%s", "STA_POWERSAVE");
1526 pCapStr += strlen("STA_POWERSAVE");
1527 break;
1528 case AP_UAPSD: snprintf(pCapStr, sizeof("AP_UAPSD"), "%s", "AP_UAPSD");
1529 pCapStr += strlen("AP_UAPSD");
1530 break;
1531 case AP_DFS: snprintf(pCapStr, sizeof("AP_DFS"), "%s", "AP_DFS");
1532 pCapStr += strlen("AP_DFS");
1533 break;
1534 case BLOCKACK: snprintf(pCapStr, sizeof("BLOCKACK"), "%s", "BLOCKACK");
1535 pCapStr += strlen("BLOCKACK");
1536 break;
1537 case PHY_ERR: snprintf(pCapStr, sizeof("PHY_ERR"), "%s", "PHY_ERR");
1538 pCapStr += strlen("PHY_ERR");
1539 break;
1540 case BCN_FILTER: snprintf(pCapStr, sizeof("BCN_FILTER"), "%s", "BCN_FILTER");
1541 pCapStr += strlen("BCN_FILTER");
1542 break;
1543 case RTT: snprintf(pCapStr, sizeof("RTT"), "%s", "RTT");
1544 pCapStr += strlen("RTT");
1545 break;
1546 case RATECTRL: snprintf(pCapStr, sizeof("RATECTRL"), "%s", "RATECTRL");
1547 pCapStr += strlen("RATECTRL");
1548 break;
1549 case WOW: snprintf(pCapStr, sizeof("WOW"), "%s", "WOW");
1550 pCapStr += strlen("WOW");
1551 break;
1552 case WLAN_ROAM_SCAN_OFFLOAD: snprintf(pCapStr, sizeof("WLAN_ROAM_SCAN_OFFLOAD"), "%s", "WLAN_ROAM_SCAN_OFFLOAD");
1553 pCapStr += strlen("WLAN_ROAM_SCAN_OFFLOAD");
1554 break;
Kanchanapally, Vidyullathaf9426e52013-12-24 17:28:54 +05301555 case FW_IN_TX_PATH: snprintf(pCapStr, sizeof("FW_IN_TX_PATH"), "%s", "FW_IN_TX_PATH");
1556 pCapStr += strlen("FW_IN_TX_PATH");
1557 break;
Sandeep Puligilla60342762014-01-30 21:05:37 +05301558 case HT40_OBSS_SCAN:
1559 snprintf(pCapStr, sizeof("HT40_OBSS_SCAN"),
1560 "%s", "HT40_OBSS_SCAN");
1561 pCapStr += strlen("HT40_OBSS_SCAN");
1562 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301563 case EXTENDED_NSOFFLOAD_SLOT: snprintf(pCapStr,
1564 sizeof("EXTENDED_NSOFFLOAD_SLOT"),
1565 "%s", "EXTENDED_NSOFFLOAD_SLOT");
1566 pCapStr += strlen("EXTENDED_NSOFFLOAD_SLOT");
1567 break;
Pradeep Reddy POTTETIedaeb5f2014-05-22 23:34:41 +05301568 case TDLS_SCAN_COEXISTENCE: snprintf(pCapStr, sizeof("TDLS_SCAN_COEXISTENCE"), "%s", "TDLS_SCAN_COEXISTENCE");
1569 pCapStr += strlen("TDLS_SCAN_COEXISTENCE");
1570 break;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +05301571 case CH_SWITCH_V1: snprintf(pCapStr, sizeof("CH_SWITCH_V1"), "%s", "CH_SWITCH_V1");
1572 pCapStr += strlen("CH_SWITCH_V1");
1573 break;
Dino Mycledf0a5d92014-07-04 09:41:55 +05301574#ifdef WLAN_FEATURE_LINK_LAYER_STATS
1575 case LINK_LAYER_STATS_MEAS: snprintf(pCapStr, sizeof("LINK_LAYER_STATS_MEAS"), "%s", "LINK_LAYER_STATS_MEAS");
1576 pCapStr += strlen("LINK_LAYER_STATS_MEAS");
1577 break;
1578#endif
Dino Myclee8843b32014-07-04 14:21:45 +05301579#ifdef WLAN_FEATURE_EXTSCAN
1580 case EXTENDED_SCAN: snprintf(pCapStr, sizeof("EXTENDED_SCAN"), "%s", "EXTENDED_SCAN");
1581 pCapStr += strlen("EXTENDED_SCAN");
1582 break;
Padma, Santhosh Kumar2ac54992015-10-12 18:20:58 +05301583 case EXT_SCAN_ENHANCED: snprintf(pCapStr, sizeof("EXT_SCAN_ENHANCED"), "%s", "EXT_SCAN_ENHANCED");
1584 pCapStr += strlen("EXT_SCAN_ENHANCED");
1585 break;
Dino Myclee8843b32014-07-04 14:21:45 +05301586#endif
Abhishek Singh6927fa02014-06-27 17:19:55 +05301587 case MU_MIMO: snprintf(pCapStr, sizeof("MU_MIMO"), "%s", "MU_MIMO");
1588 pCapStr += strlen("MU_MIMO");
1589 break;
Hardik Kantilal Patele1760e12014-01-21 15:57:21 +05301590
Mihir Shetec34258c2014-07-30 17:50:27 +05301591 case DYNAMIC_WMM_PS: snprintf(pCapStr, sizeof("DYNAMIC_WMM_PS"), "%s", "DYNAMIC_WMM_PS");
1592 pCapStr += strlen("DYNAMIC_WMM_PS");
1593 break;
Abhishek Singh85b74712014-10-08 11:38:19 +05301594 case FW_STATS: snprintf(pCapStr, sizeof("FW_STATS"), "%s", "FW_STATS");
1595 pCapStr += strlen("FW_STATS");
1596 break;
Siddharth Bhal171788a2014-09-29 21:02:40 +05301597 case MAC_SPOOFED_SCAN: snprintf(pCapStr, sizeof("MAC_SPOOFED_SCAN"), "%s", "MAC_SPOOFED_SCAN");
1598 pCapStr += strlen("MAC_SPOOFED_SCAN");
1599 break;
Sachin Ahuja825082e2014-11-25 17:34:36 +05301600 case WPS_PRBRSP_TMPL: snprintf(pCapStr, sizeof("WPS_PRBRSP_TMPL"), "%s", "WPS_PRBRSP_TMPL");
1601 pCapStr += strlen("WPS_PRBRSP_TMPL");
1602 break;
Abhishek Singh5fef4042014-11-25 18:33:00 +05301603 case BCN_IE_FLT_DELTA: snprintf(pCapStr, sizeof("BCN_IE_FLT_DELTA"), "%s", "BCN_IE_FLT_DELTA");
1604 pCapStr += strlen("BCN_IE_FLT_DELTA");
1605 break;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05301606 case MGMT_FRAME_LOGGING: snprintf(pCapStr, sizeof("MGMT_FRAME_LOGGING"), "%s", "MGMT_FRAME_LOGGING");
1607 pCapStr += strlen("MGMT_FRAME_LOGGING");
1608 break;
Mihir Shetebf8897b2014-11-26 14:54:39 +05301609 case BMU_ERROR_GENERIC_RECOVERY: snprintf(pCapStr, sizeof("BMU_ERROR_GENERIC_RECOVERY"), "%s", "BMU_ERROR_GENERIC_RECOVERY");
1610 pCapStr += strlen("BMU_ERROR_GENERIC_RECOVERY");
1611 break;
1612
Srinivas Dasari4dae48f2014-11-26 21:14:16 +05301613 case DISA: snprintf(pCapStr, sizeof("DISA"), "%s", "DISA");
1614 pCapStr += strlen("DISA");
1615 break;
1616
Pradeep Reddy POTTETI57969282015-02-26 16:28:48 +05301617 case TDLS_OFF_CHANNEL: snprintf(pCapStr, sizeof("TDLS_OFF_CHANNEL"), "%s", "TDLS_OFF_CHANNEL");
1618 pCapStr += strlen("TDLS_OFF_CHANNEL");
1619 break;
Siddharth Bhald1be97f2015-05-27 22:39:59 +05301620 case LOGGING_ENHANCEMENT: snprintf(pCapStr, sizeof("LOGGING_ENHANCEMENT"), "%s", "LOGGING_ENHANCEMENT");
1621 pCapStr += strlen("LOGGING_ENHANCEMENT");
1622 break;
c_manjeecfd1efb2015-09-25 19:32:34 +05301623 case MEMORY_DUMP_SUPPORTED:snprintf(pCapStr, sizeof("FW_MEM_DUMP_LOGGING"), "%s", "FW_MEM_DUMP_LOGGING");
1624 pCapStr += strlen("FW_MEM_DUMP_LOGGING");
1625 break;
Sushant Kaushik33200572015-08-05 16:46:20 +05301626 case PER_PKT_STATS_SUPPORTED: snprintf(pCapStr, sizeof("PER_PKT_STATS_SUPPORTED"), "%s", "PER_PKT_STATS_SUPPORTED");
1627 pCapStr += strlen("PER_PKT_STATS_SUPPORTED");
1628 break;
Mukul Sharmaf1bd9322015-10-20 16:03:42 +05301629 case EXT_LL_STAT: snprintf(pCapStr, sizeof("EXT_LL_STAT"), "%s", "EXT_LL_STAT");
1630 pCapStr += strlen("EXT_LL_STAT");
1631 break;
Padma, Santhosh Kumaraac4c4d2015-12-08 16:07:47 +05301632 case RTT3: snprintf(pCapStr, sizeof("RTT3"), "%s", "RTT3");
1633 pCapStr += strlen("RTT3");
1634 break;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +05301635 case ANTENNA_DIVERSITY_SELECTION:
1636 snprintf(pCapStr,
1637 sizeof("ANTENNA_DIVERSITY_SELECTION"), "%s",
1638 "ANTENNA_DIVERSITY_SELECTION");
1639 pCapStr += strlen("ANTENNA_DIVERSITY_SELECTION");
1640 break;
Kapil Guptab3a981b2016-06-26 13:36:51 +05301641 case PER_BASED_ROAMING:
1642 snprintf(pCapStr, sizeof("PER_BASED_ROAMING"),
1643 "%s", "PER_BASED_ROAMING");
1644 pCapStr += strlen("PER_BASED_ROAMING");
1645 break;
Anurag Chouhan1deaa252016-12-05 15:48:47 +05301646 case SAP_MODE_WOW:
1647 snprintf(pCapStr, sizeof("SAP_MODE_WOW"),
1648 "%s", "SAP_MODE_WOW");
1649 pCapStr += strlen("SAP_MODE_WOW");
1650 break;
1651 case SAP_OFFLOADS:
1652 snprintf(pCapStr, sizeof("SAP_OFFLOADS"),
1653 "%s", "SAP_OFFLOADS");
1654 pCapStr += strlen("SAP_OFFLOADS");
1655 break;
Abhishek Singh08b60122014-02-04 18:05:23 +05301656 }
1657 *pCapStr++ = ',';
1658 *pCapStr++ = ' ';
1659 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301660 }
1661 }
Madan Mohan Koyyalamudic2bf6172013-08-07 14:19:18 +05301662 pCapStr -= 2;
1663 *pCapStr = '\0';
Ratheesh S P36dbc932015-08-07 14:28:57 +05301664 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "\t\t%s", pTempCapStr);
Sachin Ahuja69bfa982015-04-24 17:02:57 +05301665 if (pTempCapStr)
1666 {
1667 vos_mem_free(pTempCapStr);
1668 pTempCapStr = NULL;
1669 }
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +05301670}
1671
1672/**
Jeff Johnson295189b2012-06-20 16:38:30 -07001673 @brief WDI_getHALStatusMsgString prints the HAL status in string.
Jeff Johnsone7245742012-09-05 17:12:55 -07001674
1675 @param halStatusId: HAL status Id
1676
1677 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07001678 @return Result of the function call
1679*/
1680static char *WDI_getHALStatusMsgString(wpt_uint16 halStatusId)
1681{
1682 switch (halStatusId)
1683 {
1684 CASE_RETURN_STRING( eHAL_STATUS_SUCCESS );
1685 CASE_RETURN_STRING( PAL_STATUS_INVAL );
1686 CASE_RETURN_STRING( PAL_STATUS_ALREADY );
1687 CASE_RETURN_STRING( PAL_STATUS_EMPTY );
1688 CASE_RETURN_STRING( PAL_STATUS_FAILURE );
1689 CASE_RETURN_STRING( eHAL_STATUS_FAILURE );
1690 CASE_RETURN_STRING( eHAL_STATUS_INVALID_PARAMETER );
1691 CASE_RETURN_STRING( eHAL_STATUS_INVALID_STAIDX );
1692 CASE_RETURN_STRING( eHAL_STATUS_DPU_DESCRIPTOR_TABLE_FULL );
1693 CASE_RETURN_STRING( eHAL_STATUS_NO_INTERRUPTS );
1694 CASE_RETURN_STRING( eHAL_STATUS_INTERRUPT_PRESENT );
1695 CASE_RETURN_STRING( eHAL_STATUS_STA_TABLE_FULL );
1696 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_STA );
1697 CASE_RETURN_STRING( eHAL_STATUS_BSSID_INVALID );
1698 CASE_RETURN_STRING( eHAL_STATUS_STA_INVALID );
1699 CASE_RETURN_STRING( eHAL_STATUS_DUPLICATE_BSSID );
1700 CASE_RETURN_STRING( eHAL_STATUS_INVALID_BSSIDX );
1701 CASE_RETURN_STRING( eHAL_STATUS_BSSID_TABLE_FULL );
1702 CASE_RETURN_STRING( eHAL_STATUS_INVALID_SIGNATURE );
1703 CASE_RETURN_STRING( eHAL_STATUS_INVALID_KEYID );
1704 CASE_RETURN_STRING( eHAL_STATUS_SET_CHAN_ALREADY_ON_REQUESTED_CHAN );
1705 CASE_RETURN_STRING( eHAL_STATUS_UMA_DESCRIPTOR_TABLE_FULL );
1706 CASE_RETURN_STRING( eHAL_STATUS_DPU_MICKEY_TABLE_FULL );
1707 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_BUFFERS_FULL );
1708 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_MAX_SESSIONS_REACHED );
1709 CASE_RETURN_STRING( eHAL_STATUS_BA_RX_INVALID_SESSION_ID );
1710 CASE_RETURN_STRING( eHAL_STATUS_TIMER_START_FAILED );
1711 CASE_RETURN_STRING( eHAL_STATUS_TIMER_STOP_FAILED );
1712 CASE_RETURN_STRING( eHAL_STATUS_FAILED_ALLOC );
1713 CASE_RETURN_STRING( eHAL_STATUS_NOTIFY_BSS_FAIL );
1714 CASE_RETURN_STRING( eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1715 CASE_RETURN_STRING( eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO );
1716 CASE_RETURN_STRING( eHAL_STATUS_FW_SEND_MSG_FAILED );
1717 default:
1718 return "Unknown HAL status";
1719 }
1720}
1721
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301722/**
1723 * wdi_state_info_dump() - prints state information of wdi layer
1724 */
1725static void wdi_state_info_dump(void)
1726{
1727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1728 "%s pending commands: %d", __func__,
1729 gWDICb.wptPendingQueue.count);
1730 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1731 "uGlobalState %d wdiExpectedResponse: %d",
1732 gWDICb.uGlobalState, gWDICb.wdiExpectedResponse);
1733}
1734
1735
1736/**
1737 * wdi_register_debug_callback() - registration function for wdi layer
1738 * to print WDI state information
1739 */
1740static void wdi_register_debug_callback(void)
1741{
1742 vos_register_debug_callback(VOS_MODULE_ID_WDI, &wdi_state_info_dump);
1743}
1744
1745
Jeff Johnsone7245742012-09-05 17:12:55 -07001746/*========================================================================
1747
Jeff Johnson295189b2012-06-20 16:38:30 -07001748 INITIALIZATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07001749
Jeff Johnson295189b2012-06-20 16:38:30 -07001750==========================================================================*/
1751
1752/**
1753 @brief WDI_Init is used to initialize the DAL.
Jeff Johnsone7245742012-09-05 17:12:55 -07001754
Jeff Johnson295189b2012-06-20 16:38:30 -07001755 DAL will allocate all the resources it needs. It will open PAL, it will also
1756 open both the data and the control transport which in their turn will open
Jeff Johnsone7245742012-09-05 17:12:55 -07001757 DXE/SMD or any other drivers that they need.
1758
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301759 @param devHandle: pointer to the OS specific device handle
Jeff Johnson295189b2012-06-20 16:38:30 -07001760 ppWDIGlobalCtx: output pointer of Global Context
1761 pWdiDevCapability: output pointer of device capability
1762
1763 @return Result of the function call
1764*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001765WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07001766WDI_Init
Jeff Johnsone7245742012-09-05 17:12:55 -07001767(
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301768 void* devHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -07001769 void** ppWDIGlobalCtx,
1770 WDI_DeviceCapabilityType* pWdiDevCapability,
1771 unsigned int driverType
1772)
1773{
1774 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -07001775 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07001776 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07001777 WCTS_TransportCBsType wctsCBs;
Jeff Johnson295189b2012-06-20 16:38:30 -07001778 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
1779
1780 /*---------------------------------------------------------------------
1781 Sanity check
1782 ---------------------------------------------------------------------*/
1783 if (( NULL == ppWDIGlobalCtx ) || ( NULL == pWdiDevCapability ))
1784 {
1785 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
1786 "Invalid input parameters in WDI_Init");
1787
Jeff Johnsone7245742012-09-05 17:12:55 -07001788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001789 }
1790
1791 /*---------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001792 Check to see if the module has already been initialized or not
Jeff Johnson295189b2012-06-20 16:38:30 -07001793 ---------------------------------------------------------------------*/
1794 if ( eWLAN_PAL_FALSE != gWDIInitialized )
1795 {
1796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
1797 "WDI module already initialized - return");
1798
Jeff Johnsone7245742012-09-05 17:12:55 -07001799 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07001800 }
1801
1802 /*Module is now initialized - this flag is to ensure the fact that multiple
1803 init will not happen on WDI
1804 !! - potential race does exist because read and set are not atomic,
1805 however an atomic operation would be closely here - reanalyze if necessary*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001806 gWDIInitialized = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001807
1808 /*Setup the control block */
1809 WDI_CleanCB(&gWDICb);
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301810 gWDICb.pOSContext = devHandle ;
Jeff Johnson295189b2012-06-20 16:38:30 -07001811
1812 /*Setup the STA Table*/
1813 wdiStatus = WDI_STATableInit(&gWDICb);
1814 if ( WDI_STATUS_SUCCESS != wdiStatus )
1815 {
1816 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1817 "%s: Failure while initializing STA Table, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001818 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001819 goto fail_STATableInit;
1820 }
1821
1822 /*------------------------------------------------------------------------
1823 Open the PAL
1824 ------------------------------------------------------------------------*/
Arun Kumar Khandavalliebb19482014-03-25 13:56:53 +05301825 wptStatus = wpalOpen(&gWDICb.pPALContext, devHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07001826 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1827 {
1828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1829 "%s: Failed to open PAL, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001830 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001831 goto fail_wpalOpen;
1832 }
1833
1834 /*Initialize main synchro mutex - it will be used to ensure integrity of
1835 the main WDI Control Block*/
1836 wptStatus = wpalMutexInit(&gWDICb.wptMutex);
1837 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1838 {
1839 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1840 "%s: Failed to init mutex, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001841 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001842 goto fail_mutex;
1843 }
1844
1845 /*Initialize the response timer - it will be used to time all messages
1846 expected as response from device*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001847 wptStatus = wpalTimerInit( &gWDICb.wptResponseTimer,
1848 WDI_ResponseTimerCB,
Jeff Johnson295189b2012-06-20 16:38:30 -07001849 &gWDICb);
1850 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1851 {
1852 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1853 "%s: Failed to init response timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001854 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001855 goto fail_timer;
1856 }
1857
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001858 wptStatus = wpalTimerInit( &gWDICb.ssrTimer,
1859 WDI_SsrTimerCB,
1860 &gWDICb);
1861 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1862 {
1863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1864 "%s: Failed to init SSR timer, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001865 __func__, wptStatus);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07001866 goto fail_timer2;
1867 }
Jeff Johnson295189b2012-06-20 16:38:30 -07001868 /* Initialize the WDI Pending Request Queue*/
1869 wptStatus = wpal_list_init(&(gWDICb.wptPendingQueue));
1870 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1871 {
1872 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1873 "%s: Failed to init pending request queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001874 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001875 goto fail_pend_queue;
1876 }
1877
1878 /*Init WDI Pending Assoc Id Queue */
1879 wptStatus = wpal_list_init(&(gWDICb.wptPendingAssocSessionIdQueue));
1880 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1881 {
1882 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1883 "%s: Failed to init assoc session queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001884 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001885 goto fail_assoc_queue;
1886 }
1887
1888 /*Initialize the BSS sessions pending Queue */
1889 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
1890 {
1891 wptStatus = wpal_list_init(&(gWDICb.aBSSSessions[i].wptPendingQueue));
1892 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
1893 {
1894 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1895 "%s: Failed to init BSS %d pending queue, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001896 __func__, i, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001897 goto fail_bss_queue;
1898 }
1899 }
1900
1901 /*Indicate the control block is sufficiently initialized for callbacks*/
1902 gWDICb.magic = WDI_CONTROL_BLOCK_MAGIC;
1903
1904 /*------------------------------------------------------------------------
1905 Initialize the Data Path Utility Module
1906 ------------------------------------------------------------------------*/
1907 wdiStatus = WDI_DP_UtilsInit(&gWDICb);
1908 if ( WDI_STATUS_SUCCESS != wdiStatus )
1909 {
1910 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1911 "%s: Failed to initialize the DP Util Module, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001912 __func__, wdiStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001913 goto fail_dp_util_init;
1914 }
1915
1916 /* Init Set power state event */
1917 wptStatus = wpalEventInit(&gWDICb.setPowerStateEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001918 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001919 {
1920 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1921 "%s: Failed to initialize power state event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001922 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001923 goto fail_power_event;
1924 }
1925
1926 /* Init WCTS action event */
1927 wptStatus = wpalEventInit(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07001928 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07001929 {
1930 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
1931 "%s: Failed to initialize WCTS action event, status %d",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001932 __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07001933 goto fail_wcts_event;
1934 }
1935
1936 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07001937 Open the Transport Services for Control and Data
Jeff Johnson295189b2012-06-20 16:38:30 -07001938 ------------------------------------------------------------------------*/
1939 wctsCBs.wctsNotifyCB = WDI_NotifyMsgCTSCB;
1940 wctsCBs.wctsNotifyCBData = &gWDICb;
Jeff Johnsone7245742012-09-05 17:12:55 -07001941 wctsCBs.wctsRxMsgCB = WDI_RXMsgCTSCB;
Jeff Johnson295189b2012-06-20 16:38:30 -07001942 wctsCBs.wctsRxMsgCBData = &gWDICb;
1943
Jeff Johnsone7245742012-09-05 17:12:55 -07001944 gWDICb.bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001945 gWDICb.wctsHandle = WCTS_OpenTransport( szTransportChName ,
Jeff Johnsone7245742012-09-05 17:12:55 -07001946 WDI_CT_CHANNEL_SIZE,
1947 &wctsCBs );
Jeff Johnson295189b2012-06-20 16:38:30 -07001948
1949 if ( NULL == gWDICb.wctsHandle )
1950 {
1951 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001952 "%s: Failed to open WCTS transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001953 goto fail_wcts_open;
1954 }
1955
1956 gWDICb.driverMode = (tDriverType)driverType;
1957 /* FTM mode not need to open Transport Driver */
1958 if(eDRIVER_TYPE_MFG != (tDriverType)driverType)
Jeff Johnsone7245742012-09-05 17:12:55 -07001959 {
Jeff Johnson295189b2012-06-20 16:38:30 -07001960 /*------------------------------------------------------------------------
1961 Open the Data Transport
1962 ------------------------------------------------------------------------*/
1963 if(eWLAN_PAL_STATUS_SUCCESS != WDTS_openTransport(&gWDICb))
1964 {
1965 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07001966 "%s: Failed to open the DT Transport", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07001967 goto fail_wdts_open;
1968 }
1969 }
1970
1971 /*The WDI is initialized - set state to init */
Jeff Johnsone7245742012-09-05 17:12:55 -07001972 gWDICb.uGlobalState = WDI_INIT_ST;
Girish Gowli55caa852015-01-19 16:09:49 +05301973 gWDICb.roamDelayStatsEnabled = vos_get_roam_delay_stats_enabled();
Jeff Johnson295189b2012-06-20 16:38:30 -07001974 /*Send the context as a ptr to the global WDI Control Block*/
1975 *ppWDIGlobalCtx = &gWDICb;
1976
1977 /*Fill in the device capabilities*/
Jeff Johnsone7245742012-09-05 17:12:55 -07001978 pWdiDevCapability->bFrameXtlSupported = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07001979 pWdiDevCapability->ucMaxSTASupported = gWDICb.ucMaxStations;
1980 pWdiDevCapability->ucMaxBSSSupported = gWDICb.ucMaxBssids;
Padma, Santhosh Kumar9093b202015-07-21 15:37:38 +05301981
1982 wdi_register_debug_callback();
1983
Jeff Johnson295189b2012-06-20 16:38:30 -07001984 return WDI_STATUS_SUCCESS;
1985
1986 /* ERROR handlers
1987 Undo everything that completed successfully */
1988
1989 fail_wdts_open:
1990 {
1991 wpt_status eventStatus;
1992
1993 /* Closing WCTS in this scenario is tricky since it has to close
1994 the SMD channel and then we get notified asynchronously when
1995 the channel has been closed. So we take some of the logic from
1996 the "normal" close procedure in WDI_Close()
1997 */
1998
1999 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002000 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002001 {
2002 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002003 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002004 }
2005
2006 WCTS_CloseTransport(gWDICb.wctsHandle);
2007
2008 /* Wait for WCTS to close the control transport. If we were able
2009 to reset the event flag, then we'll wait for the event,
2010 otherwise we'll wait for a maximum amount of time required for
2011 the channel to be closed */
2012 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2013 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002014 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002015 WDI_WCTS_ACTION_TIMEOUT);
2016 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2017 {
2018 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002019 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002020 }
2021 }
2022 else
2023 {
2024 wpalSleep(WDI_WCTS_ACTION_TIMEOUT);
2025 }
2026 }
2027 fail_wcts_open:
2028 wpalEventDelete(&gWDICb.wctsActionEvent);
2029 fail_wcts_event:
2030 wpalEventDelete(&gWDICb.setPowerStateEvent);
2031 fail_power_event:
2032 WDI_DP_UtilsExit(&gWDICb);
2033 fail_dp_util_init:
2034 gWDICb.magic = 0;
2035 fail_bss_queue:
2036 /* entries 0 thru i-1 were successfully initialized */
2037 while (0 < i)
2038 {
2039 i--;
2040 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2041 }
2042 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2043 fail_assoc_queue:
2044 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2045 fail_pend_queue:
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002046 wpalTimerDelete(&gWDICb.ssrTimer);
2047 fail_timer2:
Jeff Johnson295189b2012-06-20 16:38:30 -07002048 wpalTimerDelete(&gWDICb.wptResponseTimer);
2049 fail_timer:
2050 wpalMutexDelete(&gWDICb.wptMutex);
2051 fail_mutex:
2052 wpalClose(gWDICb.pPALContext);
2053 fail_wpalOpen:
2054 WDI_STATableClose(&gWDICb);
2055 fail_STATableInit:
2056 gWDIInitialized = eWLAN_PAL_FALSE;
2057
2058 return WDI_STATUS_E_FAILURE;
2059
2060}/*WDI_Init*/;
2061
2062/**
2063 @brief WDI_Start will be called when the upper MAC is ready to
2064 commence operation with the WLAN Device. Upon the call
2065 of this API the WLAN DAL will pack and send a HAL Start
2066 message to the lower RIVA sub-system if the SMD channel
2067 has been fully opened and the RIVA subsystem is up.
2068
2069 If the RIVA sub-system is not yet up and running DAL
2070 will queue the request for Open and will wait for the
2071 SMD notification before attempting to send down the
Jeff Johnsone7245742012-09-05 17:12:55 -07002072 message to HAL.
Jeff Johnson295189b2012-06-20 16:38:30 -07002073
2074 WDI_Init must have been called.
2075
Jeff Johnsone7245742012-09-05 17:12:55 -07002076 @param wdiStartParams: the start parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002077 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002078
Jeff Johnson295189b2012-06-20 16:38:30 -07002079 wdiStartRspCb: callback for passing back the response of
2080 the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002081
Jeff Johnson295189b2012-06-20 16:38:30 -07002082 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002083 callback
2084
Jeff Johnson295189b2012-06-20 16:38:30 -07002085 @see WDI_Start
2086 @return Result of the function call
2087*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002088WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002089WDI_Start
2090(
2091 WDI_StartReqParamsType* pwdiStartParams,
2092 WDI_StartRspCb wdiStartRspCb,
2093 void* pUserData
2094)
2095{
2096 WDI_EventInfoType wdiEventData;
2097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2098
2099 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002100 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002101 ------------------------------------------------------------------------*/
2102 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2103 {
2104 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2105 "WDI API call before module is initialized - Fail request");
2106
Jeff Johnsone7245742012-09-05 17:12:55 -07002107 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002108 }
2109
2110 /*------------------------------------------------------------------------
2111 Fill in Event data and post to the Main FSM
2112 ------------------------------------------------------------------------*/
2113 wdiEventData.wdiRequest = WDI_START_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002114 wdiEventData.pEventData = pwdiStartParams;
2115 wdiEventData.uEventDataSize = sizeof(*pwdiStartParams);
2116 wdiEventData.pCBfnc = wdiStartRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002117 wdiEventData.pUserData = pUserData;
2118
2119 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2120
2121}/*WDI_Start*/
2122
2123/**
2124 @brief WDI_Stop will be called when the upper MAC is ready to
2125 stop any operation with the WLAN Device. Upon the call
2126 of this API the WLAN DAL will pack and send a HAL Stop
2127 message to the lower RIVA sub-system if the DAL Core is
2128 in started state.
2129
2130 In state BUSY this request will be queued.
Jeff Johnsone7245742012-09-05 17:12:55 -07002131
2132 Request will not be accepted in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002133
2134 WDI_Start must have been called.
2135
Jeff Johnsone7245742012-09-05 17:12:55 -07002136 @param wdiStopParams: the stop parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002137 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002138
Jeff Johnson295189b2012-06-20 16:38:30 -07002139 wdiStopRspCb: callback for passing back the response of
2140 the stop operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002141
Jeff Johnson295189b2012-06-20 16:38:30 -07002142 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002143 callback
2144
Jeff Johnson295189b2012-06-20 16:38:30 -07002145 @see WDI_Start
2146 @return Result of the function call
2147*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002148WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002149WDI_Stop
2150(
2151 WDI_StopReqParamsType* pwdiStopParams,
2152 WDI_StopRspCb wdiStopRspCb,
2153 void* pUserData
2154)
2155{
2156 WDI_EventInfoType wdiEventData;
Jeff Johnson43971f52012-07-17 12:26:56 -07002157 WDI_ControlBlockType* pWDICtx = &gWDICb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002158 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2159
2160 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002161 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002162 ------------------------------------------------------------------------*/
2163 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2164 {
2165 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2166 "WDI API call before module is initialized - Fail request");
2167
Jeff Johnsone7245742012-09-05 17:12:55 -07002168 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002169 }
2170
Jeff Johnson43971f52012-07-17 12:26:56 -07002171 /*Access to the global state must be locked before cleaning */
2172 wpalMutexAcquire(&pWDICtx->wptMutex);
2173
2174 /*Clear all pending request*/
2175 WDI_ClearPendingRequests(pWDICtx);
2176
2177 /*We have completed cleaning unlock now*/
2178 wpalMutexRelease(&pWDICtx->wptMutex);
2179
Jeff Johnson295189b2012-06-20 16:38:30 -07002180 /* Free the global variables */
2181 wpalMemoryFree(gpHostWlanFeatCaps);
2182 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002183 gpHostWlanFeatCaps = NULL;
2184 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002185
2186 /*------------------------------------------------------------------------
2187 Fill in Event data and post to the Main FSM
2188 ------------------------------------------------------------------------*/
2189 wdiEventData.wdiRequest = WDI_STOP_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002190 wdiEventData.pEventData = pwdiStopParams;
2191 wdiEventData.uEventDataSize = sizeof(*pwdiStopParams);
2192 wdiEventData.pCBfnc = wdiStopRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002193 wdiEventData.pUserData = pUserData;
2194
2195 return WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, &wdiEventData);
2196
2197}/*WDI_Stop*/
2198
2199
2200
2201/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002202 @brief WDI_Close will be called when the upper MAC no longer
Jeff Johnson295189b2012-06-20 16:38:30 -07002203 needs to interact with DAL. DAL will free its control
2204 block.
Jeff Johnsone7245742012-09-05 17:12:55 -07002205
2206 It is only accepted in state STOPPED.
Jeff Johnson295189b2012-06-20 16:38:30 -07002207
2208 WDI_Stop must have been called.
2209
2210 @param none
Jeff Johnsone7245742012-09-05 17:12:55 -07002211
Jeff Johnson295189b2012-06-20 16:38:30 -07002212 @see WDI_Stop
2213 @return Result of the function call
2214*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002215WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002216WDI_Close
2217(
2218 void
2219)
2220{
2221 wpt_uint8 i;
2222 WDI_EventInfoType wdiEventData;
2223 wpt_status wptStatus;
2224 wpt_status eventStatus;
2225 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2226
2227 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002228 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002229 ------------------------------------------------------------------------*/
2230 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2231 {
2232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2233 "WDI API call before module is initialized - Fail request");
2234
Jeff Johnsone7245742012-09-05 17:12:55 -07002235 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002236 }
2237
2238 /*Reset WCTS action event prior to posting the WDI_CLOSE_REQ
2239 (the control transport will be closed by the FSM and we'll want
2240 to wait until that completes)*/
2241 eventStatus = wpalEventReset(&gWDICb.wctsActionEvent);
Jeff Johnsone7245742012-09-05 17:12:55 -07002242 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -07002243 {
2244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002245 "%s: Failed to reset WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002246 /* fall through and try to finish closing via the FSM */
2247 }
2248
2249 /*------------------------------------------------------------------------
2250 Fill in Event data and post to the Main FSM
2251 ------------------------------------------------------------------------*/
2252 wdiEventData.wdiRequest = WDI_CLOSE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002253 wdiEventData.pEventData = NULL;
2254 wdiEventData.uEventDataSize = 0;
2255 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002256 wdiEventData.pUserData = NULL;
2257
2258 gWDIInitialized = eWLAN_PAL_FALSE;
2259
2260 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_CLOSE_EVENT, &wdiEventData);
2261
2262 /*Wait for WCTS to close the control transport
2263 (but only if we were able to reset the event flag*/
2264 if ( eWLAN_PAL_STATUS_SUCCESS == eventStatus )
2265 {
Jeff Johnsone7245742012-09-05 17:12:55 -07002266 eventStatus = wpalEventWait(&gWDICb.wctsActionEvent,
Jeff Johnson295189b2012-06-20 16:38:30 -07002267 WDI_WCTS_ACTION_TIMEOUT);
2268 if ( eWLAN_PAL_STATUS_SUCCESS != eventStatus )
2269 {
2270 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002271 "%s: Failed to wait on WCTS action event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002272 }
2273 }
2274
2275 /* Destroy the WCTS action event */
2276 wptStatus = wpalEventDelete(&gWDICb.wctsActionEvent);
2277 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2278 {
2279 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2280 "WDI Close failed to destroy an event");
Jeff Johnsone7245742012-09-05 17:12:55 -07002281 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002282 }
2283
2284 /* Destroy the Set Power State event */
2285 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2286 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2287 {
2288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2289 "WDI Close failed to destroy an event");
2290
Jeff Johnsone7245742012-09-05 17:12:55 -07002291 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002292 }
2293
2294 /*------------------------------------------------------------------------
2295 Closes the Data Path Utility Module
2296 ------------------------------------------------------------------------*/
2297 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2298 {
2299 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2300 "WDI Init failed to close the DP Util Module");
2301
Jeff Johnsone7245742012-09-05 17:12:55 -07002302 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07002303 }
2304
2305 /*destroy the BSS sessions pending Queue */
2306 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2307 {
2308 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2309 }
2310
2311 /* destroy the WDI Pending Assoc Id Request Queue*/
2312 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2313
2314 /* destroy the WDI Pending Request Queue*/
2315 wpal_list_destroy(&(gWDICb.wptPendingQueue));
Jeff Johnsone7245742012-09-05 17:12:55 -07002316
Jeff Johnson295189b2012-06-20 16:38:30 -07002317 /*destroy the response timer */
2318 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
2319
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002320 /*destroy the SSR timer */
2321 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
2322
Jeff Johnson295189b2012-06-20 16:38:30 -07002323 /*invalidate the main synchro mutex */
2324 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2325 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2326 {
2327 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2328 "Failed to delete mutex %d", wptStatus);
2329 WDI_ASSERT(0);
2330 }
2331
2332 /*Clear control block. note that this will clear the "magic"
2333 which will inhibit all asynchronous callbacks*/
2334 WDI_CleanCB(&gWDICb);
2335
2336 return wptStatus;
2337
2338}/*WDI_Close*/
2339
2340/**
2341 @brief WDI_Shutdown will be called during 'SSR shutdown' operation.
2342 This will do most of the WDI stop & close
2343 operations without doing any handshake with Riva
2344
2345 This will also make sure that the control transport
2346 will NOT be closed.
2347
2348 This request will not be queued.
2349
2350
2351 WDI_Start must have been called.
2352
2353 @param closeTransport: Close control channel if this is set
2354
2355 @return Result of the function call
2356*/
2357WDI_Status
2358WDI_Shutdown
2359(
2360 wpt_boolean closeTransport
2361)
2362{
2363 WDI_EventInfoType wdiEventData;
2364 wpt_status wptStatus;
2365 int i = 0;
2366 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2367
2368 /*------------------------------------------------------------------------
2369 Sanity Check
2370 ------------------------------------------------------------------------*/
2371 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2372 {
2373 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2374 "WDI API call before module is initialized - Fail request");
2375
2376 return WDI_STATUS_E_NOT_ALLOWED;
2377 }
2378
2379 /*------------------------------------------------------------------------
2380 Fill in Event data and post to the Main FSM
2381 ------------------------------------------------------------------------*/
2382 wdiEventData.wdiRequest = WDI_SHUTDOWN_REQ;
2383 wdiEventData.pEventData = NULL;
2384 wdiEventData.uEventDataSize = 0;
2385
2386 /* Shutdown will not be queued, if the state is busy timer will be
2387 * stopped & this message will be processed.*/
2388 wptStatus = WDI_PostMainEvent(&gWDICb, WDI_SHUTDOWN_EVENT, &wdiEventData);
2389 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2390 {
2391 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002392 "%s: Failed to process shutdown event", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07002393 }
2394 /* Destroy the Set Power State event */
2395 wptStatus = wpalEventDelete(&gWDICb.setPowerStateEvent);
2396 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2397 {
2398 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2399 "WDI Close failed to destroy an event");
2400
2401 WDI_ASSERT(0);
2402 }
2403 /*------------------------------------------------------------------------
2404 Closes the Data Path Utility Module
2405 ------------------------------------------------------------------------*/
2406 if ( WDI_STATUS_SUCCESS != WDI_DP_UtilsExit(&gWDICb))
2407 {
2408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
2409 "WDI Init failed to close the DP Util Module");
2410
2411 WDI_ASSERT(0);
2412 }
2413 if ( closeTransport )
2414 {
2415 /* Close control transport, called from module unload */
2416 WCTS_CloseTransport(gWDICb.wctsHandle);
2417 }
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002418 else
2419 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -07002420 /* Riva is crashed then SMD is already closed so cleaning all
Madan Mohan Koyyalamudifab2a7e2012-09-28 15:20:00 -07002421 the pending messages in the transport queue */
2422 WCTS_ClearPendingQueue(gWDICb.wctsHandle);
2423 }
Jeff Johnson295189b2012-06-20 16:38:30 -07002424 /*destroy the BSS sessions pending Queue */
2425 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
2426 {
2427 wpal_list_destroy(&(gWDICb.aBSSSessions[i].wptPendingQueue));
2428 }
2429
2430 /* destroy the WDI Pending Assoc Id Request Queue*/
2431 wpal_list_destroy(&(gWDICb.wptPendingAssocSessionIdQueue));
2432 /* destroy the WDI Pending Request Queue*/
2433 wpal_list_destroy(&(gWDICb.wptPendingQueue));
2434 /*destroy the response timer */
2435 wptStatus = wpalTimerDelete( &gWDICb.wptResponseTimer);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -07002436 /*destroy the SSR timer */
2437 wptStatus = wpalTimerDelete( &gWDICb.ssrTimer);
Jeff Johnson295189b2012-06-20 16:38:30 -07002438
2439 /*invalidate the main synchro mutex */
2440 wptStatus = wpalMutexDelete(&gWDICb.wptMutex);
2441 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
2442 {
2443 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07002444 "%s: Failed to delete mutex %d", __func__, wptStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -07002445 WDI_ASSERT(0);
2446 }
Madan Mohan Koyyalamudi3513bf52012-09-18 17:35:53 -07002447 /* Free the global variables */
2448 wpalMemoryFree(gpHostWlanFeatCaps);
2449 wpalMemoryFree(gpFwWlanFeatCaps);
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -07002450 gpHostWlanFeatCaps = NULL;
2451 gpFwWlanFeatCaps = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07002452 /*Clear control block. note that this will clear the "magic"
2453 which will inhibit all asynchronous callbacks*/
2454 WDI_CleanCB(&gWDICb);
2455 return wptStatus;
2456
2457}/*WDI_Shutdown*/
2458
2459
Jeff Johnsone7245742012-09-05 17:12:55 -07002460/*========================================================================
2461
Jeff Johnson295189b2012-06-20 16:38:30 -07002462 SCAN APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002463
Jeff Johnson295189b2012-06-20 16:38:30 -07002464==========================================================================*/
2465
2466/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002467 @brief WDI_InitScanReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07002468 the WLAN Device to get ready for a scan procedure. Upon
2469 the call of this API the WLAN DAL will pack and send a
2470 HAL Init Scan request message to the lower RIVA
2471 sub-system if DAL is in state STARTED.
2472
2473 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002474 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002475
2476 WDI_Start must have been called.
2477
2478 @param wdiInitScanParams: the init scan parameters as specified
2479 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002480
Jeff Johnson295189b2012-06-20 16:38:30 -07002481 wdiInitScanRspCb: callback for passing back the response
2482 of the init scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002483
Jeff Johnson295189b2012-06-20 16:38:30 -07002484 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002485 callback
2486
Jeff Johnson295189b2012-06-20 16:38:30 -07002487 @see WDI_Start
2488 @return Result of the function call
2489*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002490WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002491WDI_InitScanReq
2492(
2493 WDI_InitScanReqParamsType* pwdiInitScanParams,
2494 WDI_InitScanRspCb wdiInitScanRspCb,
2495 void* pUserData
2496)
2497{
2498 WDI_EventInfoType wdiEventData;
2499 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2500
2501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002502 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002503 ------------------------------------------------------------------------*/
2504 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2505 {
2506 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2507 "WDI API call before module is initialized - Fail request");
2508
Jeff Johnsone7245742012-09-05 17:12:55 -07002509 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002510 }
2511
2512 /*------------------------------------------------------------------------
2513 Fill in Event data and post to the Main FSM
2514 ------------------------------------------------------------------------*/
2515 wdiEventData.wdiRequest = WDI_INIT_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002516 wdiEventData.pEventData = pwdiInitScanParams;
2517 wdiEventData.uEventDataSize = sizeof(*pwdiInitScanParams);
2518 wdiEventData.pCBfnc = wdiInitScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002519 wdiEventData.pUserData = pUserData;
2520
2521 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2522
2523}/*WDI_InitScanReq*/
2524
2525/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002526 @brief WDI_StartScanReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002527 wishes to change the Scan channel on the WLAN Device.
2528 Upon the call of this API the WLAN DAL will pack and
2529 send a HAL Start Scan request message to the lower RIVA
2530 sub-system if DAL is in state STARTED.
2531
2532 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002533 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002534
2535 WDI_InitScanReq must have been called.
2536
Jeff Johnsone7245742012-09-05 17:12:55 -07002537 @param wdiStartScanParams: the start scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002538 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002539
Jeff Johnson295189b2012-06-20 16:38:30 -07002540 wdiStartScanRspCb: callback for passing back the
2541 response of the start scan operation received from the
2542 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002543
Jeff Johnson295189b2012-06-20 16:38:30 -07002544 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002545 callback
2546
Jeff Johnson295189b2012-06-20 16:38:30 -07002547 @see WDI_InitScanReq
2548 @return Result of the function call
2549*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002550WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002551WDI_StartScanReq
2552(
2553 WDI_StartScanReqParamsType* pwdiStartScanParams,
2554 WDI_StartScanRspCb wdiStartScanRspCb,
2555 void* pUserData
2556)
2557{
2558 WDI_EventInfoType wdiEventData;
2559 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2560
2561 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002562 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002563 ------------------------------------------------------------------------*/
2564 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2565 {
2566 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2567 "WDI API call before module is initialized - Fail request");
2568
Jeff Johnsone7245742012-09-05 17:12:55 -07002569 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002570 }
2571
2572 /*------------------------------------------------------------------------
2573 Fill in Event data and post to the Main FSM
2574 ------------------------------------------------------------------------*/
2575 wdiEventData.wdiRequest = WDI_START_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002576 wdiEventData.pEventData = pwdiStartScanParams;
2577 wdiEventData.uEventDataSize = sizeof(*pwdiStartScanParams);
2578 wdiEventData.pCBfnc = wdiStartScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002579 wdiEventData.pUserData = pUserData;
2580
2581 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2582
2583}/*WDI_StartScanReq*/
2584
2585
2586/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002587 @brief WDI_EndScanReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002588 wants to end scanning for a particular channel that it
2589 had set before by calling Scan Start on the WLAN Device.
2590 Upon the call of this API the WLAN DAL will pack and
2591 send a HAL End Scan request message to the lower RIVA
2592 sub-system if DAL is in state STARTED.
2593
2594 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002595 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002596
2597 WDI_StartScanReq must have been called.
2598
Jeff Johnsone7245742012-09-05 17:12:55 -07002599 @param wdiEndScanParams: the end scan parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07002600 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002601
Jeff Johnson295189b2012-06-20 16:38:30 -07002602 wdiEndScanRspCb: callback for passing back the response
2603 of the end scan operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002604
Jeff Johnson295189b2012-06-20 16:38:30 -07002605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002606 callback
2607
Jeff Johnson295189b2012-06-20 16:38:30 -07002608 @see WDI_StartScanReq
2609 @return Result of the function call
2610*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002611WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002612WDI_EndScanReq
2613(
2614 WDI_EndScanReqParamsType* pwdiEndScanParams,
2615 WDI_EndScanRspCb wdiEndScanRspCb,
2616 void* pUserData
2617)
2618{
2619 WDI_EventInfoType wdiEventData;
2620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2621
2622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002623 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002624 ------------------------------------------------------------------------*/
2625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2626 {
2627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2628 "WDI API call before module is initialized - Fail request");
2629
Jeff Johnsone7245742012-09-05 17:12:55 -07002630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002631 }
2632
2633 /*------------------------------------------------------------------------
2634 Fill in Event data and post to the Main FSM
2635 ------------------------------------------------------------------------*/
2636 wdiEventData.wdiRequest = WDI_END_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002637 wdiEventData.pEventData = pwdiEndScanParams;
2638 wdiEventData.uEventDataSize = sizeof(*pwdiEndScanParams);
2639 wdiEventData.pCBfnc = wdiEndScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002640 wdiEventData.pUserData = pUserData;
2641
2642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2643
2644}/*WDI_EndScanReq*/
2645
2646
2647/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002648 @brief WDI_FinishScanReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002649 completed the scan process on the WLAN Device. Upon the
2650 call of this API the WLAN DAL will pack and send a HAL
2651 Finish Scan Request request message to the lower RIVA
2652 sub-system if DAL is in state STARTED.
2653
2654 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002655 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002656
2657 WDI_InitScanReq must have been called.
2658
Jeff Johnsone7245742012-09-05 17:12:55 -07002659 @param wdiFinishScanParams: the finish scan parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002660 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002661
Jeff Johnson295189b2012-06-20 16:38:30 -07002662 wdiFinishScanRspCb: callback for passing back the
2663 response of the finish scan operation received from the
2664 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002665
Jeff Johnson295189b2012-06-20 16:38:30 -07002666 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002667 callback
2668
Jeff Johnson295189b2012-06-20 16:38:30 -07002669 @see WDI_InitScanReq
2670 @return Result of the function call
2671*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002672WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002673WDI_FinishScanReq
2674(
2675 WDI_FinishScanReqParamsType* pwdiFinishScanParams,
2676 WDI_FinishScanRspCb wdiFinishScanRspCb,
2677 void* pUserData
2678)
2679{
2680 WDI_EventInfoType wdiEventData;
2681 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2682
2683 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002684 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002685 ------------------------------------------------------------------------*/
2686 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2687 {
2688 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2689 "WDI API call before module is initialized - Fail request");
2690
Jeff Johnsone7245742012-09-05 17:12:55 -07002691 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002692 }
2693
2694 /*------------------------------------------------------------------------
2695 Fill in Event data and post to the Main FSM
2696 ------------------------------------------------------------------------*/
2697 wdiEventData.wdiRequest = WDI_FINISH_SCAN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002698 wdiEventData.pEventData = pwdiFinishScanParams;
2699 wdiEventData.uEventDataSize = sizeof(*pwdiFinishScanParams);
2700 wdiEventData.pCBfnc = wdiFinishScanRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002701 wdiEventData.pUserData = pUserData;
2702
2703 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2704
2705}/*WDI_FinishScanReq*/
2706
Jeff Johnsone7245742012-09-05 17:12:55 -07002707/*========================================================================
2708
Jeff Johnson295189b2012-06-20 16:38:30 -07002709 ASSOCIATION APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07002710
Jeff Johnson295189b2012-06-20 16:38:30 -07002711==========================================================================*/
2712
2713/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002714 @brief WDI_JoinReq will be called when the upper MAC is ready
Jeff Johnson295189b2012-06-20 16:38:30 -07002715 to start an association procedure to a BSS. Upon the
2716 call of this API the WLAN DAL will pack and send a HAL
2717 Join request message to the lower RIVA sub-system if
2718 DAL is in state STARTED.
2719
2720 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002721 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002722
2723 WDI_Start must have been called.
2724
Jeff Johnsone7245742012-09-05 17:12:55 -07002725 @param wdiJoinParams: the join parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002726 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002727
Jeff Johnson295189b2012-06-20 16:38:30 -07002728 wdiJoinRspCb: callback for passing back the response of
2729 the join operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002730
Jeff Johnson295189b2012-06-20 16:38:30 -07002731 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002732 callback
2733
Jeff Johnson295189b2012-06-20 16:38:30 -07002734 @see WDI_Start
2735 @return Result of the function call
2736*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002737WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002738WDI_JoinReq
2739(
2740 WDI_JoinReqParamsType* pwdiJoinParams,
2741 WDI_JoinRspCb wdiJoinRspCb,
2742 void* pUserData
2743)
2744{
2745 WDI_EventInfoType wdiEventData;
2746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2747
2748 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002749 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002750 ------------------------------------------------------------------------*/
2751 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2752 {
2753 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2754 "WDI API call before module is initialized - Fail request");
2755
Jeff Johnsone7245742012-09-05 17:12:55 -07002756 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002757 }
2758
2759 /*------------------------------------------------------------------------
2760 Fill in Event data and post to the Main FSM
2761 ------------------------------------------------------------------------*/
2762 wdiEventData.wdiRequest = WDI_JOIN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002763 wdiEventData.pEventData = pwdiJoinParams;
2764 wdiEventData.uEventDataSize = sizeof(*pwdiJoinParams);
2765 wdiEventData.pCBfnc = wdiJoinRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002766 wdiEventData.pUserData = pUserData;
2767
2768 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2769
2770}/*WDI_JoinReq*/
2771
2772/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002773 @brief WDI_ConfigBSSReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07002774 wishes to configure the newly acquired or in process of
2775 being acquired BSS to the HW . Upon the call of this API
2776 the WLAN DAL will pack and send a HAL Config BSS request
2777 message to the lower RIVA sub-system if DAL is in state
2778 STARTED.
2779
2780 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002781 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002782
2783 WDI_JoinReq must have been called.
2784
Jeff Johnsone7245742012-09-05 17:12:55 -07002785 @param wdiConfigBSSParams: the config BSS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07002786 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002787
Jeff Johnson295189b2012-06-20 16:38:30 -07002788 wdiConfigBSSRspCb: callback for passing back the
2789 response of the config BSS operation received from the
2790 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002791
Jeff Johnson295189b2012-06-20 16:38:30 -07002792 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002793 callback
2794
Jeff Johnson295189b2012-06-20 16:38:30 -07002795 @see WDI_JoinReq
2796 @return Result of the function call
2797*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002798WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002799WDI_ConfigBSSReq
2800(
2801 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams,
2802 WDI_ConfigBSSRspCb wdiConfigBSSRspCb,
2803 void* pUserData
2804)
2805{
2806 WDI_EventInfoType wdiEventData;
2807 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2808
2809 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002810 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002811 ------------------------------------------------------------------------*/
2812 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2813 {
2814 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2815 "WDI API call before module is initialized - Fail request");
2816
Jeff Johnsone7245742012-09-05 17:12:55 -07002817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002818 }
2819
2820 /*------------------------------------------------------------------------
2821 Fill in Event data and post to the Main FSM
2822 ------------------------------------------------------------------------*/
2823 wdiEventData.wdiRequest = WDI_CONFIG_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002824 wdiEventData.pEventData = pwdiConfigBSSParams;
2825 wdiEventData.uEventDataSize = sizeof(*pwdiConfigBSSParams);
2826 wdiEventData.pCBfnc = wdiConfigBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002827 wdiEventData.pUserData = pUserData;
2828
2829 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2830
2831}/*WDI_ConfigBSSReq*/
2832
2833/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002834 @brief WDI_DelBSSReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07002835 disassociating from the BSS and wishes to notify HW.
2836 Upon the call of this API the WLAN DAL will pack and
2837 send a HAL Del BSS request message to the lower RIVA
2838 sub-system if DAL is in state STARTED.
2839
2840 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002841 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002842
2843 WDI_ConfigBSSReq or WDI_PostAssocReq must have been called.
2844
Jeff Johnsone7245742012-09-05 17:12:55 -07002845 @param wdiDelBSSParams: the del BSS parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002846 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002847
Jeff Johnson295189b2012-06-20 16:38:30 -07002848 wdiDelBSSRspCb: callback for passing back the response
2849 of the del bss operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002850
Jeff Johnson295189b2012-06-20 16:38:30 -07002851 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002852 callback
2853
2854 @see WDI_ConfigBSSReq, WDI_PostAssocReq
Jeff Johnson295189b2012-06-20 16:38:30 -07002855 @return Result of the function call
2856*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002857WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002858WDI_DelBSSReq
2859(
2860 WDI_DelBSSReqParamsType* pwdiDelBSSParams,
2861 WDI_DelBSSRspCb wdiDelBSSRspCb,
2862 void* pUserData
2863)
2864{
2865 WDI_EventInfoType wdiEventData;
2866 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2867
2868 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002869 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002870 ------------------------------------------------------------------------*/
2871 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2872 {
2873 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2874 "WDI API call before module is initialized - Fail request");
2875
Jeff Johnsone7245742012-09-05 17:12:55 -07002876 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002877 }
2878
2879 /*------------------------------------------------------------------------
2880 Fill in Event data and post to the Main FSM
2881 ------------------------------------------------------------------------*/
2882 wdiEventData.wdiRequest = WDI_DEL_BSS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002883 wdiEventData.pEventData = pwdiDelBSSParams;
2884 wdiEventData.uEventDataSize = sizeof(*pwdiDelBSSParams);
2885 wdiEventData.pCBfnc = wdiDelBSSRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002886 wdiEventData.pUserData = pUserData;
2887
2888 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2889
2890}/*WDI_DelBSSReq*/
2891
2892/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002893 @brief WDI_PostAssocReq will be called when the upper MAC has
Jeff Johnson295189b2012-06-20 16:38:30 -07002894 associated to a BSS and wishes to configure HW for
2895 associated state. Upon the call of this API the WLAN DAL
2896 will pack and send a HAL Post Assoc request message to
2897 the lower RIVA sub-system if DAL is in state STARTED.
2898
2899 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002900 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002901
2902 WDI_JoinReq must have been called.
2903
2904 @param wdiPostAssocReqParams: the assoc parameters as specified
2905 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002906
Jeff Johnson295189b2012-06-20 16:38:30 -07002907 wdiPostAssocRspCb: callback for passing back the
2908 response of the post assoc operation received from the
2909 device
Jeff Johnsone7245742012-09-05 17:12:55 -07002910
Jeff Johnson295189b2012-06-20 16:38:30 -07002911 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002912 callback
2913
Jeff Johnson295189b2012-06-20 16:38:30 -07002914 @see WDI_JoinReq
2915 @return Result of the function call
2916*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002917WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002918WDI_PostAssocReq
2919(
2920 WDI_PostAssocReqParamsType* pwdiPostAssocReqParams,
2921 WDI_PostAssocRspCb wdiPostAssocRspCb,
2922 void* pUserData
2923)
2924{
2925 WDI_EventInfoType wdiEventData;
2926 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2927
2928 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002929 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002930 ------------------------------------------------------------------------*/
2931 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2932 {
2933 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2934 "WDI API call before module is initialized - Fail request");
2935
Jeff Johnsone7245742012-09-05 17:12:55 -07002936 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002937 }
2938
2939 /*------------------------------------------------------------------------
2940 Fill in Event data and post to the Main FSM
2941 ------------------------------------------------------------------------*/
2942 wdiEventData.wdiRequest = WDI_POST_ASSOC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07002943 wdiEventData.pEventData = pwdiPostAssocReqParams;
2944 wdiEventData.uEventDataSize = sizeof(*pwdiPostAssocReqParams);
2945 wdiEventData.pCBfnc = wdiPostAssocRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07002946 wdiEventData.pUserData = pUserData;
2947
2948 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
2949
2950}/*WDI_PostAssocReq*/
2951
2952/**
Jeff Johnsone7245742012-09-05 17:12:55 -07002953 @brief WDI_DelSTAReq will be called when the upper MAC when an
Jeff Johnson295189b2012-06-20 16:38:30 -07002954 association with another STA has ended and the station
2955 must be deleted from HW. Upon the call of this API the
2956 WLAN DAL will pack and send a HAL Del STA request
2957 message to the lower RIVA sub-system if DAL is in state
2958 STARTED.
2959
2960 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07002961 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07002962
2963 WDI_PostAssocReq must have been called.
2964
Jeff Johnsone7245742012-09-05 17:12:55 -07002965 @param wdiDelSTAParams: the Del STA parameters as specified by
Jeff Johnson295189b2012-06-20 16:38:30 -07002966 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07002967
Jeff Johnson295189b2012-06-20 16:38:30 -07002968 wdiDelSTARspCb: callback for passing back the response
2969 of the del STA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07002970
Jeff Johnson295189b2012-06-20 16:38:30 -07002971 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07002972 callback
2973
Jeff Johnson295189b2012-06-20 16:38:30 -07002974 @see WDI_PostAssocReq
2975 @return Result of the function call
2976*/
Jeff Johnsone7245742012-09-05 17:12:55 -07002977WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07002978WDI_DelSTAReq
2979(
2980 WDI_DelSTAReqParamsType* pwdiDelSTAParams,
2981 WDI_DelSTARspCb wdiDelSTARspCb,
2982 void* pUserData
2983)
2984{
2985 WDI_EventInfoType wdiEventData;
2986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
2987
2988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07002989 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07002990 ------------------------------------------------------------------------*/
2991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
2992 {
2993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
2994 "WDI API call before module is initialized - Fail request");
2995
Jeff Johnsone7245742012-09-05 17:12:55 -07002996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07002997 }
2998
2999 /*------------------------------------------------------------------------
3000 Fill in Event data and post to the Main FSM
3001 ------------------------------------------------------------------------*/
3002 wdiEventData.wdiRequest = WDI_DEL_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003003 wdiEventData.pEventData = pwdiDelSTAParams;
3004 wdiEventData.uEventDataSize = sizeof(*pwdiDelSTAParams);
3005 wdiEventData.pCBfnc = wdiDelSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003006 wdiEventData.pUserData = pUserData;
3007
3008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3009
3010}/*WDI_DelSTAReq*/
3011
Jeff Johnsone7245742012-09-05 17:12:55 -07003012/*========================================================================
3013
Jeff Johnson295189b2012-06-20 16:38:30 -07003014 SECURITY APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003015
Jeff Johnson295189b2012-06-20 16:38:30 -07003016==========================================================================*/
3017
3018/**
3019 @brief WDI_SetBSSKeyReq will be called when the upper MAC wants to
3020 install a BSS encryption key on the HW. Upon the call of this
3021 API the WLAN DAL will pack and send a Set BSS Key request
3022 message to the lower RIVA sub-system if DAL is in state
3023 STARTED.
3024
3025 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003026 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003027
3028 WDI_PostAssocReq must have been called.
3029
Jeff Johnsone7245742012-09-05 17:12:55 -07003030 @param wdiSetBSSKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003031 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003032
Jeff Johnson295189b2012-06-20 16:38:30 -07003033 wdiSetBSSKeyRspCb: callback for passing back the
3034 response of the set BSS Key operation received from the
3035 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003036
Jeff Johnson295189b2012-06-20 16:38:30 -07003037 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003038 callback
3039
Jeff Johnson295189b2012-06-20 16:38:30 -07003040 @see WDI_PostAssocReq
3041 @return Result of the function call
3042*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003043WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003044WDI_SetBSSKeyReq
3045(
3046 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams,
3047 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb,
3048 void* pUserData
3049)
3050{
3051 WDI_EventInfoType wdiEventData;
3052 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3053
3054 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003055 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003056 ------------------------------------------------------------------------*/
3057 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3058 {
3059 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3060 "WDI API call before module is initialized - Fail request");
3061
Jeff Johnsone7245742012-09-05 17:12:55 -07003062 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003063 }
3064
3065 /*------------------------------------------------------------------------
3066 Fill in Event data and post to the Main FSM
3067 ------------------------------------------------------------------------*/
3068 wdiEventData.wdiRequest = WDI_SET_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003069 wdiEventData.pEventData = pwdiSetBSSKeyParams;
3070 wdiEventData.uEventDataSize = sizeof(*pwdiSetBSSKeyParams);
3071 wdiEventData.pCBfnc = wdiSetBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003072 wdiEventData.pUserData = pUserData;
3073
3074 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3075
3076}/*WDI_SetBSSKeyReq*/
3077
3078/**
3079 @brief WDI_RemoveBSSKeyReq will be called when the upper MAC wants to
3080 uninstall a BSS key from HW. Upon the call of this API the
3081 WLAN DAL will pack and send a HAL Remove BSS Key request
3082 message to the lower RIVA sub-system if DAL is in state
3083 STARTED.
3084
3085 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003086 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003087
3088 WDI_SetBSSKeyReq must have been called.
3089
Jeff Johnsone7245742012-09-05 17:12:55 -07003090 @param wdiRemoveBSSKeyParams: the remove BSS key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003091 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003092
Jeff Johnson295189b2012-06-20 16:38:30 -07003093 wdiRemoveBSSKeyRspCb: callback for passing back the
3094 response of the remove BSS key operation received from
3095 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003096
Jeff Johnson295189b2012-06-20 16:38:30 -07003097 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003098 callback
3099
Jeff Johnson295189b2012-06-20 16:38:30 -07003100 @see WDI_SetBSSKeyReq
3101 @return Result of the function call
3102*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003103WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003104WDI_RemoveBSSKeyReq
3105(
3106 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams,
3107 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb,
3108 void* pUserData
3109)
3110{
3111 WDI_EventInfoType wdiEventData;
3112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3113
3114 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003115 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003116 ------------------------------------------------------------------------*/
3117 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3118 {
3119 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3120 "WDI API call before module is initialized - Fail request");
3121
Jeff Johnsone7245742012-09-05 17:12:55 -07003122 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003123 }
3124
3125 /*------------------------------------------------------------------------
3126 Fill in Event data and post to the Main FSM
3127 ------------------------------------------------------------------------*/
3128 wdiEventData.wdiRequest = WDI_RMV_BSS_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003129 wdiEventData.pEventData = pwdiRemoveBSSKeyParams;
3130 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveBSSKeyParams);
3131 wdiEventData.pCBfnc = wdiRemoveBSSKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003132 wdiEventData.pUserData = pUserData;
3133
3134 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3135
3136}/*WDI_RemoveBSSKeyReq*/
3137
3138
3139/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003140 @brief WDI_SetSTAKeyReq will be called when the upper MAC is
Jeff Johnson295189b2012-06-20 16:38:30 -07003141 ready to install a STA(ast) encryption key in HW. Upon
3142 the call of this API the WLAN DAL will pack and send a
3143 HAL Set STA Key request message to the lower RIVA
3144 sub-system if DAL is in state STARTED.
3145
3146 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003147 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003148
3149 WDI_PostAssocReq must have been called.
3150
Jeff Johnsone7245742012-09-05 17:12:55 -07003151 @param wdiSetSTAKeyParams: the set STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003152 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003153
Jeff Johnson295189b2012-06-20 16:38:30 -07003154 wdiSetSTAKeyRspCb: callback for passing back the
3155 response of the set STA key operation received from the
3156 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003157
Jeff Johnson295189b2012-06-20 16:38:30 -07003158 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003159 callback
3160
Jeff Johnson295189b2012-06-20 16:38:30 -07003161 @see WDI_PostAssocReq
3162 @return Result of the function call
3163*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003164WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003165WDI_SetSTAKeyReq
3166(
3167 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams,
3168 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb,
3169 void* pUserData
3170)
3171{
3172 WDI_EventInfoType wdiEventData;
3173 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3174
3175 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003176 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003177 ------------------------------------------------------------------------*/
3178 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3179 {
3180 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3181 "WDI API call before module is initialized - Fail request");
3182
Jeff Johnsone7245742012-09-05 17:12:55 -07003183 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003184 }
3185
3186 /*------------------------------------------------------------------------
3187 Fill in Event data and post to the Main FSM
3188 ------------------------------------------------------------------------*/
3189 wdiEventData.wdiRequest = WDI_SET_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003190 wdiEventData.pEventData = pwdiSetSTAKeyParams;
3191 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTAKeyParams);
3192 wdiEventData.pCBfnc = wdiSetSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003193 wdiEventData.pUserData = pUserData;
3194
3195 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3196
3197}/*WDI_SetSTAKeyReq*/
3198
3199
3200/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003201 @brief WDI_RemoveSTAKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003202 wants to uninstall a previously set STA key in HW. Upon
3203 the call of this API the WLAN DAL will pack and send a
3204 HAL Remove STA Key request message to the lower RIVA
3205 sub-system if DAL is in state STARTED.
3206
3207 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003208 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003209
3210 WDI_SetSTAKeyReq must have been called.
3211
Jeff Johnsone7245742012-09-05 17:12:55 -07003212 @param wdiRemoveSTAKeyParams: the remove STA key parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003213 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003214
Jeff Johnson295189b2012-06-20 16:38:30 -07003215 wdiRemoveSTAKeyRspCb: callback for passing back the
3216 response of the remove STA key operation received from
3217 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003218
Jeff Johnson295189b2012-06-20 16:38:30 -07003219 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003220 callback
3221
Jeff Johnson295189b2012-06-20 16:38:30 -07003222 @see WDI_SetSTAKeyReq
3223 @return Result of the function call
3224*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003225WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003226WDI_RemoveSTAKeyReq
3227(
3228 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams,
3229 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb,
3230 void* pUserData
3231)
3232{
3233 WDI_EventInfoType wdiEventData;
3234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3235
3236 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003237 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003238 ------------------------------------------------------------------------*/
3239 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3240 {
3241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3242 "WDI API call before module is initialized - Fail request");
3243
Jeff Johnsone7245742012-09-05 17:12:55 -07003244 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003245 }
3246
3247 /*------------------------------------------------------------------------
3248 Fill in Event data and post to the Main FSM
3249 ------------------------------------------------------------------------*/
3250 wdiEventData.wdiRequest = WDI_RMV_STA_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003251 wdiEventData.pEventData = pwdiRemoveSTAKeyParams;
3252 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTAKeyParams);
3253 wdiEventData.pCBfnc = wdiRemoveSTAKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003254 wdiEventData.pUserData = pUserData;
3255
3256 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3257
3258}/*WDI_RemoveSTAKeyReq*/
3259
3260
3261/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003262 @brief WDI_SetSTABcastKeyReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003263 wants to install a STA Bcast encryption key on the HW.
3264 Upon the call of this API the WLAN DAL will pack and
3265 send a HAL Start request message to the lower RIVA
3266 sub-system if DAL is in state STARTED.
3267
3268 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003269 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003270
3271 WDI_PostAssocReq must have been called.
3272
Jeff Johnsone7245742012-09-05 17:12:55 -07003273 @param pwdiSetSTABcastKeyParams: the BSS Key set parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003274 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003275
Jeff Johnson295189b2012-06-20 16:38:30 -07003276 wdiSetSTABcastKeyRspCb: callback for passing back the
3277 response of the set BSS Key operation received from the
3278 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003279
Jeff Johnson295189b2012-06-20 16:38:30 -07003280 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003281 callback
3282
Jeff Johnson295189b2012-06-20 16:38:30 -07003283 @see WDI_PostAssocReq
3284 @return Result of the function call
3285*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003286WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003287WDI_SetSTABcastKeyReq
3288(
3289 WDI_SetSTAKeyReqParamsType* pwdiSetSTABcastKeyParams,
3290 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb,
3291 void* pUserData
3292)
3293
3294{
3295 WDI_EventInfoType wdiEventData;
3296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3297
3298 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003299 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003300 ------------------------------------------------------------------------*/
3301 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3302 {
3303 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3304 "WDI API call before module is initialized - Fail request");
3305
Jeff Johnsone7245742012-09-05 17:12:55 -07003306 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003307 }
3308
3309 /*------------------------------------------------------------------------
3310 Fill in Event data and post to the Main FSM
3311 ------------------------------------------------------------------------*/
3312 wdiEventData.wdiRequest = WDI_SET_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003313 wdiEventData.pEventData = pwdiSetSTABcastKeyParams;
3314 wdiEventData.uEventDataSize = sizeof(*pwdiSetSTABcastKeyParams);
3315 wdiEventData.pCBfnc = wdiSetSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003316 wdiEventData.pUserData = pUserData;
3317
3318 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3319
3320}/*WDI_SetSTABcastKeyReq*/
3321
3322/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003323 @brief WDI_RemoveSTABcastKeyReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003324 MAC wants to uninstall a STA Bcast key from HW. Upon the
3325 call of this API the WLAN DAL will pack and send a HAL
3326 Remove STA Bcast Key request message to the lower RIVA
3327 sub-system if DAL is in state STARTED.
3328
3329 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003330 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003331
3332 WDI_SetSTABcastKeyReq must have been called.
3333
Jeff Johnsone7245742012-09-05 17:12:55 -07003334 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003335 parameters as specified by the Device
3336 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003337
Jeff Johnson295189b2012-06-20 16:38:30 -07003338 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3339 response of the remove STA Bcast key operation received
3340 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003341
Jeff Johnson295189b2012-06-20 16:38:30 -07003342 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003343 callback
3344
Jeff Johnson295189b2012-06-20 16:38:30 -07003345 @see WDI_SetSTABcastKeyReq
3346 @return Result of the function call
3347*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003348WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003349WDI_RemoveSTABcastKeyReq
3350(
3351 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams,
3352 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb,
3353 void* pUserData
3354)
3355{
3356 WDI_EventInfoType wdiEventData;
3357 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3358
3359 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003360 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003361 ------------------------------------------------------------------------*/
3362 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3363 {
3364 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3365 "WDI API call before module is initialized - Fail request");
3366
Jeff Johnsone7245742012-09-05 17:12:55 -07003367 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003368 }
3369
3370 /*------------------------------------------------------------------------
3371 Fill in Event data and post to the Main FSM
3372 ------------------------------------------------------------------------*/
3373 wdiEventData.wdiRequest = WDI_RMV_STA_BCAST_KEY_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003374 wdiEventData.pEventData = pwdiRemoveSTABcastKeyParams;
3375 wdiEventData.uEventDataSize = sizeof(*pwdiRemoveSTABcastKeyParams);
3376 wdiEventData.pCBfnc = wdiRemoveSTABcastKeyRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003377 wdiEventData.pUserData = pUserData;
3378
3379 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3380
3381}/*WDI_RemoveSTABcastKeyReq*/
3382
3383/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003384 @brief WDI_SetMaxTxPowerReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07003385 MAC wants to set Max Tx Power to HW. Upon the
3386 call of this API the WLAN DAL will pack and send a HAL
3387 Remove STA Bcast Key request message to the lower RIVA
3388 sub-system if DAL is in state STARTED.
3389
3390 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003391 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003392
3393 WDI_SetSTABcastKeyReq must have been called.
3394
Jeff Johnsone7245742012-09-05 17:12:55 -07003395 @param pwdiRemoveSTABcastKeyParams: the remove BSS key
Jeff Johnson295189b2012-06-20 16:38:30 -07003396 parameters as specified by the Device
3397 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003398
Jeff Johnson295189b2012-06-20 16:38:30 -07003399 wdiRemoveSTABcastKeyRspCb: callback for passing back the
3400 response of the remove STA Bcast key operation received
3401 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003402
Jeff Johnson295189b2012-06-20 16:38:30 -07003403 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003404 callback
3405
Jeff Johnson295189b2012-06-20 16:38:30 -07003406 @see WDI_SetMaxTxPowerReq
3407 @return Result of the function call
3408*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003409WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003410WDI_SetMaxTxPowerReq
3411(
3412 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams,
3413 WDA_SetMaxTxPowerRspCb wdiReqStatusCb,
3414 void* pUserData
3415)
3416{
3417 WDI_EventInfoType wdiEventData;
3418 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3419
3420 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003421 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003422 ------------------------------------------------------------------------*/
3423 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3424 {
3425 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3426 "WDI API call before module is initialized - Fail request");
3427
Jeff Johnsone7245742012-09-05 17:12:55 -07003428 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003429 }
3430
3431 /*------------------------------------------------------------------------
3432 Fill in Event data and post to the Main FSM
3433 ------------------------------------------------------------------------*/
3434 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003435 wdiEventData.pEventData = pwdiSetMaxTxPowerParams;
3436 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerParams);
3437 wdiEventData.pCBfnc = wdiReqStatusCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003438 wdiEventData.pUserData = pUserData;
3439
3440 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3441}
3442
schang86c22c42013-03-13 18:41:24 -07003443/**
Arif Hussaina5ebce02013-08-09 15:09:58 -07003444 @brief WDI_SetMaxTxPowerPerBandReq will be called when the upper
3445 MAC wants to set Max Tx Power to HW for specific band.
3446
3447 @param pwdiSetMaxTxPowerPerBandParams: Tx Power Information
3448
3449 wdiReqStatusCb: callback for passing back the
3450 response msg from the device
3451
3452 pUserData: user data will be passed back with the
3453 callback
3454
3455 @see WDI_SetMaxTxPowerPerBandReq
3456 @return Result of the function call
3457*/
3458WDI_Status
3459WDI_SetMaxTxPowerPerBandReq
3460(
3461 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams,
3462 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb,
3463 void* pUserData
3464)
3465{
3466 WDI_EventInfoType wdiEventData;
3467 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3468
3469 /*------------------------------------------------------------------------
3470 Sanity Check
3471 ------------------------------------------------------------------------*/
3472 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3473 {
3474 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3475 "WDI API call before module is initialized - Fail request");
3476
3477 return WDI_STATUS_E_NOT_ALLOWED;
3478 }
3479
3480 /*------------------------------------------------------------------------
3481 Fill in Event data and post to the Main FSM
3482 ------------------------------------------------------------------------*/
3483 wdiEventData.wdiRequest = WDI_SET_MAX_TX_POWER_PER_BAND_REQ;
3484 wdiEventData.pEventData = pwdiSetMaxTxPowerPerBandParams;
3485 wdiEventData.uEventDataSize = sizeof(*pwdiSetMaxTxPowerPerBandParams);
3486 wdiEventData.pCBfnc = wdiReqStatusCb;
3487 wdiEventData.pUserData = pUserData;
3488
3489 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3490}
3491
3492/**
schang86c22c42013-03-13 18:41:24 -07003493 @brief WDI_SetTxPowerReq will be called when the upper
3494 MAC wants to set Tx Power to HW.
3495 In state BUSY this request will be queued. Request won't
3496 be allowed in any other state.
3497
3498
3499 @param pwdiSetTxPowerParams: set TS Power parameters
3500 BSSID and target TX Power with dbm included
3501
3502 wdiReqStatusCb: callback for passing back the response
3503
3504 pUserData: user data will be passed back with the
3505 callback
3506
3507 @return Result of the function call
3508*/
3509WDI_Status
3510WDI_SetTxPowerReq
3511(
3512 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams,
3513 WDA_SetTxPowerRspCb wdiReqStatusCb,
3514 void* pUserData
3515)
3516{
3517 WDI_EventInfoType wdiEventData;
3518 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3519
3520 /*------------------------------------------------------------------------
3521 Sanity Check
3522 ------------------------------------------------------------------------*/
3523 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3524 {
3525 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3526 "WDI API call before module is initialized - Fail request");
3527
3528 return WDI_STATUS_E_NOT_ALLOWED;
3529 }
3530
3531 /*------------------------------------------------------------------------
3532 Fill in Event data and post to the Main FSM
3533 ------------------------------------------------------------------------*/
3534 wdiEventData.wdiRequest = WDI_SET_TX_POWER_REQ;
3535 wdiEventData.pEventData = pwdiSetTxPowerParams;
3536 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPowerParams);
3537 wdiEventData.pCBfnc = wdiReqStatusCb;
3538 wdiEventData.pUserData = pUserData;
3539
3540 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3541}
3542
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08003543#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -07003544WDI_Status
3545WDI_TSMStatsReq
3546(
3547 WDI_TSMStatsReqParamsType* pwdiTsmReqParams,
3548 WDI_TsmRspCb wdiReqStatusCb,
3549 void* pUserData
3550)
3551{
3552 WDI_EventInfoType wdiEventData;
3553 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -07003554 /*------------------------------------------------------------------------
3555 Sanity Check
3556 ------------------------------------------------------------------------*/
3557 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3558 {
3559 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3560 "WDI API call before module is initialized - Fail request");
3561
3562 return WDI_STATUS_E_NOT_ALLOWED;
3563 }
3564
3565 /*------------------------------------------------------------------------
3566 Fill in Event data and post to the Main FSM
3567 ------------------------------------------------------------------------*/
3568 wdiEventData.wdiRequest = WDI_TSM_STATS_REQ;
3569 wdiEventData.pEventData = pwdiTsmReqParams;
3570 wdiEventData.uEventDataSize = sizeof(*pwdiTsmReqParams);
3571 wdiEventData.pCBfnc = wdiReqStatusCb;
3572 wdiEventData.pUserData = pUserData;
3573
3574 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3575
3576}
3577#endif
3578
3579/*========================================================================
3580
3581 QoS and BA APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003582
Jeff Johnson295189b2012-06-20 16:38:30 -07003583==========================================================================*/
3584
3585/**
3586 @brief WDI_AddTSReq will be called when the upper MAC to inform
3587 the device of a successful add TSpec negotiation. HW
3588 needs to receive the TSpec Info from the UMAC in order
3589 to configure properly the QoS data traffic. Upon the
3590 call of this API the WLAN DAL will pack and send a HAL
3591 Add TS request message to the lower RIVA sub-system if
3592 DAL is in state STARTED.
3593
3594 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003595 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003596
3597 WDI_PostAssocReq must have been called.
3598
3599 @param wdiAddTsReqParams: the add TS parameters as specified by
3600 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003601
Jeff Johnson295189b2012-06-20 16:38:30 -07003602 wdiAddTsRspCb: callback for passing back the response of
3603 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003604
Jeff Johnson295189b2012-06-20 16:38:30 -07003605 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003606 callback
3607
Jeff Johnson295189b2012-06-20 16:38:30 -07003608 @see WDI_PostAssocReq
3609 @return Result of the function call
3610*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003611WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003612WDI_AddTSReq
3613(
3614 WDI_AddTSReqParamsType* pwdiAddTsReqParams,
3615 WDI_AddTsRspCb wdiAddTsRspCb,
3616 void* pUserData
3617)
3618{
3619 WDI_EventInfoType wdiEventData;
3620 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3621
3622 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003623 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003624 ------------------------------------------------------------------------*/
3625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3626 {
3627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3628 "WDI API call before module is initialized - Fail request");
3629
Jeff Johnsone7245742012-09-05 17:12:55 -07003630 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003631 }
3632
3633 /*------------------------------------------------------------------------
3634 Fill in Event data and post to the Main FSM
3635 ------------------------------------------------------------------------*/
3636 wdiEventData.wdiRequest = WDI_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003637 wdiEventData.pEventData = pwdiAddTsReqParams;
3638 wdiEventData.uEventDataSize = sizeof(*pwdiAddTsReqParams);
3639 wdiEventData.pCBfnc = wdiAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003640 wdiEventData.pUserData = pUserData;
3641
3642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3643
3644}/*WDI_AddTSReq*/
3645
3646
3647
3648/**
3649 @brief WDI_DelTSReq will be called when the upper MAC has ended
3650 admission on a specific AC. This is to inform HW that
3651 QoS traffic parameters must be rest. Upon the call of
3652 this API the WLAN DAL will pack and send a HAL Del TS
3653 request message to the lower RIVA sub-system if DAL is
3654 in state STARTED.
3655
3656 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003657 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003658
3659 WDI_AddTSReq must have been called.
3660
3661 @param wdiDelTsReqParams: the del TS parameters as specified by
3662 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003663
Jeff Johnson295189b2012-06-20 16:38:30 -07003664 wdiDelTsRspCb: callback for passing back the response of
3665 the del TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003666
Jeff Johnson295189b2012-06-20 16:38:30 -07003667 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003668 callback
3669
Jeff Johnson295189b2012-06-20 16:38:30 -07003670 @see WDI_AddTSReq
3671 @return Result of the function call
3672*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003673WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003674WDI_DelTSReq
3675(
3676 WDI_DelTSReqParamsType* pwdiDelTsReqParams,
3677 WDI_DelTsRspCb wdiDelTsRspCb,
3678 void* pUserData
3679)
3680{
3681 WDI_EventInfoType wdiEventData;
3682 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3683
3684 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003685 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003686 ------------------------------------------------------------------------*/
3687 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3688 {
3689 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3690 "WDI API call before module is initialized - Fail request");
3691
Jeff Johnsone7245742012-09-05 17:12:55 -07003692 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003693 }
3694
3695 /*------------------------------------------------------------------------
3696 Fill in Event data and post to the Main FSM
3697 ------------------------------------------------------------------------*/
3698 wdiEventData.wdiRequest = WDI_DEL_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003699 wdiEventData.pEventData = pwdiDelTsReqParams;
3700 wdiEventData.uEventDataSize = sizeof(*pwdiDelTsReqParams);
3701 wdiEventData.pCBfnc = wdiDelTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003702 wdiEventData.pUserData = pUserData;
3703
3704 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3705
3706}/*WDI_DelTSReq*/
3707
3708
3709
3710/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003711 @brief WDI_UpdateEDCAParams will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003712 wishes to update the EDCA parameters used by HW for QoS
3713 data traffic. Upon the call of this API the WLAN DAL
3714 will pack and send a HAL Update EDCA Params request
3715 message to the lower RIVA sub-system if DAL is in state
3716 STARTED.
3717
3718 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003719 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003720
3721 WDI_PostAssocReq must have been called.
3722
Jeff Johnsone7245742012-09-05 17:12:55 -07003723 @param wdiUpdateEDCAParams: the start parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07003724 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003725
Jeff Johnson295189b2012-06-20 16:38:30 -07003726 wdiUpdateEDCAParamsRspCb: callback for passing back the
3727 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003728
Jeff Johnson295189b2012-06-20 16:38:30 -07003729 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003730 callback
3731
Jeff Johnson295189b2012-06-20 16:38:30 -07003732 @see WDI_PostAssocReq
3733 @return Result of the function call
3734*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003735WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003736WDI_UpdateEDCAParams
3737(
3738 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams,
3739 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb,
3740 void* pUserData
3741)
3742{
3743 WDI_EventInfoType wdiEventData;
3744 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3745
3746 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003747 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003748 ------------------------------------------------------------------------*/
3749 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3750 {
3751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3752 "WDI API call before module is initialized - Fail request");
3753
Jeff Johnsone7245742012-09-05 17:12:55 -07003754 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003755 }
3756
3757 /*------------------------------------------------------------------------
3758 Fill in Event data and post to the Main FSM
3759 ------------------------------------------------------------------------*/
3760 wdiEventData.wdiRequest = WDI_UPD_EDCA_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003761 wdiEventData.pEventData = pwdiUpdateEDCAParams;
3762 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateEDCAParams);
3763 wdiEventData.pCBfnc = wdiUpdateEDCAParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003764 wdiEventData.pUserData = pUserData;
3765
3766 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3767
3768}/*WDI_UpdateEDCAParams*/
3769
3770
3771/**
3772 @brief WDI_AddBASessionReq will be called when the upper MAC has setup
3773 successfully a BA session and needs to notify the HW for
3774 the appropriate settings to take place. Upon the call of
3775 this API the WLAN DAL will pack and send a HAL Add BA
3776 request message to the lower RIVA sub-system if DAL is
3777 in state STARTED.
3778
3779 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003780 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003781
3782 WDI_PostAssocReq must have been called.
3783
3784 @param wdiAddBAReqParams: the add BA parameters as specified by
3785 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003786
Jeff Johnson295189b2012-06-20 16:38:30 -07003787 wdiAddBARspCb: callback for passing back the response of
3788 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003789
Jeff Johnson295189b2012-06-20 16:38:30 -07003790 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003791 callback
3792
Jeff Johnson295189b2012-06-20 16:38:30 -07003793 @see WDI_PostAssocReq
3794 @return Result of the function call
3795*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003796WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003797WDI_AddBASessionReq
3798(
3799 WDI_AddBASessionReqParamsType* pwdiAddBASessionReqParams,
3800 WDI_AddBASessionRspCb wdiAddBASessionRspCb,
3801 void* pUserData
3802)
3803{
3804 WDI_EventInfoType wdiEventData;
3805 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3806
3807 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003808 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003809 ------------------------------------------------------------------------*/
3810 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3811 {
3812 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3813 "WDI API call before module is initialized - Fail request");
3814
Jeff Johnsone7245742012-09-05 17:12:55 -07003815 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003816 }
3817
3818 /*------------------------------------------------------------------------
3819 Fill in Event data and post to the Main FSM
3820 ------------------------------------------------------------------------*/
3821 wdiEventData.wdiRequest = WDI_ADD_BA_SESSION_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003822 wdiEventData.pEventData = pwdiAddBASessionReqParams;
3823 wdiEventData.uEventDataSize = sizeof(*pwdiAddBASessionReqParams);
3824 wdiEventData.pCBfnc = wdiAddBASessionRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003825 wdiEventData.pUserData = pUserData;
3826
3827 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3828
3829}/*WDI_AddBASessionReq*/
3830
3831/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003832 @brief WDI_DelBAReq will be called when the upper MAC wants to
Jeff Johnson295189b2012-06-20 16:38:30 -07003833 inform HW that it has deleted a previously created BA
3834 session. Upon the call of this API the WLAN DAL will
3835 pack and send a HAL Del BA request message to the lower
3836 RIVA sub-system if DAL is in state STARTED.
3837
3838 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003839 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003840
3841 WDI_AddBAReq must have been called.
3842
3843 @param wdiDelBAReqParams: the del BA parameters as specified by
3844 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003845
Jeff Johnson295189b2012-06-20 16:38:30 -07003846 wdiDelBARspCb: callback for passing back the response of
3847 the del BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003848
Jeff Johnson295189b2012-06-20 16:38:30 -07003849 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003850 callback
3851
Jeff Johnson295189b2012-06-20 16:38:30 -07003852 @see WDI_AddBAReq
3853 @return Result of the function call
3854*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003855WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003856WDI_DelBAReq
3857(
3858 WDI_DelBAReqParamsType* pwdiDelBAReqParams,
3859 WDI_DelBARspCb wdiDelBARspCb,
3860 void* pUserData
3861)
3862{
3863 WDI_EventInfoType wdiEventData;
3864 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3865
3866 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003867 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003868 ------------------------------------------------------------------------*/
3869 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3870 {
3871 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3872 "WDI API call before module is initialized - Fail request");
3873
Jeff Johnsone7245742012-09-05 17:12:55 -07003874 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003875 }
3876
3877 /*------------------------------------------------------------------------
3878 Fill in Event data and post to the Main FSM
3879 ------------------------------------------------------------------------*/
3880 wdiEventData.wdiRequest = WDI_DEL_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003881 wdiEventData.pEventData = pwdiDelBAReqParams;
3882 wdiEventData.uEventDataSize = sizeof(*pwdiDelBAReqParams);
3883 wdiEventData.pCBfnc = wdiDelBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003884 wdiEventData.pUserData = pUserData;
3885
3886 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3887
3888}/*WDI_DelBAReq*/
3889
Jeff Johnsone7245742012-09-05 17:12:55 -07003890/*========================================================================
3891
Jeff Johnson295189b2012-06-20 16:38:30 -07003892 Power Save APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07003893
Jeff Johnson295189b2012-06-20 16:38:30 -07003894==========================================================================*/
3895
3896/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003897 @brief WDI_SetPwrSaveCfgReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07003898 wants to set the power save related configurations of
3899 the WLAN Device. Upon the call of this API the WLAN DAL
3900 will pack and send a HAL Update CFG request message to
3901 the lower RIVA sub-system if DAL is in state STARTED.
3902
3903 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003904 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003905
3906 WDI_Start must have been called.
3907
Jeff Johnsone7245742012-09-05 17:12:55 -07003908 @param pwdiPowerSaveCfg: the power save cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07003909 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07003910
Jeff Johnson295189b2012-06-20 16:38:30 -07003911 wdiSetPwrSaveCfgCb: callback for passing back the
3912 response of the set power save cfg operation received
3913 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07003914
Jeff Johnson295189b2012-06-20 16:38:30 -07003915 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003916 callback
3917
Jeff Johnson295189b2012-06-20 16:38:30 -07003918 @see WDI_Start
Jeff Johnsone7245742012-09-05 17:12:55 -07003919 @return Result of the function call
3920*/
3921WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003922WDI_SetPwrSaveCfgReq
3923(
3924 WDI_UpdateCfgReqParamsType* pwdiPowerSaveCfg,
3925 WDI_SetPwrSaveCfgCb wdiSetPwrSaveCfgCb,
3926 void* pUserData
3927)
3928{
3929 WDI_EventInfoType wdiEventData;
3930 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3931
3932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003933 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003934 ------------------------------------------------------------------------*/
3935 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3936 {
3937 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3938 "WDI API call before module is initialized - Fail request");
3939
Jeff Johnsone7245742012-09-05 17:12:55 -07003940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003941 }
3942
3943 /*------------------------------------------------------------------------
3944 Fill in Event data and post to the Main FSM
3945 ------------------------------------------------------------------------*/
3946 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07003947 wdiEventData.pEventData = pwdiPowerSaveCfg;
3948 wdiEventData.uEventDataSize = sizeof(*pwdiPowerSaveCfg);
3949 wdiEventData.pCBfnc = wdiSetPwrSaveCfgCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07003950 wdiEventData.pUserData = pUserData;
3951
3952 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
3953
3954}/*WDI_SetPwrSaveCfgReq*/
3955
3956/**
Jeff Johnsone7245742012-09-05 17:12:55 -07003957 @brief WDI_EnterImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07003958 request the device to get into IMPS power state. Upon
3959 the call of this API the WLAN DAL will send a HAL Enter
3960 IMPS request message to the lower RIVA sub-system if DAL
3961 is in state STARTED.
3962
3963 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07003964 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07003965
Jeff Johnsone7245742012-09-05 17:12:55 -07003966
3967 @param wdiEnterImpsRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07003968 response of the Enter IMPS operation received from the
3969 device
Jeff Johnsone7245742012-09-05 17:12:55 -07003970
Jeff Johnson295189b2012-06-20 16:38:30 -07003971 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07003972 callback
3973
Jeff Johnson295189b2012-06-20 16:38:30 -07003974 @see WDI_Start
3975 @return Result of the function call
3976*/
Jeff Johnsone7245742012-09-05 17:12:55 -07003977WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07003978WDI_EnterImpsReq
3979(
Mihir Shetea4306052014-03-25 00:02:54 +05303980 WDI_EnterImpsReqParamsType *pwdiEnterImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07003981 WDI_EnterImpsRspCb wdiEnterImpsRspCb,
3982 void* pUserData
3983)
3984{
3985 WDI_EventInfoType wdiEventData;
3986 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
3987
3988 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07003989 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07003990 ------------------------------------------------------------------------*/
3991 if ( eWLAN_PAL_FALSE == gWDIInitialized )
3992 {
3993 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
3994 "WDI API call before module is initialized - Fail request");
3995
Jeff Johnsone7245742012-09-05 17:12:55 -07003996 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07003997 }
3998
3999 /*------------------------------------------------------------------------
4000 Fill in Event data and post to the Main FSM
4001 ------------------------------------------------------------------------*/
4002 wdiEventData.wdiRequest = WDI_ENTER_IMPS_REQ;
Mihir Shetea4306052014-03-25 00:02:54 +05304003 wdiEventData.pEventData = pwdiEnterImpsReqParams;
4004 wdiEventData.uEventDataSize = sizeof(*pwdiEnterImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004005 wdiEventData.pCBfnc = wdiEnterImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004006 wdiEventData.pUserData = pUserData;
4007
4008 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4009
4010}/*WDI_EnterImpsReq*/
4011
4012/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004013 @brief WDI_ExitImpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004014 request the device to get out of IMPS power state. Upon
4015 the call of this API the WLAN DAL will send a HAL Exit
4016 IMPS request message to the lower RIVA sub-system if DAL
4017 is in state STARTED.
4018
4019 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004020 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004021
Jeff Johnson295189b2012-06-20 16:38:30 -07004022
Jeff Johnsone7245742012-09-05 17:12:55 -07004023
4024 @param wdiExitImpsRspCb: callback for passing back the response
Jeff Johnson295189b2012-06-20 16:38:30 -07004025 of the Exit IMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004026
Jeff Johnson295189b2012-06-20 16:38:30 -07004027 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004028 callback
4029
Jeff Johnson295189b2012-06-20 16:38:30 -07004030 @see WDI_Start
4031 @return Result of the function call
4032*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004033WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004034WDI_ExitImpsReq
4035(
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05304036 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004037 WDI_ExitImpsRspCb wdiExitImpsRspCb,
4038 void* pUserData
4039)
4040{
4041 WDI_EventInfoType wdiEventData;
4042 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4043
4044 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004045 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004046 ------------------------------------------------------------------------*/
4047 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4048 {
4049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4050 "WDI API call before module is initialized - Fail request");
4051
Jeff Johnsone7245742012-09-05 17:12:55 -07004052 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004053 }
4054
4055 /*------------------------------------------------------------------------
4056 Fill in Event data and post to the Main FSM
4057 ------------------------------------------------------------------------*/
4058 wdiEventData.wdiRequest = WDI_EXIT_IMPS_REQ;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +05304059 wdiEventData.pEventData = pwdiExitImpsReqParams;
4060 wdiEventData.uEventDataSize = sizeof(*pwdiExitImpsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004061 wdiEventData.pCBfnc = wdiExitImpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004062 wdiEventData.pUserData = pUserData;
4063
4064 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4065
4066}/*WDI_ExitImpsReq*/
4067
4068/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004069 @brief WDI_EnterBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004070 request the device to get into BMPS power state. Upon
4071 the call of this API the WLAN DAL will pack and send a
4072 HAL Enter BMPS request message to the lower RIVA
4073 sub-system if DAL is in state STARTED.
4074
4075 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004076 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004077
4078 WDI_PostAssocReq must have been called.
4079
Jeff Johnsone7245742012-09-05 17:12:55 -07004080 @param pwdiEnterBmpsReqParams: the Enter BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004081 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004082
Jeff Johnson295189b2012-06-20 16:38:30 -07004083 wdiEnterBmpsRspCb: callback for passing back the
4084 response of the Enter BMPS operation received from the
4085 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004086
Jeff Johnson295189b2012-06-20 16:38:30 -07004087 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004088 callback
4089
Jeff Johnson295189b2012-06-20 16:38:30 -07004090 @see WDI_PostAssocReq
4091 @return Result of the function call
4092*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004093WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004094WDI_EnterBmpsReq
4095(
4096 WDI_EnterBmpsReqParamsType *pwdiEnterBmpsReqParams,
4097 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb,
4098 void* pUserData
4099)
4100{
4101 WDI_EventInfoType wdiEventData;
4102 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4103
4104 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004105 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004106 ------------------------------------------------------------------------*/
4107 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4108 {
4109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4110 "WDI API call before module is initialized - Fail request");
4111
Jeff Johnsone7245742012-09-05 17:12:55 -07004112 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004113 }
4114
4115 /*------------------------------------------------------------------------
4116 Fill in Event data and post to the Main FSM
4117 ------------------------------------------------------------------------*/
4118 wdiEventData.wdiRequest = WDI_ENTER_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004119 wdiEventData.pEventData = pwdiEnterBmpsReqParams;
4120 wdiEventData.uEventDataSize = sizeof(*pwdiEnterBmpsReqParams);
4121 wdiEventData.pCBfnc = wdiEnterBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004122 wdiEventData.pUserData = pUserData;
4123
4124 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4125
4126}/*WDI_EnterBmpsReq*/
4127
4128/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004129 @brief WDI_ExitBmpsReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004130 request the device to get out of BMPS power state. Upon
4131 the call of this API the WLAN DAL will pack and send a
4132 HAL Exit BMPS request message to the lower RIVA
4133 sub-system if DAL is in state STARTED.
4134
4135 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004136 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004137
4138 WDI_PostAssocReq must have been called.
4139
Jeff Johnsone7245742012-09-05 17:12:55 -07004140 @param pwdiExitBmpsReqParams: the Exit BMPS parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004141 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004142
Jeff Johnson295189b2012-06-20 16:38:30 -07004143 wdiExitBmpsRspCb: callback for passing back the response
4144 of the Exit BMPS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004145
Jeff Johnson295189b2012-06-20 16:38:30 -07004146 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004147 callback
4148
Jeff Johnson295189b2012-06-20 16:38:30 -07004149 @see WDI_PostAssocReq
4150 @return Result of the function call
4151*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004152WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004153WDI_ExitBmpsReq
4154(
4155 WDI_ExitBmpsReqParamsType *pwdiExitBmpsReqParams,
4156 WDI_ExitBmpsRspCb wdiExitBmpsRspCb,
4157 void* pUserData
4158)
4159{
4160 WDI_EventInfoType wdiEventData;
4161 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4162
4163 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004164 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004165 ------------------------------------------------------------------------*/
4166 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4167 {
4168 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4169 "WDI API call before module is initialized - Fail request");
4170
Jeff Johnsone7245742012-09-05 17:12:55 -07004171 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004172 }
4173
4174 /*------------------------------------------------------------------------
4175 Fill in Event data and post to the Main FSM
4176 ------------------------------------------------------------------------*/
4177 wdiEventData.wdiRequest = WDI_EXIT_BMPS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004178 wdiEventData.pEventData = pwdiExitBmpsReqParams;
4179 wdiEventData.uEventDataSize = sizeof(*pwdiExitBmpsReqParams);
4180 wdiEventData.pCBfnc = wdiExitBmpsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004181 wdiEventData.pUserData = pUserData;
4182
4183 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4184
4185}/*WDI_ExitBmpsReq*/
4186
4187/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004188 @brief WDI_EnterUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004189 request the device to get into UAPSD power state. Upon
4190 the call of this API the WLAN DAL will pack and send a
4191 HAL Enter UAPSD request message to the lower RIVA
4192 sub-system if DAL is in state STARTED.
4193
4194 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004195 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004196
4197 WDI_PostAssocReq must have been called.
4198 WDI_SetUapsdAcParamsReq must have been called.
Jeff Johnsone7245742012-09-05 17:12:55 -07004199
4200 @param pwdiEnterUapsdReqParams: the Enter UAPSD parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07004201 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004202
Jeff Johnson295189b2012-06-20 16:38:30 -07004203 wdiEnterUapsdRspCb: callback for passing back the
4204 response of the Enter UAPSD operation received from the
4205 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004206
Jeff Johnson295189b2012-06-20 16:38:30 -07004207 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004208 callback
4209
Jeff Johnson295189b2012-06-20 16:38:30 -07004210 @see WDI_PostAssocReq, WDI_SetUapsdAcParamsReq
4211 @return Result of the function call
4212*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004213WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004214WDI_EnterUapsdReq
4215(
4216 WDI_EnterUapsdReqParamsType *pwdiEnterUapsdReqParams,
4217 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb,
4218 void* pUserData
4219)
4220{
4221 WDI_EventInfoType wdiEventData;
4222 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4223
4224 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004225 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004226 ------------------------------------------------------------------------*/
4227 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4228 {
4229 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4230 "WDI API call before module is initialized - Fail request");
4231
Jeff Johnsone7245742012-09-05 17:12:55 -07004232 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004233 }
4234
4235 /*------------------------------------------------------------------------
4236 Fill in Event data and post to the Main FSM
4237 ------------------------------------------------------------------------*/
4238 wdiEventData.wdiRequest = WDI_ENTER_UAPSD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004239 wdiEventData.pEventData = pwdiEnterUapsdReqParams;
4240 wdiEventData.uEventDataSize = sizeof(*pwdiEnterUapsdReqParams);
4241 wdiEventData.pCBfnc = wdiEnterUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004242 wdiEventData.pUserData = pUserData;
4243
4244 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4245
4246}/*WDI_EnterUapsdReq*/
4247
4248/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004249 @brief WDI_ExitUapsdReq will be called when the upper MAC to
Jeff Johnson295189b2012-06-20 16:38:30 -07004250 request the device to get out of UAPSD power state. Upon
4251 the call of this API the WLAN DAL will send a HAL Exit
4252 UAPSD request message to the lower RIVA sub-system if
4253 DAL is in state STARTED.
4254
4255 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004256 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004257
4258 WDI_PostAssocReq must have been called.
4259
Jeff Johnsone7245742012-09-05 17:12:55 -07004260 @param wdiExitUapsdRspCb: callback for passing back the
Jeff Johnson295189b2012-06-20 16:38:30 -07004261 response of the Exit UAPSD operation received from the
4262 device
Jeff Johnsone7245742012-09-05 17:12:55 -07004263
Jeff Johnson295189b2012-06-20 16:38:30 -07004264 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004265 callback
4266
Jeff Johnson295189b2012-06-20 16:38:30 -07004267 @see WDI_PostAssocReq
4268 @return Result of the function call
4269*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004270WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004271WDI_ExitUapsdReq
4272(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004273 WDI_ExitUapsdReqParamsType *pwdiExitUapsdReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07004274 WDI_ExitUapsdRspCb wdiExitUapsdRspCb,
4275 void* pUserData
4276)
4277{
4278 WDI_EventInfoType wdiEventData;
4279 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4280
4281 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004282 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004283 ------------------------------------------------------------------------*/
4284 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4285 {
4286 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4287 "WDI API call before module is initialized - Fail request");
4288
Jeff Johnsone7245742012-09-05 17:12:55 -07004289 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004290 }
4291
4292 /*------------------------------------------------------------------------
4293 Fill in Event data and post to the Main FSM
4294 ------------------------------------------------------------------------*/
4295 wdiEventData.wdiRequest = WDI_EXIT_UAPSD_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07004296 wdiEventData.pEventData = pwdiExitUapsdReqParams;
4297 wdiEventData.uEventDataSize = sizeof(*pwdiExitUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004298 wdiEventData.pCBfnc = wdiExitUapsdRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004299 wdiEventData.pUserData = pUserData;
4300
4301 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4302
4303}/*WDI_ExitUapsdReq*/
4304
4305/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004306 @brief WDI_UpdateUapsdParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004307 MAC wants to set the UAPSD related configurations
4308 of an associated STA (while acting as an AP) to the WLAN
4309 Device. Upon the call of this API the WLAN DAL will pack
4310 and send a HAL Update UAPSD params request message to
4311 the lower RIVA sub-system if DAL is in state STARTED.
4312
4313 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004314 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004315
4316 WDI_ConfigBSSReq must have been called.
4317
Jeff Johnsone7245742012-09-05 17:12:55 -07004318 @param pwdiUpdateUapsdReqParams: the UAPSD parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07004319 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004320
Jeff Johnson295189b2012-06-20 16:38:30 -07004321 wdiUpdateUapsdParamsCb: callback for passing back the
4322 response of the update UAPSD params operation received
4323 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004324
Jeff Johnson295189b2012-06-20 16:38:30 -07004325 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004326 callback
4327
Jeff Johnson295189b2012-06-20 16:38:30 -07004328 @see WDI_ConfigBSSReq
4329 @return Result of the function call
4330*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004331WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004332WDI_UpdateUapsdParamsReq
4333(
4334 WDI_UpdateUapsdReqParamsType *pwdiUpdateUapsdReqParams,
4335 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb,
4336 void* pUserData
4337)
4338{
4339 WDI_EventInfoType wdiEventData;
4340 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4341
4342 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004343 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004344 ------------------------------------------------------------------------*/
4345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4346 {
4347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4348 "WDI API call before module is initialized - Fail request");
4349
Jeff Johnsone7245742012-09-05 17:12:55 -07004350 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004351 }
4352
4353 /*------------------------------------------------------------------------
4354 Fill in Event data and post to the Main FSM
4355 ------------------------------------------------------------------------*/
4356 wdiEventData.wdiRequest = WDI_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004357 wdiEventData.pEventData = pwdiUpdateUapsdReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004358 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateUapsdReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004359 wdiEventData.pCBfnc = wdiUpdateUapsdParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004360 wdiEventData.pUserData = pUserData;
4361
4362 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4363
4364}/*WDI_UpdateUapsdParamsReq*/
4365
4366/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004367 @brief WDI_SetUapsdAcParamsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004368 MAC wants to set the UAPSD related configurations before
4369 requesting for enter UAPSD power state to the WLAN
4370 Device. Upon the call of this API the WLAN DAL will pack
4371 and send a HAL Set UAPSD params request message to
4372 the lower RIVA sub-system if DAL is in state STARTED.
4373
4374 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004375 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004376
4377 WDI_PostAssocReq must have been called.
4378
4379 @param pwdiUapsdInfo: the UAPSD parameters as specified by
4380 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004381
Jeff Johnson295189b2012-06-20 16:38:30 -07004382 wdiSetUapsdAcParamsCb: callback for passing back the
4383 response of the set UAPSD params operation received from
4384 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004385
Jeff Johnson295189b2012-06-20 16:38:30 -07004386 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004387 callback
4388
Jeff Johnson295189b2012-06-20 16:38:30 -07004389 @see WDI_PostAssocReq
4390 @return Result of the function call
4391*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004392WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004393WDI_SetUapsdAcParamsReq
4394(
4395 WDI_SetUapsdAcParamsReqParamsType* pwdiUapsdInfo,
4396 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb,
4397 void* pUserData
4398)
4399{
4400 WDI_EventInfoType wdiEventData;
4401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4402
4403 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004404 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004405 ------------------------------------------------------------------------*/
4406 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4407 {
4408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4409 "WDI API call before module is initialized - Fail request");
4410
Jeff Johnsone7245742012-09-05 17:12:55 -07004411 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004412 }
4413
4414 /*------------------------------------------------------------------------
4415 Fill in Event data and post to the Main FSM
4416 ------------------------------------------------------------------------*/
4417 wdiEventData.wdiRequest = WDI_SET_UAPSD_PARAM_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004418 wdiEventData.pEventData = pwdiUapsdInfo;
4419 wdiEventData.uEventDataSize = sizeof(*pwdiUapsdInfo);
4420 wdiEventData.pCBfnc = wdiSetUapsdAcParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004421 wdiEventData.pUserData = pUserData;
4422
4423 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4424
4425}/*WDI_SetUapsdAcParamsReq*/
4426
4427/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304428 @brief WDI_FWLoggingDXEdoneInd
4429
4430 FW Logging DXE done Indication from the upper layer will be sent
4431 down to HAL
4432
4433 @param WDI_FWLoggingDXEdoneIndInfoType
4434
4435 @see
4436
4437 @return Status of the request
4438*/
4439WDI_Status
4440WDI_FWLoggingDXEdoneInd
4441(
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304442 wpt_uint32 data
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304443)
4444{
4445
4446 WDI_EventInfoType wdiEventData;
4447 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4448
4449 /*------------------------------------------------------------------------
4450 Sanity Check
4451 ------------------------------------------------------------------------*/
4452 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4453 {
4454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4455 "WDI API call before module is initialized - Fail request");
4456
4457 return WDI_STATUS_E_NOT_ALLOWED;
4458 }
4459
4460 /*------------------------------------------------------------------------
4461 Fill in Event data and post to the Main FSM
4462 ------------------------------------------------------------------------*/
4463 wdiEventData.wdiRequest = WDI_FW_LOGGING_DXE_DONE_IND;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +05304464 wdiEventData.pEventData = (void *)&data;
4465 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304466 wdiEventData.pCBfnc = NULL;
4467 wdiEventData.pUserData = NULL;
4468
4469 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4470
4471}/*WDI_FWLoggingDXEdoneInd*/
4472
4473/**
Siddharth Bhal64246172015-02-27 01:04:37 +05304474 @brief WDI_GetFrameLogReq will be called when the upper
4475 MAC wants to initialize frame logging. Upon the call of
4476 this API the WLAN DAL will pack and send a HAL
4477 Frame logging init request message to
4478 the lower RIVA sub-system.
4479
4480 In state BUSY this request will be queued. Request won't
4481 be allowed in any other state.
4482
4483
4484 @param pwdiGetFrameLogReqInfo: the Frame Logging params
4485 as specified by the Device Interface
4486
4487 wdiGetFrameLogRspCb: callback for passing back the
4488 response of the frame logging init operation received
4489 from the device
4490
4491 pUserData: user data will be passed back with the
4492 callback
4493
4494 @return Result of the function call
4495*/
4496WDI_Status
4497WDI_GetFrameLogReq
4498(
4499 WDI_GetFrameLogReqInfoType *pwdiGetFrameLogReqInfo,
4500 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb,
4501 void* pUserData
4502)
4503{
4504 WDI_EventInfoType wdiEventData;
4505 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4506
4507 /*------------------------------------------------------------------------
4508 Sanity Check
4509 ------------------------------------------------------------------------*/
4510 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4511 {
4512 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4513 "WDI API call before module is initialized - Fail request");
4514
4515 return WDI_STATUS_E_NOT_ALLOWED;
4516 }
4517
4518 /*------------------------------------------------------------------------
4519 Fill in Event data and post to the Main FSM
4520 ------------------------------------------------------------------------*/
4521 wdiEventData.wdiRequest = WDI_GET_FRAME_LOG_REQ;
4522 wdiEventData.pEventData = pwdiGetFrameLogReqInfo;
4523 wdiEventData.uEventDataSize = sizeof(*pwdiGetFrameLogReqInfo);
4524 wdiEventData.pCBfnc = wdiGetFrameLogRspCb;
4525 wdiEventData.pUserData = pUserData;
4526
4527 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4528}
Sachin Ahuja715aafc2015-07-21 23:35:10 +05304529
4530
4531/**
4532 @brief WDI_FatalEventLogsReq will be called when the upper
4533 MAC wants to send the flush command. Upon the call of
4534 this API the WLAN DAL will pack and send a HAL
4535 Fatal Event Req message to the lower RIVA sub-system.
4536
4537 In state BUSY this request will be queued. Request won't
4538 be allowed in any other state.
4539
4540
4541 @param pwdiFlushLogsReqInfo: the Flush Logs params
4542 as specified by the Device Interface
4543
4544 wdiFlushLogsRspCb: callback for passing back the
4545 response of the Flush Logs operation received
4546 from the device
4547
4548 pUserData: user data will be passed back with the
4549 callback
4550
4551 @return Result of the function call
4552*/
4553
4554WDI_Status
4555WDI_FatalEventLogsReq
4556(
4557 WDI_FatalEventLogsReqInfoType *pwdiFatalEventLogsReqInfo,
4558 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb,
4559 void* pUserData
4560)
4561{
4562 WDI_EventInfoType wdiEventData;
4563
4564 /*------------------------------------------------------------------------
4565 Sanity Check
4566 ------------------------------------------------------------------------*/
4567 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4568 {
4569 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4570 "WDI API call before module is initialized - Fail request");
4571
4572 return WDI_STATUS_E_NOT_ALLOWED;
4573 }
4574
4575 /*------------------------------------------------------------------------
4576 Fill in Event data and post to the Main FSM
4577 ------------------------------------------------------------------------*/
4578 wdiEventData.wdiRequest = WDI_FATAL_EVENT_LOGGING_REQ;
4579 wdiEventData.pEventData = pwdiFatalEventLogsReqInfo;
4580 wdiEventData.uEventDataSize = sizeof(*pwdiFatalEventLogsReqInfo);
4581 wdiEventData.pCBfnc = wdiFatalEventLogsRspCb;
4582 wdiEventData.pUserData = pUserData;
4583
4584 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4585
4586}
4587
4588
Siddharth Bhal64246172015-02-27 01:04:37 +05304589/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304590 @brief WDI_FWLoggingInitReq will be called when the upper
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304591 MAC wants to initialize frame logging. Upon the call of
4592 this API the WLAN DAL will pack and send a HAL
4593 Frame logging init request message to
4594 the lower RIVA sub-system.
4595
4596 In state BUSY this request will be queued. Request won't
4597 be allowed in any other state.
4598
4599
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304600 @param pwdiFWLoggingInitReqParams: the Frame Logging params
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304601 as specified by the Device Interface
4602
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304603 wdiFWLoggingInitReqCb: callback for passing back the
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304604 response of the frame logging init operation received
4605 from the device
4606
4607 pUserData: user data will be passed back with the
4608 callback
4609
4610 @return Result of the function call
4611*/
4612WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304613WDI_FWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304614(
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304615 WDI_FWLoggingInitReqInfoType *pwdiFWLoggingInitReqInfo,
4616 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb,
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304617 void* pUserData
4618)
4619{
4620 WDI_EventInfoType wdiEventData;
4621
4622 /*------------------------------------------------------------------------
4623 Sanity Check
4624 ------------------------------------------------------------------------*/
4625 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4626 {
4627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4628 "WDI API call before module is initialized - Fail request");
4629
4630 return WDI_STATUS_E_NOT_ALLOWED;
4631 }
4632
4633 /*------------------------------------------------------------------------
4634 Fill in Event data and post to the Main FSM
4635 ------------------------------------------------------------------------*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +05304636 wdiEventData.wdiRequest = WDI_FW_LOGGING_INIT_REQ;
4637 wdiEventData.pEventData = pwdiFWLoggingInitReqInfo;
4638 wdiEventData.uEventDataSize = sizeof(*pwdiFWLoggingInitReqInfo);
4639 wdiEventData.pCBfnc = wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304640 wdiEventData.pUserData = pUserData;
4641
4642 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4643}
4644
c_manjeecfd1efb2015-09-25 19:32:34 +05304645
4646/**
4647 @brief WDI_FwrMemDumpReq will be called when the upper
4648 MAC wants to get fwr mem dump. Upon the call of
4649 this API the WLAN DAL will pack and send a HAL
4650 Frame logging init request message to
4651 the lower RIVA sub-system.
4652
4653 In state BUSY this request will be queued. Request won't
4654 be allowed in any other state.
4655
4656
4657 @param pWdiFwrMemDumpReq: the fwr mem dump req params
4658 as specified by the Device Interface
4659
4660 wdiFWLoggingInitReqCb: callback for passing back the
4661 response of the frame logging init operation received
4662 from the device
4663
4664 pUserData: user data will be passed back with the
4665 callback
4666
4667 @return Result of the function call
4668*/
4669
4670WDI_Status
4671WDI_FwrMemDumpReq
4672
4673(
4674 WDI_FwrMemDumpReqType *pwdiFwrMemDumpReqInfo,
4675 WDI_FwrMemDumpCb wdiFwrMemDumpRspCb,
4676 void* pUserData
4677)
4678{
4679 WDI_EventInfoType wdiEventData;
4680
4681 /*------------------------------------------------------------------------
4682 Sanity Check
4683 ------------------------------------------------------------------------*/
4684 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4685 {
4686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4687 "WDI API call before module is initialized - Fail request");
4688
4689 return WDI_STATUS_E_NOT_ALLOWED;
4690 }
4691
4692 /*------------------------------------------------------------------------
4693 Fill in Event data and post to the Main FSM
4694 ------------------------------------------------------------------------*/
4695 wdiEventData.wdiRequest = WDI_FWR_MEM_DUMP_REQ;
4696 wdiEventData.pEventData = pwdiFwrMemDumpReqInfo;
4697 wdiEventData.uEventDataSize = sizeof(WDI_FwrMemDumpReqType);
4698 wdiEventData.pCBfnc = wdiFwrMemDumpRspCb;
4699 wdiEventData.pUserData = pUserData;
4700
4701 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4702}
4703
4704
4705
Siddharth Bhalb7c421c2015-02-27 00:26:09 +05304706/**
Gupta, Kapil7c34b322015-09-30 13:12:35 +05304707 @brief WDI_StartRssiMonitorReq will be called when the upper
4708 MAC wants to initialize Rssi Monitor on a bssid.
4709 Upon the call of this API the WLAN DAL will pack and
4710 send a HAL Rssi Monitor init request message to
4711 the lower RIVA sub-system.
4712
4713 In state BUSY this request will be queued. Request won't
4714 be allowed in any other state.
4715
4716
4717 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4718 as specified by the Device Interface
4719
4720 wdiRssiMonitorStartRspCb: callback for passing back the
4721 response of the rssi monitor operation received
4722 from the device
4723
4724 pUserData: user data will be passed back with the
4725 callback
4726
4727 @return Result of the function call
4728*/
4729WDI_Status
4730WDI_StartRssiMonitorReq
4731(
4732 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4733 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb,
4734 void* pUserData
4735)
4736{
4737 WDI_EventInfoType wdiEventData;
4738
4739 /*------------------------------------------------------------------------
4740 Sanity Check
4741 ------------------------------------------------------------------------*/
4742 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4743 {
4744 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4745 "WDI API call before module is initialized - Fail request");
4746
4747 return WDI_STATUS_E_NOT_ALLOWED;
4748 }
4749
4750 /*------------------------------------------------------------------------
4751 Fill in Event data and post to the Main FSM
4752 ------------------------------------------------------------------------*/
4753 wdiEventData.wdiRequest = WDI_START_RSSI_MONITOR_REQ;
4754 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4755 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4756 wdiEventData.pCBfnc = wdiRssiMonitorStartRspCb;
4757 wdiEventData.pUserData = pUserData;
4758
4759 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4760}
4761
4762/**
4763 @brief WDI_StopRssiMonitorReq will be called when the upper
4764 MAC wants to stop Rssi Monitor on a bssid.
4765 Upon the call of this API the WLAN DAL will pack and
4766 send a HAL Rssi Monitor stop request message to
4767 the lower RIVA sub-system.
4768
4769 In state BUSY this request will be queued. Request won't
4770 be allowed in any other state.
4771
4772
4773 @param pwdiRssiMonitorInfo: the Rssi Monitor params
4774 as specified by the Device Interface
4775
4776 wdiRssiMonitorStopRspCb: callback for passing back the
4777 response of the rssi monitor operation received
4778 from the device
4779
4780 pUserData: user data will be passed back with the
4781 callback
4782
4783 @return Result of the function call
4784*/
4785WDI_Status
4786WDI_StopRssiMonitorReq
4787(
4788 WDI_RssiMonitorReqInfoType *pwdiRssiMonitorInfo,
4789 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb,
4790 void* pUserData
4791)
4792{
4793 WDI_EventInfoType wdiEventData;
4794
4795 /*------------------------------------------------------------------------
4796 Sanity Check
4797 ------------------------------------------------------------------------*/
4798 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4799 {
4800 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4801 "WDI API call before module is initialized - Fail request");
4802
4803 return WDI_STATUS_E_NOT_ALLOWED;
4804 }
4805
4806 /*------------------------------------------------------------------------
4807 Fill in Event data and post to the Main FSM
4808 ------------------------------------------------------------------------*/
4809 wdiEventData.wdiRequest = WDI_STOP_RSSI_MONITOR_REQ;
4810 wdiEventData.pEventData = pwdiRssiMonitorInfo;
4811 wdiEventData.uEventDataSize = sizeof(*pwdiRssiMonitorInfo);
4812 wdiEventData.pCBfnc = wdiRssiMonitorStopRspCb;
4813 wdiEventData.pUserData = pUserData;
4814
4815 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4816}
4817
4818
4819/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004820 @brief WDI_ConfigureRxpFilterReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004821 MAC wants to set/reset the RXP filters for received pkts
4822 (MC, BC etc.). Upon the call of this API the WLAN DAL will pack
4823 and send a HAL configure RXP filter request message to
4824 the lower RIVA sub-system.
4825
4826 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004827 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004828
Jeff Johnsone7245742012-09-05 17:12:55 -07004829
4830 @param pwdiConfigureRxpFilterReqParams: the RXP
Jeff Johnson295189b2012-06-20 16:38:30 -07004831 filter as specified by the Device
4832 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004833
Jeff Johnson295189b2012-06-20 16:38:30 -07004834 wdiConfigureRxpFilterCb: callback for passing back the
4835 response of the configure RXP filter operation received
4836 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004837
Jeff Johnson295189b2012-06-20 16:38:30 -07004838 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004839 callback
4840
Jeff Johnson295189b2012-06-20 16:38:30 -07004841 @return Result of the function call
4842*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004843WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004844WDI_ConfigureRxpFilterReq
4845(
4846 WDI_ConfigureRxpFilterReqParamsType *pwdiConfigureRxpFilterReqParams,
4847 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb,
4848 void* pUserData
4849)
4850{
4851 WDI_EventInfoType wdiEventData;
4852 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4853
4854 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004855 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004856 ------------------------------------------------------------------------*/
4857 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4858 {
4859 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4860 "WDI API call before module is initialized - Fail request");
4861
Jeff Johnsone7245742012-09-05 17:12:55 -07004862 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004863 }
4864
4865 /*------------------------------------------------------------------------
4866 Fill in Event data and post to the Main FSM
4867 ------------------------------------------------------------------------*/
4868 wdiEventData.wdiRequest = WDI_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004869 wdiEventData.pEventData = pwdiConfigureRxpFilterReqParams;
4870 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureRxpFilterReqParams);
4871 wdiEventData.pCBfnc = wdiConfigureRxpFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004872 wdiEventData.pUserData = pUserData;
4873
4874 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4875}/*WDI_ConfigureRxpFilterReq*/
4876
4877/**
4878 @brief WDI_SetBeaconFilterReq will be called when the upper MAC
4879 wants to set the beacon filters while in power save.
4880 Upon the call of this API the WLAN DAL will pack and
4881 send a Beacon filter request message to the
4882 lower RIVA sub-system.
4883
4884 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004885 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004886
Jeff Johnsone7245742012-09-05 17:12:55 -07004887
4888 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004889 filter as specified by the Device
4890 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004891
Jeff Johnson295189b2012-06-20 16:38:30 -07004892 wdiBeaconFilterCb: callback for passing back the
4893 response of the set beacon filter operation received
4894 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004895
Jeff Johnson295189b2012-06-20 16:38:30 -07004896 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004897 callback
4898
Jeff Johnson295189b2012-06-20 16:38:30 -07004899 @return Result of the function call
4900*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004901WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004902WDI_SetBeaconFilterReq
4903(
4904 WDI_BeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4905 WDI_SetBeaconFilterCb wdiBeaconFilterCb,
4906 void* pUserData
4907)
4908{
4909 WDI_EventInfoType wdiEventData;
4910 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4911
4912 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004913 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004914 ------------------------------------------------------------------------*/
4915 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4916 {
4917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4918 "WDI API call before module is initialized - Fail request");
4919
Jeff Johnsone7245742012-09-05 17:12:55 -07004920 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004921 }
4922
4923 /*------------------------------------------------------------------------
4924 Fill in Event data and post to the Main FSM
4925 ------------------------------------------------------------------------*/
4926 wdiEventData.wdiRequest = WDI_SET_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004927 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004928 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004929 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004930 wdiEventData.pUserData = pUserData;
4931
4932 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4933}/*WDI_SetBeaconFilterReq*/
4934
4935/**
4936 @brief WDI_RemBeaconFilterReq will be called when the upper MAC
4937 wants to remove the beacon filter for particular IE
4938 while in power save. Upon the call of this API the WLAN
4939 DAL will pack and send a remove Beacon filter request
4940 message to the lower RIVA sub-system.
4941
4942 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07004943 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07004944
Jeff Johnsone7245742012-09-05 17:12:55 -07004945
4946 @param pwdiBeaconFilterReqParams: the beacon
Jeff Johnson295189b2012-06-20 16:38:30 -07004947 filter as specified by the Device
4948 Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07004949
Jeff Johnson295189b2012-06-20 16:38:30 -07004950 wdiBeaconFilterCb: callback for passing back the
4951 response of the remove beacon filter operation received
4952 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07004953
Jeff Johnson295189b2012-06-20 16:38:30 -07004954 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07004955 callback
4956
Jeff Johnson295189b2012-06-20 16:38:30 -07004957 @return Result of the function call
4958*/
Jeff Johnsone7245742012-09-05 17:12:55 -07004959WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07004960WDI_RemBeaconFilterReq
4961(
4962 WDI_RemBeaconFilterReqParamsType *pwdiBeaconFilterReqParams,
4963 WDI_RemBeaconFilterCb wdiBeaconFilterCb,
4964 void* pUserData
4965)
4966{
4967 WDI_EventInfoType wdiEventData;
4968 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
4969
4970 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07004971 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07004972 ------------------------------------------------------------------------*/
4973 if ( eWLAN_PAL_FALSE == gWDIInitialized )
4974 {
4975 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
4976 "WDI API call before module is initialized - Fail request");
4977
Jeff Johnsone7245742012-09-05 17:12:55 -07004978 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07004979 }
4980
4981 /*------------------------------------------------------------------------
4982 Fill in Event data and post to the Main FSM
4983 ------------------------------------------------------------------------*/
4984 wdiEventData.wdiRequest = WDI_REM_BEACON_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07004985 wdiEventData.pEventData = pwdiBeaconFilterReqParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07004986 wdiEventData.uEventDataSize = sizeof(*pwdiBeaconFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07004987 wdiEventData.pCBfnc = wdiBeaconFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07004988 wdiEventData.pUserData = pUserData;
4989
4990 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
4991}/*WDI_RemBeaconFilterReq*/
4992
4993/**
Jeff Johnsone7245742012-09-05 17:12:55 -07004994 @brief WDI_SetRSSIThresholdsReq will be called when the upper
Jeff Johnson295189b2012-06-20 16:38:30 -07004995 MAC wants to set the RSSI thresholds related
4996 configurations while in power save. Upon the call of
4997 this API the WLAN DAL will pack and send a HAL Set RSSI
4998 thresholds request message to the lower RIVA
4999 sub-system if DAL is in state STARTED.
5000
5001 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005002 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005003
5004 WDI_PostAssocReq must have been called.
5005
5006 @param pwdiUapsdInfo: the UAPSD parameters as specified by
5007 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005008
Jeff Johnson295189b2012-06-20 16:38:30 -07005009 wdiSetUapsdAcParamsCb: callback for passing back the
5010 response of the set UAPSD params operation received from
5011 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005012
Jeff Johnson295189b2012-06-20 16:38:30 -07005013 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005014 callback
5015
Jeff Johnson295189b2012-06-20 16:38:30 -07005016 @see WDI_PostAssocReq
5017 @return Result of the function call
5018*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005019WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005020WDI_SetRSSIThresholdsReq
5021(
5022 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams,
5023 WDI_SetRSSIThresholdsCb wdiSetRSSIThresholdsCb,
5024 void* pUserData
5025)
5026{
5027 WDI_EventInfoType wdiEventData;
5028 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5029
5030 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005031 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005032 ------------------------------------------------------------------------*/
5033 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5034 {
5035 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5036 "WDI API call before module is initialized - Fail request");
5037
Jeff Johnsone7245742012-09-05 17:12:55 -07005038 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005039 }
5040
5041 /*------------------------------------------------------------------------
5042 Fill in Event data and post to the Main FSM
5043 ------------------------------------------------------------------------*/
5044 wdiEventData.wdiRequest = WDI_SET_RSSI_THRESHOLDS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005045 wdiEventData.pEventData = pwdiRSSIThresholdsParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005046 wdiEventData.uEventDataSize = sizeof(*pwdiRSSIThresholdsParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005047 wdiEventData.pCBfnc = wdiSetRSSIThresholdsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005048 wdiEventData.pUserData = pUserData;
5049
5050 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5051}/* WDI_SetRSSIThresholdsReq*/
5052
5053/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005054 @brief WDI_HostOffloadReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005055 wants to set the filter to minimize unnecessary host
5056 wakeup due to broadcast traffic while in power save.
5057 Upon the call of this API the WLAN DAL will pack and
5058 send a HAL host offload request message to the
5059 lower RIVA sub-system if DAL is in state STARTED.
5060
5061 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005062 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005063
5064 WDI_PostAssocReq must have been called.
5065
Jeff Johnsone7245742012-09-05 17:12:55 -07005066 @param pwdiHostOffloadParams: the host offload as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005067 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005068
Jeff Johnson295189b2012-06-20 16:38:30 -07005069 wdiHostOffloadCb: callback for passing back the response
5070 of the host offload operation received from the
5071 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005072
Jeff Johnson295189b2012-06-20 16:38:30 -07005073 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005074 callback
5075
Jeff Johnson295189b2012-06-20 16:38:30 -07005076 @see WDI_PostAssocReq
5077 @return Result of the function call
5078*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005079WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005080WDI_HostOffloadReq
5081(
5082 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams,
5083 WDI_HostOffloadCb wdiHostOffloadCb,
5084 void* pUserData
5085)
5086{
5087 WDI_EventInfoType wdiEventData;
5088 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5089
5090 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005091 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005092 ------------------------------------------------------------------------*/
5093 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5094 {
5095 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5096 "WDI API call before module is initialized - Fail request");
5097
Jeff Johnsone7245742012-09-05 17:12:55 -07005098 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005099 }
5100
5101 /*------------------------------------------------------------------------
5102 Fill in Event data and post to the Main FSM
5103 ------------------------------------------------------------------------*/
5104 wdiEventData.wdiRequest = WDI_HOST_OFFLOAD_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005105 wdiEventData.pEventData = pwdiHostOffloadParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005106 wdiEventData.uEventDataSize = sizeof(*pwdiHostOffloadParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005107 wdiEventData.pCBfnc = wdiHostOffloadCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005108 wdiEventData.pUserData = pUserData;
5109
5110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5111}/*WDI_HostOffloadReq*/
5112
5113/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005114 @brief WDI_KeepAliveReq will be called when the upper MAC
5115 wants to set the filter to send NULL or unsolicited ARP responses
Jeff Johnson295189b2012-06-20 16:38:30 -07005116 and minimize unnecessary host wakeups due to while in power save.
5117 Upon the call of this API the WLAN DAL will pack and
5118 send a HAL Keep Alive request message to the
5119 lower RIVA sub-system if DAL is in state STARTED.
5120
5121 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005122 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005123
5124 WDI_PostAssocReq must have been called.
5125
Jeff Johnsone7245742012-09-05 17:12:55 -07005126 @param pwdiKeepAliveParams: the Keep Alive as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07005127 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005128
Jeff Johnson295189b2012-06-20 16:38:30 -07005129 wdiKeepAliveCb: callback for passing back the response
5130 of the Keep Alive operation received from the
5131 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005132
Jeff Johnson295189b2012-06-20 16:38:30 -07005133 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005134 callback
5135
Jeff Johnson295189b2012-06-20 16:38:30 -07005136 @see WDI_PostAssocReq
5137 @return Result of the function call
5138*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005139WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005140WDI_KeepAliveReq
5141(
5142 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams,
5143 WDI_KeepAliveCb wdiKeepAliveCb,
5144 void* pUserData
5145)
5146{
5147 WDI_EventInfoType wdiEventData;
5148 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5149
5150 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005151 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005152 ------------------------------------------------------------------------*/
5153 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5154 {
5155 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5156 "WDI_KeepAliveReq: WDI API call before module "
5157 "is initialized - Fail request");
5158
Jeff Johnsone7245742012-09-05 17:12:55 -07005159 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005160 }
5161
5162 /*------------------------------------------------------------------------
5163 Fill in Event data and post to the Main FSM
5164 ------------------------------------------------------------------------*/
5165 wdiEventData.wdiRequest = WDI_KEEP_ALIVE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005166 wdiEventData.pEventData = pwdiKeepAliveParams;
5167 wdiEventData.uEventDataSize = sizeof(*pwdiKeepAliveParams);
5168 wdiEventData.pCBfnc = wdiKeepAliveCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005169 wdiEventData.pUserData = pUserData;
5170
5171 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5172}/*WDI_KeepAliveReq*/
5173
5174/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005175 @brief WDI_WowlAddBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005176 wants to set the Wowl Bcast ptrn to minimize unnecessary
5177 host wakeup due to broadcast traffic while in power
5178 save. Upon the call of this API the WLAN DAL will pack
5179 and send a HAL Wowl Bcast ptrn request message to the
5180 lower RIVA sub-system if DAL is in state STARTED.
5181
5182 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005183 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005184
5185 WDI_PostAssocReq must have been called.
5186
Jeff Johnsone7245742012-09-05 17:12:55 -07005187 @param pwdiWowlAddBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005188 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005189
Jeff Johnson295189b2012-06-20 16:38:30 -07005190 wdiWowlAddBcPtrnCb: callback for passing back the
5191 response of the add Wowl bcast ptrn operation received
5192 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005193
Jeff Johnson295189b2012-06-20 16:38:30 -07005194 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005195 callback
5196
Jeff Johnson295189b2012-06-20 16:38:30 -07005197 @see WDI_PostAssocReq
5198 @return Result of the function call
5199*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005200WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005201WDI_WowlAddBcPtrnReq
5202(
5203 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams,
5204 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb,
5205 void* pUserData
5206)
5207{
5208 WDI_EventInfoType wdiEventData;
5209 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5210
5211 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005212 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005213 ------------------------------------------------------------------------*/
5214 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5215 {
5216 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5217 "WDI API call before module is initialized - Fail request");
5218
Jeff Johnsone7245742012-09-05 17:12:55 -07005219 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005220 }
5221
5222 /*------------------------------------------------------------------------
5223 Fill in Event data and post to the Main FSM
5224 ------------------------------------------------------------------------*/
5225 wdiEventData.wdiRequest = WDI_WOWL_ADD_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005226 wdiEventData.pEventData = pwdiWowlAddBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005227 wdiEventData.uEventDataSize = sizeof(*pwdiWowlAddBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005228 wdiEventData.pCBfnc = wdiWowlAddBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005229 wdiEventData.pUserData = pUserData;
5230
5231 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5232}/*WDI_WowlAddBcPtrnReq*/
5233
5234/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005235 @brief WDI_WowlDelBcPtrnReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005236 wants to clear the Wowl Bcast ptrn. Upon the call of
5237 this API the WLAN DAL will pack and send a HAL delete
5238 Wowl Bcast ptrn request message to the lower RIVA
5239 sub-system if DAL is in state STARTED.
5240
5241 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005242 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005243
5244 WDI_WowlAddBcPtrnReq must have been called.
5245
Jeff Johnsone7245742012-09-05 17:12:55 -07005246 @param pwdiWowlDelBcPtrnParams: the Wowl bcast ptrn as
Jeff Johnson295189b2012-06-20 16:38:30 -07005247 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005248
Jeff Johnson295189b2012-06-20 16:38:30 -07005249 wdiWowlDelBcPtrnCb: callback for passing back the
5250 response of the del Wowl bcast ptrn operation received
5251 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005252
Jeff Johnson295189b2012-06-20 16:38:30 -07005253 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005254 callback
5255
Jeff Johnson295189b2012-06-20 16:38:30 -07005256 @see WDI_WowlAddBcPtrnReq
5257 @return Result of the function call
5258*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005259WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005260WDI_WowlDelBcPtrnReq
5261(
5262 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams,
5263 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb,
5264 void* pUserData
5265)
5266{
5267 WDI_EventInfoType wdiEventData;
5268 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5269
5270 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005271 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005272 ------------------------------------------------------------------------*/
5273 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5274 {
5275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5276 "WDI API call before module is initialized - Fail request");
5277
Jeff Johnsone7245742012-09-05 17:12:55 -07005278 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005279 }
5280
5281 /*------------------------------------------------------------------------
5282 Fill in Event data and post to the Main FSM
5283 ------------------------------------------------------------------------*/
5284 wdiEventData.wdiRequest = WDI_WOWL_DEL_BC_PTRN_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005285 wdiEventData.pEventData = pwdiWowlDelBcPtrnParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005286 wdiEventData.uEventDataSize = sizeof(*pwdiWowlDelBcPtrnParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005287 wdiEventData.pCBfnc = wdiWowlDelBcPtrnCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005288 wdiEventData.pUserData = pUserData;
5289
5290 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5291}/*WDI_WowlDelBcPtrnReq*/
5292
5293/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005294 @brief WDI_WowlEnterReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005295 wants to enter the Wowl state to minimize unnecessary
5296 host wakeup while in power save. Upon the call of this
5297 API the WLAN DAL will pack and send a HAL Wowl enter
5298 request message to the lower RIVA sub-system if DAL is
5299 in state STARTED.
5300
5301 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005302 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005303
5304 WDI_PostAssocReq must have been called.
5305
Jeff Johnsone7245742012-09-05 17:12:55 -07005306 @param pwdiWowlEnterReqParams: the Wowl enter info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005307 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005308
Jeff Johnson295189b2012-06-20 16:38:30 -07005309 wdiWowlEnterReqCb: callback for passing back the
5310 response of the enter Wowl operation received from the
5311 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005312
Jeff Johnson295189b2012-06-20 16:38:30 -07005313 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005314 callback
5315
Jeff Johnson295189b2012-06-20 16:38:30 -07005316 @see WDI_PostAssocReq
5317 @return Result of the function call
5318*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005319WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005320WDI_WowlEnterReq
5321(
5322 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams,
5323 WDI_WowlEnterReqCb wdiWowlEnterCb,
5324 void* pUserData
5325)
5326{
5327 WDI_EventInfoType wdiEventData;
5328 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5329
5330 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005331 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005332 ------------------------------------------------------------------------*/
5333 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5334 {
5335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5336 "WDI API call before module is initialized - Fail request");
5337
Jeff Johnsone7245742012-09-05 17:12:55 -07005338 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005339 }
5340
5341 /*------------------------------------------------------------------------
5342 Fill in Event data and post to the Main FSM
5343 ------------------------------------------------------------------------*/
5344 wdiEventData.wdiRequest = WDI_WOWL_ENTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005345 wdiEventData.pEventData = pwdiWowlEnterParams;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -07005346 wdiEventData.uEventDataSize = sizeof(*pwdiWowlEnterParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005347 wdiEventData.pCBfnc = wdiWowlEnterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005348 wdiEventData.pUserData = pUserData;
5349
5350 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5351}/*WDI_WowlEnterReq*/
5352
5353/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005354 @brief WDI_WowlExitReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005355 wants to exit the Wowl state. Upon the call of this API
5356 the WLAN DAL will pack and send a HAL Wowl exit request
5357 message to the lower RIVA sub-system if DAL is in state
5358 STARTED.
5359
5360 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005361 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005362
5363 WDI_WowlEnterReq must have been called.
5364
Jeff Johnsone7245742012-09-05 17:12:55 -07005365 @param pwdiWowlExitReqParams: the Wowl exit info as
Jeff Johnson295189b2012-06-20 16:38:30 -07005366 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005367
Jeff Johnson295189b2012-06-20 16:38:30 -07005368 wdiWowlExitReqCb: callback for passing back the response
5369 of the exit Wowl operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005370
Jeff Johnson295189b2012-06-20 16:38:30 -07005371 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005372 callback
5373
Jeff Johnson295189b2012-06-20 16:38:30 -07005374 @see WDI_WowlEnterReq
5375 @return Result of the function call
5376*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005377WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005378WDI_WowlExitReq
5379(
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005380 WDI_WowlExitReqParamsType* pwdiWowlExitParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07005381 WDI_WowlExitReqCb wdiWowlExitCb,
5382 void* pUserData
5383)
5384{
5385 WDI_EventInfoType wdiEventData;
5386 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5387
5388 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005389 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005390 ------------------------------------------------------------------------*/
5391 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5392 {
5393 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5394 "WDI API call before module is initialized - Fail request");
5395
Jeff Johnsone7245742012-09-05 17:12:55 -07005396 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005397 }
5398
5399 /*------------------------------------------------------------------------
5400 Fill in Event data and post to the Main FSM
5401 ------------------------------------------------------------------------*/
5402 wdiEventData.wdiRequest = WDI_WOWL_EXIT_REQ;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -07005403 wdiEventData.pEventData = pwdiWowlExitParams;
5404 wdiEventData.uEventDataSize = sizeof(*pwdiWowlExitParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07005405 wdiEventData.pCBfnc = wdiWowlExitCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005406 wdiEventData.pUserData = pUserData;
5407
5408 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5409}/*WDI_WowlExitReq*/
5410
5411/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005412 @brief WDI_ConfigureAppsCpuWakeupStateReq will be called when
Jeff Johnson295189b2012-06-20 16:38:30 -07005413 the upper MAC wants to dynamically adjusts the listen
5414 interval based on the WLAN/MSM activity. Upon the call
5415 of this API the WLAN DAL will pack and send a HAL
5416 configure Apps Cpu Wakeup State request message to the
5417 lower RIVA sub-system.
5418
5419 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005420 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005421
Jeff Johnsone7245742012-09-05 17:12:55 -07005422
5423 @param pwdiConfigureAppsCpuWakeupStateReqParams: the
Jeff Johnson295189b2012-06-20 16:38:30 -07005424 Apps Cpu Wakeup State as specified by the
5425 Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005426
Jeff Johnson295189b2012-06-20 16:38:30 -07005427 wdiConfigureAppsCpuWakeupStateCb: callback for passing
5428 back the response of the configure Apps Cpu Wakeup State
5429 operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005430
Jeff Johnson295189b2012-06-20 16:38:30 -07005431 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005432 callback
5433
Jeff Johnson295189b2012-06-20 16:38:30 -07005434 @return Result of the function call
5435*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005436WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005437WDI_ConfigureAppsCpuWakeupStateReq
5438(
5439 WDI_ConfigureAppsCpuWakeupStateReqParamsType *pwdiConfigureAppsCpuWakeupStateReqParams,
5440 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb,
5441 void* pUserData
5442)
5443{
5444 WDI_EventInfoType wdiEventData;
5445 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5446
5447 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005448 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005449 ------------------------------------------------------------------------*/
5450 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5451 {
5452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5453 "WDI API call before module is initialized - Fail request");
5454
Jeff Johnsone7245742012-09-05 17:12:55 -07005455 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005456 }
5457
5458 /*------------------------------------------------------------------------
5459 Fill in Event data and post to the Main FSM
5460 ------------------------------------------------------------------------*/
5461 wdiEventData.wdiRequest = WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005462 wdiEventData.pEventData = pwdiConfigureAppsCpuWakeupStateReqParams;
5463 wdiEventData.uEventDataSize = sizeof(*pwdiConfigureAppsCpuWakeupStateReqParams);
5464 wdiEventData.pCBfnc = wdiConfigureAppsCpuWakeupStateCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005465 wdiEventData.pUserData = pUserData;
5466
5467 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5468}/*WDI_ConfigureAppsCpuWakeupStateReq*/
5469/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005470 @brief WDI_FlushAcReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005471 to to perform a flush operation on a given AC. Upon the
5472 call of this API the WLAN DAL will pack and send a HAL
5473 Flush AC request message to the lower RIVA sub-system if
5474 DAL is in state STARTED.
5475
5476 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005477 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005478
5479 WDI_AddBAReq must have been called.
5480
Jeff Johnsone7245742012-09-05 17:12:55 -07005481 @param pwdiFlushAcReqParams: the Flush AC parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005482 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005483
Jeff Johnson295189b2012-06-20 16:38:30 -07005484 wdiFlushAcRspCb: callback for passing back the response
5485 of the Flush AC operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005486
Jeff Johnson295189b2012-06-20 16:38:30 -07005487 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005488 callback
5489
Jeff Johnson295189b2012-06-20 16:38:30 -07005490 @see WDI_AddBAReq
5491 @return Result of the function call
5492*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005493WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005494WDI_FlushAcReq
5495(
5496 WDI_FlushAcReqParamsType* pwdiFlushAcReqParams,
5497 WDI_FlushAcRspCb wdiFlushAcRspCb,
5498 void* pUserData
5499)
5500{
5501 WDI_EventInfoType wdiEventData;
5502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5503
5504 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005505 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005506 ------------------------------------------------------------------------*/
5507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5508 {
5509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5510 "WDI API call before module is initialized - Fail request");
5511
Jeff Johnsone7245742012-09-05 17:12:55 -07005512 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005513 }
5514
5515 /*------------------------------------------------------------------------
5516 Fill in Event data and post to the Main FSM
5517 ------------------------------------------------------------------------*/
5518 wdiEventData.wdiRequest = WDI_FLUSH_AC_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005519 wdiEventData.pEventData = pwdiFlushAcReqParams;
5520 wdiEventData.uEventDataSize = sizeof(*pwdiFlushAcReqParams);
5521 wdiEventData.pCBfnc = wdiFlushAcRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005522 wdiEventData.pUserData = pUserData;
5523
5524 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5525
5526}/*WDI_FlushAcReq*/
5527
5528/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005529 @brief WDI_BtAmpEventReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005530 wants to notify the lower mac on a BT AMP event. This is
5531 to inform BTC-SLM that some BT AMP event occurred. Upon
5532 the call of this API the WLAN DAL will pack and send a
5533 HAL BT AMP event request message to the lower RIVA
5534 sub-system if DAL is in state STARTED.
5535
5536 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005537 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005538
Jeff Johnsone7245742012-09-05 17:12:55 -07005539
5540 @param wdiBtAmpEventReqParams: the BT AMP event parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005541 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005542
Jeff Johnson295189b2012-06-20 16:38:30 -07005543 wdiBtAmpEventRspCb: callback for passing back the
5544 response of the BT AMP event operation received from the
5545 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005546
Jeff Johnson295189b2012-06-20 16:38:30 -07005547 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005548 callback
5549
Jeff Johnson295189b2012-06-20 16:38:30 -07005550 @return Result of the function call
5551*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005552WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005553WDI_BtAmpEventReq
5554(
5555 WDI_BtAmpEventParamsType* pwdiBtAmpEventReqParams,
5556 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb,
5557 void* pUserData
5558)
5559{
5560 WDI_EventInfoType wdiEventData;
5561 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5562
5563 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005564 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005565 ------------------------------------------------------------------------*/
5566 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5567 {
5568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5569 "WDI API call before module is initialized - Fail request");
5570
Jeff Johnsone7245742012-09-05 17:12:55 -07005571 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005572 }
5573
5574 /*------------------------------------------------------------------------
5575 Fill in Event data and post to the Main FSM
5576 ------------------------------------------------------------------------*/
5577 wdiEventData.wdiRequest = WDI_BTAMP_EVENT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005578 wdiEventData.pEventData = pwdiBtAmpEventReqParams;
5579 wdiEventData.uEventDataSize = sizeof(*pwdiBtAmpEventReqParams);
5580 wdiEventData.pCBfnc = wdiBtAmpEventRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005581 wdiEventData.pUserData = pUserData;
5582
5583 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5584
5585}/*WDI_BtAmpEventReq*/
5586
Jeff Johnsone7245742012-09-05 17:12:55 -07005587#ifdef FEATURE_OEM_DATA_SUPPORT
5588/**
5589 @brief WDI_Start Oem Data Req will be called when the upper MAC
5590 wants to notify the lower mac on a oem data Req event.Upon
5591 the call of this API the WLAN DAL will pack and send a
5592 HAL OEM Data Req event request message to the lower RIVA
5593 sub-system if DAL is in state STARTED.
5594
5595 In state BUSY this request will be queued. Request won't
5596 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005597
5598
Jeff Johnsone7245742012-09-05 17:12:55 -07005599
5600 @param pwdiOemDataReqParams: the Oem Data Req as
5601 specified by the Device Interface
5602
5603 wdiStartOemDataRspCb: callback for passing back the
5604 response of the Oem Data Req received from the
5605 device
5606
5607 pUserData: user data will be passed back with the
5608 callback
5609
5610 @return Result of the function call
5611*/
5612WDI_Status
5613WDI_StartOemDataReq
5614(
5615 WDI_oemDataReqParamsType* pwdiOemDataReqParams,
5616 WDI_oemDataRspCb wdiOemDataRspCb,
5617 void* pUserData
5618)
5619{
5620 WDI_EventInfoType wdiEventData;
5621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5622
5623 /*------------------------------------------------------------------------
5624 Sanity Check
5625 ------------------------------------------------------------------------*/
5626 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5627 {
5628 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5629 "WDI API call before module is initialized - Fail request");
5630
5631 return WDI_STATUS_E_NOT_ALLOWED;
5632 }
5633
5634 /*------------------------------------------------------------------------
5635 Fill in Event data and post to the Main FSM
5636 ------------------------------------------------------------------------*/
5637 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ;
5638 wdiEventData.pEventData = pwdiOemDataReqParams;
5639 wdiEventData.uEventDataSize = sizeof(*pwdiOemDataReqParams);
5640 wdiEventData.pCBfnc = wdiOemDataRspCb;
5641 wdiEventData.pUserData = pUserData;
5642
5643 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5644
5645
5646}
5647
5648#endif
5649
5650
5651/*========================================================================
5652
Jeff Johnson295189b2012-06-20 16:38:30 -07005653 CONTROL APIs
Jeff Johnsone7245742012-09-05 17:12:55 -07005654
Jeff Johnson295189b2012-06-20 16:38:30 -07005655==========================================================================*/
5656/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005657 @brief WDI_SwitchChReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005658 the WLAN HW to change the current channel of operation.
5659 Upon the call of this API the WLAN DAL will pack and
5660 send a HAL Start request message to the lower RIVA
5661 sub-system if DAL is in state STARTED.
5662
5663 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005664 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005665
5666 WDI_Start must have been called.
5667
Jeff Johnsone7245742012-09-05 17:12:55 -07005668 @param wdiSwitchChReqParams: the switch ch parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005669 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005670
Jeff Johnson295189b2012-06-20 16:38:30 -07005671 wdiSwitchChRspCb: callback for passing back the response
5672 of the switch ch operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005673
Jeff Johnson295189b2012-06-20 16:38:30 -07005674 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005675 callback
5676
Jeff Johnson295189b2012-06-20 16:38:30 -07005677 @see WDI_Start
5678 @return Result of the function call
5679*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005680WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005681WDI_SwitchChReq
5682(
5683 WDI_SwitchChReqParamsType* pwdiSwitchChReqParams,
5684 WDI_SwitchChRspCb wdiSwitchChRspCb,
5685 void* pUserData
5686)
5687{
5688 WDI_EventInfoType wdiEventData;
5689 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5690
5691 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005692 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005693 ------------------------------------------------------------------------*/
5694 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5695 {
5696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5697 "WDI API call before module is initialized - Fail request");
5698
Jeff Johnsone7245742012-09-05 17:12:55 -07005699 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005700 }
5701
5702 /*------------------------------------------------------------------------
5703 Fill in Event data and post to the Main FSM
5704 ------------------------------------------------------------------------*/
5705 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005706 wdiEventData.pEventData = pwdiSwitchChReqParams;
5707 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5708 wdiEventData.pCBfnc = wdiSwitchChRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005709 wdiEventData.pUserData = pUserData;
5710
5711 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5712
5713}/*WDI_SwitchChReq*/
5714
Kalikinkar dhara1e83b772014-02-06 12:59:22 -08005715/**
5716 @brief WDI_SwitchChReq_V1 will be called when the upper MAC wants
5717 the WLAN HW to change the current channel of operation.
5718 Upon the call of this API the WLAN DAL will pack and
5719 send a HAL Start request message to the lower RIVA
5720 sub-system if DAL is in state STARTED.
5721 This request message also includes source of channel switch,
5722 like CSA,
5723
5724 In state BUSY this request will be queued. Request won't
5725 be allowed in any other state.
5726
5727 WDI_Start must have been called.
5728
5729 @param wdiSwitchChReqParams: the switch ch parameters as
5730 specified by the Device Interface
5731
5732 wdiSwitchChRspCb: callback for passing back the response
5733 of the switch ch operation received from the device
5734
5735 pUserData: user data will be passed back with the
5736 callback
5737
5738 @see WDI_Start
5739 @return Result of the function call
5740*/
5741WDI_Status
5742WDI_SwitchChReq_V1
5743(
5744 WDI_SwitchChReqParamsType_V1* pwdiSwitchChReqParams,
5745 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb,
5746 void* pUserData
5747)
5748{
5749 WDI_EventInfoType wdiEventData;
5750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5751 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
5752 "WDI API call WDI_SwitchChReq_V1");
5753 /*------------------------------------------------------------------------
5754 Sanity Check
5755 ------------------------------------------------------------------------*/
5756 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5757 {
5758 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5759 "WDI API call before module is initialized - Fail request");
5760
5761 return WDI_STATUS_E_NOT_ALLOWED;
5762 }
5763
5764 /*------------------------------------------------------------------------
5765 Fill in Event data and post to the Main FSM
5766 ------------------------------------------------------------------------*/
5767 wdiEventData.wdiRequest = WDI_CH_SWITCH_REQ_V1;
5768 wdiEventData.pEventData = pwdiSwitchChReqParams;
5769 wdiEventData.uEventDataSize = sizeof(*pwdiSwitchChReqParams);
5770 wdiEventData.pCBfnc = wdiSwitchChRspCb;
5771 wdiEventData.pUserData = pUserData;
5772
5773 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5774
5775}/*WDI_SwitchChReq_V1*/
5776
Jeff Johnson295189b2012-06-20 16:38:30 -07005777
5778/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005779 @brief WDI_ConfigSTAReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005780 wishes to add or update a STA in HW. Upon the call of
5781 this API the WLAN DAL will pack and send a HAL Start
5782 message request message to the lower RIVA sub-system if
5783 DAL is in state STARTED.
5784
5785 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005786 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005787
5788 WDI_Start must have been called.
5789
Jeff Johnsone7245742012-09-05 17:12:55 -07005790 @param wdiConfigSTAReqParams: the config STA parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07005791 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005792
Jeff Johnson295189b2012-06-20 16:38:30 -07005793 wdiConfigSTARspCb: callback for passing back the
5794 response of the config STA operation received from the
5795 device
Jeff Johnsone7245742012-09-05 17:12:55 -07005796
Jeff Johnson295189b2012-06-20 16:38:30 -07005797 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005798 callback
5799
Jeff Johnson295189b2012-06-20 16:38:30 -07005800 @see WDI_Start
5801 @return Result of the function call
5802*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005803WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005804WDI_ConfigSTAReq
5805(
5806 WDI_ConfigSTAReqParamsType* pwdiConfigSTAReqParams,
5807 WDI_ConfigSTARspCb wdiConfigSTARspCb,
5808 void* pUserData
5809)
5810{
5811 WDI_EventInfoType wdiEventData;
5812 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5813
5814 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005815 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005816 ------------------------------------------------------------------------*/
5817 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5818 {
5819 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5820 "WDI API call before module is initialized - Fail request");
5821
Jeff Johnsone7245742012-09-05 17:12:55 -07005822 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005823 }
5824
5825 /*------------------------------------------------------------------------
5826 Fill in Event data and post to the Main FSM
5827 ------------------------------------------------------------------------*/
5828 wdiEventData.wdiRequest = WDI_CONFIG_STA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005829 wdiEventData.pEventData = pwdiConfigSTAReqParams;
5830 wdiEventData.uEventDataSize = sizeof(*pwdiConfigSTAReqParams);
5831 wdiEventData.pCBfnc = wdiConfigSTARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005832 wdiEventData.pUserData = pUserData;
5833
5834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5835
5836}/*WDI_ConfigSTAReq*/
5837
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -08005838 /**
5839 @brief WDI_UpdateChannelReq will be called when the upper MAC
5840 wants to update the channel list on change in country code.
5841
5842 In state BUSY this request will be queued. Request won't
5843 be allowed in any other state.
5844
5845 WDI_UpdateChannelReq must have been called.
5846
5847 @param wdiUpdateChannelReqParams: the updated channel parameters
5848 as specified by the Device Interface
5849
5850 wdiUpdateChannelRspCb: callback for passing back the
5851 response of the update channel operation received from
5852 the device
5853
5854 pUserData: user data will be passed back with the
5855 callback
5856
5857 @return Result of the function call
5858*/
5859WDI_Status
5860WDI_UpdateChannelReq
5861(
5862 WDI_UpdateChReqParamsType *pwdiUpdateChannelReqParams,
5863 WDI_UpdateChannelRspCb wdiUpdateChannelRspCb,
5864 void* pUserData
5865)
5866{
5867 WDI_EventInfoType wdiEventData = {{0}};
5868 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5869
5870 /*------------------------------------------------------------------------
5871 Sanity Check
5872 ------------------------------------------------------------------------*/
5873 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5874 {
5875 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5876 "WDI API call before module is initialized - Fail request");
5877
5878 return WDI_STATUS_E_NOT_ALLOWED;
5879 }
5880
5881 /*------------------------------------------------------------------------
5882 Fill in Event data and post to the Main FSM
5883 ------------------------------------------------------------------------*/
5884 wdiEventData.wdiRequest = WDI_UPDATE_CHAN_REQ;
5885 wdiEventData.pEventData = pwdiUpdateChannelReqParams;
5886 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateChannelReqParams);
5887 wdiEventData.pCBfnc = wdiUpdateChannelRspCb;
5888 wdiEventData.pUserData = pUserData;
5889
5890 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5891
5892}/*WDI_UpdateChannelReq*/
5893
Jeff Johnson295189b2012-06-20 16:38:30 -07005894/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005895 @brief WDI_SetLinkStateReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07005896 wants to change the state of an ongoing link. Upon the
5897 call of this API the WLAN DAL will pack and send a HAL
5898 Start message request message to the lower RIVA
5899 sub-system if DAL is in state STARTED.
5900
5901 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005902 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005903
5904 WDI_JoinStartReq must have been called.
5905
Jeff Johnsone7245742012-09-05 17:12:55 -07005906 @param wdiSetLinkStateReqParams: the set link state parameters
Jeff Johnson295189b2012-06-20 16:38:30 -07005907 as specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005908
Jeff Johnson295189b2012-06-20 16:38:30 -07005909 wdiSetLinkStateRspCb: callback for passing back the
5910 response of the set link state operation received from
5911 the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005912
Jeff Johnson295189b2012-06-20 16:38:30 -07005913 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005914 callback
5915
Jeff Johnson295189b2012-06-20 16:38:30 -07005916 @see WDI_JoinStartReq
5917 @return Result of the function call
5918*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005919WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005920WDI_SetLinkStateReq
5921(
5922 WDI_SetLinkReqParamsType* pwdiSetLinkStateReqParams,
5923 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb,
5924 void* pUserData
5925)
5926{
5927 WDI_EventInfoType wdiEventData;
5928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5929
5930 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005931 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005932 ------------------------------------------------------------------------*/
5933 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5934 {
5935 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5936 "WDI API call before module is initialized - Fail request");
5937
Jeff Johnsone7245742012-09-05 17:12:55 -07005938 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005939 }
5940
5941 /*------------------------------------------------------------------------
5942 Fill in Event data and post to the Main FSM
5943 ------------------------------------------------------------------------*/
5944 wdiEventData.wdiRequest = WDI_SET_LINK_ST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07005945 wdiEventData.pEventData = pwdiSetLinkStateReqParams;
5946 wdiEventData.uEventDataSize = sizeof(*pwdiSetLinkStateReqParams);
5947 wdiEventData.pCBfnc = wdiSetLinkStateRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07005948 wdiEventData.pUserData = pUserData;
5949
5950 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
5951
5952}/*WDI_SetLinkStateReq*/
5953
5954
5955/**
Jeff Johnsone7245742012-09-05 17:12:55 -07005956 @brief WDI_GetStatsReq will be called when the upper MAC wants
Jeff Johnson295189b2012-06-20 16:38:30 -07005957 to get statistics (MIB counters) from the device. Upon
5958 the call of this API the WLAN DAL will pack and send a
5959 HAL Start request message to the lower RIVA sub-system
5960 if DAL is in state STARTED.
5961
5962 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07005963 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07005964
5965 WDI_Start must have been called.
5966
Jeff Johnsone7245742012-09-05 17:12:55 -07005967 @param wdiGetStatsReqParams: the stats parameters to get as
Jeff Johnson295189b2012-06-20 16:38:30 -07005968 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07005969
Jeff Johnson295189b2012-06-20 16:38:30 -07005970 wdiGetStatsRspCb: callback for passing back the response
5971 of the get stats operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07005972
Jeff Johnson295189b2012-06-20 16:38:30 -07005973 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07005974 callback
5975
Jeff Johnson295189b2012-06-20 16:38:30 -07005976 @see WDI_Start
5977 @return Result of the function call
5978*/
Jeff Johnsone7245742012-09-05 17:12:55 -07005979WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07005980WDI_GetStatsReq
5981(
5982 WDI_GetStatsReqParamsType* pwdiGetStatsReqParams,
5983 WDI_GetStatsRspCb wdiGetStatsRspCb,
5984 void* pUserData
5985)
5986{
5987 WDI_EventInfoType wdiEventData;
5988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
5989
5990 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07005991 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07005992 ------------------------------------------------------------------------*/
5993 if ( eWLAN_PAL_FALSE == gWDIInitialized )
5994 {
5995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
5996 "WDI API call before module is initialized - Fail request");
5997
Jeff Johnsone7245742012-09-05 17:12:55 -07005998 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07005999 }
6000
6001 /*------------------------------------------------------------------------
6002 Fill in Event data and post to the Main FSM
6003 ------------------------------------------------------------------------*/
6004 wdiEventData.wdiRequest = WDI_GET_STATS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006005 wdiEventData.pEventData = pwdiGetStatsReqParams;
6006 wdiEventData.uEventDataSize = sizeof(*pwdiGetStatsReqParams);
6007 wdiEventData.pCBfnc = wdiGetStatsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006008 wdiEventData.pUserData = pUserData;
6009
6010 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6011
6012}/*WDI_GetStatsReq*/
6013
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -08006014#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -08006015/**
6016 @brief WDI_GetRoamRssiReq will be called when the upper MAC wants
6017 to get roam rssi from the device. Upon
6018 the call of this API the WLAN DAL will pack and send a
6019 HAL Start request message to the lower RIVA sub-system
6020 if DAL is in state STARTED.
6021
6022 In state BUSY this request will be queued. Request won't
6023 be allowed in any other state.
6024
6025 WDI_Start must have been called.
6026
6027 @param wdiGetRoamRssiReqParams: the stats parameters to get as
6028 specified by the Device Interface
6029
6030 wdiGetRoamRssiRspCb: callback for passing back the response
6031 of the get stats operation received from the device
6032
6033 pUserData: user data will be passed back with the
6034 callback
6035
6036 @see WDI_Start
6037 @return Result of the function call
6038*/
6039WDI_Status
6040WDI_GetRoamRssiReq
6041(
6042 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiReqParams,
6043 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb,
6044 void* pUserData
6045)
6046{
6047 WDI_EventInfoType wdiEventData;
6048 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6049
6050 /*------------------------------------------------------------------------
6051 Sanity Check
6052 ------------------------------------------------------------------------*/
6053 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6054 {
6055 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6056 "WDI API call before module is initialized - Fail request");
6057
6058 return WDI_STATUS_E_NOT_ALLOWED;
6059 }
6060 /*------------------------------------------------------------------------
6061 Fill in Event data and post to the Main FSM
6062 ------------------------------------------------------------------------*/
6063 wdiEventData.wdiRequest = WDI_GET_ROAM_RSSI_REQ;
6064 wdiEventData.pEventData = pwdiGetRoamRssiReqParams;
6065 wdiEventData.uEventDataSize = sizeof(*pwdiGetRoamRssiReqParams);
6066 wdiEventData.pCBfnc = wdiGetRoamRssiRspCb;
6067 wdiEventData.pUserData = pUserData;
6068
6069 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6070
6071}/*WDI_GetRoamRssiReq*/
6072#endif
6073
Jeff Johnson295189b2012-06-20 16:38:30 -07006074
6075/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006076 @brief WDI_UpdateCfgReq will be called when the upper MAC when
Jeff Johnson295189b2012-06-20 16:38:30 -07006077 it wishes to change the configuration of the WLAN
6078 Device. Upon the call of this API the WLAN DAL will pack
6079 and send a HAL Update CFG request message to the lower
6080 RIVA sub-system if DAL is in state STARTED.
6081
6082 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006083 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006084
6085 WDI_Start must have been called.
6086
Jeff Johnsone7245742012-09-05 17:12:55 -07006087 @param wdiUpdateCfgReqParams: the update cfg parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006088 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006089
Jeff Johnson295189b2012-06-20 16:38:30 -07006090 wdiUpdateCfgsRspCb: callback for passing back the
6091 response of the update cfg operation received from the
6092 device
Jeff Johnsone7245742012-09-05 17:12:55 -07006093
Jeff Johnson295189b2012-06-20 16:38:30 -07006094 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006095 callback
6096
Jeff Johnson295189b2012-06-20 16:38:30 -07006097 @see WDI_Start
6098 @return Result of the function call
6099*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006100WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006101WDI_UpdateCfgReq
6102(
6103 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgReqParams,
6104 WDI_UpdateCfgRspCb wdiUpdateCfgsRspCb,
6105 void* pUserData
6106)
6107{
6108 WDI_EventInfoType wdiEventData;
6109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6110
6111 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006112 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006113 ------------------------------------------------------------------------*/
6114 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6115 {
6116 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6117 "WDI API call before module is initialized - Fail request");
6118
Jeff Johnsone7245742012-09-05 17:12:55 -07006119 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006120 }
6121
6122 /*------------------------------------------------------------------------
6123 Fill in Event data and post to the Main FSM
6124 ------------------------------------------------------------------------*/
6125 wdiEventData.wdiRequest = WDI_UPDATE_CFG_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006126 wdiEventData.pEventData = pwdiUpdateCfgReqParams;
6127 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateCfgReqParams);
6128 wdiEventData.pCBfnc = wdiUpdateCfgsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006129 wdiEventData.pUserData = pUserData;
6130
6131 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6132
6133}/*WDI_UpdateCfgReq*/
6134
6135
6136
6137/**
6138 @brief WDI_AddBAReq will be called when the upper MAC has setup
6139 successfully a BA session and needs to notify the HW for
6140 the appropriate settings to take place. Upon the call of
6141 this API the WLAN DAL will pack and send a HAL Add BA
6142 request message to the lower RIVA sub-system if DAL is
6143 in state STARTED.
6144
6145 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006146 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006147
6148 WDI_PostAssocReq must have been called.
6149
6150 @param wdiAddBAReqParams: the add BA parameters as specified by
6151 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006152
Jeff Johnson295189b2012-06-20 16:38:30 -07006153 wdiAddBARspCb: callback for passing back the response of
6154 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006155
Jeff Johnson295189b2012-06-20 16:38:30 -07006156 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006157 callback
6158
Jeff Johnson295189b2012-06-20 16:38:30 -07006159 @see WDI_PostAssocReq
6160 @return Result of the function call
6161*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006162WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006163WDI_AddBAReq
6164(
6165 WDI_AddBAReqParamsType* pwdiAddBAReqParams,
6166 WDI_AddBARspCb wdiAddBARspCb,
6167 void* pUserData
6168)
6169{
6170 WDI_EventInfoType wdiEventData;
6171 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6172
6173 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006174 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006175 ------------------------------------------------------------------------*/
6176 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6177 {
6178 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6179 "WDI API call before module is initialized - Fail request");
6180
Jeff Johnsone7245742012-09-05 17:12:55 -07006181 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006182 }
6183
6184 /*------------------------------------------------------------------------
6185 Fill in Event data and post to the Main FSM
6186 ------------------------------------------------------------------------*/
6187 wdiEventData.wdiRequest = WDI_ADD_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006188 wdiEventData.pEventData = pwdiAddBAReqParams;
6189 wdiEventData.uEventDataSize = sizeof(*pwdiAddBAReqParams);
6190 wdiEventData.pCBfnc = wdiAddBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006191 wdiEventData.pUserData = pUserData;
6192
6193 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6194
6195}/*WDI_AddBAReq*/
6196
6197
6198/**
6199 @brief WDI_TriggerBAReq will be called when the upper MAC has setup
6200 successfully a BA session and needs to notify the HW for
6201 the appropriate settings to take place. Upon the call of
6202 this API the WLAN DAL will pack and send a HAL Add BA
6203 request message to the lower RIVA sub-system if DAL is
6204 in state STARTED.
6205
6206 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006207 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006208
6209 WDI_PostAssocReq must have been called.
6210
6211 @param wdiAddBAReqParams: the add BA parameters as specified by
6212 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006213
Abhishek Singhe5066502016-02-05 18:07:41 +05306214 baReqParamUserDataSize: user data size of wdiAddBAReqParams
Jeff Johnson295189b2012-06-20 16:38:30 -07006215 wdiAddBARspCb: callback for passing back the response of
6216 the add BA operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006217
Jeff Johnson295189b2012-06-20 16:38:30 -07006218 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006219 callback
6220
Jeff Johnson295189b2012-06-20 16:38:30 -07006221 @see WDI_PostAssocReq
6222 @return Result of the function call
6223*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006224WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006225WDI_TriggerBAReq
6226(
6227 WDI_TriggerBAReqParamsType* pwdiTriggerBAReqParams,
Abhishek Singhe5066502016-02-05 18:07:41 +05306228 wpt_uint8 baReqParamUserDataSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07006229 WDI_TriggerBARspCb wdiTriggerBARspCb,
6230 void* pUserData
6231)
6232{
6233 WDI_EventInfoType wdiEventData;
6234 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6235
6236 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006237 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006238 ------------------------------------------------------------------------*/
6239 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6240 {
6241 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6242 "WDI API call before module is initialized - Fail request");
6243
Jeff Johnsone7245742012-09-05 17:12:55 -07006244 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006245 }
6246
6247 /*------------------------------------------------------------------------
6248 Fill in Event data and post to the Main FSM
6249 ------------------------------------------------------------------------*/
6250 wdiEventData.wdiRequest = WDI_TRIGGER_BA_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006251 wdiEventData.pEventData = pwdiTriggerBAReqParams;
Abhishek Singhe5066502016-02-05 18:07:41 +05306252 wdiEventData.uEventDataSize = sizeof(*pwdiTriggerBAReqParams)
6253 + baReqParamUserDataSize;
Jeff Johnsone7245742012-09-05 17:12:55 -07006254 wdiEventData.pCBfnc = wdiTriggerBARspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006255 wdiEventData.pUserData = pUserData;
6256
6257 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6258
6259}/*WDI_AddBAReq*/
6260
6261/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006262 @brief WDI_UpdateBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006263 wishes to update any of the Beacon parameters used by HW.
6264 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon Params request
6265 message to the lower RIVA sub-system if DAL is in state
6266 STARTED.
6267
6268 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006269 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006270
6271 WDI_PostAssocReq must have been called.
6272
Jeff Johnsone7245742012-09-05 17:12:55 -07006273 @param wdiUpdateBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006274 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006275
Jeff Johnson295189b2012-06-20 16:38:30 -07006276 wdiUpdateBeaconParamsRspCb: callback for passing back the
6277 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006278
Jeff Johnson295189b2012-06-20 16:38:30 -07006279 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006280 callback
6281
Jeff Johnson295189b2012-06-20 16:38:30 -07006282 @see WDI_PostAssocReq
6283 @return Result of the function call
6284*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006285WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006286WDI_UpdateBeaconParamsReq
6287(
6288 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams,
6289 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb,
6290 void* pUserData
6291)
6292{
6293 WDI_EventInfoType wdiEventData;
6294 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6295
6296 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006297 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006298 ------------------------------------------------------------------------*/
6299 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6300 {
6301 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6302 "WDI API call before module is initialized - Fail request");
6303
Jeff Johnsone7245742012-09-05 17:12:55 -07006304 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006305 }
6306
6307 /*------------------------------------------------------------------------
6308 Fill in Event data and post to the Main FSM
6309 ------------------------------------------------------------------------*/
6310 wdiEventData.wdiRequest = WDI_UPD_BCON_PRMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006311 wdiEventData.pEventData = pwdiUpdateBeaconParams;
6312 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateBeaconParams);
6313 wdiEventData.pCBfnc = wdiUpdateBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006314 wdiEventData.pUserData = pUserData;
6315
6316 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6317
6318}/*WDI_UpdateBeaconParamsReq*/
6319
6320/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006321 @brief WDI_SendBeaconParamsReq will be called when the upper MAC
Jeff Johnson295189b2012-06-20 16:38:30 -07006322 wishes to update the Beacon template used by HW.
6323 Upon the call of this API the WLAN DAL will pack and send a HAL Update Beacon template request
6324 message to the lower RIVA sub-system if DAL is in state
6325 STARTED.
6326
6327 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006328 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006329
6330 WDI_PostAssocReq must have been called.
6331
Jeff Johnsone7245742012-09-05 17:12:55 -07006332 @param wdiSendBeaconParams: the Beacon parameters as specified
Jeff Johnson295189b2012-06-20 16:38:30 -07006333 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006334
Jeff Johnson295189b2012-06-20 16:38:30 -07006335 wdiSendBeaconParamsRspCb: callback for passing back the
6336 response of the start operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006337
Jeff Johnson295189b2012-06-20 16:38:30 -07006338 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006339 callback
6340
Jeff Johnson295189b2012-06-20 16:38:30 -07006341 @see WDI_PostAssocReq
6342 @return Result of the function call
6343*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006344WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006345WDI_SendBeaconParamsReq
6346(
6347 WDI_SendBeaconParamsType* pwdiSendBeaconParams,
6348 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb,
6349 void* pUserData
6350)
6351{
6352 WDI_EventInfoType wdiEventData;
6353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6354
6355 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006356 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006357 ------------------------------------------------------------------------*/
6358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6359 {
6360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6361 "WDI API call before module is initialized - Fail request");
6362
Jeff Johnsone7245742012-09-05 17:12:55 -07006363 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006364 }
6365
6366 /*------------------------------------------------------------------------
6367 Fill in Event data and post to the Main FSM
6368 ------------------------------------------------------------------------*/
6369 wdiEventData.wdiRequest = WDI_SND_BCON_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006370 wdiEventData.pEventData = pwdiSendBeaconParams;
6371 wdiEventData.uEventDataSize = sizeof(*pwdiSendBeaconParams);
6372 wdiEventData.pCBfnc = wdiSendBeaconParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006373 wdiEventData.pUserData = pUserData;
6374
6375 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6376
6377}/*WDI_SendBeaconParamsReq*/
6378
6379/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006380 @brief WDI_UpdateProbeRspTemplateReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006381 upper MAC wants to update the probe response template to
6382 be transmitted as Soft AP
6383 Upon the call of this API the WLAN DAL will
6384 pack and send the probe rsp template message to the
6385 lower RIVA sub-system if DAL is in state STARTED.
6386
6387 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006388 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006389
6390
Jeff Johnsone7245742012-09-05 17:12:55 -07006391 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006392 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006393
Jeff Johnson295189b2012-06-20 16:38:30 -07006394 wdiSendBeaconParamsRspCb: callback for passing back the
6395 response of the Send Beacon Params operation received
6396 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006397
Jeff Johnson295189b2012-06-20 16:38:30 -07006398 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006399 callback
6400
Jeff Johnson295189b2012-06-20 16:38:30 -07006401 @see WDI_AddBAReq
6402 @return Result of the function call
6403*/
6404
Jeff Johnsone7245742012-09-05 17:12:55 -07006405WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006406WDI_UpdateProbeRspTemplateReq
6407(
6408 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRspParams,
6409 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRspParamsRspCb,
6410 void* pUserData
6411)
6412{
6413 WDI_EventInfoType wdiEventData;
6414 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6415
6416 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006417 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006418 ------------------------------------------------------------------------*/
6419 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6420 {
6421 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6422 "WDI API call before module is initialized - Fail request");
6423
Jeff Johnsone7245742012-09-05 17:12:55 -07006424 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006425 }
6426
6427 /*------------------------------------------------------------------------
6428 Fill in Event data and post to the Main FSM
6429 ------------------------------------------------------------------------*/
6430 wdiEventData.wdiRequest = WDI_UPD_PROBE_RSP_TEMPLATE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006431 wdiEventData.pEventData = pwdiUpdateProbeRspParams;
6432 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateProbeRspParams);
6433 wdiEventData.pCBfnc = wdiUpdateProbeRspParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006434 wdiEventData.pUserData = pUserData;
6435
6436 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6437
6438}/*WDI_UpdateProbeRspTemplateReq*/
6439
6440/**
6441 @brief WDI_NvDownloadReq will be called by the UMAC to download the NV blob
6442 to the NV memory.
6443
6444
6445 @param wdiNvDownloadReqParams: the NV Download parameters as specified by
6446 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006447
Jeff Johnson295189b2012-06-20 16:38:30 -07006448 wdiNvDownloadRspCb: callback for passing back the response of
6449 the NV Download operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006450
Jeff Johnson295189b2012-06-20 16:38:30 -07006451 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006452 callback
6453
Jeff Johnson295189b2012-06-20 16:38:30 -07006454 @see WDI_PostAssocReq
6455 @return Result of the function call
6456*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006457WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006458WDI_NvDownloadReq
6459(
6460 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams,
6461 WDI_NvDownloadRspCb wdiNvDownloadRspCb,
6462 void* pUserData
6463)
6464{
6465 WDI_EventInfoType wdiEventData;
6466
6467 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006468 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006469 ------------------------------------------------------------------------*/
6470 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6471 {
6472 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6473 "WDI API call before module is initialized - Fail request");
6474
Jeff Johnsone7245742012-09-05 17:12:55 -07006475 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006476 }
6477
6478 /*------------------------------------------------------------------------
6479 Fill in Event data and post to the Main FSM
6480 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006481 wdiEventData.wdiRequest = WDI_NV_DOWNLOAD_REQ;
6482 wdiEventData.pEventData = (void *)pwdiNvDownloadReqParams;
6483 wdiEventData.uEventDataSize = sizeof(*pwdiNvDownloadReqParams);
6484 wdiEventData.pCBfnc = wdiNvDownloadRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006485 wdiEventData.pUserData = pUserData;
6486
6487 return WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, &wdiEventData);
6488
6489}/*WDI_NVDownloadReq*/
6490
Jeff Johnson295189b2012-06-20 16:38:30 -07006491/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006492 @brief WDI_SetP2PGONOAReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006493 upper MAC wants to send Notice of Absence
6494 Upon the call of this API the WLAN DAL will
6495 pack and send the probe rsp template message to the
6496 lower RIVA sub-system if DAL is in state STARTED.
6497
6498 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006499 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006500
6501
Jeff Johnsone7245742012-09-05 17:12:55 -07006502 @param pwdiUpdateProbeRspParams: the Update Beacon parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006503 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006504
Jeff Johnson295189b2012-06-20 16:38:30 -07006505 wdiSendBeaconParamsRspCb: callback for passing back the
6506 response of the Send Beacon Params operation received
6507 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006508
Jeff Johnson295189b2012-06-20 16:38:30 -07006509 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006510 callback
6511
Jeff Johnson295189b2012-06-20 16:38:30 -07006512 @see WDI_AddBAReq
6513 @return Result of the function call
6514*/
6515WDI_Status
6516WDI_SetP2PGONOAReq
6517(
6518 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams,
6519 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb,
6520 void* pUserData
6521)
6522{
6523 WDI_EventInfoType wdiEventData;
6524 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6525
6526 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006527 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006528 ------------------------------------------------------------------------*/
6529 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6530 {
6531 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6532 "WDI API call before module is initialized - Fail request");
6533
Jeff Johnsone7245742012-09-05 17:12:55 -07006534 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006535 }
6536
6537 /*------------------------------------------------------------------------
6538 Fill in Event data and post to the Main FSM
6539 ------------------------------------------------------------------------*/
6540 wdiEventData.wdiRequest = WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006541 wdiEventData.pEventData = pwdiP2PGONOAReqParams;
6542 wdiEventData.uEventDataSize = sizeof(*pwdiP2PGONOAReqParams);
6543 wdiEventData.pCBfnc = wdiP2PGONOAReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006544 wdiEventData.pUserData = pUserData;
6545
6546 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6547
6548}/*WDI_SetP2PGONOAReq*/
Jeff Johnson295189b2012-06-20 16:38:30 -07006549
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306550#ifdef FEATURE_WLAN_TDLS
6551/**
6552 @brief WDI_SetTDLSLinkEstablishReq will be called when the
6553 upper MAC wants to send TDLS Link Establish Request Parameters
6554 Upon the call of this API the WLAN DAL will
6555 pack and send the TDLS Link Establish Request message to the
6556 lower RIVA sub-system if DAL is in state STARTED.
6557
6558 In state BUSY this request will be queued. Request won't
6559 be allowed in any other state.
6560
6561
6562 @param pwdiTDLSLinkEstablishReqParams: TDLS Peer Parameters
6563 for Link Establishment (Used for PUAPSD , TDLS Off Channel ...)
6564
6565 wdiTDLSLinkEstablishReqRspCb: callback for passing back the
6566 response of the TDLS Link Establish request received
6567 from the device
6568
6569 pUserData: user data will be passed back with the
6570 callback
6571
6572 @see
6573 @return Result of the function call
6574*/
6575WDI_Status
6576WDI_SetTDLSLinkEstablishReq
6577(
6578 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams,
6579 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb,
6580 void* pUserData
6581)
6582{
6583 WDI_EventInfoType wdiEventData;
6584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6585
6586 /*------------------------------------------------------------------------
6587 Sanity Check
6588 ------------------------------------------------------------------------*/
6589 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6590 {
6591 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6592 "WDI API call before module is initialized - Fail request");
6593
6594 return WDI_STATUS_E_NOT_ALLOWED;
6595 }
6596
6597 /*------------------------------------------------------------------------
6598 Fill in Event data and post to the Main FSM
6599 ------------------------------------------------------------------------*/
6600 wdiEventData.wdiRequest = WDI_TDLS_LINK_ESTABLISH_REQ;
6601 wdiEventData.pEventData = pwdiTDLSLinkEstablishReqParams;
6602 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSLinkEstablishReqParams);
6603 wdiEventData.pCBfnc = wdiTDLSLinkEstablishReqRspCb;
6604 wdiEventData.pUserData = pUserData;
6605
6606 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6607
6608}/*WDI_SetTDLSLinkEstablishReq*/
Atul Mittalc0f739f2014-07-31 13:47:47 +05306609
6610//tdlsoffchan
6611/**
6612 @brief WDI_SetTDLSChanSwitchReq will be called when the
6613 upper MAC wants to send TDLS Chan Switch Request Parameters
6614 Upon the call of this API the WLAN DAL will
6615 pack and send the TDLS Link Establish Request message to the
6616 lower RIVA sub-system if DAL is in state STARTED.
6617
6618 In state BUSY this request will be queued. Request won't
6619 be allowed in any other state.
6620
6621
6622 @param pwdiTDLSChanSwitchReqParams: TDLS Peer Parameters
6623 for Link Establishment (Used for TDLS Off Channel ...)
6624
6625 wdiTDLSChanSwitchReqRspCb: callback for passing back the
6626 response of the TDLS Chan Switch request received
6627 from the device
6628
6629 pUserData: user data will be passed back with the
6630 callback
6631
6632 @see
6633 @return Result of the function call
6634*/
6635WDI_Status
6636WDI_SetTDLSChanSwitchReq
6637(
6638 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams,
6639 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchRReqRspCb,
6640 void* pUserData
6641)
6642{
6643 WDI_EventInfoType wdiEventData;
6644 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6645
6646 /*------------------------------------------------------------------------
6647 Sanity Check
6648 ------------------------------------------------------------------------*/
6649 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6650 {
6651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6652 "WDI API call before module is initialized - Fail request");
6653
6654 return WDI_STATUS_E_NOT_ALLOWED;
6655 }
6656
6657 /*------------------------------------------------------------------------
6658 Fill in Event data and post to the Main FSM
6659 ------------------------------------------------------------------------*/
6660 wdiEventData.wdiRequest = WDI_TDLS_CHAN_SWITCH_REQ;
6661 wdiEventData.pEventData = pwdiTDLSChanSwitchReqParams;
6662 wdiEventData.uEventDataSize = sizeof(*pwdiTDLSChanSwitchReqParams);
6663 wdiEventData.pCBfnc = wdiTDLSChanSwitchRReqRspCb;
6664 wdiEventData.pUserData = pUserData;
6665
6666 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6667
6668}/*WDI_SetTDLSChanSwitchReq*/
6669
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +05306670#endif
6671
Jeff Johnson295189b2012-06-20 16:38:30 -07006672/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006673 @brief WDI_AddSTASelfReq will be called when the
Jeff Johnson295189b2012-06-20 16:38:30 -07006674 UMAC wanted to add STA self while opening any new session
6675 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006676 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006677
6678
Jeff Johnsone7245742012-09-05 17:12:55 -07006679 @param pwdiAddSTASelfParams: the add sta self parameters as
Jeff Johnson295189b2012-06-20 16:38:30 -07006680 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006681
Jeff Johnson295189b2012-06-20 16:38:30 -07006682 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006683 callback
6684
6685 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006686 @return Result of the function call
6687*/
6688WDI_Status
6689WDI_AddSTASelfReq
6690(
6691 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams,
6692 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb,
6693 void* pUserData
6694)
6695{
6696 WDI_EventInfoType wdiEventData;
6697 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6698
6699 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006700 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006701 ------------------------------------------------------------------------*/
6702 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6703 {
6704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6705 "WDI API call before module is initialized - Fail request");
6706
Jeff Johnsone7245742012-09-05 17:12:55 -07006707 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006708 }
6709
6710 /*------------------------------------------------------------------------
6711 Fill in Event data and post to the Main FSM
6712 ------------------------------------------------------------------------*/
6713 wdiEventData.wdiRequest = WDI_ADD_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006714 wdiEventData.pEventData = pwdiAddSTASelfReqParams;
6715 wdiEventData.uEventDataSize = sizeof(*pwdiAddSTASelfReqParams);
6716 wdiEventData.pCBfnc = wdiAddSTASelfReqParamsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006717 wdiEventData.pUserData = pUserData;
6718
6719 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6720
6721}/*WDI_AddSTASelfReq*/
6722
6723
Jeff Johnsone7245742012-09-05 17:12:55 -07006724#ifdef WLAN_FEATURE_VOWIFI_11R
Jeff Johnson295189b2012-06-20 16:38:30 -07006725/**
6726 @brief WDI_AggrAddTSReq will be called when the upper MAC to inform
6727 the device of a successful add TSpec negotiation. HW
6728 needs to receive the TSpec Info from the UMAC in order
6729 to configure properly the QoS data traffic. Upon the
6730 call of this API the WLAN DAL will pack and send a HAL
6731 Add TS request message to the lower RIVA sub-system if
6732 DAL is in state STARTED.
6733
6734 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006735 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006736
6737 WDI_PostAssocReq must have been called.
6738
6739 @param wdiAddTsReqParams: the add TS parameters as specified by
6740 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006741
Jeff Johnson295189b2012-06-20 16:38:30 -07006742 wdiAddTsRspCb: callback for passing back the response of
6743 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006744
Jeff Johnson295189b2012-06-20 16:38:30 -07006745 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006746 callback
6747
Jeff Johnson295189b2012-06-20 16:38:30 -07006748 @see WDI_PostAssocReq
6749 @return Result of the function call
6750*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006751WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006752WDI_AggrAddTSReq
6753(
6754 WDI_AggrAddTSReqParamsType* pwdiAggrAddTsReqParams,
6755 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb,
6756 void* pUserData
6757)
6758{
6759 WDI_EventInfoType wdiEventData;
6760 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6761
6762 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006763 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006764 ------------------------------------------------------------------------*/
6765 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6766 {
6767 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6768 "WDI API call before module is initialized - Fail request");
6769
Jeff Johnsone7245742012-09-05 17:12:55 -07006770 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006771 }
6772
6773 /*------------------------------------------------------------------------
6774 Fill in Event data and post to the Main FSM
6775 ------------------------------------------------------------------------*/
6776 wdiEventData.wdiRequest = WDI_AGGR_ADD_TS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006777 wdiEventData.pEventData = pwdiAggrAddTsReqParams;
6778 wdiEventData.uEventDataSize = sizeof(*pwdiAggrAddTsReqParams);
6779 wdiEventData.pCBfnc = wdiAggrAddTsRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006780 wdiEventData.pUserData = pUserData;
6781
6782 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6783
6784}/*WDI_AggrAddTSReq*/
6785
6786#endif /* WLAN_FEATURE_VOWIFI_11R */
6787
Jeff Johnson295189b2012-06-20 16:38:30 -07006788/**
6789 @brief WDI_FTMCommandReq
6790 Post FTM Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07006791
6792 @param ftmCommandReq: FTM Command Body
6793 @param ftmCommandRspCb: FTM Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07006794 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07006795
Jeff Johnson295189b2012-06-20 16:38:30 -07006796 @see
6797 @return Result of the function call
6798*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006799WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006800WDI_FTMCommandReq
6801(
6802 WDI_FTMCommandReqType *ftmCommandReq,
6803 WDI_FTMCommandRspCb ftmCommandRspCb,
6804 void *pUserData
6805)
6806{
6807 WDI_EventInfoType wdiEventData;
6808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6809
6810 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006811 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006812 ------------------------------------------------------------------------*/
6813 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6814 {
6815 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6816 "WDI API call before module is initialized - Fail request");
6817
Jeff Johnsone7245742012-09-05 17:12:55 -07006818 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006819 }
6820
6821 /*------------------------------------------------------------------------
6822 Fill in Event data and post to the Main FSM
6823 ------------------------------------------------------------------------*/
6824 wdiEventData.wdiRequest = WDI_FTM_CMD_REQ;
6825 wdiEventData.pEventData = (void *)ftmCommandReq;
6826 wdiEventData.uEventDataSize = ftmCommandReq->bodyLength + sizeof(wpt_uint32);
6827 wdiEventData.pCBfnc = ftmCommandRspCb;
6828 wdiEventData.pUserData = pUserData;
6829
6830 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6831}
Jeff Johnson295189b2012-06-20 16:38:30 -07006832/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006833 @brief WDI_HostResumeReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006834
6835 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006836 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006837
6838
6839 @param pwdiResumeReqParams: as specified by
6840 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006841
Jeff Johnson295189b2012-06-20 16:38:30 -07006842 wdiResumeReqRspCb: callback for passing back the response of
6843 the Resume Req received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006844
Jeff Johnson295189b2012-06-20 16:38:30 -07006845 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006846 callback
6847
6848 @see
Jeff Johnson295189b2012-06-20 16:38:30 -07006849 @return Result of the function call
6850*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006851WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006852WDI_HostResumeReq
6853(
6854 WDI_ResumeParamsType* pwdiResumeReqParams,
6855 WDI_HostResumeEventRspCb wdiResumeReqRspCb,
6856 void* pUserData
6857)
6858{
6859 WDI_EventInfoType wdiEventData;
6860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6861
6862 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006863 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006864 ------------------------------------------------------------------------*/
6865 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6866 {
6867 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6868 "WDI API call before module is initialized - Fail request");
6869
Jeff Johnsone7245742012-09-05 17:12:55 -07006870 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006871 }
6872
6873 /*------------------------------------------------------------------------
6874 Fill in Event data and post to the Main FSM
6875 ------------------------------------------------------------------------*/
6876 wdiEventData.wdiRequest = WDI_HOST_RESUME_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006877 wdiEventData.pEventData = pwdiResumeReqParams;
6878 wdiEventData.uEventDataSize = sizeof(*pwdiResumeReqParams);
6879 wdiEventData.pCBfnc = wdiResumeReqRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006880 wdiEventData.pUserData = pUserData;
6881
6882 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6883
6884}/*WDI_HostResumeReq*/
6885
6886/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006887 @brief WDI_DelSTASelfReq will be called
Jeff Johnson295189b2012-06-20 16:38:30 -07006888
6889 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006890 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006891
6892
6893 @param pwdiDelStaSelfReqParams: as specified by
6894 the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006895
Jeff Johnson295189b2012-06-20 16:38:30 -07006896 wdiDelStaSelfRspCb: callback for passing back the response of
6897 the add TS operation received from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006898
Jeff Johnson295189b2012-06-20 16:38:30 -07006899 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006900 callback
6901
Jeff Johnson295189b2012-06-20 16:38:30 -07006902 @see WDI_PostAssocReq
6903 @return Result of the function call
6904*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006905WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006906WDI_DelSTASelfReq
6907(
6908 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams,
6909 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb,
6910 void* pUserData
6911)
6912{
6913 WDI_EventInfoType wdiEventData;
6914 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6915
6916 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006917 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006918 ------------------------------------------------------------------------*/
6919 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6920 {
6921 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6922 "WDI API call before module is initialized - Fail request");
6923
Jeff Johnsone7245742012-09-05 17:12:55 -07006924 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006925 }
6926
6927 /*------------------------------------------------------------------------
6928 Fill in Event data and post to the Main FSM
6929 ------------------------------------------------------------------------*/
6930 wdiEventData.wdiRequest = WDI_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006931 wdiEventData.pEventData = pwdiDelStaSelfReqParams;
6932 wdiEventData.uEventDataSize = sizeof(*pwdiDelStaSelfReqParams);
6933 wdiEventData.pCBfnc = wdiDelStaSelfRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006934 wdiEventData.pUserData = pUserData;
6935
6936 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6937
6938}/*WDI_AggrAddTSReq*/
6939
6940/**
Jeff Johnsone7245742012-09-05 17:12:55 -07006941 @brief WDI_SetTxPerTrackingReq will be called when the upper MAC
6942 wants to set the Tx Per Tracking configurations.
Jeff Johnson295189b2012-06-20 16:38:30 -07006943 Upon the call of this API the WLAN DAL will pack
6944 and send a HAL Set Tx Per Tracking request message to the
6945 lower RIVA sub-system if DAL is in state STARTED.
6946
6947 In state BUSY this request will be queued. Request won't
Jeff Johnsone7245742012-09-05 17:12:55 -07006948 be allowed in any other state.
Jeff Johnson295189b2012-06-20 16:38:30 -07006949
Jeff Johnsone7245742012-09-05 17:12:55 -07006950 @param pwdiSetTxPerTrackingReqParams: the Set Tx PER Tracking configurations as
Jeff Johnson295189b2012-06-20 16:38:30 -07006951 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -07006952
Jeff Johnson295189b2012-06-20 16:38:30 -07006953 pwdiSetTxPerTrackingRspCb: callback for passing back the
6954 response of the set Tx PER Tracking configurations operation received
6955 from the device
Jeff Johnsone7245742012-09-05 17:12:55 -07006956
Jeff Johnson295189b2012-06-20 16:38:30 -07006957 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -07006958 callback
6959
Jeff Johnson295189b2012-06-20 16:38:30 -07006960 @return Result of the function call
6961*/
Jeff Johnsone7245742012-09-05 17:12:55 -07006962WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07006963WDI_SetTxPerTrackingReq
6964(
6965 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams,
6966 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb,
6967 void* pUserData
6968)
6969{
6970 WDI_EventInfoType wdiEventData;
6971 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
6972
6973 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07006974 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07006975 ------------------------------------------------------------------------*/
6976 if ( eWLAN_PAL_FALSE == gWDIInitialized )
6977 {
6978 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
6979 "WDI API call before module is initialized - Fail request");
6980
Jeff Johnsone7245742012-09-05 17:12:55 -07006981 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07006982 }
6983
6984 /*------------------------------------------------------------------------
6985 Fill in Event data and post to the Main FSM
6986 ------------------------------------------------------------------------*/
6987 wdiEventData.wdiRequest = WDI_SET_TX_PER_TRACKING_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -07006988 wdiEventData.pEventData = pwdiSetTxPerTrackingReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -07006989 wdiEventData.uEventDataSize = sizeof(*pwdiSetTxPerTrackingReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -07006990 wdiEventData.pCBfnc = pwdiSetTxPerTrackingRspCb;
Jeff Johnson295189b2012-06-20 16:38:30 -07006991 wdiEventData.pUserData = pUserData;
6992
6993 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
6994
6995}/*WDI_SetTxPerTrackingReq*/
6996
6997/**
6998 @brief WDI_SetTmLevelReq
6999 If HW Thermal condition changed, driver should react based on new
7000 HW thermal condition.
7001
7002 @param pwdiSetTmLevelReq: New thermal condition information
7003
7004 pwdiSetTmLevelRspCb: callback
7005
7006 usrData: user data will be passed back with the
7007 callback
7008
7009 @return Result of the function call
7010*/
7011WDI_Status
7012WDI_SetTmLevelReq
7013(
7014 WDI_SetTmLevelReqType *pwdiSetTmLevelReq,
7015 WDI_SetTmLevelCb pwdiSetTmLevelRspCb,
7016 void *usrData
7017)
7018{
7019 WDI_EventInfoType wdiEventData;
7020 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7021
7022 /*------------------------------------------------------------------------
7023 Sanity Check
7024 ------------------------------------------------------------------------*/
7025 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7026 {
7027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7028 "WDI API call before module is initialized - Fail request");
7029
7030 return WDI_STATUS_E_NOT_ALLOWED;
7031 }
7032
7033 /*------------------------------------------------------------------------
7034 Fill in Event data and post to the Main FSM
7035 ------------------------------------------------------------------------*/
7036 wdiEventData.wdiRequest = WDI_SET_TM_LEVEL_REQ;
7037 wdiEventData.pEventData = pwdiSetTmLevelReq;
7038 wdiEventData.uEventDataSize = sizeof(*pwdiSetTmLevelReq);
7039 wdiEventData.pCBfnc = pwdiSetTmLevelRspCb;
7040 wdiEventData.pUserData = usrData;
7041
7042 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7043}
7044
7045/**
7046 @brief WDI_HostSuspendInd
7047
7048 Suspend Indication from the upper layer will be sent
7049 down to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -07007050
Jeff Johnson295189b2012-06-20 16:38:30 -07007051 @param WDI_SuspendResumeIndParamsType
Jeff Johnsone7245742012-09-05 17:12:55 -07007052
7053 @see
7054
Jeff Johnson295189b2012-06-20 16:38:30 -07007055 @return Status of the request
7056*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007057WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -07007058WDI_HostSuspendInd
7059(
7060 WDI_SuspendParamsType* pwdiSuspendIndParams
7061)
7062{
7063
7064 WDI_EventInfoType wdiEventData;
7065 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7066
7067 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007068 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007069 ------------------------------------------------------------------------*/
7070 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7071 {
7072 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7073 "WDI API call before module is initialized - Fail request");
7074
Jeff Johnsone7245742012-09-05 17:12:55 -07007075 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007076 }
7077
7078 /*------------------------------------------------------------------------
7079 Fill in Event data and post to the Main FSM
7080 ------------------------------------------------------------------------*/
7081 wdiEventData.wdiRequest = WDI_HOST_SUSPEND_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -07007082 wdiEventData.pEventData = pwdiSuspendIndParams;
7083 wdiEventData.uEventDataSize = sizeof(*pwdiSuspendIndParams);
7084 wdiEventData.pCBfnc = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07007085 wdiEventData.pUserData = NULL;
7086
7087 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7088
7089}/*WDI_HostSuspendInd*/
7090
7091/**
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007092 @brief WDI_TrafficStatsInd
7093 Traffic Stats from the upper layer will be sent
7094 down to HAL
7095
7096 @param WDI_TrafficStatsIndType
7097
7098 @see
7099
7100 @return Status of the request
7101*/
7102WDI_Status
7103WDI_TrafficStatsInd
7104(
7105 WDI_TrafficStatsIndType *pWdiTrafficStatsIndParams
7106)
7107{
7108
7109 WDI_EventInfoType wdiEventData;
7110 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
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_TRAFFIC_STATS_IND;
7127 wdiEventData.pEventData = pWdiTrafficStatsIndParams;
7128 wdiEventData.uEventDataSize = sizeof(*pWdiTrafficStatsIndParams);
7129 wdiEventData.pCBfnc = NULL;
7130 wdiEventData.pUserData = NULL;
7131
7132 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7133
7134}/*WDI_TrafficStatsInd*/
7135
Chet Lanctot186b5732013-03-18 10:26:30 -07007136#ifdef WLAN_FEATURE_11W
7137/**
7138 @brief WDI_ExcludeUnencryptedInd
7139 Register with HAL to receive/drop unencrypted frames
7140
7141 @param WDI_ExcludeUnencryptIndType
7142
7143 @see
7144
7145 @return Status of the request
7146*/
7147WDI_Status
7148WDI_ExcludeUnencryptedInd
7149(
7150 WDI_ExcludeUnencryptIndType *pWdiExcUnencParams
7151)
7152{
7153
7154 WDI_EventInfoType wdiEventData;
7155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7156
7157 /*------------------------------------------------------------------------
7158 Sanity Check
7159 ------------------------------------------------------------------------*/
7160 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7161 {
7162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7163 "WDI API call before module is initialized - Fail request");
7164
7165 return WDI_STATUS_E_NOT_ALLOWED;
7166 }
7167
7168 /*------------------------------------------------------------------------
7169 Fill in Event data and post to the Main FSM
7170 ------------------------------------------------------------------------*/
7171 wdiEventData.wdiRequest = WDI_EXCLUDE_UNENCRYPTED_IND;
7172 wdiEventData.pEventData = pWdiExcUnencParams;
7173 wdiEventData.uEventDataSize = sizeof(*pWdiExcUnencParams);
7174 wdiEventData.pCBfnc = NULL;
7175 wdiEventData.pUserData = NULL;
7176
7177 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7178
7179}/*WDI_TrafficStatsInd*/
7180#endif
7181
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -08007182/**
Yue Mab9c86f42013-08-14 15:59:08 -07007183 @brief WDI_AddPeriodicTxPtrnInd: Add Periodic TX Pattern Indication to FW
7184
7185 @param addPeriodicTxPtrnParams: Add Pattern parameters
7186
7187 @see
7188
7189 @return Status of the request
7190*/
7191WDI_Status
7192WDI_AddPeriodicTxPtrnInd
7193(
7194 WDI_AddPeriodicTxPtrnParamsType* addPeriodicTxPtrnParams
7195)
7196{
7197 WDI_EventInfoType wdiEventData;
7198
7199 /*-------------------------------------------------------------------------
7200 Sanity Check
7201 ------------------------------------------------------------------------*/
7202 if (eWLAN_PAL_FALSE == gWDIInitialized)
7203 {
7204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7205 "WDI API call before module is initialized - Fail request!");
7206
7207 return WDI_STATUS_E_NOT_ALLOWED;
7208 }
7209
7210 /*-------------------------------------------------------------------------
7211 Fill in Event data and post to the Main FSM
7212 ------------------------------------------------------------------------*/
7213 wdiEventData.wdiRequest = WDI_ADD_PERIODIC_TX_PATTERN_IND;
7214 wdiEventData.pEventData = addPeriodicTxPtrnParams;
7215 wdiEventData.uEventDataSize = sizeof(WDI_AddPeriodicTxPtrnParamsType);
7216 wdiEventData.pCBfnc = NULL;
7217 wdiEventData.pUserData = NULL;
7218
7219 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7220}
7221
7222/**
7223 @brief WDI_DelPeriodicTxPtrnInd: Delete Periodic TX Pattern Indication to FW
7224
7225 @param delPeriodicTxPtrnParams: Delete Pattern parameters
7226
7227 @see
7228
7229 @return Status of the request
7230*/
7231WDI_Status
7232WDI_DelPeriodicTxPtrnInd
7233(
7234 WDI_DelPeriodicTxPtrnParamsType* delPeriodicTxPtrnParams
7235)
7236{
7237 WDI_EventInfoType wdiEventData;
7238
7239 /*-------------------------------------------------------------------------
7240 Sanity Check
7241 ------------------------------------------------------------------------*/
7242 if (eWLAN_PAL_FALSE == gWDIInitialized)
7243 {
7244 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7245 "WDI API call before module is initialized - Fail request!");
7246
7247 return WDI_STATUS_E_NOT_ALLOWED;
7248 }
7249
7250 /*-------------------------------------------------------------------------
7251 Fill in Event data and post to the Main FSM
7252 ------------------------------------------------------------------------*/
7253 wdiEventData.wdiRequest = WDI_DEL_PERIODIC_TX_PATTERN_IND;
7254 wdiEventData.pEventData = delPeriodicTxPtrnParams;
7255 wdiEventData.uEventDataSize = sizeof(WDI_DelPeriodicTxPtrnParamsType);
7256 wdiEventData.pCBfnc = NULL;
7257 wdiEventData.pUserData = NULL;
7258
7259 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7260}
7261
7262/**
Jeff Johnson295189b2012-06-20 16:38:30 -07007263 @brief WDI_HALDumpCmdReq
7264 Post HAL DUMP Command Event
Jeff Johnsone7245742012-09-05 17:12:55 -07007265
7266 @param halDumpCmdReqParams: Hal Dump Command Body
7267 @param halDumpCmdRspCb: HAL DUMP Response from HAL CB
Jeff Johnson295189b2012-06-20 16:38:30 -07007268 @param pUserData: Client Data
Jeff Johnsone7245742012-09-05 17:12:55 -07007269
Jeff Johnson295189b2012-06-20 16:38:30 -07007270 @see
7271 @return Result of the function call
7272*/
7273WDI_Status WDI_HALDumpCmdReq
7274(
7275 WDI_HALDumpCmdReqParamsType *halDumpCmdReqParams,
7276 WDI_HALDumpCmdRspCb halDumpCmdRspCb,
7277 void *pUserData
7278)
7279{
7280 WDI_EventInfoType wdiEventData;
7281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7282
7283 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007284 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007285 ------------------------------------------------------------------------*/
7286 if ( eWLAN_PAL_FALSE == gWDIInitialized )
7287 {
7288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7289 "WDI API call before module is initialized - Fail request");
7290
Jeff Johnsone7245742012-09-05 17:12:55 -07007291 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007292 }
7293
7294 /*------------------------------------------------------------------------
7295 Fill in Event data and post to the Main FSM
7296 ------------------------------------------------------------------------*/
7297 wdiEventData.wdiRequest = WDI_HAL_DUMP_CMD_REQ;
7298 wdiEventData.pEventData = (void *)halDumpCmdReqParams;
7299 wdiEventData.uEventDataSize = sizeof(WDI_HALDumpCmdReqParamsType);
7300 wdiEventData.pCBfnc = halDumpCmdRspCb;
7301 wdiEventData.pUserData = pUserData;
7302
7303 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
7304}
7305
Jeff Johnsone7245742012-09-05 17:12:55 -07007306/*============================================================================
7307
Jeff Johnson295189b2012-06-20 16:38:30 -07007308 DAL Control Path Main FSM Function Implementation
Jeff Johnsone7245742012-09-05 17:12:55 -07007309
Jeff Johnson295189b2012-06-20 16:38:30 -07007310 ============================================================================*/
7311
7312/**
7313 @brief Main FSM Start function for all states except BUSY
7314
Jeff Johnsone7245742012-09-05 17:12:55 -07007315
7316 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007317 wdiEV: event posted to the main DAL FSM
7318 pEventData: pointer to the event information
Jeff Johnsone7245742012-09-05 17:12:55 -07007319 structure
7320
Jeff Johnson295189b2012-06-20 16:38:30 -07007321 @see
7322 @return Result of the function call
7323*/
7324WDI_Status
7325WDI_PostMainEvent
7326(
Jeff Johnsone7245742012-09-05 17:12:55 -07007327 WDI_ControlBlockType* pWDICtx,
7328 WDI_MainEventType wdiEV,
Jeff Johnson295189b2012-06-20 16:38:30 -07007329 WDI_EventInfoType* pEventData
Jeff Johnson295189b2012-06-20 16:38:30 -07007330)
7331{
Jeff Johnsone7245742012-09-05 17:12:55 -07007332 WDI_Status wdiStatus;
7333 WDI_MainFuncType pfnWDIMainEvHdlr;
7334 WDI_MainStateType wdiOldState;
Sushant Kaushik7438e252015-05-01 14:55:09 +05307335 static int failCnt = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07007336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7337
7338 /*-------------------------------------------------------------------------
7339 Sanity check
7340 -------------------------------------------------------------------------*/
7341 if (( pWDICtx->uGlobalState >= WDI_MAX_ST ) ||
7342 ( wdiEV >= WDI_MAX_EVENT ))
7343 {
7344 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7345 "Invalid state or event in Post Main Ev function ST: %d EV: %d",
7346 pWDICtx->uGlobalState, wdiEV);
Jeff Johnsone7245742012-09-05 17:12:55 -07007347 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007348 }
7349
7350 /*Access to the global state must be locked */
7351 wpalMutexAcquire(&pWDICtx->wptMutex);
7352
7353 /*Fetch event handler for state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007354 pfnWDIMainEvHdlr = wdiMainFSM[pWDICtx->uGlobalState].pfnMainTbl[wdiEV];
Jeff Johnson295189b2012-06-20 16:38:30 -07007355
7356 wdiOldState = pWDICtx->uGlobalState;
7357
7358 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07007359 --Incase of WDI event is WDI_RESPONSE_EVENT and this is called when a
7360 response comes from CCPU for the request sent by host:
7361 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 -07007362 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 -07007363 --Incase of WDI event is WDI_RESPONSE_EVENT and it is an indication from the
Jeff Johnson295189b2012-06-20 16:38:30 -07007364 CCPU:
7365 don't change the state */
7366 if ( WDI_RESPONSE_EVENT != wdiEV)
7367 {
7368 /*Transition to BUSY State - the request is now being processed by the FSM,
7369 if the request fails we shall transition back to the old state, if not
7370 the request will manage its own state transition*/
7371 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
7372 }
7373 /* If the state function associated with the EV is NULL it means that this
7374 event is not allowed in this state*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007375 if ( NULL != pfnWDIMainEvHdlr )
Jeff Johnson295189b2012-06-20 16:38:30 -07007376 {
7377 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007378 "Posting event %d in state: %d to the Main FSM",
Jeff Johnson295189b2012-06-20 16:38:30 -07007379 wdiEV, wdiOldState);
Jeff Johnsone7245742012-09-05 17:12:55 -07007380 wdiStatus = pfnWDIMainEvHdlr( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007381 }
7382 else
7383 {
Sushant Kaushik7438e252015-05-01 14:55:09 +05307384 if (!(failCnt & 0xF))
7385 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07007386 "Unexpected event %d in state: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -07007387 wdiEV, wdiOldState);
Sushant Kaushik7438e252015-05-01 14:55:09 +05307388 failCnt++;
Jeff Johnsone7245742012-09-05 17:12:55 -07007389 wdiStatus = WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07007390 }
7391
7392 /* If a request handles itself well it will end up in a success or in a
7393 pending
7394 Success - means that the request was processed and the proper state
7395 transition already occurred or will occur when the resp is received
7396 - NO other state transition or dequeueing is required
Jeff Johnsone7245742012-09-05 17:12:55 -07007397
Jeff Johnson295189b2012-06-20 16:38:30 -07007398 Pending - means the request could not be processed at this moment in time
7399 because the FSM was already busy so no state transition or dequeueing
7400 is necessary anymore
Jeff Johnsone7245742012-09-05 17:12:55 -07007401
Jeff Johnson295189b2012-06-20 16:38:30 -07007402 Success for synchronous case means that the transition may occur and
7403 processing of pending requests may continue - so it should go through
7404 and restores the state and continue processing queued requests*/
7405 if (( WDI_STATUS_SUCCESS != wdiStatus )&&
7406 ( WDI_STATUS_PENDING != wdiStatus ))
7407 {
7408 if ( WDI_RESPONSE_EVENT != wdiEV)
7409 {
7410 /*The request has failed or could not be processed - transition back to
7411 the old state - check to see if anything was queued and try to execute
7412 The dequeue logic should post a message to a thread and return - no
7413 actual processing can occur */
7414 WDI_STATE_TRANSITION( pWDICtx, wdiOldState);
7415 }
7416 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007417
Jeff Johnson295189b2012-06-20 16:38:30 -07007418 }
7419
7420 /* we have completed processing the event */
7421 wpalMutexRelease(&pWDICtx->wptMutex);
7422
Jeff Johnsone7245742012-09-05 17:12:55 -07007423 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007424
7425}/*WDI_PostMainEvent*/
7426
7427
7428/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007429 INIT State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007430--------------------------------------------------------------------------*/
7431/**
7432 @brief Main FSM Start function for all states except BUSY
7433
Jeff Johnsone7245742012-09-05 17:12:55 -07007434
7435 @param pWDICtx: pointer to the WLAN DAL context
7436 pEventData: pointer to the event information structure
7437
Jeff Johnson295189b2012-06-20 16:38:30 -07007438 @see
7439 @return Result of the function call
7440*/
7441WDI_Status
7442WDI_MainStart
Jeff Johnsone7245742012-09-05 17:12:55 -07007443(
Jeff Johnson295189b2012-06-20 16:38:30 -07007444 WDI_ControlBlockType* pWDICtx,
7445 WDI_EventInfoType* pEventData
7446)
7447{
7448
7449 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007450 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007451 ----------------------------------------------------------------------*/
7452 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7453 {
7454 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007455 "Invalid parameters on Main Start Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007456 pWDICtx, pEventData);
7457 return WDI_STATUS_E_FAILURE;
7458 }
7459
7460 wpalMutexAcquire(&pWDICtx->wptMutex);
7461
7462 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007463 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007464 ----------------------------------------------------------------------*/
7465 if ( eWLAN_PAL_FALSE == pWDICtx->bCTOpened )
7466 {
7467 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7468 "Control Transport not yet Open - queueing the request");
7469
7470 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -07007471 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007472
7473 wpalMutexRelease(&pWDICtx->wptMutex);
7474 return WDI_STATUS_PENDING;
7475 }
Jeff Johnsone7245742012-09-05 17:12:55 -07007476
Jeff Johnson295189b2012-06-20 16:38:30 -07007477 wpalMutexRelease(&pWDICtx->wptMutex);
7478
7479 /*Return Success*/
7480 return WDI_ProcessRequest( pWDICtx, pEventData );
7481
7482}/*WDI_MainStart*/
7483
7484/**
7485 @brief Main FSM Response function for state INIT
7486
Jeff Johnsone7245742012-09-05 17:12:55 -07007487
7488 @param pWDICtx: pointer to the WLAN DAL context
7489 pEventData: pointer to the event information structure
7490
Jeff Johnson295189b2012-06-20 16:38:30 -07007491 @see
7492 @return Result of the function call
7493*/
7494WDI_Status
7495WDI_MainRspInit
Jeff Johnsone7245742012-09-05 17:12:55 -07007496(
Jeff Johnson295189b2012-06-20 16:38:30 -07007497 WDI_ControlBlockType* pWDICtx,
7498 WDI_EventInfoType* pEventData
7499)
7500{
7501 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007502 Not expecting a response from the device before it is started
Jeff Johnson295189b2012-06-20 16:38:30 -07007503 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007504 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -07007505
7506 /*Return Success*/
7507 return WDI_STATUS_E_NOT_ALLOWED;
7508}/* WDI_MainRspInit */
7509
7510/**
7511 @brief Main FSM Close function for all states except BUSY
7512
Jeff Johnsone7245742012-09-05 17:12:55 -07007513
7514 @param pWDICtx: pointer to the WLAN DAL context
7515 pEventData: pointer to the event information structure
7516
Jeff Johnson295189b2012-06-20 16:38:30 -07007517 @see
7518 @return Result of the function call
7519*/
7520WDI_Status
7521WDI_MainClose
Jeff Johnsone7245742012-09-05 17:12:55 -07007522(
Jeff Johnson295189b2012-06-20 16:38:30 -07007523 WDI_ControlBlockType* pWDICtx,
7524 WDI_EventInfoType* pEventData
7525)
7526{
7527
7528 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007529 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007530 ----------------------------------------------------------------------*/
7531 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7532 {
7533 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007534 "Invalid parameters on Main Close %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007535 pWDICtx, pEventData);
7536 return WDI_STATUS_E_FAILURE;
7537 }
7538
7539 /*Return Success*/
7540 return WDI_ProcessRequest( pWDICtx, pEventData );
7541
7542}/*WDI_MainClose*/
7543/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007544 STARTED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007545--------------------------------------------------------------------------*/
7546/**
7547 @brief Main FSM Start function for state STARTED
7548
Jeff Johnsone7245742012-09-05 17:12:55 -07007549
7550 @param pWDICtx: pointer to the WLAN DAL context
7551 pEventData: pointer to the event information structure
7552
Jeff Johnson295189b2012-06-20 16:38:30 -07007553 @see
7554 @return Result of the function call
7555*/
7556WDI_Status
7557WDI_MainStartStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007558(
Jeff Johnson295189b2012-06-20 16:38:30 -07007559 WDI_ControlBlockType* pWDICtx,
7560 WDI_EventInfoType* pEventData
7561)
7562{
7563 WDI_StartRspCb wdiStartRspCb = NULL;
7564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
7565
7566 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007567 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007568 ----------------------------------------------------------------------*/
7569 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7570 {
7571 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007572 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007573 pWDICtx, pEventData);
7574 return WDI_STATUS_E_FAILURE;
7575 }
7576
7577 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007578 Nothing to do transport was already started
Jeff Johnson295189b2012-06-20 16:38:30 -07007579 ----------------------------------------------------------------------*/
7580 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -07007581 "Received start while transport was already started - nothing to do");
Jeff Johnson295189b2012-06-20 16:38:30 -07007582
7583 wpalMutexAcquire(&pWDICtx->wptMutex);
7584
7585 /*Transition back to started because the post function transitioned us to
7586 busy*/
7587 WDI_STATE_TRANSITION( pWDICtx, WDI_STARTED_ST);
7588
7589 /*Check to see if any request is pending*/
7590 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -07007591
Jeff Johnson295189b2012-06-20 16:38:30 -07007592 wpalMutexRelease(&pWDICtx->wptMutex);
7593
7594 /*Tell UMAC Success*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007595 wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc;
7596
Jeff Johnson295189b2012-06-20 16:38:30 -07007597 /*Notify UMAC*/
Anand N Sunkad0f2c21f2015-06-05 16:07:28 +05307598 wdiStartRspCb( &pWDICtx->wdiCachedStartRspParams, pEventData->pUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007599
7600 /*Return Success*/
7601 return WDI_STATUS_SUCCESS;
7602
7603}/*WDI_MainStartStarted*/
7604
7605/**
7606 @brief Main FSM Stop function for state STARTED
7607
Jeff Johnsone7245742012-09-05 17:12:55 -07007608
7609 @param pWDICtx: pointer to the WLAN DAL context
7610 pEventData: pointer to the event information structure
7611
Jeff Johnson295189b2012-06-20 16:38:30 -07007612 @see
7613 @return Result of the function call
7614*/
7615WDI_Status
7616WDI_MainStopStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007617(
Jeff Johnson295189b2012-06-20 16:38:30 -07007618 WDI_ControlBlockType* pWDICtx,
7619 WDI_EventInfoType* pEventData
7620)
7621{
7622 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007623 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007624 ----------------------------------------------------------------------*/
7625 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7626 {
7627 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007628 "Invalid parameters on Main Stop Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007629 pWDICtx, pEventData);
7630 return WDI_STATUS_E_FAILURE;
7631 }
7632
7633 /*State at this point is BUSY - because we enter this state before posting
7634 an event to the FSM in order to prevent potential race conditions*/
7635
7636 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
7637 "Processing stop request in FSM");
7638
7639 /*Return Success*/
7640 return WDI_ProcessRequest( pWDICtx, pEventData );
7641
7642}/*WDI_MainStopStarted*/
7643/**
7644 @brief Main FSM Request function for state started
7645
Jeff Johnsone7245742012-09-05 17:12:55 -07007646
7647 @param pWDICtx: pointer to the WLAN DAL context
7648 pEventData: pointer to the event information structure
7649
Jeff Johnson295189b2012-06-20 16:38:30 -07007650 @see
7651 @return Result of the function call
7652*/
7653WDI_Status
7654WDI_MainReqStarted
Jeff Johnsone7245742012-09-05 17:12:55 -07007655(
Jeff Johnson295189b2012-06-20 16:38:30 -07007656 WDI_ControlBlockType* pWDICtx,
7657 WDI_EventInfoType* pEventData
7658)
7659{
7660
7661 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007662 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007663 ----------------------------------------------------------------------*/
7664 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7665 {
7666 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007667 "Invalid parameters on Main Req Started %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007668 pWDICtx, pEventData);
7669 return WDI_STATUS_E_FAILURE;
7670 }
7671
7672 /*State at this point is BUSY - because we enter this state before posting
7673 an event to the FSM in order to prevent potential race conditions*/
7674
7675 /*Return Success*/
7676 return WDI_ProcessRequest( pWDICtx, pEventData );
7677
7678}/*WDI_MainReqStarted*/
7679
7680/**
7681 @brief Main FSM Response function for all states except INIT
7682
Jeff Johnsone7245742012-09-05 17:12:55 -07007683
7684 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -07007685 pEventData: pointer to the event information structure
Jeff Johnsone7245742012-09-05 17:12:55 -07007686
Jeff Johnson295189b2012-06-20 16:38:30 -07007687 @see
7688 @return Result of the function call
7689*/
7690WDI_Status
7691WDI_MainRsp
Jeff Johnsone7245742012-09-05 17:12:55 -07007692(
Jeff Johnson295189b2012-06-20 16:38:30 -07007693 WDI_ControlBlockType* pWDICtx,
7694 WDI_EventInfoType* pEventData
7695)
7696{
Jeff Johnsone7245742012-09-05 17:12:55 -07007697 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07007698 wpt_boolean expectedResponse;
7699
7700 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007701 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007702 ----------------------------------------------------------------------*/
7703 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7704 {
7705 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007706 "Invalid parameters on Main Response %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007707 pWDICtx, pEventData);
7708 return WDI_STATUS_E_FAILURE;
7709 }
7710
7711 if ( pEventData->wdiResponse == pWDICtx->wdiExpectedResponse )
7712 {
7713 /* we received an expected response */
7714 expectedResponse = eWLAN_PAL_TRUE;
7715
7716 /*We expect that we will transition to started after this processing*/
7717 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
7718
7719 /* we are no longer expecting a response */
7720 pWDICtx->wdiExpectedResponse = WDI_MAX_RESP;
7721 }
7722 else
7723 {
7724 /* we received an indication or unexpected response */
7725 expectedResponse = eWLAN_PAL_FALSE;
7726 /* for indications no need to update state from what it is right
7727 now, unless it explicitly does it in the indication handler (say
7728 for device failure ind) */
7729 pWDICtx->ucExpectedStateTransition = pWDICtx->uGlobalState;
7730 }
7731
7732 /*Process the response and indication */
7733 wdiStatus = WDI_ProcessResponse( pWDICtx, pEventData );
7734
7735 /*Lock the CB as we are about to do a state transition*/
7736 wpalMutexAcquire(&pWDICtx->wptMutex);
7737
7738 /*Transition to the expected state after the response processing
7739 - this should always be started state with the following exceptions:
7740 1. processing of a failed start response
7741 2. device failure detected while processing response
7742 3. stop response received*/
7743 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
Jeff Johnsone7245742012-09-05 17:12:55 -07007744
Jeff Johnson295189b2012-06-20 16:38:30 -07007745 /*Dequeue request that may have been queued while we were waiting for the
7746 response */
7747 if ( expectedResponse )
7748 {
Jeff Johnsone7245742012-09-05 17:12:55 -07007749 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -07007750 }
7751
7752 wpalMutexRelease(&pWDICtx->wptMutex);
7753
7754 /*Return Success - always */
Jeff Johnsone7245742012-09-05 17:12:55 -07007755 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07007756
7757}/*WDI_MainRsp*/
7758
7759/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007760 STOPPED State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007761--------------------------------------------------------------------------*/
7762/**
7763 @brief Main FSM Stop function for state STOPPED
7764
Jeff Johnsone7245742012-09-05 17:12:55 -07007765
7766 @param pWDICtx: pointer to the WLAN DAL context
7767 pEventData: pointer to the event information structure
7768
Jeff Johnson295189b2012-06-20 16:38:30 -07007769 @see
7770 @return Result of the function call
7771*/
7772WDI_Status
7773WDI_MainStopStopped
Jeff Johnsone7245742012-09-05 17:12:55 -07007774(
Jeff Johnson295189b2012-06-20 16:38:30 -07007775 WDI_ControlBlockType* pWDICtx,
7776 WDI_EventInfoType* pEventData
7777)
7778{
7779 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007780 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007781 ----------------------------------------------------------------------*/
7782 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7783 {
7784 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007785 "Invalid parameters on Main Stop Stopped %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007786 pWDICtx, pEventData);
7787 return WDI_STATUS_E_FAILURE;
7788 }
7789
7790 /*We should normally not get a STOP request if we are already stopped
7791 since we should normally be stopped by the UMAC. However in some
7792 error situations we put ourselves in the stopped state without the
7793 UMAC knowing, so when we get a STOP request in this state we still
7794 process it since we need to clean up the underlying state */
7795 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
7796 "Processing stop request while stopped in FSM");
7797
7798 /*Return Success*/
7799 return WDI_ProcessRequest( pWDICtx, pEventData );
7800
7801}/*WDI_MainStopStopped*/
7802
7803/*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007804 BUSY State Functions
Jeff Johnson295189b2012-06-20 16:38:30 -07007805--------------------------------------------------------------------------*/
7806/**
7807 @brief Main FSM Start function for state BUSY
7808
Jeff Johnsone7245742012-09-05 17:12:55 -07007809
7810 @param pWDICtx: pointer to the WLAN DAL context
7811 pEventData: pointer to the event information structure
7812
Jeff Johnson295189b2012-06-20 16:38:30 -07007813 @see
7814 @return Result of the function call
7815*/
7816WDI_Status
7817WDI_MainStartBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007818(
Jeff Johnson295189b2012-06-20 16:38:30 -07007819 WDI_ControlBlockType* pWDICtx,
7820 WDI_EventInfoType* pEventData
7821)
7822{
7823 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007824 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007825 ----------------------------------------------------------------------*/
7826 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7827 {
7828 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007829 "Invalid parameters on Main Start in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007830 pWDICtx, pEventData);
7831 return WDI_STATUS_E_FAILURE;
7832 }
7833
7834 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007835 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007836 ----------------------------------------------------------------------*/
7837 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7838 "WDI Busy state - queue start request");
7839
7840 /*Queue the start request*/
Jeff Johnsone7245742012-09-05 17:12:55 -07007841 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007842
7843 /*Return Success*/
7844 return WDI_STATUS_PENDING;
7845}/*WDI_MainStartBusy*/
7846
7847/**
7848 @brief Main FSM Stop function for state BUSY
7849
Jeff Johnsone7245742012-09-05 17:12:55 -07007850
7851 @param pWDICtx: pointer to the WLAN DAL context
7852 pEventData: pointer to the event information structure
7853
Jeff Johnson295189b2012-06-20 16:38:30 -07007854 @see
7855 @return Result of the function call
7856*/
7857WDI_Status
7858WDI_MainStopBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007859(
Jeff Johnson295189b2012-06-20 16:38:30 -07007860 WDI_ControlBlockType* pWDICtx,
7861 WDI_EventInfoType* pEventData
7862)
7863{
7864 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007865 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007866 ----------------------------------------------------------------------*/
7867 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7868 {
7869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007870 "Invalid parameters on Main Stop in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007871 pWDICtx, pEventData);
7872 return WDI_STATUS_E_FAILURE;
7873 }
7874
7875 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007876 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007877 ----------------------------------------------------------------------*/
7878 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7879 "WDI Busy state - queue stop request");
7880
Jeff Johnsone7245742012-09-05 17:12:55 -07007881 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007882 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007883
Jeff Johnson295189b2012-06-20 16:38:30 -07007884}/*WDI_MainStopBusy*/
7885
7886/**
7887 @brief Main FSM Request function for state BUSY
7888
Jeff Johnsone7245742012-09-05 17:12:55 -07007889
7890 @param pWDICtx: pointer to the WLAN DAL context
7891 pEventData: pointer to the event information structure
7892
Jeff Johnson295189b2012-06-20 16:38:30 -07007893 @see
7894 @return Result of the function call
7895*/
7896WDI_Status
7897WDI_MainReqBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007898(
Jeff Johnson295189b2012-06-20 16:38:30 -07007899 WDI_ControlBlockType* pWDICtx,
7900 WDI_EventInfoType* pEventData
7901)
7902{
7903 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007904 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007905 ----------------------------------------------------------------------*/
7906 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7907 {
7908 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007909 "Invalid parameters on Main Request in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007910 pWDICtx, pEventData);
7911 return WDI_STATUS_E_FAILURE;
7912 }
7913
7914 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007915 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007916 ----------------------------------------------------------------------*/
7917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7918 "WDI Busy state - queue request %d because waiting for response %d",
7919 pEventData->wdiRequest, pWDICtx->wdiExpectedResponse);
7920
Jeff Johnsone7245742012-09-05 17:12:55 -07007921 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007922 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007923
Jeff Johnson295189b2012-06-20 16:38:30 -07007924}/*WDI_MainReqBusy*/
7925/**
7926 @brief Main FSM Close function for state BUSY
7927
Jeff Johnsone7245742012-09-05 17:12:55 -07007928
7929 @param pWDICtx: pointer to the WLAN DAL context
7930 pEventData: pointer to the event information structure
7931
Jeff Johnson295189b2012-06-20 16:38:30 -07007932 @see
7933 @return Result of the function call
7934*/
7935WDI_Status
7936WDI_MainCloseBusy
Jeff Johnsone7245742012-09-05 17:12:55 -07007937(
Jeff Johnson295189b2012-06-20 16:38:30 -07007938 WDI_ControlBlockType* pWDICtx,
7939 WDI_EventInfoType* pEventData
7940)
7941{
7942 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007943 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -07007944 ----------------------------------------------------------------------*/
7945 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7946 {
7947 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007948 "Invalid parameters on Main Close in BUSY %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007949 pWDICtx, pEventData);
7950 return WDI_STATUS_E_FAILURE;
7951 }
7952
7953 /*--------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07007954 Check if the Control Transport has been opened
Jeff Johnson295189b2012-06-20 16:38:30 -07007955 ----------------------------------------------------------------------*/
7956 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
7957 "WDI Busy state - queue close request");
7958
Jeff Johnsone7245742012-09-05 17:12:55 -07007959 WDI_QueuePendingReq( pWDICtx, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07007960 return WDI_STATUS_PENDING;
Jeff Johnsone7245742012-09-05 17:12:55 -07007961
Jeff Johnson295189b2012-06-20 16:38:30 -07007962}/*WDI_MainCloseBusy*/
7963
7964/**
7965 @brief Main FSM Shutdown function for INIT & STARTED states
7966
7967
7968 @param pWDICtx: pointer to the WLAN DAL context
7969 pEventData: pointer to the event information structure
7970
7971 @see
7972 @return Result of the function call
7973*/
7974WDI_Status
7975WDI_MainShutdown
7976(
7977 WDI_ControlBlockType* pWDICtx,
7978 WDI_EventInfoType* pEventData
7979)
7980{
7981 /*--------------------------------------------------------------------
7982 Sanity Check
7983 ----------------------------------------------------------------------*/
7984 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
7985 {
7986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08007987 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07007988 pWDICtx, pEventData);
7989 return WDI_STATUS_E_FAILURE;
7990 }
7991
7992 /*State at this point is BUSY - because we enter this state before posting
7993 an event to the FSM in order to prevent potential race conditions*/
7994
7995 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
7996 "Processing shutdown request in FSM");
7997
7998 /*Return Success*/
7999 return WDI_ProcessRequest( pWDICtx, pEventData );
8000
8001}/*WDI_MainShutdown*/
8002
8003/**
8004 @brief Main FSM Shutdown function for BUSY state
8005
8006
8007 @param pWDICtx: pointer to the WLAN DAL context
8008 pEventData: pointer to the event information structure
8009
8010 @see
8011 @return Result of the function call
8012*/
8013WDI_Status
8014WDI_MainShutdownBusy
8015(
8016 WDI_ControlBlockType* pWDICtx,
8017 WDI_EventInfoType* pEventData
8018)
8019{
8020 /*--------------------------------------------------------------------
8021 Sanity Check
8022 ----------------------------------------------------------------------*/
8023 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
8024 {
8025 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008026 "Invalid parameters on Main Start %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008027 pWDICtx, pEventData);
8028 return WDI_STATUS_E_FAILURE;
8029 }
8030
8031 /* If you are waiting for a HAL response at this stage, you are not
8032 * going to get it. Riva is already shutdown/crashed.
8033 */
8034 wpalTimerStop(&gWDICb.wptResponseTimer);
8035
8036 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
8037 "Processing shutdown request in FSM: Busy state ");
8038
8039 return WDI_ProcessRequest( pWDICtx, pEventData );
8040
8041}/*WDI_MainShutdownBusy*/
8042
8043
Jeff Johnsone7245742012-09-05 17:12:55 -07008044/*=======================================================================
8045
Jeff Johnson295189b2012-06-20 16:38:30 -07008046 WLAN DAL Control Path Main Processing Functions
Jeff Johnsone7245742012-09-05 17:12:55 -07008047
Jeff Johnson295189b2012-06-20 16:38:30 -07008048*=======================================================================*/
8049
8050/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008051 Main DAL Control Path Request Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -07008052========================================================================*/
8053/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008054 @brief Process Start Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008055 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008056
8057 @param pWDICtx: pointer to the WLAN DAL context
8058 pEventData: pointer to the event information structure
8059
Jeff Johnson295189b2012-06-20 16:38:30 -07008060 @see
8061 @return Result of the function call
8062*/
8063WDI_Status
8064WDI_ProcessStartReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008065(
Jeff Johnson295189b2012-06-20 16:38:30 -07008066 WDI_ControlBlockType* pWDICtx,
8067 WDI_EventInfoType* pEventData
8068)
8069{
8070 WDI_StartReqParamsType* pwdiStartParams = NULL;
8071 WDI_StartRspCb wdiStartRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008072 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008073 wpt_uint16 usDataOffset = 0;
8074 wpt_uint16 usSendSize = 0;
8075
Jeff Johnsone7245742012-09-05 17:12:55 -07008076 tHalMacStartReqMsg halStartReq;
8077 wpt_uint16 usLen = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008078 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8079
8080 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008081 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008082 -------------------------------------------------------------------------*/
8083 if (( NULL == pEventData ) ||
8084 ( NULL == (pwdiStartParams = (WDI_StartReqParamsType*)pEventData->pEventData)) ||
8085 ( NULL == (wdiStartRspCb = (WDI_StartRspCb)pEventData->pCBfnc)))
8086 {
8087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008091 }
8092
8093 /*-----------------------------------------------------------------------
8094 Get message buffer
8095 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008096 usLen = sizeof(halStartReq.startReqParams) +
Jeff Johnson295189b2012-06-20 16:38:30 -07008097 pwdiStartParams->usConfigBufferLen;
8098
Jeff Johnsone7245742012-09-05 17:12:55 -07008099 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008100 usLen,
8101 &pSendBuffer, &usDataOffset, &usSendSize))||
8102 ( usSendSize < (usDataOffset + usLen )))
8103 {
8104 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008105 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008106 pEventData, pwdiStartParams, wdiStartRspCb);
8107 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008108 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008109 }
8110
8111 /*-----------------------------------------------------------------------
8112 Fill in the message
8113 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008114 halStartReq.startReqParams.driverType =
8115 WDI_2_HAL_DRV_TYPE(pwdiStartParams->wdiDriverType);
Jeff Johnson295189b2012-06-20 16:38:30 -07008116
Jeff Johnsone7245742012-09-05 17:12:55 -07008117 halStartReq.startReqParams.uConfigBufferLen =
8118 pwdiStartParams->usConfigBufferLen;
8119 wpalMemoryCopy( pSendBuffer+usDataOffset,
8120 &halStartReq.startReqParams,
8121 sizeof(halStartReq.startReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008122
Jeff Johnsone7245742012-09-05 17:12:55 -07008123 usDataOffset += sizeof(halStartReq.startReqParams);
8124 wpalMemoryCopy( pSendBuffer+usDataOffset,
8125 pwdiStartParams->pConfigBuffer,
8126 pwdiStartParams->usConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -07008127
8128 pWDICtx->wdiReqStatusCB = pwdiStartParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008129 pWDICtx->pReqStatusUserData = pwdiStartParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008130
8131 /*Save Low Level Ind CB and associated user data - it will be used further
8132 on when an indication is coming from the lower MAC*/
8133 pWDICtx->wdiLowLevelIndCB = pwdiStartParams->wdiLowLevelIndCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008134 pWDICtx->pIndUserData = pwdiStartParams->pIndUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008135
Jeff Johnsone7245742012-09-05 17:12:55 -07008136 pWDICtx->bFrameTransEnabled = pwdiStartParams->bFrameTransEnabled;
Jeff Johnson295189b2012-06-20 16:38:30 -07008137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008138 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008139 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008140 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008141 wdiStartRspCb, pEventData->pUserData, WDI_START_RESP);
8142
Jeff Johnsone7245742012-09-05 17:12:55 -07008143
Jeff Johnson295189b2012-06-20 16:38:30 -07008144}/*WDI_ProcessStartReq*/
8145
8146/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008147 @brief Process Stop Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008148 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008149
8150 @param pWDICtx: pointer to the WLAN DAL context
8151 pEventData: pointer to the event information structure
8152
Jeff Johnson295189b2012-06-20 16:38:30 -07008153 @see
8154 @return Result of the function call
8155*/
8156WDI_Status
8157WDI_ProcessStopReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008158(
Jeff Johnson295189b2012-06-20 16:38:30 -07008159 WDI_ControlBlockType* pWDICtx,
8160 WDI_EventInfoType* pEventData
8161)
8162{
8163 WDI_StopReqParamsType* pwdiStopParams = NULL;
8164 WDI_StopRspCb wdiStopRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008165 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008166 wpt_uint16 usDataOffset = 0;
8167 wpt_uint16 usSendSize = 0;
Jeff Johnson43971f52012-07-17 12:26:56 -07008168 wpt_status status;
Jeff Johnsone7245742012-09-05 17:12:55 -07008169 tHalMacStopReqMsg halStopReq;
Jeff Johnson295189b2012-06-20 16:38:30 -07008170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8171
8172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008174 -------------------------------------------------------------------------*/
8175 if (( NULL == pEventData ) ||
8176 ( NULL == (pwdiStopParams = (WDI_StopReqParamsType*)pEventData->pEventData)) ||
8177 ( NULL == (wdiStopRspCb = (WDI_StopRspCb)pEventData->pCBfnc)))
8178 {
8179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008180 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008181 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008182 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008183 }
8184
8185 /*-----------------------------------------------------------------------
8186 Get message buffer
8187 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008188 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_STOP_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008189 sizeof(halStopReq.stopReqParams),
8190 &pSendBuffer, &usDataOffset, &usSendSize))||
8191 ( usSendSize < (usDataOffset + sizeof(halStopReq.stopReqParams) )))
8192 {
8193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008194 "Unable to get send buffer in stop req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008195 pEventData, pwdiStopParams, wdiStopRspCb);
8196 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008197 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -07008198 }
8199
8200 /*-----------------------------------------------------------------------
8201 Fill in the message
8202 -----------------------------------------------------------------------*/
8203 halStopReq.stopReqParams.reason = WDI_2_HAL_STOP_REASON(
8204 pwdiStopParams->wdiStopReason);
8205
Jeff Johnsone7245742012-09-05 17:12:55 -07008206 wpalMemoryCopy( pSendBuffer+usDataOffset,
8207 &halStopReq.stopReqParams,
8208 sizeof(halStopReq.stopReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008209
8210 pWDICtx->wdiReqStatusCB = pwdiStopParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008211 pWDICtx->pReqStatusUserData = pwdiStopParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008212
8213 /*! TO DO: stop the data services */
8214 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8215 {
8216 /*Stop the STA Table !UT- check this logic again
8217 It is safer to do it here than on the response - because a stop is imminent*/
8218 WDI_STATableStop(pWDICtx);
8219
8220 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -07008221 status = wpalEventReset(&pWDICtx->setPowerStateEvent);
8222 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008223 {
8224 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8225 "WDI Init failed to reset power state event");
8226
Jeff Johnsone7245742012-09-05 17:12:55 -07008227 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008228 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008229 }
8230 /* Stop Transport Driver, DXE */
Ravali85acf6b2012-12-12 14:01:38 -08008231 status = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_DOWN, WDI_SetPowerStateCb);
8232 if( eWLAN_PAL_STATUS_SUCCESS != status )
8233 {
8234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008235 "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 -08008236 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008237 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -08008238 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008239 /*
Jeff Johnsone7245742012-09-05 17:12:55 -07008240 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -07008241 */
Jeff Johnson43971f52012-07-17 12:26:56 -07008242 status = wpalEventWait(&pWDICtx->setPowerStateEvent,
8243 WDI_SET_POWER_STATE_TIMEOUT);
8244 if (eWLAN_PAL_STATUS_SUCCESS != status)
Jeff Johnson295189b2012-06-20 16:38:30 -07008245 {
Abhishek Singh5edbb9b2016-04-06 11:55:33 +05308246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -07008247 "WDI Init failed to wait on an event");
8248
Abhishek Singh5edbb9b2016-04-06 11:55:33 +05308249 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008250 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -07008251 }
8252 }
8253
8254 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008255 Send Stop Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008256 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008257 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008258 wdiStopRspCb, pEventData->pUserData, WDI_STOP_RESP);
8259
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08008260fail:
8261 // Release the message buffer so we don't leak
8262 wpalMemoryFree(pSendBuffer);
8263
8264failRequest:
8265 //WDA should have failure check to avoid the memory leak
8266 return WDI_STATUS_E_FAILURE;
8267
Jeff Johnson295189b2012-06-20 16:38:30 -07008268}/*WDI_ProcessStopReq*/
8269
8270/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008271 @brief Process Close Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008272 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008273
8274 @param pWDICtx: pointer to the WLAN DAL context
8275 pEventData: pointer to the event information structure
8276
Jeff Johnson295189b2012-06-20 16:38:30 -07008277 @see
8278 @return Result of the function call
8279*/
8280WDI_Status
8281WDI_ProcessCloseReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008282(
Jeff Johnson295189b2012-06-20 16:38:30 -07008283 WDI_ControlBlockType* pWDICtx,
8284 WDI_EventInfoType* pEventData
8285)
8286{
Jeff Johnsone7245742012-09-05 17:12:55 -07008287 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07008288 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8289
8290 /*Lock control block for cleanup*/
8291 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008292
Jeff Johnson295189b2012-06-20 16:38:30 -07008293 /*Clear all pending request*/
8294 WDI_ClearPendingRequests(pWDICtx);
8295
8296 /* Close Control transport*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008297 WCTS_CloseTransport(pWDICtx->wctsHandle);
Jeff Johnson295189b2012-06-20 16:38:30 -07008298
8299 /* Close Data transport*/
8300 /* FTM mode does not open Data Path */
8301 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
8302 {
8303 WDTS_Close(pWDICtx);
8304 }
8305
8306 /*Close the STA Table !UT- check this logic again*/
8307 WDI_STATableClose(pWDICtx);
8308
8309 /*close the PAL */
8310 wptStatus = wpalClose(pWDICtx->pPALContext);
8311 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8312 {
8313 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8314 "Failed to wpal Close %d", wptStatus);
8315 WDI_ASSERT(0);
8316 }
8317
8318 /*Transition back to init state*/
8319 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
8320
8321 wpalMutexRelease(&pWDICtx->wptMutex);
8322
8323 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008324 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008325
Jeff Johnsone7245742012-09-05 17:12:55 -07008326 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07008327}/*WDI_ProcessCloseReq*/
8328
8329
8330/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008331 SCANING REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07008332===========================================================================*/
8333
8334/**
8335 @brief Process Init Scan Request function (called when Main FSM
8336 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008337
8338 @param pWDICtx: pointer to the WLAN DAL context
8339 pEventData: pointer to the event information structure
8340
Jeff Johnson295189b2012-06-20 16:38:30 -07008341 @see
8342 @return Result of the function call
8343*/
8344WDI_Status
8345WDI_ProcessInitScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008346(
Jeff Johnson295189b2012-06-20 16:38:30 -07008347 WDI_ControlBlockType* pWDICtx,
8348 WDI_EventInfoType* pEventData
8349)
8350{
8351 WDI_InitScanReqParamsType* pwdiInitScanParams = NULL;
8352 WDI_InitScanRspCb wdiInitScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008353 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008354 wpt_uint16 usDataOffset = 0;
8355 wpt_uint16 usSendSize = 0;
8356 wpt_uint8 i = 0;
8357
8358 tHalInitScanReqMsg halInitScanReqMsg;
8359
Jeff Johnsone7245742012-09-05 17:12:55 -07008360 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008361 * It shold be removed once host and riva changes are in sync*/
8362 tHalInitScanConReqMsg halInitScanConReqMsg;
8363
8364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8365
8366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008368 -------------------------------------------------------------------------*/
8369 if (( NULL == pEventData ) ||
8370 ( NULL == (pwdiInitScanParams = (WDI_InitScanReqParamsType*)pEventData->pEventData)) ||
8371 ( NULL == (wdiInitScanRspCb = (WDI_InitScanRspCb)pEventData->pCBfnc)))
8372 {
8373 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008374 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008375 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008376 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008377 }
8378
8379#if 0
8380 wpalMutexAcquire(&pWDICtx->wptMutex);
8381 /*-----------------------------------------------------------------------
8382 Check to see if SCAN is already in progress - if so reject the req
8383 We only allow one scan at a time
Jeff Johnsone7245742012-09-05 17:12:55 -07008384 ! TO DO: - revisit this constraint
Jeff Johnson295189b2012-06-20 16:38:30 -07008385 -----------------------------------------------------------------------*/
8386 if ( pWDICtx->bScanInProgress )
8387 {
8388 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8389 "Scan is already in progress - subsequent scan is not allowed"
8390 " until the first scan completes");
8391
8392 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008393 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008394 }
8395
Jeff Johnsone7245742012-09-05 17:12:55 -07008396 pWDICtx->bScanInProgress = eWLAN_PAL_TRUE;
8397 pWDICtx->uScanState = WDI_SCAN_INITIALIZED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008398
8399 wpalMutexRelease(&pWDICtx->wptMutex);
8400#endif
Viral Modid86bde22012-12-10 13:09:21 -08008401 if ((pwdiInitScanParams->wdiReqInfo.bUseNOA) && (!WDI_getFwWlanFeatCaps(P2P_GO_NOA_DECOUPLE_INIT_SCAN)))
Jeff Johnson295189b2012-06-20 16:38:30 -07008402 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008403 /*This is temporary fix.
Jeff Johnson295189b2012-06-20 16:38:30 -07008404 * It shold be removed once host and riva changes are in sync*/
8405 /*-----------------------------------------------------------------------
8406 Get message buffer
8407 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_CON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008409 sizeof(halInitScanConReqMsg.initScanParams),
8410 &pSendBuffer, &usDataOffset, &usSendSize))||
8411 ( usSendSize < (usDataOffset + sizeof(halInitScanConReqMsg.initScanParams) )))
8412 {
8413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008414 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008415 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008418 }
8419
8420
8421 /*-----------------------------------------------------------------------
8422 Fill in the message
8423 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008424 halInitScanConReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008425 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8426
8427 wpalMemoryCopy(halInitScanConReqMsg.initScanParams.bssid,
8428 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8429
Jeff Johnsone7245742012-09-05 17:12:55 -07008430 halInitScanConReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008431 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008432 halInitScanConReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008433 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008434 halInitScanConReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008435 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8436
8437 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanConReqMsg.initScanParams.macMgmtHdr,
8438 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8439
Jeff Johnson295189b2012-06-20 16:38:30 -07008440 halInitScanConReqMsg.initScanParams.useNoA = pwdiInitScanParams->wdiReqInfo.bUseNOA;
8441 halInitScanConReqMsg.initScanParams.scanDuration = pwdiInitScanParams->wdiReqInfo.scanDuration;
Jeff Johnson295189b2012-06-20 16:38:30 -07008442
Jeff Johnsone7245742012-09-05 17:12:55 -07008443 halInitScanConReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008444 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8445
8446 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8447 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008448 halInitScanConReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008449 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8450 }
8451
Jeff Johnsone7245742012-09-05 17:12:55 -07008452 wpalMemoryCopy( pSendBuffer+usDataOffset,
8453 &halInitScanConReqMsg.initScanParams,
8454 sizeof(halInitScanConReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008455 }
8456 else
8457 {
8458 /*-----------------------------------------------------------------------
8459 Get message buffer
8460 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008461 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_INIT_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008462 sizeof(halInitScanReqMsg.initScanParams),
8463 &pSendBuffer, &usDataOffset, &usSendSize))||
8464 ( usSendSize < (usDataOffset + sizeof(halInitScanReqMsg.initScanParams) )))
8465 {
8466 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008467 "Unable to get send buffer in init scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008468 pEventData, pwdiInitScanParams, wdiInitScanRspCb);
8469 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008470 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008471 }
8472
8473
8474 /*-----------------------------------------------------------------------
8475 Fill in the message
8476 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008477 halInitScanReqMsg.initScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008478 WDI_2_HAL_SCAN_MODE(pwdiInitScanParams->wdiReqInfo.wdiScanMode);
8479
8480 wpalMemoryCopy(halInitScanReqMsg.initScanParams.bssid,
8481 pwdiInitScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8482
Jeff Johnsone7245742012-09-05 17:12:55 -07008483 halInitScanReqMsg.initScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008484 pwdiInitScanParams->wdiReqInfo.bNotifyBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -07008485 halInitScanReqMsg.initScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008486 pwdiInitScanParams->wdiReqInfo.ucFrameType;
Jeff Johnsone7245742012-09-05 17:12:55 -07008487 halInitScanReqMsg.initScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008488 pwdiInitScanParams->wdiReqInfo.ucFrameLength;
8489
8490 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halInitScanReqMsg.initScanParams.macMgmtHdr,
8491 &pwdiInitScanParams->wdiReqInfo.wdiMACMgmtHdr);
8492
Jeff Johnsone7245742012-09-05 17:12:55 -07008493 halInitScanReqMsg.initScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008494 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt;
8495
8496 for (i=0; i < pwdiInitScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8497 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008498 halInitScanReqMsg.initScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008499 pwdiInitScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i];
8500 }
8501
Jeff Johnsone7245742012-09-05 17:12:55 -07008502 wpalMemoryCopy( pSendBuffer+usDataOffset,
8503 &halInitScanReqMsg.initScanParams,
8504 sizeof(halInitScanReqMsg.initScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008505 }
8506
8507 pWDICtx->wdiReqStatusCB = pwdiInitScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008508 pWDICtx->pReqStatusUserData = pwdiInitScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008509
8510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008511 Send Init Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008512 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008513 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008514 wdiInitScanRspCb, pEventData->pUserData, WDI_INIT_SCAN_RESP);
8515
8516}/*WDI_ProcessInitScanReq*/
8517
8518/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008519 @brief Process Start Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008520 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008521
8522 @param pWDICtx: pointer to the WLAN DAL context
8523 pEventData: pointer to the event information structure
8524
Jeff Johnson295189b2012-06-20 16:38:30 -07008525 @see
8526 @return Result of the function call
8527*/
8528WDI_Status
8529WDI_ProcessStartScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008530(
Jeff Johnson295189b2012-06-20 16:38:30 -07008531 WDI_ControlBlockType* pWDICtx,
8532 WDI_EventInfoType* pEventData
8533)
8534{
8535 WDI_StartScanReqParamsType* pwdiStartScanParams = NULL;
8536 WDI_StartScanRspCb wdiStartScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008537 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008538 wpt_uint16 usDataOffset = 0;
8539 wpt_uint16 usSendSize = 0;
8540
Jeff Johnsone7245742012-09-05 17:12:55 -07008541 tHalStartScanReqMsg halStartScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008542 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8543
8544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008545 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008546 -------------------------------------------------------------------------*/
8547 if (( NULL == pEventData ) ||
8548 ( NULL == (pwdiStartScanParams = (WDI_StartScanReqParamsType*)pEventData->pEventData)) ||
8549 ( NULL == (wdiStartScanRspCb = (WDI_StartScanRspCb)pEventData->pCBfnc)))
8550 {
8551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008552 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008553 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008554 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008555 }
8556
8557#if 0
8558 wpalMutexAcquire(&pWDICtx->wptMutex);
8559 /*-----------------------------------------------------------------------
8560 Check to see if SCAN is already in progress - start scan is only
8561 allowed when a scan is ongoing and the state of the scan procedure
Jeff Johnsone7245742012-09-05 17:12:55 -07008562 is either init or end
Jeff Johnson295189b2012-06-20 16:38:30 -07008563 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008564 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008565 (( WDI_SCAN_INITIALIZED_ST != pWDICtx->uScanState ) &&
8566 ( WDI_SCAN_ENDED_ST != pWDICtx->uScanState )))
8567 {
8568 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8569 "Scan start not allowed in this state %d %d",
8570 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008571
Jeff Johnson295189b2012-06-20 16:38:30 -07008572 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008573 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008574 }
8575
Jeff Johnsone7245742012-09-05 17:12:55 -07008576 pWDICtx->uScanState = WDI_SCAN_STARTED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008577
8578 wpalMutexRelease(&pWDICtx->wptMutex);
8579#endif
8580
8581 /*-----------------------------------------------------------------------
8582 Get message buffer
8583 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008584 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_START_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008585 sizeof(halStartScanReqMsg.startScanParams),
8586 &pSendBuffer, &usDataOffset, &usSendSize))||
8587 ( usSendSize < (usDataOffset + sizeof(halStartScanReqMsg.startScanParams) )))
8588 {
8589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008590 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008591 pEventData, pwdiStartScanParams, wdiStartScanRspCb);
8592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008594 }
8595
Jeff Johnsone7245742012-09-05 17:12:55 -07008596 halStartScanReqMsg.startScanParams.scanChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008597 pwdiStartScanParams->ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -07008598 wpalMemoryCopy( pSendBuffer+usDataOffset,
8599 &halStartScanReqMsg.startScanParams,
8600 sizeof(halStartScanReqMsg.startScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008601
8602 pWDICtx->wdiReqStatusCB = pwdiStartScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008603 pWDICtx->pReqStatusUserData = pwdiStartScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008604
8605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008606 Send Start Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008609 wdiStartScanRspCb, pEventData->pUserData, WDI_START_SCAN_RESP);
8610}/*WDI_ProcessStartScanReq*/
8611
8612
8613/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008614 @brief Process End Scan Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008615 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008616
8617 @param pWDICtx: pointer to the WLAN DAL context
8618 pEventData: pointer to the event information structure
8619
Jeff Johnson295189b2012-06-20 16:38:30 -07008620 @see
8621 @return Result of the function call
8622*/
8623WDI_Status
8624WDI_ProcessEndScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008625(
Jeff Johnson295189b2012-06-20 16:38:30 -07008626 WDI_ControlBlockType* pWDICtx,
8627 WDI_EventInfoType* pEventData
8628)
8629{
8630 WDI_EndScanReqParamsType* pwdiEndScanParams = NULL;
8631 WDI_EndScanRspCb wdiEndScanRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008632 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008633 wpt_uint16 usDataOffset = 0;
8634 wpt_uint16 usSendSize = 0;
8635
Jeff Johnsone7245742012-09-05 17:12:55 -07008636 tHalEndScanReqMsg halEndScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008637 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8638
8639 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008640 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008641 -------------------------------------------------------------------------*/
8642 if (( NULL == pEventData ) ||
8643 ( NULL == (pwdiEndScanParams = (WDI_EndScanReqParamsType*)pEventData->pEventData)) ||
8644 ( NULL == (wdiEndScanRspCb = (WDI_EndScanRspCb)pEventData->pCBfnc)))
8645 {
8646 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008647 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008648 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008649 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008650 }
8651
Jeff Johnsone7245742012-09-05 17:12:55 -07008652 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8653 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008654 * forwarded to HAL and result in hang*/
8655#if 0
8656 wpalMutexAcquire(&pWDICtx->wptMutex);
8657 /*-----------------------------------------------------------------------
8658 Check to see if SCAN is already in progress - end scan is only
8659 allowed when a scan is ongoing and the state of the scan procedure
8660 is started
8661 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008662 if (( !pWDICtx->bScanInProgress ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07008663 ( WDI_SCAN_STARTED_ST != pWDICtx->uScanState ))
8664 {
8665 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8666 "End start not allowed in this state %d %d",
8667 pWDICtx->bScanInProgress, pWDICtx->uScanState);
Jeff Johnsone7245742012-09-05 17:12:55 -07008668
Jeff Johnson295189b2012-06-20 16:38:30 -07008669 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008670 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008671 }
8672
Jeff Johnsone7245742012-09-05 17:12:55 -07008673 pWDICtx->uScanState = WDI_SCAN_ENDED_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008674
8675 wpalMutexRelease(&pWDICtx->wptMutex);
8676#endif
8677
8678 /*-----------------------------------------------------------------------
8679 Get message buffer
8680 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_END_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008682 sizeof(halEndScanReqMsg.endScanParams),
8683 &pSendBuffer, &usDataOffset, &usSendSize))||
8684 ( usSendSize < (usDataOffset + sizeof(halEndScanReqMsg.endScanParams) )))
8685 {
8686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008687 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008688 pEventData, pwdiEndScanParams, wdiEndScanRspCb);
8689 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008690 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008691 }
8692
8693 halEndScanReqMsg.endScanParams.scanChannel = pwdiEndScanParams->ucChannel;
8694
Jeff Johnsone7245742012-09-05 17:12:55 -07008695 wpalMemoryCopy( pSendBuffer+usDataOffset,
8696 &halEndScanReqMsg.endScanParams,
8697 sizeof(halEndScanReqMsg.endScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008698
8699 pWDICtx->wdiReqStatusCB = pwdiEndScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008700 pWDICtx->pReqStatusUserData = pwdiEndScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008701
8702 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008703 Send End Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008704 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008705 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008706 wdiEndScanRspCb, pEventData->pUserData, WDI_END_SCAN_RESP);
8707}/*WDI_ProcessEndScanReq*/
8708
8709
8710/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008711 @brief Process Finish Scan Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07008712 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008713
8714 @param pWDICtx: pointer to the WLAN DAL context
8715 pEventData: pointer to the event information structure
8716
Jeff Johnson295189b2012-06-20 16:38:30 -07008717 @see
8718 @return Result of the function call
8719*/
8720WDI_Status
8721WDI_ProcessFinishScanReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008722(
Jeff Johnson295189b2012-06-20 16:38:30 -07008723 WDI_ControlBlockType* pWDICtx,
8724 WDI_EventInfoType* pEventData
8725)
8726{
8727 WDI_FinishScanReqParamsType* pwdiFinishScanParams;
8728 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07008729 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008730 wpt_uint16 usDataOffset = 0;
8731 wpt_uint16 usSendSize = 0;
8732 wpt_uint8 i = 0;
Ravali85acf6b2012-12-12 14:01:38 -08008733 wpt_status wptStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -07008734 tHalFinishScanReqMsg halFinishScanReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8736
8737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07008739 -------------------------------------------------------------------------*/
8740 if (( NULL == pEventData ) ||
8741 ( NULL == pEventData->pEventData) ||
8742 ( NULL == pEventData->pCBfnc))
8743 {
8744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07008745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07008746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008748 }
8749
8750 pwdiFinishScanParams = (WDI_FinishScanReqParamsType*)pEventData->pEventData;
8751 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -07008752 /* commenting this check as UMAC is sending END_SCAN_REQ after FINISH_SCAN
8753 * sometimes because of this check the scan request is not being
Jeff Johnson295189b2012-06-20 16:38:30 -07008754 * forwarded to HAL and result in hang*/
8755#if 0
8756 wpalMutexAcquire(&pWDICtx->wptMutex);
8757 /*-----------------------------------------------------------------------
8758 Check to see if SCAN is already in progress
8759 Finish scan gets invoked any scan states. ie. abort scan
8760 It should be allowed in any states.
8761 -----------------------------------------------------------------------*/
8762 if ( !pWDICtx->bScanInProgress )
8763 {
8764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
8765 "Finish start not allowed in this state %d",
8766 pWDICtx->bScanInProgress );
8767
8768 wpalMutexRelease(&pWDICtx->wptMutex);
Ravali85acf6b2012-12-12 14:01:38 -08008769 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008770 }
8771
8772 /*-----------------------------------------------------------------------
8773 It is safe to reset the scan flags here because until the response comes
Jeff Johnsone7245742012-09-05 17:12:55 -07008774 back all subsequent requests will be blocked at BUSY state
Jeff Johnson295189b2012-06-20 16:38:30 -07008775 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008776 pWDICtx->uScanState = WDI_SCAN_FINISHED_ST;
8777 pWDICtx->bScanInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008778 wpalMutexRelease(&pWDICtx->wptMutex);
8779#endif
8780
8781 if ( pWDICtx->bInBmps )
8782 {
8783 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -08008784 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, NULL);
8785 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
8786 {
8787 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -08008788 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -08008789 WDI_ASSERT(0);
8790 }
Jeff Johnson295189b2012-06-20 16:38:30 -07008791 }
8792
8793 /*-----------------------------------------------------------------------
8794 Get message buffer
8795 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008796 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FINISH_SCAN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008797 sizeof(halFinishScanReqMsg.finishScanParams),
8798 &pSendBuffer, &usDataOffset, &usSendSize))||
8799 ( usSendSize < (usDataOffset + sizeof(halFinishScanReqMsg.finishScanParams) )))
8800 {
8801 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008802 "Unable to get send buffer in start scan req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008803 pEventData, pwdiFinishScanParams, wdiFinishScanRspCb);
8804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008806 }
8807
Jeff Johnsone7245742012-09-05 17:12:55 -07008808 halFinishScanReqMsg.finishScanParams.scanMode =
Jeff Johnson295189b2012-06-20 16:38:30 -07008809 WDI_2_HAL_SCAN_MODE(pwdiFinishScanParams->wdiReqInfo.wdiScanMode);
8810
Jeff Johnsone7245742012-09-05 17:12:55 -07008811 halFinishScanReqMsg.finishScanParams.currentOperChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008812 pwdiFinishScanParams->wdiReqInfo.ucCurrentOperatingChannel;
8813
Jeff Johnsone7245742012-09-05 17:12:55 -07008814 halFinishScanReqMsg.finishScanParams.cbState =
Jeff Johnson295189b2012-06-20 16:38:30 -07008815 WDI_2_HAL_CB_STATE(pwdiFinishScanParams->wdiReqInfo.wdiCBState);
8816
8817 wpalMemoryCopy(halFinishScanReqMsg.finishScanParams.bssid,
8818 pwdiFinishScanParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
8819
Jeff Johnsone7245742012-09-05 17:12:55 -07008820 halFinishScanReqMsg.finishScanParams.notifyBss =
Jeff Johnson295189b2012-06-20 16:38:30 -07008821 pwdiFinishScanParams->wdiReqInfo.bNotifyBSS ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008822 halFinishScanReqMsg.finishScanParams.frameType =
Jeff Johnson295189b2012-06-20 16:38:30 -07008823 pwdiFinishScanParams->wdiReqInfo.ucFrameType ;
Jeff Johnsone7245742012-09-05 17:12:55 -07008824 halFinishScanReqMsg.finishScanParams.frameLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07008825 pwdiFinishScanParams->wdiReqInfo.ucFrameLength ;
8826
Jeff Johnsone7245742012-09-05 17:12:55 -07008827 halFinishScanReqMsg.finishScanParams.scanEntry.activeBSScnt =
Jeff Johnson295189b2012-06-20 16:38:30 -07008828 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt ;
8829
8830 for (i = 0; i < pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.activeBSScnt; i++)
8831 {
Jeff Johnsone7245742012-09-05 17:12:55 -07008832 halFinishScanReqMsg.finishScanParams.scanEntry.bssIdx[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -07008833 pwdiFinishScanParams->wdiReqInfo.wdiScanEntry.bssIdx[i] ;
8834 }
8835
8836 WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr( &halFinishScanReqMsg.finishScanParams.macMgmtHdr,
8837 &pwdiFinishScanParams->wdiReqInfo.wdiMACMgmtHdr);
8838
Jeff Johnsone7245742012-09-05 17:12:55 -07008839 wpalMemoryCopy( pSendBuffer+usDataOffset,
8840 &halFinishScanReqMsg.finishScanParams,
8841 sizeof(halFinishScanReqMsg.finishScanParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008842
8843 pWDICtx->wdiReqStatusCB = pwdiFinishScanParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008844 pWDICtx->pReqStatusUserData = pwdiFinishScanParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008845
8846 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008847 Send Finish Scan Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008848 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008849 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07008850 wdiFinishScanRspCb, pEventData->pUserData, WDI_FINISH_SCAN_RESP);
8851}/*WDI_ProcessFinishScanReq*/
8852
8853
8854/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07008855 ASSOCIATION REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -07008856==========================================================================*/
8857/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008858 @brief Process BSS Join for a given Session
8859
8860 @param pWDICtx: pointer to the WLAN DAL context
8861 pEventData: pointer to the event information structure
8862
Jeff Johnson295189b2012-06-20 16:38:30 -07008863 @see
8864 @return Result of the function call
8865*/
8866WDI_Status
8867WDI_ProcessBSSSessionJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07008868(
Jeff Johnson295189b2012-06-20 16:38:30 -07008869 WDI_ControlBlockType* pWDICtx,
8870 WDI_JoinReqParamsType* pwdiJoinParams,
8871 WDI_JoinRspCb wdiJoinRspCb,
8872 void* pUserData
8873)
8874{
8875 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07008876 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07008877 wpt_uint16 usDataOffset = 0;
8878 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07008879 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07008880
Jeff Johnsone7245742012-09-05 17:12:55 -07008881 tHalJoinReqMsg halJoinReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07008882 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
8883
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008884 wpalMutexAcquire(&pWDICtx->wptMutex);
8885
Jeff Johnson295189b2012-06-20 16:38:30 -07008886 /*------------------------------------------------------------------------
8887 Check to see if we have any session with this BSSID already stored, we
8888 should not
8889 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008890 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
8891 pwdiJoinParams->wdiReqInfo.macBSSID,
8892 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008893
8894 if ( NULL != pBSSSes )
8895 {
8896 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008897 "Association for this BSSID: " MAC_ADDRESS_STR " is already in place",
8898 MAC_ADDR_ARRAY(pwdiJoinParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07008899
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008900 /*reset the bAssociationInProgress otherwise the next
8901 *join request will be queued*/
8902 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
8903 wpalMutexRelease(&pWDICtx->wptMutex);
8904 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07008905 }
8906
Jeff Johnson295189b2012-06-20 16:38:30 -07008907 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008908 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07008909 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008910 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07008911 if ( NULL == pBSSSes )
8912 {
8913
8914 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
8915 "DAL has no free sessions - cannot run another join");
8916
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -07008917 /*reset the bAssociationInProgress otherwise the next
8918 *join request will be queued*/
8919 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008920 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07008921 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008922 }
8923
8924 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008925 pBSSSes->bInUse = eWLAN_PAL_TRUE;
8926 wpalMemoryCopy( pBSSSes->macBSSID, pwdiJoinParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07008927 WDI_MAC_ADDR_LEN);
8928
8929 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008930 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07008931 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -07008932
Jeff Johnson295189b2012-06-20 16:38:30 -07008933 wpalMutexRelease(&pWDICtx->wptMutex);
8934
8935 /*-----------------------------------------------------------------------
8936 Get message buffer
8937 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008938 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_JOIN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07008939 sizeof(halJoinReqMsg.joinReqParams),
8940 &pSendBuffer, &usDataOffset, &usSendSize))||
8941 ( usSendSize < (usDataOffset + sizeof(halJoinReqMsg.joinReqParams) )))
8942 {
8943 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08008944 "Unable to get send buffer in join req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07008945 pUserData, pwdiJoinParams, wdiJoinRspCb);
8946 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07008947 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07008948 }
8949
8950 wpalMemoryCopy(halJoinReqMsg.joinReqParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -07008951 pwdiJoinParams->wdiReqInfo.macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008952
8953 wpalMemoryCopy(halJoinReqMsg.joinReqParams.selfStaMacAddr,
Jeff Johnsone7245742012-09-05 17:12:55 -07008954 pwdiJoinParams->wdiReqInfo.macSTASelf,
8955 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -07008956
Jeff Johnsone7245742012-09-05 17:12:55 -07008957 halJoinReqMsg.joinReqParams.ucChannel =
Jeff Johnson295189b2012-06-20 16:38:30 -07008958 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucChannel;
8959
8960 halJoinReqMsg.joinReqParams.linkState = pwdiJoinParams->wdiReqInfo.linkState;
8961
Madan Mohan Koyyalamudi83b12822012-11-02 12:43:10 -07008962#ifdef WLAN_FEATURE_VOWIFI
8963 halJoinReqMsg.joinReqParams.maxTxPower =
8964 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.cMaxTxPower;
8965#else
Jeff Johnsone7245742012-09-05 17:12:55 -07008966 halJoinReqMsg.joinReqParams.ucLocalPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -07008967 pwdiJoinParams->wdiReqInfo.wdiChannelInfo.ucLocalPowerConstraint;
8968#endif
8969
Jeff Johnsone7245742012-09-05 17:12:55 -07008970 halJoinReqMsg.joinReqParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -07008971 WDI_2_HAL_SEC_CH_OFFSET(pwdiJoinParams->wdiReqInfo.wdiChannelInfo.
8972 wdiSecondaryChannelOffset);
8973
Jeff Johnsone7245742012-09-05 17:12:55 -07008974 wpalMemoryCopy( pSendBuffer+usDataOffset,
8975 &halJoinReqMsg.joinReqParams,
8976 sizeof(halJoinReqMsg.joinReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07008977
8978 pWDICtx->wdiReqStatusCB = pwdiJoinParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07008979 pWDICtx->pReqStatusUserData = pwdiJoinParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07008980
8981 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07008982 Send Join Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07008983 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07008984 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
8985 wdiJoinRspCb, pUserData, WDI_JOIN_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07008986
8987}/*WDI_ProcessBSSSessionJoinReq*/
8988
8989/**
Jeff Johnsone7245742012-09-05 17:12:55 -07008990 @brief Process Join Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07008991 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07008992
8993 @param pWDICtx: pointer to the WLAN DAL context
8994 pEventData: pointer to the event information structure
8995
Jeff Johnson295189b2012-06-20 16:38:30 -07008996 @see
8997 @return Result of the function call
8998*/
8999WDI_Status
9000WDI_ProcessJoinReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009001(
Jeff Johnson295189b2012-06-20 16:38:30 -07009002 WDI_ControlBlockType* pWDICtx,
9003 WDI_EventInfoType* pEventData
9004)
9005{
9006 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9007 WDI_JoinReqParamsType* pwdiJoinParams = NULL;
9008 WDI_JoinRspCb wdiJoinRspCb = NULL;
9009 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9010
9011 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009012 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009013 -------------------------------------------------------------------------*/
9014 if (( NULL == pEventData ) ||
9015 ( NULL == (pwdiJoinParams = (WDI_JoinReqParamsType*)pEventData->pEventData)) ||
9016 ( NULL == (wdiJoinRspCb = (WDI_JoinRspCb)pEventData->pCBfnc)))
9017 {
9018 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009019 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009020 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009021 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009022 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009023
Jeff Johnson295189b2012-06-20 16:38:30 -07009024 /*-------------------------------------------------------------------------
9025 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009026 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009027 -------------------------------------------------------------------------*/
9028 wpalMutexAcquire(&pWDICtx->wptMutex);
9029
9030 if ( eWLAN_PAL_FALSE != pWDICtx->bAssociationInProgress )
9031 {
9032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9033 "Association is currently in progress, queueing new join req");
9034
9035 /*Association is in progress - queue current one*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009036 wdiStatus = WDI_QueueNewAssocRequest(pWDICtx, pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009037 pwdiJoinParams->wdiReqInfo.macBSSID);
9038
9039 wpalMutexRelease(&pWDICtx->wptMutex);
9040
Jeff Johnsone7245742012-09-05 17:12:55 -07009041 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009042 }
9043
9044 /*Starting a new association */
9045 pWDICtx->bAssociationInProgress = eWLAN_PAL_TRUE;
9046 wpalMutexRelease(&pWDICtx->wptMutex);
9047
9048 /*Process the Join Request*/
9049 return WDI_ProcessBSSSessionJoinReq( pWDICtx, pwdiJoinParams,
9050 wdiJoinRspCb,pEventData->pUserData);
9051
9052}/*WDI_ProcessJoinReq*/
9053
9054
9055/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009056 @brief Process Config BSS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009057 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009058
9059 @param pWDICtx: pointer to the WLAN DAL context
9060 pEventData: pointer to the event information structure
9061
Jeff Johnson295189b2012-06-20 16:38:30 -07009062 @see
9063 @return Result of the function call
9064*/
9065WDI_Status
9066WDI_ProcessConfigBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009067(
Jeff Johnson295189b2012-06-20 16:38:30 -07009068 WDI_ControlBlockType* pWDICtx,
9069 WDI_EventInfoType* pEventData
9070)
9071{
9072 WDI_ConfigBSSReqParamsType* pwdiConfigBSSParams;
9073 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009074 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009075 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009076 wpt_uint16 uMsgSize = 0;
9077 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009078 wpt_uint16 usDataOffset = 0;
9079 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009080 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009081
Jeff Johnsone7245742012-09-05 17:12:55 -07009082 tConfigBssReqMsg halConfigBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9084
9085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009087 -------------------------------------------------------------------------*/
9088 if (( NULL == pEventData ) ||
9089 ( NULL == pEventData->pEventData ) ||
9090 ( NULL == pEventData->pCBfnc ))
9091 {
9092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009096 }
9097
Abhishek Singh6927fa02014-06-27 17:19:55 +05309098 wpalMemoryZero(&halConfigBssReqMsg, sizeof(tConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009099 pwdiConfigBSSParams = (WDI_ConfigBSSReqParamsType*)pEventData->pEventData;
9100 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pEventData->pCBfnc;
9101 /*-------------------------------------------------------------------------
9102 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009103 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009104 -------------------------------------------------------------------------*/
9105 wpalMutexAcquire(&pWDICtx->wptMutex);
9106
9107 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009108 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009109 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009110 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9111 pwdiConfigBSSParams->wdiReqInfo.macBSSID,
9112 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009113
Jeff Johnsone7245742012-09-05 17:12:55 -07009114 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009115 {
9116#ifdef WLAN_FEATURE_VOWIFI_11R
9117 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009118 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009119 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009120 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009121 if ( NULL == pBSSSes )
9122 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009123
Jeff Johnson295189b2012-06-20 16:38:30 -07009124 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9125 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009126
Jeff Johnson295189b2012-06-20 16:38:30 -07009127 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009128 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009129 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009130
Jeff Johnson295189b2012-06-20 16:38:30 -07009131 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009132 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9133 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009134 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009135
Jeff Johnson295189b2012-06-20 16:38:30 -07009136 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009137 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009138 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9139#else
Jeff Johnsone7245742012-09-05 17:12:55 -07009140 /* If the BSS type is IBSS create the session here as there is no Join
Jeff Johnson295189b2012-06-20 16:38:30 -07009141 * Request in case of IBSS*/
9142 if((pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_IBSS_MODE) ||
9143 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_INFRA_AP_MODE) ||
9144 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_AP_MODE) ||
9145 (pwdiConfigBSSParams->wdiReqInfo.wdiBSSType == WDI_BTAMP_STA_MODE))
9146 {
9147 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009148 Fetch an empty session block
Jeff Johnson295189b2012-06-20 16:38:30 -07009149 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009150 ucCurrentBSSSesIdx = WDI_FindEmptySession( pWDICtx, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009151 if ( NULL == pBSSSes )
9152 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009153
Jeff Johnson295189b2012-06-20 16:38:30 -07009154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9155 "DAL has no free sessions - cannot run another join");
Jeff Johnsone7245742012-09-05 17:12:55 -07009156
Jeff Johnson295189b2012-06-20 16:38:30 -07009157 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009158 return WDI_STATUS_RES_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009159 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009160
Jeff Johnson295189b2012-06-20 16:38:30 -07009161 /*Save BSS Session Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009162 pBSSSes->bInUse = eWLAN_PAL_TRUE;
9163 wpalMemoryCopy( pBSSSes->macBSSID, pwdiConfigBSSParams->wdiReqInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -07009164 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -07009165
Jeff Johnson295189b2012-06-20 16:38:30 -07009166 /*Transition to state Joining*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009167 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -07009168 pWDICtx->ucCurrentBSSSesIdx = ucCurrentBSSSesIdx;
9169 }
9170 else
9171 {
9172 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009173 "%s: Association sequence for this BSS does not yet exist." MAC_ADDRESS_STR "wdiBssType %d",
9174 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9175 pwdiConfigBSSParams->wdiReqInfo.wdiBSSType);
9176
Jeff Johnson295189b2012-06-20 16:38:30 -07009177 /* for IBSS testing */
9178 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009179 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009180 }
9181#endif
9182 }
9183
9184 /*------------------------------------------------------------------------
9185 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009186 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009187 ------------------------------------------------------------------------*/
9188 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9189 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009190 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9191 "%s: Association sequence for this BSS exists but currently queued. " MAC_ADDRESS_STR " bssIdx %d",
9192 __func__, MAC_ADDR_ARRAY(pwdiConfigBSSParams->wdiReqInfo.macBSSID),
9193 ucCurrentBSSSesIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009194
Jeff Johnsone7245742012-09-05 17:12:55 -07009195 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009196
9197 wpalMutexRelease(&pWDICtx->wptMutex);
9198
Jeff Johnsone7245742012-09-05 17:12:55 -07009199 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009200 }
9201
9202 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -07009203 wpalMemoryCopy(&pWDICtx->wdiCachedConfigBssReq,
9204 pwdiConfigBSSParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009205 sizeof(pWDICtx->wdiCachedConfigBssReq));
9206
9207 wpalMutexRelease(&pWDICtx->wptMutex);
9208
Jeff Johnsone7245742012-09-05 17:12:55 -07009209 /* Allocation of BssReqMsg Memory Based on Firmware Capabilities */
9210#ifdef WLAN_FEATURE_11AC
9211 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009212 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams_V1); // Version - 1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -07009213 else
9214#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -07009215 uMsgSize = sizeof(halConfigBssReqMsg.uBssParams.configBssParams); // default Version - 0 Structure
Jeff Johnson295189b2012-06-20 16:38:30 -07009216
9217 /*-----------------------------------------------------------------------
9218 Get message buffer
9219 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009220 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009221 uMsgSize, &pSendBuffer, &usDataOffset, &usSendSize))||
9222 ( usSendSize < (usDataOffset + uMsgSize )))
9223 {
9224 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009225 "Unable to get send buffer in config bss req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009226 pEventData, pwdiConfigBSSParams, wdiConfigBSSRspCb);
9227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009229 }
9230
9231 /*Copy the BSS request */
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -07009232#ifdef WLAN_FEATURE_11AC
9233 if (WDI_getFwWlanFeatCaps(DOT11AC))
9234 WDI_CopyWDIConfigBSSToHALConfigBSS( (tConfigBssParams*)&halConfigBssReqMsg.uBssParams.configBssParams_V1,
9235 &pwdiConfigBSSParams->wdiReqInfo);
9236 else
9237#endif
Jeff Johnsone7245742012-09-05 17:12:55 -07009238 WDI_CopyWDIConfigBSSToHALConfigBSS( &halConfigBssReqMsg.uBssParams.configBssParams,
Jeff Johnson295189b2012-06-20 16:38:30 -07009239 &pwdiConfigBSSParams->wdiReqInfo);
9240
9241 /* Need to fill in the STA Index to invalid, since at this point we have not
9242 yet received it from HAL */
Jeff Johnsone7245742012-09-05 17:12:55 -07009243 halConfigBssReqMsg.uBssParams.configBssParams.staContext.staIdx = WDI_STA_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -07009244
9245 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009246 halConfigBssReqMsg.uBssParams.configBssParams.staContext.bssIdx = pBSSSes->ucBSSIdx;
9247
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009248#ifdef WLAN_FEATURE_11AC
9249 if (WDI_getFwWlanFeatCaps(DOT11AC)){
9250 wpalMemoryCopy( pSendBuffer+usDataOffset,
9251 &halConfigBssReqMsg.uBssParams.configBssParams_V1,
9252 uMsgSize);
9253 }else
9254#endif
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009255 {
9256 if ( uMsgSize <= sizeof(tConfigBssParams) )
9257 {
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -07009258 wpalMemoryCopy( pSendBuffer+usDataOffset,
Tushnim Bhattacharyya5dd94562013-03-20 20:15:03 -07009259 &halConfigBssReqMsg.uBssParams.configBssParams,
9260 uMsgSize);
9261 }
9262 else
9263 {
9264 return WDI_STATUS_E_FAILURE;
9265 }
9266 }
Jeff Johnson295189b2012-06-20 16:38:30 -07009267
9268 pWDICtx->wdiReqStatusCB = pwdiConfigBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009269 pWDICtx->pReqStatusUserData = pwdiConfigBSSParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309270 wpalMemoryZero(&halConfigBssReqMsg, sizeof(halConfigBssReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009271 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009272 Send Config BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009273 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009274 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9275 wdiConfigBSSRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -07009276 WDI_CONFIG_BSS_RESP);
9277
9278}/*WDI_ProcessConfigBSSReq*/
9279
9280
9281/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009282 @brief Process Del BSS Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009283 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009284
9285 @param pWDICtx: pointer to the WLAN DAL context
9286 pEventData: pointer to the event information structure
9287
Jeff Johnson295189b2012-06-20 16:38:30 -07009288 @see
9289 @return Result of the function call
9290*/
9291WDI_Status
9292WDI_ProcessDelBSSReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009293(
Jeff Johnson295189b2012-06-20 16:38:30 -07009294 WDI_ControlBlockType* pWDICtx,
9295 WDI_EventInfoType* pEventData
9296)
9297{
9298 WDI_DelBSSReqParamsType* pwdiDelBSSParams = NULL;
9299 WDI_DelBSSRspCb wdiDelBSSRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009300 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009301 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009302 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009303 wpt_uint16 usDataOffset = 0;
9304 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009305 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009306
Jeff Johnsone7245742012-09-05 17:12:55 -07009307 tDeleteBssReqMsg halBssReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9309
9310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009312 -------------------------------------------------------------------------*/
9313 if (( NULL == pEventData ) ||
9314 ( NULL == (pwdiDelBSSParams = (WDI_DelBSSReqParamsType*)pEventData->pEventData)) ||
9315 ( NULL == (wdiDelBSSRspCb = (WDI_DelBSSRspCb)pEventData->pCBfnc)))
9316 {
9317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009321 }
9322
9323 /*-------------------------------------------------------------------------
9324 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009325 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009326 -------------------------------------------------------------------------*/
9327 wpalMutexAcquire(&pWDICtx->wptMutex);
9328
9329 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009330 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009331 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009332 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9333 pwdiDelBSSParams->ucBssIdx,
9334 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009335
Jeff Johnsone7245742012-09-05 17:12:55 -07009336 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009337 {
9338 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009339 "%s: BSS does not yet exist. ucBssIdx %d",
9340 __func__, pwdiDelBSSParams->ucBssIdx);
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009341
9342 wpalMutexRelease(&pWDICtx->wptMutex);
9343
9344 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009345 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009346
9347 /*------------------------------------------------------------------------
9348 Check if this BSS is being currently processed or queued,
9349 if queued - queue the new request as well
9350 ------------------------------------------------------------------------*/
9351 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
Jeff Johnson295189b2012-06-20 16:38:30 -07009352 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009353 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9354 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9355 __func__, pwdiDelBSSParams->ucBssIdx);
9356
9357 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
9358
9359 wpalMutexRelease(&pWDICtx->wptMutex);
9360
9361 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009362 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009363
Jeff Johnson295189b2012-06-20 16:38:30 -07009364 /*-----------------------------------------------------------------------
9365 If we receive a Del BSS request for an association that is already in
9366 progress, it indicates that the assoc has failed => we no longer have
9367 an association in progress => we must check for pending associations
Jeff Johnsone7245742012-09-05 17:12:55 -07009368 that were queued and start as soon as the Del BSS response is received
Jeff Johnson295189b2012-06-20 16:38:30 -07009369 -----------------------------------------------------------------------*/
9370 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
9371 {
9372 /*We can switch to false here because even if a subsequent Join comes in
9373 it will only be processed when DAL transitions out of BUSY state which
9374 happens when the Del BSS request comes */
9375 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
9376
9377 /*Former association is complete - prepare next pending assoc for
9378 processing */
9379 WDI_DequeueAssocRequest(pWDICtx);
9380 }
9381
9382 wpalMutexRelease(&pWDICtx->wptMutex);
9383 /*-----------------------------------------------------------------------
9384 Get message buffer
9385 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009386 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BSS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009387 sizeof(halBssReqMsg.deleteBssParams),
9388 &pSendBuffer, &usDataOffset, &usSendSize))||
9389 ( usSendSize < (usDataOffset + sizeof(halBssReqMsg.deleteBssParams) )))
9390 {
9391 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009392 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009393 pEventData, pwdiDelBSSParams, wdiDelBSSRspCb);
9394 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009395 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009396 }
9397
9398 /*Fill in the message request structure*/
9399
9400 /*BSS Index is saved on config BSS response and Post Assoc Response */
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -08009401 halBssReqMsg.deleteBssParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009402
Jeff Johnsone7245742012-09-05 17:12:55 -07009403 wpalMemoryCopy( pSendBuffer+usDataOffset,
9404 &halBssReqMsg.deleteBssParams,
9405 sizeof(halBssReqMsg.deleteBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009406
9407 pWDICtx->wdiReqStatusCB = pwdiDelBSSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009408 pWDICtx->pReqStatusUserData = pwdiDelBSSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009409
Jeff Johnsone7245742012-09-05 17:12:55 -07009410
Jeff Johnson295189b2012-06-20 16:38:30 -07009411 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009412 Send Del BSS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009413 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009414 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009415 wdiDelBSSRspCb, pEventData->pUserData, WDI_DEL_BSS_RESP);
9416
Jeff Johnsone7245742012-09-05 17:12:55 -07009417
Jeff Johnson295189b2012-06-20 16:38:30 -07009418}/*WDI_ProcessDelBSSReq*/
9419
9420/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009421 @brief Process Post Assoc Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009422 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009423
9424 @param pWDICtx: pointer to the WLAN DAL context
9425 pEventData: pointer to the event information structure
9426
Jeff Johnson295189b2012-06-20 16:38:30 -07009427 @see
9428 @return Result of the function call
9429*/
9430WDI_Status
9431WDI_ProcessPostAssocReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009432(
Jeff Johnson295189b2012-06-20 16:38:30 -07009433 WDI_ControlBlockType* pWDICtx,
9434 WDI_EventInfoType* pEventData
9435)
9436{
9437 WDI_PostAssocReqParamsType* pwdiPostAssocParams = NULL;
9438 WDI_PostAssocRspCb wdiPostAssocRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009439 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009440 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009441 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009442 wpt_uint16 usDataOffset = 0;
9443 wpt_uint16 usSendSize = 0;
9444 wpt_uint16 uMsgSize = 0;
9445 wpt_uint16 uOffset = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009446 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009447
Jeff Johnsone7245742012-09-05 17:12:55 -07009448 tPostAssocReqMsg halPostAssocReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009449 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9450
9451 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009452 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009453 -------------------------------------------------------------------------*/
9454 if (( NULL == pEventData ) ||
9455 ( NULL == (pwdiPostAssocParams = (WDI_PostAssocReqParamsType*)pEventData->pEventData)) ||
9456 ( NULL == (wdiPostAssocRspCb = (WDI_PostAssocRspCb)pEventData->pCBfnc)))
9457 {
9458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009459 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009460 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009461 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009462 }
9463
9464 /*-------------------------------------------------------------------------
9465 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009466 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009467 -------------------------------------------------------------------------*/
9468 wpalMutexAcquire(&pWDICtx->wptMutex);
9469
9470 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009471 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009472 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009473 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
9474 pwdiPostAssocParams->wdiBSSParams.macBSSID,
9475 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009476
9477 if ( NULL == pBSSSes )
9478 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009479 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9480 "%s: Association sequence for this BSS does not yet exist - "
9481 "operation not allowed. macBSSID " MAC_ADDRESS_STR,
9482 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009483
9484 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009485 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009486 }
9487
9488 /*------------------------------------------------------------------------
9489 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009490 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009491 ------------------------------------------------------------------------*/
9492 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9493 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009494 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9495 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9496 __func__, MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009497
Jeff Johnsone7245742012-09-05 17:12:55 -07009498 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009499
9500 wpalMutexRelease(&pWDICtx->wptMutex);
9501
Jeff Johnsone7245742012-09-05 17:12:55 -07009502 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009503 }
9504
9505 /*-----------------------------------------------------------------------
9506 If Post Assoc was not yet received - the current association must
9507 be in progress
9508 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009509 if (( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -07009510 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
9511 {
9512 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9513 "Association sequence for this BSS association no longer in "
9514 "progress - not allowed");
9515
9516 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009517 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009518 }
9519
9520 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009521 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -07009522 -----------------------------------------------------------------------*/
9523 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
9524 {
9525 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9526 "Post Assoc not allowed before JOIN - failing request");
9527
9528 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009529 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009530 }
9531
9532 wpalMutexRelease(&pWDICtx->wptMutex);
9533
9534 uMsgSize = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams) +
9535 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams) ;
9536 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009537 Fill message for tx over the bus
Jeff Johnson295189b2012-06-20 16:38:30 -07009538 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009539 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_POST_ASSOC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009540 uMsgSize,&pSendBuffer, &usDataOffset, &usSendSize))||
9541 ( usSendSize < (usDataOffset + uMsgSize )))
9542 {
9543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009544 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009545 pEventData, pwdiPostAssocParams, wdiPostAssocRspCb);
9546 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009547 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009548 }
9549
9550 /*Copy the STA parameters */
9551 WDI_CopyWDIStaCtxToHALStaCtx(&halPostAssocReqMsg.postAssocReqParams.configStaParams,
9552 &pwdiPostAssocParams->wdiSTAParams );
9553
9554 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009555 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009556 WDI_STATableFindStaidByAddr(pWDICtx,
9557 pwdiPostAssocParams->wdiSTAParams.macSTA,
9558 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configStaParams.staIdx ))
9559 {
9560 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009561 MAC_ADDRESS_STR
9562 ": This station does not exist in the WDI Station Table",
9563 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiSTAParams.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009564 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -08009565 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009566 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009567 }
9568
9569 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009570 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009571 pBSSSes->ucBSSIdx;
9572
9573 /*Copy the BSS parameters */
9574 WDI_CopyWDIConfigBSSToHALConfigBSS( &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9575 &pwdiPostAssocParams->wdiBSSParams);
9576
9577 /* Need to fill in the STA index of the peer */
Jeff Johnsone7245742012-09-05 17:12:55 -07009578 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -07009579 WDI_STATableFindStaidByAddr(pWDICtx,
9580 pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -07009581 (wpt_uint8*)&halPostAssocReqMsg.postAssocReqParams.configBssParams.staContext.staIdx))
Jeff Johnson295189b2012-06-20 16:38:30 -07009582 {
9583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009584 MAC_ADDRESS_STR
9585 ": This station does not exist in the WDI Station Table",
9586 MAC_ADDR_ARRAY(pwdiPostAssocParams->wdiBSSParams.wdiSTAContext.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -07009587 wpalMutexRelease(&pWDICtx->wptMutex);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -08009588 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -07009589 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009590 }
9591
9592 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -07009593 halPostAssocReqMsg.postAssocReqParams.configStaParams.bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -07009594 pBSSSes->ucBSSIdx;
9595
Jeff Johnsone7245742012-09-05 17:12:55 -07009596
9597 wpalMemoryCopy( pSendBuffer+usDataOffset,
9598 &halPostAssocReqMsg.postAssocReqParams.configStaParams,
9599 sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009600
9601 uOffset = sizeof(halPostAssocReqMsg.postAssocReqParams.configStaParams);
9602
Jeff Johnsone7245742012-09-05 17:12:55 -07009603 wpalMemoryCopy( pSendBuffer+usDataOffset + uOffset,
9604 &halPostAssocReqMsg.postAssocReqParams.configBssParams,
9605 sizeof(halPostAssocReqMsg.postAssocReqParams.configBssParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009606
Jeff Johnsone7245742012-09-05 17:12:55 -07009607
Jeff Johnson295189b2012-06-20 16:38:30 -07009608 pWDICtx->wdiReqStatusCB = pwdiPostAssocParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009609 pWDICtx->pReqStatusUserData = pwdiPostAssocParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009610
Jeff Johnsone7245742012-09-05 17:12:55 -07009611
9612 wpalMemoryCopy( &pWDICtx->wdiCachedPostAssocReq,
Jeff Johnson295189b2012-06-20 16:38:30 -07009613 pwdiPostAssocParams,
Jeff Johnsone7245742012-09-05 17:12:55 -07009614 sizeof(pWDICtx->wdiCachedPostAssocReq));
Jeff Johnson295189b2012-06-20 16:38:30 -07009615
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +05309616 wpalMemoryZero(&halPostAssocReqMsg, sizeof(halPostAssocReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -07009617 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009618 Send Post Assoc Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009619 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009620 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009621 wdiPostAssocRspCb, pEventData->pUserData, WDI_POST_ASSOC_RESP);
9622
Jeff Johnsone7245742012-09-05 17:12:55 -07009623
Jeff Johnson295189b2012-06-20 16:38:30 -07009624}/*WDI_ProcessPostAssocReq*/
9625
9626/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009627 @brief Process Del STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -07009628 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009629
9630 @param pWDICtx: pointer to the WLAN DAL context
9631 pEventData: pointer to the event information structure
9632
Jeff Johnson295189b2012-06-20 16:38:30 -07009633 @see
9634 @return Result of the function call
9635*/
9636WDI_Status
9637WDI_ProcessDelSTAReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009638(
Jeff Johnson295189b2012-06-20 16:38:30 -07009639 WDI_ControlBlockType* pWDICtx,
9640 WDI_EventInfoType* pEventData
9641)
9642{
9643 WDI_DelSTAReqParamsType* pwdiDelSTAParams;
9644 WDI_DelSTARspCb wdiDelSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009645 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009646 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009647 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009648 wpt_uint16 usDataOffset = 0;
9649 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009650 wpt_macAddr macBSSID;
Jeff Johnson295189b2012-06-20 16:38:30 -07009651 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
9652
Jeff Johnsone7245742012-09-05 17:12:55 -07009653 tDeleteStaReqMsg halDelStaReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -07009654 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9655
9656 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009657 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009658 -------------------------------------------------------------------------*/
9659 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9660 ( NULL == pEventData->pCBfnc ))
9661 {
9662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009663 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009664 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009665 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009666 }
9667
9668 pwdiDelSTAParams = (WDI_DelSTAReqParamsType*)pEventData->pEventData;
9669 wdiDelSTARspCb = (WDI_DelSTARspCb)pEventData->pCBfnc;
9670 /*-------------------------------------------------------------------------
9671 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009672 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009673 -------------------------------------------------------------------------*/
9674 wpalMutexAcquire(&pWDICtx->wptMutex);
9675
9676 /*------------------------------------------------------------------------
9677 Find the BSS for which the request is made and identify WDI session
9678 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009679 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
9680 pwdiDelSTAParams->ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -07009681 &macBSSID))
9682 {
9683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009684 "This station does not exist in the WDI Station Table %d",
9685 pwdiDelSTAParams->ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009686 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009687 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009688 }
9689
Jeff Johnsone7245742012-09-05 17:12:55 -07009690 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
9691 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009692 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
9694 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
9695 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009696
9697 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009698 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009699 }
9700
9701 /*------------------------------------------------------------------------
9702 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009703 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009704 ------------------------------------------------------------------------*/
9705 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9706 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9708 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
9709 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -07009710
Jeff Johnsone7245742012-09-05 17:12:55 -07009711 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009712 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009713 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009714 }
9715
9716 wpalMutexRelease(&pWDICtx->wptMutex);
9717 /*-----------------------------------------------------------------------
9718 Get message buffer
9719 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009720 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009721 sizeof(halDelStaReqMsg.delStaParams),
9722 &pSendBuffer, &usDataOffset, &usSendSize))||
9723 ( usSendSize < (usDataOffset + sizeof(halDelStaReqMsg.delStaParams) )))
9724 {
9725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009726 "Unable to get send buffer in start req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009727 pEventData, pwdiDelSTAParams, wdiDelSTARspCb);
9728 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009729 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009730 }
9731
Jeff Johnsone7245742012-09-05 17:12:55 -07009732 halDelStaReqMsg.delStaParams.staIdx = pwdiDelSTAParams->ucSTAIdx;
9733 wpalMemoryCopy( pSendBuffer+usDataOffset,
9734 &halDelStaReqMsg.delStaParams,
9735 sizeof(halDelStaReqMsg.delStaParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009736
9737 pWDICtx->wdiReqStatusCB = pwdiDelSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009738 pWDICtx->pReqStatusUserData = pwdiDelSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009739
9740 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009741 Send Del STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009742 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009743 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -07009744 wdiDelSTARspCb, pEventData->pUserData, WDI_DEL_STA_RESP);
9745
9746}/*WDI_ProcessDelSTAReq*/
9747
9748
9749/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -07009750 SECURITY REQUEST PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -07009751==========================================================================*/
9752/**
9753 @brief Process Set BSS Key Request function (called when Main FSM
9754 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009755
9756 @param pWDICtx: pointer to the WLAN DAL context
9757 pEventData: pointer to the event information structure
9758
Jeff Johnson295189b2012-06-20 16:38:30 -07009759 @see
9760 @return Result of the function call
9761*/
9762WDI_Status
9763WDI_ProcessSetBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009764(
Jeff Johnson295189b2012-06-20 16:38:30 -07009765 WDI_ControlBlockType* pWDICtx,
9766 WDI_EventInfoType* pEventData
9767)
9768{
9769 WDI_SetBSSKeyReqParamsType* pwdiSetBSSKeyParams;
9770 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009771 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009772 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009773 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009774 wpt_uint16 usDataOffset = 0;
9775 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009776 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009777 tSetBssKeyReqMsg halSetBssKeyReqMsg = {{0}};
9778 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309779 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -07009780
9781 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9782
9783 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009784 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009785 -------------------------------------------------------------------------*/
9786 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9787 ( NULL == pEventData->pCBfnc ))
9788 {
9789 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009790 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009791 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009792 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009793 }
9794
9795 pwdiSetBSSKeyParams = (WDI_SetBSSKeyReqParamsType*)pEventData->pEventData;
9796 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pEventData->pCBfnc;
9797 /*-------------------------------------------------------------------------
9798 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009799 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009800 -------------------------------------------------------------------------*/
9801 wpalMutexAcquire(&pWDICtx->wptMutex);
9802
9803 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009804 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009805 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009806 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9807 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx,
9808 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009809
Jeff Johnsone7245742012-09-05 17:12:55 -07009810 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009811 {
9812 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009813 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9814 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009815
9816 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009817 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009818 }
9819
9820 /*------------------------------------------------------------------------
9821 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009822 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009823 ------------------------------------------------------------------------*/
9824 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9825 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9827 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9828 __func__, pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009829
Jeff Johnsone7245742012-09-05 17:12:55 -07009830 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -07009831 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009832 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -07009833 }
9834
9835
9836 wpalMutexRelease(&pWDICtx->wptMutex);
9837 /*-----------------------------------------------------------------------
9838 Get message buffer
9839 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009840 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -07009841 sizeof(halSetBssKeyReqMsg.setBssKeyParams),
9842 &pSendBuffer, &usDataOffset, &usSendSize))||
9843 ( usSendSize < (usDataOffset + sizeof(halSetBssKeyReqMsg.setBssKeyParams) )))
9844 {
9845 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -08009846 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -07009847 pEventData, pwdiSetBSSKeyParams, wdiSetBSSKeyRspCb);
9848 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009849 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009850 }
9851
9852 /*-----------------------------------------------------------------------
9853 Copy the Key parameters into the HAL message
9854 -----------------------------------------------------------------------*/
9855
Jeff Johnsone7245742012-09-05 17:12:55 -07009856 halSetBssKeyReqMsg.setBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -07009857
Jeff Johnsone7245742012-09-05 17:12:55 -07009858 halSetBssKeyReqMsg.setBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -07009859 WDI_2_HAL_ENC_TYPE (pwdiSetBSSKeyParams->wdiBSSKeyInfo.wdiEncType);
9860
Jeff Johnsone7245742012-09-05 17:12:55 -07009861 halSetBssKeyReqMsg.setBssKeyParams.numKeys =
Jeff Johnson295189b2012-06-20 16:38:30 -07009862 pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys;
9863
9864 for(keyIndex = 0; keyIndex < pwdiSetBSSKeyParams->wdiBSSKeyInfo.ucNumKeys ;
9865 keyIndex++)
9866 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009867 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -07009868 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyId;
9869 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].unicast =
9870 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].unicast;
9871 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyDirection =
9872 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309873
9874 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
9875 {
9876 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
9877 {
9878 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc[i] =
9879 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc[i]);
9880 }
9881
9882 for (i = 0; i < WDI_MAX_KEY_LENGTH; i++)
9883 {
9884 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key[i] =
9885 ~(pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key[i]);
9886 }
9887
9888 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9889 "%s: Negated Keys", __func__);
9890 }
9891 else
9892 {
9893 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
9894 "%s: No change in Keys", __func__);
9895 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -07009896 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -07009897 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309898 wpalMemoryCopy(halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].key,
9899 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].key,
9900 WDI_MAX_KEY_LENGTH);
9901 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009902 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -07009903 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -07009904 halSetBssKeyReqMsg.setBssKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -07009905 pwdiSetBSSKeyParams->wdiBSSKeyInfo.aKeys[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +05309906 }
Jeff Johnsone7245742012-09-05 17:12:55 -07009907
9908 wpalMemoryCopy( pSendBuffer+usDataOffset,
9909 &halSetBssKeyReqMsg.setBssKeyParams,
9910 sizeof(halSetBssKeyReqMsg.setBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -07009911
9912 pWDICtx->wdiReqStatusCB = pwdiSetBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -07009913 pWDICtx->pReqStatusUserData = pwdiSetBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -07009914
9915 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009916 Send Set BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -07009917 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009918 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
9919 wdiSetBSSKeyRspCb, pEventData->pUserData,
9920 WDI_SET_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -07009921
9922}/*WDI_ProcessSetBssKeyReq*/
9923
9924/**
Jeff Johnsone7245742012-09-05 17:12:55 -07009925 @brief Process Remove BSS Key Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -07009926 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -07009927
9928 @param pWDICtx: pointer to the WLAN DAL context
9929 pEventData: pointer to the event information structure
9930
Jeff Johnson295189b2012-06-20 16:38:30 -07009931 @see
9932 @return Result of the function call
9933*/
9934WDI_Status
9935WDI_ProcessRemoveBssKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -07009936(
Jeff Johnson295189b2012-06-20 16:38:30 -07009937 WDI_ControlBlockType* pWDICtx,
9938 WDI_EventInfoType* pEventData
9939)
9940{
9941 WDI_RemoveBSSKeyReqParamsType* pwdiRemoveBSSKeyParams;
9942 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -07009943 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -07009944 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -07009945 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -07009946 wpt_uint16 usDataOffset = 0;
9947 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -07009948 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -07009949 tRemoveBssKeyReqMsg halRemoveBssKeyReqMsg = {{0}};
9950 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
9951
9952 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009953 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -07009954 -------------------------------------------------------------------------*/
9955 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
9956 ( NULL == pEventData->pCBfnc ))
9957 {
9958 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -07009959 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -07009960 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -07009961 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -07009962 }
9963
9964 pwdiRemoveBSSKeyParams = (WDI_RemoveBSSKeyReqParamsType*)pEventData->pEventData;
9965 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pEventData->pCBfnc;
9966 /*-------------------------------------------------------------------------
9967 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -07009968 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -07009969 -------------------------------------------------------------------------*/
9970 wpalMutexAcquire(&pWDICtx->wptMutex);
9971
9972 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -07009973 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -07009974 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -07009975 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
9976 pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx,
9977 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -07009978
Jeff Johnsone7245742012-09-05 17:12:55 -07009979 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -07009980 {
9981 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -07009982 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
9983 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009984
9985 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -07009986 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -07009987 }
9988
9989 /*------------------------------------------------------------------------
9990 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -07009991 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -07009992 ------------------------------------------------------------------------*/
9993 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
9994 {
Jeff Johnsone7245742012-09-05 17:12:55 -07009995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
9996 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
9997 __func__, pwdiRemoveBSSKeyParams->wdiKeyInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -07009998
Jeff Johnsone7245742012-09-05 17:12:55 -07009999 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010000 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010001 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010002 }
10003
10004
10005 wpalMutexRelease(&pWDICtx->wptMutex);
10006
10007 /*-----------------------------------------------------------------------
10008 Get message buffer
10009 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010010 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_BSS_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010011 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams),
10012 &pSendBuffer, &usDataOffset, &usSendSize))||
10013 ( usSendSize < (usDataOffset + sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams) )))
10014 {
10015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010016 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010017 pEventData, pwdiRemoveBSSKeyParams, wdiRemoveBSSKeyRspCb);
10018 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010019 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010020 }
10021 /*-----------------------------------------------------------------------
10022 Copy the Key parameters into the HAL message
10023 -----------------------------------------------------------------------*/
10024 halRemoveBssKeyReqMsg.removeBssKeyParams.bssIdx = ucCurrentBSSSesIdx;
10025
Jeff Johnsone7245742012-09-05 17:12:55 -070010026 halRemoveBssKeyReqMsg.removeBssKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010027 WDI_2_HAL_ENC_TYPE (pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiEncType);
10028
10029 halRemoveBssKeyReqMsg.removeBssKeyParams.keyId = pwdiRemoveBSSKeyParams->wdiKeyInfo.ucKeyId;
10030
Jeff Johnsone7245742012-09-05 17:12:55 -070010031 halRemoveBssKeyReqMsg.removeBssKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010032 WDI_2_HAL_WEP_TYPE(pwdiRemoveBSSKeyParams->wdiKeyInfo.wdiWEPType);
10033
Jeff Johnsone7245742012-09-05 17:12:55 -070010034 wpalMemoryCopy( pSendBuffer+usDataOffset,
10035 &halRemoveBssKeyReqMsg.removeBssKeyParams,
10036 sizeof(halRemoveBssKeyReqMsg.removeBssKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010037
10038 pWDICtx->wdiReqStatusCB = pwdiRemoveBSSKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010039 pWDICtx->pReqStatusUserData = pwdiRemoveBSSKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010040
10041 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010042 Send Remove BSS Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010043 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010044 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010045 wdiRemoveBSSKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010046 WDI_RMV_BSS_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010047}/*WDI_ProcessRemoveBssKeyReq*/
10048
10049/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010050 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010051 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010052
10053 @param pWDICtx: pointer to the WLAN DAL context
10054 pEventData: pointer to the event information structure
10055
Jeff Johnson295189b2012-06-20 16:38:30 -070010056 @see
10057 @return Result of the function call
10058*/
10059WDI_Status
10060WDI_ProcessSetStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010061(
Jeff Johnson295189b2012-06-20 16:38:30 -070010062 WDI_ControlBlockType* pWDICtx,
10063 WDI_EventInfoType* pEventData
10064)
10065{
10066 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10067 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10068 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010069 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010070 wpt_uint16 usDataOffset = 0;
10071 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010072 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010073 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010074 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010075 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10076 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010077 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010078
10079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10080
10081 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010082 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010083 -------------------------------------------------------------------------*/
10084 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10085 ( NULL == pEventData->pCBfnc ))
10086 {
10087 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010088 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010089 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010090 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010091 }
10092
10093 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10094 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10095 /*-------------------------------------------------------------------------
10096 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010097 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010098 -------------------------------------------------------------------------*/
10099 wpalMutexAcquire(&pWDICtx->wptMutex);
10100
10101 /*------------------------------------------------------------------------
10102 Find the BSS for which the request is made and identify WDI session
10103 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010104 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10105 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010106 &macBSSID))
10107 {
10108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010109 "This station does not exist in the WDI Station Table %d",
10110 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010111 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010113 }
10114
Jeff Johnsone7245742012-09-05 17:12:55 -070010115 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10116 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010117 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10119 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10120 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010121
10122 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010123 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010124 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010125
Jeff Johnson295189b2012-06-20 16:38:30 -070010126 /*------------------------------------------------------------------------
10127 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010128 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010129 ------------------------------------------------------------------------*/
10130 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10131 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010132 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10133 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10134 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010135
Jeff Johnsone7245742012-09-05 17:12:55 -070010136 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010137 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010138 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010139 }
10140
10141
10142 wpalMutexRelease(&pWDICtx->wptMutex);
10143 /*-----------------------------------------------------------------------
10144 Get message buffer
10145 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010146 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010147 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10148 &pSendBuffer, &usDataOffset, &usSendSize))||
10149 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10150 {
10151 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010152 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010153 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10154 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010155 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010156 }
10157 /*-----------------------------------------------------------------------
10158 Copy the STA Key parameters into the HAL message
10159 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010160 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010161 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10162
Jeff Johnsone7245742012-09-05 17:12:55 -070010163 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010164 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10165
10166 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10167
10168 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10169
10170 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10171
Jeff Johnson295189b2012-06-20 16:38:30 -070010172 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10173 keyIndex++)
10174 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010175 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010176 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10177 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10178 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10179 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10180 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010181
10182 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10183 {
10184 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10185 {
10186 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10187 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10188 }
10189
10190 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10191 {
10192 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10193 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10194 }
10195
10196 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10197 "%s: Negated Keys", __func__);
10198 }
10199 else
10200 {
10201 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10202 "%s: No change in Keys", __func__);
10203 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010204 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010205 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010206 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10207 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10208 WDI_MAX_KEY_LENGTH);
10209 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010210 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010211 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010212 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010213 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010214 }
Jeff Johnson295189b2012-06-20 16:38:30 -070010215
Jeff Johnsone7245742012-09-05 17:12:55 -070010216 wpalMemoryCopy( pSendBuffer+usDataOffset,
10217 &halSetStaKeyReqMsg.setStaKeyParams,
10218 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010219
10220 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010221 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Vinay Krishna Eranna6f22c1f2014-10-13 16:03:06 +053010222 wpalMemoryZero(&halSetStaKeyReqMsg, sizeof(halSetStaKeyReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070010223 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010224 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010225 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010226 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10227 wdiSetSTAKeyRspCb, pEventData->pUserData,
10228 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010229
10230}/*WDI_ProcessSetSTAKeyReq*/
10231
10232/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010233 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010234 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010235
10236 @param pWDICtx: pointer to the WLAN DAL context
10237 pEventData: pointer to the event information structure
10238
Jeff Johnson295189b2012-06-20 16:38:30 -070010239 @see
10240 @return Result of the function call
10241*/
10242WDI_Status
10243WDI_ProcessRemoveStaKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010244(
Jeff Johnson295189b2012-06-20 16:38:30 -070010245 WDI_ControlBlockType* pWDICtx,
10246 WDI_EventInfoType* pEventData
10247)
10248{
10249 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTAKeyParams;
10250 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10251 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010252 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010253 wpt_uint16 usDataOffset = 0;
10254 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010255 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010256 wpt_macAddr macBSSID;
10257 wpt_uint8 ucCurrentBSSSesIdx;
10258 tRemoveStaKeyReqMsg halRemoveStaKeyReqMsg = {{0}};
10259 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10260
10261 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010262 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010263 -------------------------------------------------------------------------*/
10264 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10265 ( NULL == pEventData->pCBfnc ))
10266 {
10267 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010268 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010269 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010270 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010271 }
10272
10273 pwdiRemoveSTAKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10274 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10275 /*-------------------------------------------------------------------------
10276 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010277 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010278 -------------------------------------------------------------------------*/
10279 wpalMutexAcquire(&pWDICtx->wptMutex);
10280
10281 /*------------------------------------------------------------------------
10282 Find the BSS for which the request is made and identify WDI session
10283 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010284 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10285 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010286 &macBSSID))
10287 {
10288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010289 "This station does not exist in the WDI Station Table %d",
10290 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010291 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010293 }
10294
Jeff Johnsone7245742012-09-05 17:12:55 -070010295 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10296 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010297 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010298 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10299 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10300 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010301
10302 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010303 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010304 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010305
Jeff Johnson295189b2012-06-20 16:38:30 -070010306 /*------------------------------------------------------------------------
10307 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010308 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010309 ------------------------------------------------------------------------*/
10310 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10311 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10313 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10314 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010315
Jeff Johnsone7245742012-09-05 17:12:55 -070010316 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010317 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010318 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010319 }
10320
10321
10322
10323 wpalMutexRelease(&pWDICtx->wptMutex);
10324 /*-----------------------------------------------------------------------
10325 Get message buffer
10326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010328 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams),
10329 &pSendBuffer, &usDataOffset, &usSendSize))||
10330 ( usSendSize < (usDataOffset + sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams) )))
10331 {
10332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010333 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010334 pEventData, pwdiRemoveSTAKeyParams, wdiRemoveSTAKeyRspCb);
10335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010337 }
10338
10339 /*-----------------------------------------------------------------------
10340 Copy the Key parameters into the HAL message
10341 -----------------------------------------------------------------------*/
10342
Jeff Johnsone7245742012-09-05 17:12:55 -070010343 halRemoveStaKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010344 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10345
Jeff Johnsone7245742012-09-05 17:12:55 -070010346 halRemoveStaKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010347 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTAKeyParams->wdiKeyInfo.wdiEncType);
10348
Jeff Johnsone7245742012-09-05 17:12:55 -070010349 halRemoveStaKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010350 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucKeyId;
10351
Jeff Johnsone7245742012-09-05 17:12:55 -070010352 halRemoveStaKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010353 pwdiRemoveSTAKeyParams->wdiKeyInfo.ucUnicast;
10354
Jeff Johnsone7245742012-09-05 17:12:55 -070010355 wpalMemoryCopy( pSendBuffer+usDataOffset,
10356 &halRemoveStaKeyReqMsg.removeStaKeyParams,
10357 sizeof(halRemoveStaKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010358
10359 pWDICtx->wdiReqStatusCB = pwdiRemoveSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010360 pWDICtx->pReqStatusUserData = pwdiRemoveSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010361
10362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010363 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010366 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010367 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010368
10369}/*WDI_ProcessRemoveSTAKeyReq*/
10370
10371/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010372 @brief Process Set STA KeyRequest function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070010373 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010374
10375 @param pWDICtx: pointer to the WLAN DAL context
10376 pEventData: pointer to the event information structure
10377
Jeff Johnson295189b2012-06-20 16:38:30 -070010378 @see
10379 @return Result of the function call
10380*/
10381WDI_Status
10382WDI_ProcessSetStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010383(
Jeff Johnson295189b2012-06-20 16:38:30 -070010384 WDI_ControlBlockType* pWDICtx,
10385 WDI_EventInfoType* pEventData
10386)
10387{
10388 WDI_SetSTAKeyReqParamsType* pwdiSetSTAKeyParams;
10389 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
10390 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010391 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010392 wpt_uint16 usDataOffset = 0;
10393 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010394 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010395 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070010396 wpt_uint8 ucCurrentBSSSesIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070010397 tSetStaKeyReqMsg halSetStaKeyReqMsg = {{0}};
10398 wpt_uint8 keyIndex = 0;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010399 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070010400
10401 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10402
10403 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010404 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010405 -------------------------------------------------------------------------*/
10406 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10407 ( NULL == pEventData->pCBfnc ))
10408 {
10409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010410 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010411 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010412 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010413 }
10414
10415 pwdiSetSTAKeyParams = (WDI_SetSTAKeyReqParamsType*)pEventData->pEventData;
10416 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pEventData->pCBfnc;
10417 /*-------------------------------------------------------------------------
10418 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010419 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010420 -------------------------------------------------------------------------*/
10421 wpalMutexAcquire(&pWDICtx->wptMutex);
10422
10423 /*------------------------------------------------------------------------
10424 Find the BSS for which the request is made and identify WDI session
10425 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010426 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10427 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010428 &macBSSID))
10429 {
10430 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010431 "This station does not exist in the WDI Station Table %d",
10432 pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010433 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010434 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010435 }
10436
Jeff Johnsone7245742012-09-05 17:12:55 -070010437 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10438 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010439 {
10440 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010441 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070010442 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010443
10444 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010445 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010446 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010447
Jeff Johnson295189b2012-06-20 16:38:30 -070010448 /*------------------------------------------------------------------------
10449 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010450 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010451 ------------------------------------------------------------------------*/
10452 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10453 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10455 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10456 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010457
Jeff Johnsone7245742012-09-05 17:12:55 -070010458 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010459 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010460 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010461 }
10462
10463
10464 wpalMutexRelease(&pWDICtx->wptMutex);
10465 /*-----------------------------------------------------------------------
10466 Get message buffer
10467 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010468 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_STA_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010469 sizeof(halSetStaKeyReqMsg.setStaKeyParams),
10470 &pSendBuffer, &usDataOffset, &usSendSize))||
10471 ( usSendSize < (usDataOffset + sizeof(halSetStaKeyReqMsg.setStaKeyParams) )))
10472 {
10473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010474 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010475 pEventData, pwdiSetSTAKeyParams, wdiSetSTAKeyRspCb);
10476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010478 }
10479 /*-----------------------------------------------------------------------
10480 Copy the STA Key parameters into the HAL message
10481 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010482 halSetStaKeyReqMsg.setStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010483 WDI_2_HAL_ENC_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiEncType);
10484
Jeff Johnsone7245742012-09-05 17:12:55 -070010485 halSetStaKeyReqMsg.setStaKeyParams.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010486 WDI_2_HAL_WEP_TYPE (pwdiSetSTAKeyParams->wdiKeyInfo.wdiWEPType );
10487
10488 halSetStaKeyReqMsg.setStaKeyParams.staIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucSTAIdx;
10489
10490 halSetStaKeyReqMsg.setStaKeyParams.defWEPIdx = pwdiSetSTAKeyParams->wdiKeyInfo.ucDefWEPIdx;
10491
10492 halSetStaKeyReqMsg.setStaKeyParams.singleTidRc = pwdiSetSTAKeyParams->wdiKeyInfo.ucSingleTidRc;
10493
Jeff Johnson295189b2012-06-20 16:38:30 -070010494 for(keyIndex = 0; keyIndex < pwdiSetSTAKeyParams->wdiKeyInfo.ucNumKeys ;
10495 keyIndex++)
10496 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010497 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010498 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyId;
10499 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].unicast =
10500 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].unicast;
10501 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyDirection =
10502 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyDirection;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010503
10504 if(WDI_getHostWlanFeatCaps(DISA) && WDI_getFwWlanFeatCaps(DISA))
10505 {
10506 for (i = 0; i < WDI_MAX_KEY_RSC_LEN; i++)
10507 {
10508 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc[i] =
10509 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc[i]);
10510 }
10511
10512 for (i = 0; i< WDI_MAX_KEY_LENGTH; i++)
10513 {
10514 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key[i] =
10515 ~(pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key[i]);
10516 }
10517
10518 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10519 "%s: Negated Keys", __func__);
10520 }
10521 else
10522 {
10523 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
10524 "%s: No change in Keys", __func__);
10525 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070010526 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070010527 WDI_MAX_KEY_RSC_LEN);
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010528 wpalMemoryCopy(halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].key,
10529 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].key,
10530 WDI_MAX_KEY_LENGTH);
10531 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010532 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070010533 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070010534 halSetStaKeyReqMsg.setStaKeyParams.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070010535 pwdiSetSTAKeyParams->wdiKeyInfo.wdiKey[keyIndex].keyLength;
Srinivas Dasari9b57b112014-11-27 12:25:23 +053010536 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010537 wpalMemoryCopy( pSendBuffer+usDataOffset,
10538 &halSetStaKeyReqMsg.setStaKeyParams,
10539 sizeof(halSetStaKeyReqMsg.setStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010540
10541 pWDICtx->wdiReqStatusCB = pwdiSetSTAKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010542 pWDICtx->pReqStatusUserData = pwdiSetSTAKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010543
10544 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010545 Send Set STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010546 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010547 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10548 wdiSetSTAKeyRspCb, pEventData->pUserData,
10549 WDI_SET_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010550
10551}/*WDI_ProcessSetSTABcastKeyReq*/
10552
10553/**
Jeff Johnsone7245742012-09-05 17:12:55 -070010554 @brief Process Remove STA Key Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070010555 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010556
10557 @param pWDICtx: pointer to the WLAN DAL context
10558 pEventData: pointer to the event information structure
10559
Jeff Johnson295189b2012-06-20 16:38:30 -070010560 @see
10561 @return Result of the function call
10562*/
10563WDI_Status
10564WDI_ProcessRemoveStaBcastKeyReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010565(
Jeff Johnson295189b2012-06-20 16:38:30 -070010566 WDI_ControlBlockType* pWDICtx,
10567 WDI_EventInfoType* pEventData
10568)
10569{
10570 WDI_RemoveSTAKeyReqParamsType* pwdiRemoveSTABcastKeyParams;
10571 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
10572 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010573 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010574 wpt_uint16 usDataOffset = 0;
10575 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010576 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010577 wpt_macAddr macBSSID;
10578 wpt_uint8 ucCurrentBSSSesIdx;
10579 tRemoveStaKeyReqMsg halRemoveStaBcastKeyReqMsg = {{0}};
10580 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10581
10582 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010583 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010584 -------------------------------------------------------------------------*/
10585 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10586 ( NULL == pEventData->pCBfnc ))
10587 {
10588 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010589 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010590 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010591 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010592 }
10593
10594 pwdiRemoveSTABcastKeyParams = (WDI_RemoveSTAKeyReqParamsType*)pEventData->pEventData;
10595 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pEventData->pCBfnc;
10596 /*-------------------------------------------------------------------------
10597 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010598 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010599 -------------------------------------------------------------------------*/
10600 wpalMutexAcquire(&pWDICtx->wptMutex);
10601
10602 /*------------------------------------------------------------------------
10603 Find the BSS for which the request is made and identify WDI session
10604 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010605 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10606 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010607 &macBSSID))
10608 {
10609 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010610 "This station does not exist in the WDI Station Table %d",
10611 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010612 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010613 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010614 }
10615
Jeff Johnsone7245742012-09-05 17:12:55 -070010616 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10617 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010618 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010619 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10620 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10621 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010622
10623 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010624 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010625 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010626
Jeff Johnson295189b2012-06-20 16:38:30 -070010627 /*------------------------------------------------------------------------
10628 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010629 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010630 ------------------------------------------------------------------------*/
10631 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10632 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010633 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10634 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10635 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010636
Jeff Johnsone7245742012-09-05 17:12:55 -070010637 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010638 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010639 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010640 }
10641
10642
10643
10644 wpalMutexRelease(&pWDICtx->wptMutex);
10645 /*-----------------------------------------------------------------------
10646 Get message buffer
10647 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010648 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RMV_STA_BCAST_KEY_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010649 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams),
10650 &pSendBuffer, &usDataOffset, &usSendSize))||
10651 ( usSendSize < (usDataOffset + sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams) )))
10652 {
10653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010654 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010655 pEventData, pwdiRemoveSTABcastKeyParams, wdiRemoveSTAKeyRspCb);
10656 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010657 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010658 }
10659
10660 /*-----------------------------------------------------------------------
10661 Copy the Key parameters into the HAL message
10662 -----------------------------------------------------------------------*/
10663
Jeff Johnsone7245742012-09-05 17:12:55 -070010664 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070010665 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucSTAIdx;
10666
Jeff Johnsone7245742012-09-05 17:12:55 -070010667 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010668 WDI_2_HAL_ENC_TYPE (pwdiRemoveSTABcastKeyParams->wdiKeyInfo.wdiEncType);
10669
Jeff Johnsone7245742012-09-05 17:12:55 -070010670 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070010671 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucKeyId;
10672
Jeff Johnsone7245742012-09-05 17:12:55 -070010673 halRemoveStaBcastKeyReqMsg.removeStaKeyParams.unicast =
Jeff Johnson295189b2012-06-20 16:38:30 -070010674 pwdiRemoveSTABcastKeyParams->wdiKeyInfo.ucUnicast;
10675
Jeff Johnsone7245742012-09-05 17:12:55 -070010676 wpalMemoryCopy( pSendBuffer+usDataOffset,
10677 &halRemoveStaBcastKeyReqMsg.removeStaKeyParams,
10678 sizeof(halRemoveStaBcastKeyReqMsg.removeStaKeyParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010679
10680 pWDICtx->wdiReqStatusCB = pwdiRemoveSTABcastKeyParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010681 pWDICtx->pReqStatusUserData = pwdiRemoveSTABcastKeyParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010682
10683 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010684 Send Remove STA Key Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010685 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010686 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010687 wdiRemoveSTAKeyRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010688 WDI_RMV_STA_KEY_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010689
10690}/*WDI_ProcessRemoveSTABcastKeyReq*/
10691
10692/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070010693 QOS and BA PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070010694==========================================================================*/
10695/**
10696 @brief Process Add TSpec Request function (called when Main FSM
10697 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010698
10699 @param pWDICtx: pointer to the WLAN DAL context
10700 pEventData: pointer to the event information structure
10701
Jeff Johnson295189b2012-06-20 16:38:30 -070010702 @see
10703 @return Result of the function call
10704*/
10705WDI_Status
10706WDI_ProcessAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010707(
Jeff Johnson295189b2012-06-20 16:38:30 -070010708 WDI_ControlBlockType* pWDICtx,
10709 WDI_EventInfoType* pEventData
10710)
10711{
10712 WDI_AddTSReqParamsType* pwdiAddTSParams;
10713 WDI_AddTsRspCb wdiAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010714 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010715 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010716 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010717 wpt_uint16 usDataOffset = 0;
10718 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010719 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010720 wpt_macAddr macBSSID;
10721 tAddTsParams halAddTsParams = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070010722
Jeff Johnson295189b2012-06-20 16:38:30 -070010723 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10724
10725 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010726 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010727 -------------------------------------------------------------------------*/
10728 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10729 ( NULL == pEventData->pCBfnc ))
10730 {
10731 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010732 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010733 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010734 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010735 }
10736
10737 pwdiAddTSParams = (WDI_AddTSReqParamsType*)pEventData->pEventData;
10738 wdiAddTSRspCb = (WDI_AddTsRspCb)pEventData->pCBfnc;
10739 /*-------------------------------------------------------------------------
10740 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010741 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010742 -------------------------------------------------------------------------*/
10743 wpalMutexAcquire(&pWDICtx->wptMutex);
10744
10745 /*------------------------------------------------------------------------
10746 Find the BSS for which the request is made and identify WDI session
10747 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010748 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
10749 pwdiAddTSParams->wdiTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070010750 &macBSSID))
10751 {
10752 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010753 "This station does not exist in the WDI Station Table %d",
10754 pwdiAddTSParams->wdiTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070010755 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010756 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010757 }
10758
Jeff Johnsone7245742012-09-05 17:12:55 -070010759 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
10760 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010761 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010762 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10763 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10764 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010765
10766 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010767 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010768 }
Jeff Johnsone7245742012-09-05 17:12:55 -070010769
Jeff Johnson295189b2012-06-20 16:38:30 -070010770 /*------------------------------------------------------------------------
10771 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010772 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010773 ------------------------------------------------------------------------*/
10774 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10775 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10777 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10778 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010779
Jeff Johnsone7245742012-09-05 17:12:55 -070010780 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010781 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010782 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010783 }
10784
10785 wpalMutexRelease(&pWDICtx->wptMutex);
10786 /*-----------------------------------------------------------------------
10787 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010788 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010789 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010790 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_TS_REQ,
10791 sizeof(halAddTsParams),
10792 &pSendBuffer, &usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070010793 &usSendSize))||
10794 ( usSendSize < (usDataOffset + sizeof(halAddTsParams) )))
10795 {
10796 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010797 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010798 pEventData, pwdiAddTSParams, wdiAddTSRspCb);
10799 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010800 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010801 }
10802
10803 halAddTsParams.staIdx = pwdiAddTSParams->wdiTsInfo.ucSTAIdx;
10804 halAddTsParams.tspecIdx = pwdiAddTSParams->wdiTsInfo.ucTspecIdx;
10805
10806 //TSPEC IE
10807 halAddTsParams.tspec.type = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucType;
10808 halAddTsParams.tspec.length = pwdiAddTSParams->wdiTsInfo.wdiTspecIE.ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070010809 halAddTsParams.tspec.nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010810 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010811 halAddTsParams.tspec.maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010812 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010813 halAddTsParams.tspec.minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010814 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010815 halAddTsParams.tspec.maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010816 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010817 halAddTsParams.tspec.inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010818 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010819 halAddTsParams.tspec.suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070010820 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070010821 halAddTsParams.tspec.svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010822 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070010823 halAddTsParams.tspec.minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010824 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010825 halAddTsParams.tspec.meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010826 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010827 halAddTsParams.tspec.peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010828 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010829 halAddTsParams.tspec.maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070010830 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070010831 halAddTsParams.tspec.delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070010832 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070010833 halAddTsParams.tspec.minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070010834 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070010835 halAddTsParams.tspec.surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070010836 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070010837 halAddTsParams.tspec.mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070010838 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.usMediumTime;
10839
10840 //TSPEC IE : TS INFO : TRAFFIC
Jeff Johnsone7245742012-09-05 17:12:55 -070010841 halAddTsParams.tspec.tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070010842 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070010843 halAddTsParams.tspec.tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070010844 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070010845 halAddTsParams.tspec.tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070010846 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010847 halAddTsParams.tspec.tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070010848 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070010849 halAddTsParams.tspec.tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070010850 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070010851 halAddTsParams.tspec.tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070010852 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.tsid;
Jeff Johnsone7245742012-09-05 17:12:55 -070010853 halAddTsParams.tspec.tsinfo.traffic.trafficType =
Jeff Johnson295189b2012-06-20 16:38:30 -070010854 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiTraffic.trafficType;
10855
10856 //TSPEC IE : TS INFO : SCHEDULE
Jeff Johnsone7245742012-09-05 17:12:55 -070010857 halAddTsParams.tspec.tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070010858 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070010859 halAddTsParams.tspec.tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070010860 pwdiAddTSParams->wdiTsInfo.wdiTspecIE.wdiTSinfo.wdiSchedule.schedule;
10861
Jeff Johnsone7245742012-09-05 17:12:55 -070010862 wpalMemoryCopy( pSendBuffer+usDataOffset,
10863 &halAddTsParams,
10864 sizeof(halAddTsParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070010865
10866 pWDICtx->wdiReqStatusCB = pwdiAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010867 pWDICtx->pReqStatusUserData = pwdiAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010868
10869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010870 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070010873 wdiAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070010874 WDI_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010875}/*WDI_ProcessAddTSpecReq*/
10876
10877
10878/**
10879 @brief Process Del TSpec Request function (called when Main FSM
10880 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010881
10882 @param pWDICtx: pointer to the WLAN DAL context
10883 pEventData: pointer to the event information structure
10884
Jeff Johnson295189b2012-06-20 16:38:30 -070010885 @see
10886 @return Result of the function call
10887*/
10888WDI_Status
10889WDI_ProcessDelTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070010890(
Jeff Johnson295189b2012-06-20 16:38:30 -070010891 WDI_ControlBlockType* pWDICtx,
10892 WDI_EventInfoType* pEventData
10893)
10894{
10895 WDI_DelTSReqParamsType* pwdiDelTSParams;
10896 WDI_DelTsRspCb wdiDelTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070010897 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070010898 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070010899 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070010900 wpt_uint16 usDataOffset = 0;
10901 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070010902 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070010903 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
10904
10905 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010906 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070010907 -------------------------------------------------------------------------*/
10908 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
10909 ( NULL == pEventData->pCBfnc ))
10910 {
10911 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070010912 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070010913 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010914 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010915 }
10916
10917 pwdiDelTSParams = (WDI_DelTSReqParamsType*)pEventData->pEventData;
10918 wdiDelTSRspCb = (WDI_DelTsRspCb)pEventData->pCBfnc;
10919
10920 /*-------------------------------------------------------------------------
10921 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070010922 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070010923 -------------------------------------------------------------------------*/
10924 wpalMutexAcquire(&pWDICtx->wptMutex);
10925
10926 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010927 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070010928 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010929 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
10930 pwdiDelTSParams->wdiDelTSInfo.macBSSID,
10931 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070010932
Jeff Johnsone7245742012-09-05 17:12:55 -070010933 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070010934 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010935 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
10936 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
10937 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
10938
Jeff Johnson295189b2012-06-20 16:38:30 -070010939 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010940 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070010941 }
10942
10943 /*------------------------------------------------------------------------
10944 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070010945 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070010946 ------------------------------------------------------------------------*/
10947 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
10948 {
Jeff Johnsone7245742012-09-05 17:12:55 -070010949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
10950 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
10951 __func__, MAC_ADDR_ARRAY(pwdiDelTSParams->wdiDelTSInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070010952
Jeff Johnsone7245742012-09-05 17:12:55 -070010953 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070010954 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070010955 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070010956 }
10957
10958
10959 wpalMutexRelease(&pWDICtx->wptMutex);
10960 /*-----------------------------------------------------------------------
10961 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070010962 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070010963 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010964 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070010965 sizeof(pwdiDelTSParams->wdiDelTSInfo),
10966 &pSendBuffer, &usDataOffset, &usSendSize))||
10967 ( usSendSize < (usDataOffset + sizeof(pwdiDelTSParams->wdiDelTSInfo) )))
10968 {
10969 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080010970 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070010971 pEventData, pwdiDelTSParams, wdiDelTSRspCb);
10972 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070010973 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070010974 }
10975
Jeff Johnsone7245742012-09-05 17:12:55 -070010976 wpalMemoryCopy( pSendBuffer+usDataOffset,
10977 &pwdiDelTSParams->wdiDelTSInfo,
10978 sizeof(pwdiDelTSParams->wdiDelTSInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070010979
10980 pWDICtx->wdiReqStatusCB = pwdiDelTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070010981 pWDICtx->pReqStatusUserData = pwdiDelTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070010982
10983 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070010984 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070010985 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070010986 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
10987 wdiDelTSRspCb, pEventData->pUserData, WDI_DEL_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070010988}/*WDI_ProcessDelTSpecReq*/
10989
10990/**
10991 @brief Process Update EDCA Params Request function (called when
10992 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070010993
10994 @param pWDICtx: pointer to the WLAN DAL context
10995 pEventData: pointer to the event information structure
10996
Jeff Johnson295189b2012-06-20 16:38:30 -070010997 @see
10998 @return Result of the function call
10999*/
11000WDI_Status
11001WDI_ProcessUpdateEDCAParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011002(
Jeff Johnson295189b2012-06-20 16:38:30 -070011003 WDI_ControlBlockType* pWDICtx,
11004 WDI_EventInfoType* pEventData
11005)
11006{
11007 WDI_UpdateEDCAParamsType* pwdiUpdateEDCAParams;
11008 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011009 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011010 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011011 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011012 wpt_uint16 usDataOffset = 0;
11013 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011014 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011015 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11016
11017 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011018 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011019 -------------------------------------------------------------------------*/
11020 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11021 ( NULL == pEventData->pCBfnc ))
11022 {
11023 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011024 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011025 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011026 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011027 }
11028
11029 pwdiUpdateEDCAParams = (WDI_UpdateEDCAParamsType*)pEventData->pEventData;
11030 wdiUpdateEDCARspCb = (WDI_UpdateEDCAParamsRspCb)pEventData->pCBfnc;
11031 /*-------------------------------------------------------------------------
11032 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011033 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011034 -------------------------------------------------------------------------*/
11035 wpalMutexAcquire(&pWDICtx->wptMutex);
11036
11037 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011038 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011039 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011040 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
11041 pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx,
11042 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011043
Jeff Johnsone7245742012-09-05 17:12:55 -070011044 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011045 {
11046 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011047 "%s: Association sequence for this BSS does not yet exist. ucBssIdx %d",
11048 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011049
11050 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011051 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011052 }
11053
11054 /*------------------------------------------------------------------------
11055 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011056 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011057 ------------------------------------------------------------------------*/
11058 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11059 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11061 "%s: Association sequence for this BSS exists but currently queued. ucBssIdx %d",
11062 __func__, pwdiUpdateEDCAParams->wdiEDCAInfo.ucBssIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011063
Jeff Johnsone7245742012-09-05 17:12:55 -070011064 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011065 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011066 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011067 }
11068
11069
11070 wpalMutexRelease(&pWDICtx->wptMutex);
11071 /*-----------------------------------------------------------------------
11072 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011073 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011074 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011075 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_EDCA_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011076 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo),
11077 &pSendBuffer, &usDataOffset, &usSendSize))||
11078 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo) )))
11079 {
11080 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011081 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011082 pEventData, pwdiUpdateEDCAParams, wdiUpdateEDCARspCb);
11083 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011084 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011085 }
11086
Jeff Johnsone7245742012-09-05 17:12:55 -070011087 wpalMemoryCopy( pSendBuffer+usDataOffset,
11088 &pwdiUpdateEDCAParams->wdiEDCAInfo,
11089 sizeof(pwdiUpdateEDCAParams->wdiEDCAInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011090
11091 pWDICtx->wdiReqStatusCB = pwdiUpdateEDCAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011092 pWDICtx->pReqStatusUserData = pwdiUpdateEDCAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011093
11094 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011095 Send Update EDCA Params Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011096 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011097 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11098 wdiUpdateEDCARspCb, pEventData->pUserData,
11099 WDI_UPD_EDCA_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011100}/*WDI_ProcessUpdateEDCAParamsReq*/
11101
11102/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011103 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011104 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011105
11106 @param pWDICtx: pointer to the WLAN DAL context
11107 pEventData: pointer to the event information structure
11108
Jeff Johnson295189b2012-06-20 16:38:30 -070011109 @see
11110 @return Result of the function call
11111*/
11112WDI_Status
11113WDI_ProcessAddBASessionReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011114(
Jeff Johnson295189b2012-06-20 16:38:30 -070011115 WDI_ControlBlockType* pWDICtx,
11116 WDI_EventInfoType* pEventData
11117)
11118{
11119 WDI_AddBASessionReqParamsType* pwdiAddBASessionParams;
11120 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011121 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011122 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011123 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011124 wpt_uint16 usDataOffset = 0;
11125 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011126 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011127 wpt_macAddr macBSSID;
11128
11129 tAddBASessionReqMsg halAddBASessionReq;
11130 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11131
11132 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011133 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011134 -------------------------------------------------------------------------*/
11135 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11136 ( NULL == pEventData->pCBfnc ))
11137 {
11138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011140 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011141 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011142 }
11143
Jeff Johnsone7245742012-09-05 17:12:55 -070011144 pwdiAddBASessionParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011145 (WDI_AddBASessionReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011146 wdiAddBASessionRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011147 (WDI_AddBASessionRspCb)pEventData->pCBfnc;
11148 /*-------------------------------------------------------------------------
11149 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011150 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011151 -------------------------------------------------------------------------*/
11152 wpalMutexAcquire(&pWDICtx->wptMutex);
11153
11154 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011155 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011156 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011157 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11158 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011159 &macBSSID))
11160 {
11161 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011162 "This station does not exist in the WDI Station Table %d",
11163 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011164 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011166 }
11167
11168
Jeff Johnsone7245742012-09-05 17:12:55 -070011169 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011170
Jeff Johnsone7245742012-09-05 17:12:55 -070011171 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011172 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011173 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11174 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11175 __func__, MAC_ADDR_ARRAY(macBSSID));
11176
Jeff Johnson295189b2012-06-20 16:38:30 -070011177 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011178 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011179 }
11180
11181 /*------------------------------------------------------------------------
11182 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011183 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011184 ------------------------------------------------------------------------*/
11185 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11186 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011187 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11188 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11189 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011190
Jeff Johnsone7245742012-09-05 17:12:55 -070011191 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011192 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011193 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011194 }
11195
11196
11197 wpalMutexRelease(&pWDICtx->wptMutex);
11198 /*-----------------------------------------------------------------------
11199 Get message buffer
11200 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011201 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11202 WDI_ADD_BA_SESSION_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011203 sizeof(halAddBASessionReq.addBASessionParams),
11204 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011205 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011206 (usDataOffset + sizeof(halAddBASessionReq.addBASessionParams) )))
11207 {
11208 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011209 "Unable to get send buffer in Add BA session req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011210 pEventData, pwdiAddBASessionParams, wdiAddBASessionRspCb);
11211 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011212 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011213 }
11214
11215 halAddBASessionReq.addBASessionParams.staIdx =
11216 pwdiAddBASessionParams->wdiBASessionInfoType.ucSTAIdx;
11217 wpalMemoryCopy(halAddBASessionReq.addBASessionParams.peerMacAddr,
11218 pwdiAddBASessionParams->wdiBASessionInfoType.macPeerAddr,
11219 WDI_MAC_ADDR_LEN);
11220 halAddBASessionReq.addBASessionParams.baTID =
11221 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaTID;
11222 halAddBASessionReq.addBASessionParams.baPolicy =
11223 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaPolicy;
11224 halAddBASessionReq.addBASessionParams.baBufferSize =
11225 pwdiAddBASessionParams->wdiBASessionInfoType.usBaBufferSize;
11226 halAddBASessionReq.addBASessionParams.baTimeout =
11227 pwdiAddBASessionParams->wdiBASessionInfoType.usBaTimeout;
11228 halAddBASessionReq.addBASessionParams.baSSN =
11229 pwdiAddBASessionParams->wdiBASessionInfoType.usBaSSN;
11230 halAddBASessionReq.addBASessionParams.baDirection =
11231 pwdiAddBASessionParams->wdiBASessionInfoType.ucBaDirection;
11232
Jeff Johnsone7245742012-09-05 17:12:55 -070011233 wpalMemoryCopy( pSendBuffer+usDataOffset,
11234 &halAddBASessionReq.addBASessionParams,
11235 sizeof(halAddBASessionReq.addBASessionParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011236
11237 pWDICtx->wdiReqStatusCB = pwdiAddBASessionParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011238 pWDICtx->pReqStatusUserData = pwdiAddBASessionParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011239
11240 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011241 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011242 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011243 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11244 wdiAddBASessionRspCb, pEventData->pUserData,
11245 WDI_ADD_BA_SESSION_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011246}/*WDI_ProcessAddBASessionReq*/
11247
11248/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011249 @brief Process Del BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011250 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011251
11252 @param pWDICtx: pointer to the WLAN DAL context
11253 pEventData: pointer to the event information structure
11254
Jeff Johnson295189b2012-06-20 16:38:30 -070011255 @see
11256 @return Result of the function call
11257*/
11258WDI_Status
11259WDI_ProcessDelBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011260(
Jeff Johnson295189b2012-06-20 16:38:30 -070011261 WDI_ControlBlockType* pWDICtx,
11262 WDI_EventInfoType* pEventData
11263)
11264{
11265 WDI_DelBAReqParamsType* pwdiDelBAParams;
11266 WDI_DelBARspCb wdiDelBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011267 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070011268 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011269 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011270 wpt_uint16 usDataOffset = 0;
11271 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070011272 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070011273 wpt_macAddr macBSSID;
11274 tDelBAParams halDelBAparam;
11275 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11276
11277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011278 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011279 -------------------------------------------------------------------------*/
11280 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11281 ( NULL == pEventData->pCBfnc ))
11282 {
11283 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011284 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011285 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011286 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011287 }
11288
11289 pwdiDelBAParams = (WDI_DelBAReqParamsType*)pEventData->pEventData;
11290 wdiDelBARspCb = (WDI_DelBARspCb)pEventData->pCBfnc;
11291 /*-------------------------------------------------------------------------
11292 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070011293 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070011294 -------------------------------------------------------------------------*/
11295 wpalMutexAcquire(&pWDICtx->wptMutex);
11296
11297 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011298 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070011299 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011300 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
11301 pwdiDelBAParams->wdiBAInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011302 &macBSSID))
11303 {
11304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011305 "This station does not exist in the WDI Station Table %d",
11306 pwdiDelBAParams->wdiBAInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070011307 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011308 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011309 }
11310
Jeff Johnsone7245742012-09-05 17:12:55 -070011311 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070011312
Jeff Johnsone7245742012-09-05 17:12:55 -070011313 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070011314 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011315 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11316 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11317 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011318
11319 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011320 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070011321 }
11322
11323 /*------------------------------------------------------------------------
11324 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070011325 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070011326 ------------------------------------------------------------------------*/
11327 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11328 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011329 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
11330 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
11331 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070011332
Jeff Johnsone7245742012-09-05 17:12:55 -070011333 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070011334 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011335 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070011336 }
11337
11338 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070011339 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011340 sizeof(halDelBAparam),
11341 &pSendBuffer, &usDataOffset, &usSendSize))||
11342 ( usSendSize < (usDataOffset + sizeof(halDelBAparam) )))
11343 {
11344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011345 "Unable to get send buffer for DEL BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011346 pEventData, pwdiDelBAParams, wdiDelBARspCb);
11347 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011348 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011349 }
11350
11351 halDelBAparam.staIdx = pwdiDelBAParams->wdiBAInfo.ucSTAIdx;
11352 halDelBAparam.baTID = pwdiDelBAParams->wdiBAInfo.ucBaTID;
11353 halDelBAparam.baDirection = pwdiDelBAParams->wdiBAInfo.ucBaDirection;
11354
Jeff Johnsone7245742012-09-05 17:12:55 -070011355 wpalMemoryCopy( pSendBuffer+usDataOffset,
11356 &halDelBAparam,
11357 sizeof(halDelBAparam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011358
11359 pWDICtx->wdiReqStatusCB = pwdiDelBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011360 pWDICtx->pReqStatusUserData = pwdiDelBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011361
11362 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011363 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011364 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011365 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11366 wdiDelBARspCb, pEventData->pUserData, WDI_DEL_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011367}/*WDI_ProcessDelBAReq*/
11368
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080011369#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070011370
11371WDI_Status
11372WDI_ProcessTSMStatsReq
11373(
11374 WDI_ControlBlockType* pWDICtx,
11375 WDI_EventInfoType* pEventData
11376)
11377{
11378 WDI_TSMStatsReqParamsType* pwdiTSMParams;
11379 WDI_TsmRspCb wdiTSMRspCb;
11380 wpt_uint8 ucCurrentBSSSesIdx = 0;
11381 WDI_BSSSessionType* pBSSSes = NULL;
11382 wpt_uint8* pSendBuffer = NULL;
11383 wpt_uint16 usDataOffset = 0;
11384 wpt_uint16 usSendSize = 0;
11385 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
11386 tTsmStatsParams halTsmStatsReqParams = {0};
11387
11388 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11389
11390 /*-------------------------------------------------------------------------
11391 Sanity check
11392 -------------------------------------------------------------------------*/
11393 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11394 ( NULL == pEventData->pCBfnc ))
11395 {
11396 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011397 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011398 WDI_ASSERT(0);
11399 return WDI_STATUS_E_FAILURE;
11400 }
11401
11402 pwdiTSMParams = (WDI_TSMStatsReqParamsType*)pEventData->pEventData;
11403 wdiTSMRspCb = (WDI_TsmRspCb)pEventData->pCBfnc;
11404 /*-------------------------------------------------------------------------
11405 Check to see if we are in the middle of an association, if so queue, if
11406 not it means it is free to process request
11407 -------------------------------------------------------------------------*/
11408 wpalMutexAcquire(&pWDICtx->wptMutex);
11409
11410 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, pwdiTSMParams->wdiTsmStatsParamsInfo.bssid, &pBSSSes);
11411 if ( NULL == pBSSSes )
11412 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
11414 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
11415 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011416
11417 wpalMutexRelease(&pWDICtx->wptMutex);
11418 return WDI_STATUS_E_NOT_ALLOWED;
11419 }
11420
11421 /*------------------------------------------------------------------------
11422 Check if this BSS is being currently processed or queued,
11423 if queued - queue the new request as well
11424 ------------------------------------------------------------------------*/
11425 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
11426 {
Jeff Johnsone7245742012-09-05 17:12:55 -070011427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Srinivas Girigowda6d1f9062014-02-03 18:15:54 -080011428 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
Jeff Johnsone7245742012-09-05 17:12:55 -070011429 __func__, MAC_ADDR_ARRAY(pwdiTSMParams->wdiTsmStatsParamsInfo.bssid));
Jeff Johnson295189b2012-06-20 16:38:30 -070011430
11431 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
11432 wpalMutexRelease(&pWDICtx->wptMutex);
11433 return wdiStatus;
11434 }
11435
11436 wpalMutexRelease(&pWDICtx->wptMutex);
11437 /*-----------------------------------------------------------------------
11438 Get message buffer
11439 ! TO DO : proper conversion into the HAL Message Request Format
11440 -----------------------------------------------------------------------*/
11441 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_TSM_STATS_REQ,
11442 sizeof(halTsmStatsReqParams),
11443 &pSendBuffer, &usDataOffset, &usSendSize))||
11444 ( usSendSize < (usDataOffset + sizeof(halTsmStatsReqParams) )))
11445 {
11446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011447 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011448 pEventData, pwdiTSMParams, wdiTSMRspCb);
11449 WDI_ASSERT(0);
11450 return WDI_STATUS_E_FAILURE;
11451 }
11452
11453 halTsmStatsReqParams.tsmTID = pwdiTSMParams->wdiTsmStatsParamsInfo.ucTid;
11454 wpalMemoryCopy(halTsmStatsReqParams.bssId,
11455 pwdiTSMParams->wdiTsmStatsParamsInfo.bssid,
11456 WDI_MAC_ADDR_LEN);
11457 wpalMemoryCopy( pSendBuffer+usDataOffset,
11458 &halTsmStatsReqParams,
11459 sizeof(halTsmStatsReqParams));
11460
11461 pWDICtx->wdiReqStatusCB = pwdiTSMParams->wdiReqStatusCB;
11462 pWDICtx->pReqStatusUserData = pwdiTSMParams->pUserData;
11463
11464 /*-------------------------------------------------------------------------
11465 Send TSM Stats Request to HAL
11466 -------------------------------------------------------------------------*/
11467 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11468 wdiTSMRspCb, pEventData->pUserData,
11469 WDI_TSM_STATS_RESP);
11470}/*WDI_ProcessTSMStatsReq*/
11471
11472#endif
11473
11474
11475/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011476 @brief Process Flush AC Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070011477 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011478
11479 @param pWDICtx: pointer to the WLAN DAL context
11480 pEventData: pointer to the event information structure
11481
Jeff Johnson295189b2012-06-20 16:38:30 -070011482 @see
11483 @return Result of the function call
11484*/
11485WDI_Status
11486WDI_ProcessFlushAcReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011487(
Jeff Johnson295189b2012-06-20 16:38:30 -070011488 WDI_ControlBlockType* pWDICtx,
11489 WDI_EventInfoType* pEventData
11490)
11491{
11492 WDI_FlushAcReqParamsType* pwdiFlushAcParams = NULL;
11493 WDI_FlushAcRspCb wdiFlushAcRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011494 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011495 wpt_uint16 usDataOffset = 0;
11496 wpt_uint16 usSendSize = 0;
11497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11498
11499 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011500 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011501 -------------------------------------------------------------------------*/
11502 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11503 ( NULL == pEventData->pCBfnc ))
11504 {
11505 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011506 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011507 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011508 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011509 }
11510
11511 pwdiFlushAcParams = (WDI_FlushAcReqParamsType*)pEventData->pEventData;
11512 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pEventData->pCBfnc;
11513 /*-----------------------------------------------------------------------
11514 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011515 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011516 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011517 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_FLUSH_AC_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011518 sizeof(pwdiFlushAcParams->wdiFlushAcInfo),
11519 &pSendBuffer, &usDataOffset, &usSendSize))||
11520 ( usSendSize < (usDataOffset + sizeof(pwdiFlushAcParams->wdiFlushAcInfo) )))
11521 {
11522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011523 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011524 pEventData, pwdiFlushAcParams, wdiFlushAcRspCb);
11525 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011526 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011527 }
11528
Jeff Johnsone7245742012-09-05 17:12:55 -070011529 wpalMemoryCopy( pSendBuffer+usDataOffset,
11530 &pwdiFlushAcParams->wdiFlushAcInfo,
11531 sizeof(pwdiFlushAcParams->wdiFlushAcInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070011532
11533 pWDICtx->wdiReqStatusCB = pwdiFlushAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011534 pWDICtx->pReqStatusUserData = pwdiFlushAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011535
11536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011537 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011538 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011539 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11540 wdiFlushAcRspCb, pEventData->pUserData, WDI_FLUSH_AC_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011541}/*WDI_ProcessFlushAcReq*/
11542
11543/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011544 @brief Process BT AMP event Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011545 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011546
11547 @param pWDICtx: pointer to the WLAN DAL context
11548 pEventData: pointer to the event information structure
11549
Jeff Johnson295189b2012-06-20 16:38:30 -070011550 @see
11551 @return Result of the function call
11552*/
11553WDI_Status
11554WDI_ProcessBtAmpEventReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011555(
Jeff Johnson295189b2012-06-20 16:38:30 -070011556 WDI_ControlBlockType* pWDICtx,
11557 WDI_EventInfoType* pEventData
11558)
11559{
11560 WDI_BtAmpEventParamsType* pwdiBtAmpEventParams = NULL;
11561 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011562 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011563 wpt_uint16 usDataOffset = 0;
11564 wpt_uint16 usSendSize = 0;
11565
11566 tBtAmpEventMsg haltBtAmpEventMsg;
11567 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11568
11569 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011570 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011571 -------------------------------------------------------------------------*/
11572 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11573 ( NULL == pEventData->pCBfnc ))
11574 {
11575 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011576 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011577 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011578 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011579 }
11580
11581 pwdiBtAmpEventParams = (WDI_BtAmpEventParamsType*)pEventData->pEventData;
11582 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pEventData->pCBfnc;
11583 /*-----------------------------------------------------------------------
11584 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011585 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011586 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011587 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_BTAMP_EVENT_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011588 sizeof(haltBtAmpEventMsg.btAmpEventParams),
11589 &pSendBuffer, &usDataOffset, &usSendSize))||
11590 ( usSendSize < (usDataOffset + sizeof(haltBtAmpEventMsg.btAmpEventParams) )))
11591 {
11592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011593 "Unable to get send buffer in BT AMP event req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011594 pEventData, pwdiBtAmpEventParams, wdiBtAmpEventRspCb);
11595 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011596 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011597 }
11598
Jeff Johnsone7245742012-09-05 17:12:55 -070011599 haltBtAmpEventMsg.btAmpEventParams.btAmpEventType =
Jeff Johnson295189b2012-06-20 16:38:30 -070011600 pwdiBtAmpEventParams->wdiBtAmpEventInfo.ucBtAmpEventType;
Jeff Johnsone7245742012-09-05 17:12:55 -070011601 wpalMemoryCopy( pSendBuffer+usDataOffset,
11602 &haltBtAmpEventMsg.btAmpEventParams,
11603 sizeof(haltBtAmpEventMsg.btAmpEventParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011604
11605 pWDICtx->wdiReqStatusCB = pwdiBtAmpEventParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011606 pWDICtx->pReqStatusUserData = pwdiBtAmpEventParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011607
11608 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011609 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011610 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011611 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11612 wdiBtAmpEventRspCb, pEventData->pUserData, WDI_BTAMP_EVENT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011613}/*WDI_ProcessBtAmpEventReq*/
11614
11615/**
11616 @brief Process Add STA self Request function (called when Main FSM
11617 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011618
11619 @param pWDICtx: pointer to the WLAN DAL context
11620 pEventData: pointer to the event information structure
11621
Jeff Johnson295189b2012-06-20 16:38:30 -070011622 @see
11623 @return Result of the function call
11624*/
11625WDI_Status
11626WDI_ProcessAddSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011627(
Jeff Johnson295189b2012-06-20 16:38:30 -070011628 WDI_ControlBlockType* pWDICtx,
11629 WDI_EventInfoType* pEventData
11630)
11631{
11632 WDI_AddSTASelfReqParamsType* pwdiAddSTASelfReqParams;
11633 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011634 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011635 wpt_uint16 usDataOffset = 0;
11636 wpt_uint16 usSendSize = 0;
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011637 tAddStaSelfParams_V1 halAddSTASelfParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070011638 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11639
11640 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011641 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011642 -------------------------------------------------------------------------*/
11643 if (( NULL == pEventData ) ||
11644 ( NULL == pEventData->pEventData) ||
11645 ( NULL == pEventData->pCBfnc))
11646 {
11647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011648 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011649 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011650 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011651 }
11652
Jeff Johnsone7245742012-09-05 17:12:55 -070011653 pwdiAddSTASelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011654 (WDI_AddSTASelfReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070011655 wdiAddSTASelfReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070011656 (WDI_AddSTASelfParamsRspCb)pEventData->pCBfnc;
11657 /*-----------------------------------------------------------------------
11658 Get message buffer
11659 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011660 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11661 WDI_ADD_STA_SELF_REQ,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011662 sizeof(tAddStaSelfParams_V1),
Jeff Johnson295189b2012-06-20 16:38:30 -070011663 &pSendBuffer, &usDataOffset, &usSendSize))||
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011664 ( usSendSize < (usDataOffset + sizeof(tAddStaSelfParams_V1) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070011665 {
11666 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011667 "Unable to get send buffer in ADD STA SELF REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011668 pEventData, pwdiAddSTASelfReqParams, wdiAddSTASelfReqRspCb);
11669 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011670 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011671 }
11672
11673 /* Cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070011674 wpalMemoryCopy(&pWDICtx->wdiCacheAddSTASelfReq, pwdiAddSTASelfReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070011675 sizeof(pWDICtx->wdiCacheAddSTASelfReq));
11676
Jeff Johnsone7245742012-09-05 17:12:55 -070011677 wpalMemoryCopy(halAddSTASelfParams.selfMacAddr,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011678 pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.selfMacAddr, 6);
11679 halAddSTASelfParams.iface_persona = HAL_IFACE_UNKNOWN;
11680 if (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode == VOS_STA_MODE)
11681 {
11682 halAddSTASelfParams.iface_persona = HAL_IFACE_STA_MODE;
11683 }
11684 else if ((pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11685 VOS_P2P_CLIENT_MODE) ||
11686 (pwdiAddSTASelfReqParams->wdiAddSTASelfInfo.currDeviceMode ==
11687 VOS_P2P_DEVICE))
11688 {
11689 halAddSTASelfParams.iface_persona = HAL_IFACE_P2P_MODE;
11690 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011691 wpalMemoryCopy( pSendBuffer+usDataOffset, &halAddSTASelfParams,
Kiran Kumar Lokere0ad5cd32013-06-25 11:26:22 -070011692 sizeof(tAddStaSelfParams_V1));
Jeff Johnson295189b2012-06-20 16:38:30 -070011693
11694 pWDICtx->wdiReqStatusCB = pwdiAddSTASelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011695 pWDICtx->pReqStatusUserData = pwdiAddSTASelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011696
11697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011698 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011699 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11701 wdiAddSTASelfReqRspCb, pEventData->pUserData,
11702 WDI_ADD_STA_SELF_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011703}/*WDI_ProcessAddSTASelfReq*/
11704
11705
11706
11707/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011708 @brief Process Del Sta Self Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011709 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011710
11711 @param pWDICtx: pointer to the WLAN DAL context
11712 pEventData: pointer to the event information structure
11713
Jeff Johnson295189b2012-06-20 16:38:30 -070011714 @see
11715 @return Result of the function call
11716*/
11717WDI_Status
11718WDI_ProcessDelSTASelfReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011719(
Jeff Johnson295189b2012-06-20 16:38:30 -070011720 WDI_ControlBlockType* pWDICtx,
11721 WDI_EventInfoType* pEventData
11722)
11723{
11724 WDI_DelSTASelfReqParamsType* pwdiDelStaSelfReqParams;
11725 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011726 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011727 wpt_uint16 usDataOffset = 0;
11728 wpt_uint16 usSendSize = 0;
11729 tDelStaSelfParams halSetDelSelfSTAParams;
11730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11731
11732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011734 -------------------------------------------------------------------------*/
11735 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11736 ( NULL == pEventData->pCBfnc ))
11737 {
11738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011739 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011740 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011741 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011742 }
11743
Jeff Johnsone7245742012-09-05 17:12:55 -070011744 pwdiDelStaSelfReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070011745 (WDI_DelSTASelfReqParamsType*)pEventData->pEventData;
11746 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pEventData->pCBfnc;
11747
11748 /*-----------------------------------------------------------------------
11749 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011750 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011751 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011752 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_DEL_STA_SELF_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011753 sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo),
11754 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070011755 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070011756 (usDataOffset + sizeof(pwdiDelStaSelfReqParams->wdiDelStaSelfInfo) )))
11757 {
11758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011759 "Unable to get send buffer in Del Sta Self req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011760 pEventData, pwdiDelStaSelfReqParams, wdiDelStaSelfRspCb);
11761 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011762 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011763 }
11764
Jeff Johnsone7245742012-09-05 17:12:55 -070011765 wpalMemoryCopy(halSetDelSelfSTAParams.selfMacAddr,
Jeff Johnson295189b2012-06-20 16:38:30 -070011766 pwdiDelStaSelfReqParams->wdiDelStaSelfInfo.selfMacAddr, 6) ;
11767
Jeff Johnsone7245742012-09-05 17:12:55 -070011768 wpalMemoryCopy( pSendBuffer+usDataOffset, &halSetDelSelfSTAParams,
11769 sizeof(tDelStaSelfParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011770
11771 pWDICtx->wdiReqStatusCB = pwdiDelStaSelfReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011772 pWDICtx->pReqStatusUserData = pwdiDelStaSelfReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011773
11774 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011775 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011776 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011777 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11778 wdiDelStaSelfRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070011779 WDI_DEL_STA_SELF_RESP);
11780
11781}
11782
Jeff Johnsone7245742012-09-05 17:12:55 -070011783#ifdef FEATURE_OEM_DATA_SUPPORT
11784/**
11785 @brief Process Start Oem Data Request function (called when Main
11786 FSM allows it)
11787
11788 @param pWDICtx: pointer to the WLAN DAL context
11789 pEventData: pointer to the event information structure
11790
11791 @see
11792 @return Result of the function call
11793*/
11794WDI_Status
11795WDI_ProcessStartOemDataReq
11796(
11797 WDI_ControlBlockType* pWDICtx,
11798 WDI_EventInfoType* pEventData
11799)
11800{
11801 WDI_oemDataReqParamsType* pwdiOemDataReqParams = NULL;
11802 WDI_oemDataRspCb wdiOemDataRspCb;
11803 wpt_uint8* pSendBuffer = NULL;
11804 wpt_uint16 usDataOffset = 0;
11805 wpt_uint16 usSendSize = 0;
11806 wpt_uint16 reqLen;
11807 tStartOemDataReqParams* halStartOemDataReqParams;
11808
11809 /*-------------------------------------------------------------------------
11810 Sanity check
11811 -------------------------------------------------------------------------*/
11812 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11813 ( NULL == pEventData->pCBfnc ))
11814 {
11815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011816 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070011817 WDI_ASSERT(0);
11818 return WDI_STATUS_E_FAILURE;
11819 }
11820
11821 pwdiOemDataReqParams = (WDI_oemDataReqParamsType*)pEventData->pEventData;
11822 wdiOemDataRspCb = (WDI_oemDataRspCb)pEventData->pCBfnc;
11823
11824 /*-----------------------------------------------------------------------
11825 Get message buffer
11826 -----------------------------------------------------------------------*/
11827
11828 reqLen = sizeof(tStartOemDataReqParams);
11829
11830 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
11831 WDI_START_OEM_DATA_REQ, reqLen,
11832 &pSendBuffer, &usDataOffset, &usSendSize))||
11833 (usSendSize < (usDataOffset + reqLen)))
11834 {
11835 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011836 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnsone7245742012-09-05 17:12:55 -070011837 pEventData, pwdiOemDataReqParams, wdiOemDataRspCb);
11838 WDI_ASSERT(0);
11839 return WDI_STATUS_E_FAILURE;
11840 }
11841
11842 //copying WDI OEM DATA REQ PARAMS to shared memory
11843 halStartOemDataReqParams = (tStartOemDataReqParams *)(pSendBuffer + usDataOffset );
11844
11845 wpalMemoryCopy(&halStartOemDataReqParams->selfMacAddr, &pwdiOemDataReqParams->wdiOemDataReqInfo.selfMacAddr, sizeof(wpt_macAddr));
11846 wpalMemoryCopy(&halStartOemDataReqParams->oemDataReq, &pwdiOemDataReqParams->wdiOemDataReqInfo.oemDataReq, OEM_DATA_REQ_SIZE);
11847
11848 pWDICtx->wdiReqStatusCB = pwdiOemDataReqParams->wdiReqStatusCB;
11849 pWDICtx->pReqStatusUserData = pwdiOemDataReqParams->pUserData;
11850
11851 /*-------------------------------------------------------------------------
11852 Send Start Request to HAL
11853 -------------------------------------------------------------------------*/
11854 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11855 wdiOemDataRspCb, pEventData->pUserData,
11856 WDI_START_OEM_DATA_RESP);
11857}/*WDI_ProcessStartOemDataReq*/
11858#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070011859
11860/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011861 @brief Process Host Resume Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070011862 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011863
11864 @param pWDICtx: pointer to the WLAN DAL context
11865 pEventData: pointer to the event information structure
11866
Jeff Johnson295189b2012-06-20 16:38:30 -070011867 @see
11868 @return Result of the function call
11869*/
11870WDI_Status
11871WDI_ProcessHostResumeReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011872(
Jeff Johnson295189b2012-06-20 16:38:30 -070011873 WDI_ControlBlockType* pWDICtx,
11874 WDI_EventInfoType* pEventData
11875)
11876{
11877 WDI_ResumeParamsType* pwdiHostResumeParams = NULL;
11878 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070011879 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011880 wpt_uint16 usDataOffset = 0;
11881 wpt_uint16 usSendSize = 0;
11882 tHalWlanHostResumeReqParam halResumeReqParams;
11883
11884 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11885
11886 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011887 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011888 -------------------------------------------------------------------------*/
11889 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11890 ( NULL == pEventData->pCBfnc ))
11891 {
11892 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011893 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011894 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011895 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011896 }
11897
11898 pwdiHostResumeParams = (WDI_ResumeParamsType*)pEventData->pEventData;
11899 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pEventData->pCBfnc;
11900
11901 /*-----------------------------------------------------------------------
11902 Get message buffer
11903 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070011905 WDI_HOST_RESUME_REQ, sizeof(halResumeReqParams),
11906 &pSendBuffer, &usDataOffset, &usSendSize))||
11907 (usSendSize < (usDataOffset + sizeof(halResumeReqParams))))
11908 {
11909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011910 "Unable to get send buffer in Start Oem Data req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011911 pEventData, pwdiHostResumeParams, wdiHostResumeRspCb);
11912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011914 }
11915
Jeff Johnsone7245742012-09-05 17:12:55 -070011916 halResumeReqParams.configuredMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070011917 pwdiHostResumeParams->wdiResumeParams.ucConfiguredMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070011918
11919 wpalMemoryCopy( pSendBuffer+usDataOffset,
11920 &halResumeReqParams,
11921 sizeof(halResumeReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070011922
11923 pWDICtx->wdiReqStatusCB = pwdiHostResumeParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070011924 pWDICtx->pReqStatusUserData = pwdiHostResumeParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070011925
11926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011927 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070011928 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011929 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
11930 wdiHostResumeRspCb, pEventData->pUserData,
11931 WDI_HOST_RESUME_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070011932}/*WDI_ProcessHostResumeReq*/
11933
11934/**
Jeff Johnsone7245742012-09-05 17:12:55 -070011935 @brief Process set Tx Per Tracking Parameters Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070011936 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070011937
11938 @param pWDICtx: pointer to the WLAN DAL context
11939 pEventData: pointer to the event information structure
11940
Jeff Johnson295189b2012-06-20 16:38:30 -070011941 @see
11942 @return Result of the function call
11943*/
11944WDI_Status
11945WDI_ProcessSetTxPerTrackingReq
Jeff Johnsone7245742012-09-05 17:12:55 -070011946(
Jeff Johnson295189b2012-06-20 16:38:30 -070011947 WDI_ControlBlockType* pWDICtx,
11948 WDI_EventInfoType* pEventData
11949)
11950{
11951 WDI_SetTxPerTrackingReqParamsType* pwdiSetTxPerTrackingReqParams = NULL;
11952 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070011953 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070011954 wpt_uint16 usDataOffset = 0;
11955 wpt_uint16 usSendSize = 0;
11956 tHalTxPerTrackingReqParam halTxPerTrackingReqParam;
11957 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
11958
11959 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070011960 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070011961 -------------------------------------------------------------------------*/
11962 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
11963 ( NULL == pEventData->pCBfnc ))
11964 {
11965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070011966 "%s: Invalid parameters ",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070011967 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011968 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011969 }
11970
11971 pwdiSetTxPerTrackingReqParams = (WDI_SetTxPerTrackingReqParamsType*)pEventData->pEventData;
11972 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pEventData->pCBfnc;
Jeff Johnsone7245742012-09-05 17:12:55 -070011973
Jeff Johnson295189b2012-06-20 16:38:30 -070011974 /*-----------------------------------------------------------------------
11975 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070011976 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070011977 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070011978 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_PER_TRACKING_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070011979 sizeof(halTxPerTrackingReqParam),
11980 &pSendBuffer, &usDataOffset, &usSendSize))||
11981 ( usSendSize < (usDataOffset + sizeof(halTxPerTrackingReqParam) )))
11982 {
11983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080011984 "Unable to get send buffer in set tx per tracking req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070011985 pEventData, pwdiSetTxPerTrackingReqParams, pwdiSetTxPerTrackingRspCb);
11986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070011987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070011988 }
Jeff Johnsone7245742012-09-05 17:12:55 -070011989
Jeff Johnson295189b2012-06-20 16:38:30 -070011990 halTxPerTrackingReqParam.ucTxPerTrackingEnable = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingEnable;
11991 halTxPerTrackingReqParam.ucTxPerTrackingPeriod = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingPeriod;
11992 halTxPerTrackingReqParam.ucTxPerTrackingRatio = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.ucTxPerTrackingRatio;
11993 halTxPerTrackingReqParam.uTxPerTrackingWatermark = pwdiSetTxPerTrackingReqParams->wdiTxPerTrackingParam.uTxPerTrackingWatermark;
Jeff Johnsone7245742012-09-05 17:12:55 -070011994
11995 wpalMemoryCopy( pSendBuffer+usDataOffset,
11996 &halTxPerTrackingReqParam,
11997 sizeof(halTxPerTrackingReqParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070011998
11999 pWDICtx->wdiReqStatusCB = pwdiSetTxPerTrackingReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012000 pWDICtx->pReqStatusUserData = pwdiSetTxPerTrackingReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012001
12002 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012003 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012004 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012005 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12006 pwdiSetTxPerTrackingRspCb, pEventData->pUserData, WDI_SET_TX_PER_TRACKING_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012007}/*WDI_ProcessSetTxPerTrackingReq*/
12008
12009/*=========================================================================
12010 Indications
12011=========================================================================*/
12012
12013/**
12014 @brief Process Suspend Indications function (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012015
12016 @param pWDICtx: pointer to the WLAN DAL context
12017 pEventData: pointer to the event information structure
12018
Jeff Johnson295189b2012-06-20 16:38:30 -070012019 @see
12020 @return Result of the function call
12021*/
12022WDI_Status
12023WDI_ProcessHostSuspendInd
Jeff Johnsone7245742012-09-05 17:12:55 -070012024(
Jeff Johnson295189b2012-06-20 16:38:30 -070012025 WDI_ControlBlockType* pWDICtx,
12026 WDI_EventInfoType* pEventData
12027)
12028{
12029 WDI_SuspendParamsType *pSuspendIndParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070012030 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012031 wpt_uint16 usDataOffset = 0;
12032 wpt_uint16 usSendSize = 0;
12033 WDI_Status wdiStatus;
12034 tHalWlanHostSuspendIndParam halWlanSuspendIndparams;
12035 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12036
12037 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012038 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012039 -------------------------------------------------------------------------*/
12040 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12041 {
12042 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012043 "%s: Invalid parameters in Suspend ind",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012046 }
12047
12048 pSuspendIndParams = (WDI_SuspendParamsType *)pEventData->pEventData;
12049
12050 /*-----------------------------------------------------------------------
12051 Get message buffer
12052 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012053 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12054 WDI_HOST_SUSPEND_IND,
Jeff Johnson295189b2012-06-20 16:38:30 -070012055 sizeof(halWlanSuspendIndparams),
12056 &pSendBuffer, &usDataOffset, &usSendSize))||
12057 (usSendSize < (usDataOffset + sizeof(halWlanSuspendIndparams))))
12058 {
12059 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12060 "Unable to get send buffer in Suspend Ind ");
12061 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012062 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012063 }
12064
12065 halWlanSuspendIndparams.configuredMcstBcstFilterSetting =
12066 pSuspendIndParams->wdiSuspendParams.ucConfiguredMcstBcstFilterSetting;
12067
Jeff Johnsone7245742012-09-05 17:12:55 -070012068 halWlanSuspendIndparams.activeSessionCount =
Hoonki Lee9af07cf2013-04-24 01:21:58 -070012069 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_TRUE);
Jeff Johnson295189b2012-06-20 16:38:30 -070012070
Jeff Johnsone7245742012-09-05 17:12:55 -070012071 wpalMemoryCopy( pSendBuffer+usDataOffset, &halWlanSuspendIndparams,
12072 sizeof(tHalWlanHostSuspendIndParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070012073
12074 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012075 Send Suspend Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012076 -------------------------------------------------------------------------*/
12077 pWDICtx->wdiReqStatusCB = pSuspendIndParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012078 pWDICtx->pReqStatusUserData = pSuspendIndParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012079
Jeff Johnsone7245742012-09-05 17:12:55 -070012080 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012081 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12082}/*WDI_ProcessHostSuspendInd*/
12083
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080012084
12085
12086/**
12087 @brief Process Traffic Stats Indications function (called when Main FSM allows it)
12088
12089 @param pWDICtx: pointer to the WLAN DAL context
12090 pEventData: pointer to the event information structure
12091
12092 @see
12093 @return Result of the function call
12094*/
12095WDI_Status
12096WDI_ProcessTrafficStatsInd
12097(
12098 WDI_ControlBlockType* pWDICtx,
12099 WDI_EventInfoType* pEventData
12100)
12101{
12102 WDI_TrafficStatsIndType* pTrafficStatsIndParams;
12103 wpt_uint8* pSendBuffer = NULL;
12104 wpt_uint16 usDataOffset = 0;
12105 wpt_uint16 usSendSize = 0;
12106 WDI_Status wdiStatus;
12107 tStatsClassBIndParams* pStatsClassBIndParams;
12108 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12109
12110 /*-------------------------------------------------------------------------
12111 Sanity check
12112 -------------------------------------------------------------------------*/
12113 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12114 {
12115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12116 "%s: Invalid parameters in Traffic Stats ind",__func__);
12117 WDI_ASSERT(0);
12118 return WDI_STATUS_E_FAILURE;
12119 }
12120
12121 pTrafficStatsIndParams = (WDI_TrafficStatsIndType *)pEventData->pEventData;
12122
12123 if(pTrafficStatsIndParams->length != sizeof(tStaStatsClassB)*(HAL_NUM_STA))
12124 {
12125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12126 "%s: Invalid parameters in Traffic Stats ind",__func__);
12127 WDI_ASSERT(0);
12128 return WDI_STATUS_E_FAILURE;
12129 }
12130
12131 /*-----------------------------------------------------------------------
12132 Get message buffer
12133 -----------------------------------------------------------------------*/
12134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12135 WDI_TRAFFIC_STATS_IND,
12136 sizeof(tStatsClassBIndParams),
12137 &pSendBuffer, &usDataOffset, &usSendSize))||
12138 (usSendSize < (usDataOffset + sizeof(tStatsClassBIndParams))))
12139 {
12140 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12141 "Unable to get send buffer in Traffic Stats Ind ");
12142 WDI_ASSERT(0);
12143 return WDI_STATUS_E_FAILURE;
12144 }
12145
12146 pStatsClassBIndParams = (tStatsClassBIndParams*)(pSendBuffer+usDataOffset);
12147
12148 pStatsClassBIndParams->duration = pTrafficStatsIndParams->duration;
12149
12150 wpalMemoryCopy(pStatsClassBIndParams->staStatsClassB,
12151 pTrafficStatsIndParams->pTrafficStats,
12152 pTrafficStatsIndParams->length);
12153
12154 /*-------------------------------------------------------------------------
12155 Send Suspend Request to HAL
12156 -------------------------------------------------------------------------*/
12157 pWDICtx->wdiReqStatusCB = pTrafficStatsIndParams->wdiReqStatusCB;
12158 pWDICtx->pReqStatusUserData = pTrafficStatsIndParams->pUserData;
12159
12160 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12161 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12162}/*WDI_ProcessTrafficStatsInd*/
12163
Chet Lanctot186b5732013-03-18 10:26:30 -070012164#ifdef WLAN_FEATURE_11W
12165/**
12166 @brief Process Exclude Unencrypted Indications function (called
12167 when Main FSM allows it)
12168
12169 @param pWDICtx: pointer to the WLAN DAL context
12170 pEventData: pointer to the event information structure
12171
12172 @see
12173 @return Result of the function call
12174*/
12175WDI_Status
12176WDI_ProcessExcludeUnencryptInd
12177(
12178 WDI_ControlBlockType* pWDICtx,
12179 WDI_EventInfoType* pEventData
12180)
12181{
12182 WDI_ExcludeUnencryptIndType* pWDIExcUnencIndParams;
12183 wpt_uint8* pSendBuffer = NULL;
12184 wpt_uint16 usDataOffset = 0;
12185 wpt_uint16 usSendSize = 0;
12186 WDI_Status wdiStatus;
12187 tHalWlanExcludeUnEncryptedIndParam* pHalExcUnencIndParams;
12188 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12189
12190 /*-------------------------------------------------------------------------
12191 Sanity check
12192 -------------------------------------------------------------------------*/
12193 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
12194 {
12195 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12196 "%s: Invalid parameters in Exclude Unencrypted ind",__func__);
12197 WDI_ASSERT(0);
12198 return WDI_STATUS_E_FAILURE;
12199 }
12200
12201 pWDIExcUnencIndParams = (WDI_ExcludeUnencryptIndType *)pEventData->pEventData;
12202
12203 /*-----------------------------------------------------------------------
12204 Get message buffer
12205 -----------------------------------------------------------------------*/
12206 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12207 WDI_EXCLUDE_UNENCRYPTED_IND,
12208 sizeof(tHalWlanExcludeUnEncryptedIndParam),
12209 &pSendBuffer, &usDataOffset, &usSendSize))||
12210 (usSendSize < (usDataOffset + sizeof(tHalWlanExcludeUnEncryptedIndParam))))
12211 {
12212 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
12213 "Unable to get send buffer in Exclude Unencrypted Ind ");
12214 WDI_ASSERT(0);
12215 return WDI_STATUS_E_FAILURE;
12216 }
12217
12218 pHalExcUnencIndParams = (tHalWlanExcludeUnEncryptedIndParam*)(pSendBuffer+usDataOffset);
12219
12220 pHalExcUnencIndParams->bDot11ExcludeUnencrypted = pWDIExcUnencIndParams->bExcludeUnencrypt;
12221
12222 wpalMemoryCopy(pHalExcUnencIndParams->bssId,
12223 pWDIExcUnencIndParams->bssid, WDI_MAC_ADDR_LEN);
12224
12225 /*-------------------------------------------------------------------------
12226 Send Suspend Request to HAL
12227 -------------------------------------------------------------------------*/
12228 pWDICtx->wdiReqStatusCB = pWDIExcUnencIndParams->wdiReqStatusCB;
12229 pWDICtx->pReqStatusUserData = pWDIExcUnencIndParams->pUserData;
12230
12231 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
12232 return ( wdiStatus != WDI_STATUS_SUCCESS )?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
12233}/*WDI_ProcessExcludeUnencryptInd*/
12234#endif
12235
Yue Mab9c86f42013-08-14 15:59:08 -070012236/**
12237 @brief Process Add Periodic Tx Pattern Indication function (called when
12238 Main FSM allows it)
12239
12240 @param pWDICtx: pointer to the WLAN DAL context
12241 pEventData: pointer to the event information structure
12242
12243 @see
12244 @return Result of the function call
12245*/
12246WDI_Status
12247WDI_ProcessAddPeriodicTxPtrnInd
12248(
12249 WDI_ControlBlockType* pWDICtx,
12250 WDI_EventInfoType* pEventData
12251)
12252{
12253 WDI_AddPeriodicTxPtrnParamsType *pAddPeriodicTxPtrnParams;
12254 wpt_uint8* pSendBuffer = NULL;
12255 wpt_uint16 usDataOffset = 0;
12256 wpt_uint16 usSendSize = 0;
12257 WDI_Status wdiStatus;
12258 tHalAddPeriodicTxPtrn *halAddPeriodicTxPtrn;
12259 wpt_uint8 selfStaIdx = 0;
12260
12261 /*-------------------------------------------------------------------------
12262 Sanity check
12263 -------------------------------------------------------------------------*/
12264 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12265 {
12266 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12267 "%s: Invalid parameters in AddPeriodicTxPtrnInd!", __func__);
12268 WDI_ASSERT(0);
12269 return WDI_STATUS_E_FAILURE;
12270 }
12271
12272 pAddPeriodicTxPtrnParams =
12273 (WDI_AddPeriodicTxPtrnParamsType *)pEventData->pEventData;
12274
12275 /*------------------------------------------------------------------------
12276 Get message buffer
12277 ------------------------------------------------------------------------*/
12278 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12279 WDI_ADD_PERIODIC_TX_PATTERN_IND, sizeof(tHalAddPeriodicTxPtrn),
12280 &pSendBuffer, &usDataOffset, &usSendSize))||
12281 (usSendSize < (usDataOffset + sizeof(tHalAddPeriodicTxPtrn))))
12282 {
12283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12284 "%s: Unable to get send buffer in AddPeriodicTxPtrnInd!",
12285 __func__);
12286 WDI_ASSERT(0);
12287 return WDI_STATUS_E_FAILURE;
12288 }
12289
12290 halAddPeriodicTxPtrn = (tHalAddPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12291
12292 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12293 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.macAddr,
12294 &selfStaIdx))
12295 {
12296 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12297 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012298 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012299
12300 return WDI_STATUS_E_FAILURE;
12301 }
12302
12303 halAddPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12304 halAddPeriodicTxPtrn->ucPtrnId =
12305 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnId;
12306 halAddPeriodicTxPtrn->usPtrnSize =
12307 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize;
12308 halAddPeriodicTxPtrn->uPtrnIntervalMs =
12309 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.usPtrnIntervalMs;
12310
12311 wpalMemoryCopy(halAddPeriodicTxPtrn->ucPattern,
12312 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPattern,
12313 pAddPeriodicTxPtrnParams->wdiAddPeriodicTxPtrnParams.ucPtrnSize);
12314
12315 /*-------------------------------------------------------------------------
12316 Send Indication to HAL
12317 -------------------------------------------------------------------------*/
12318 pWDICtx->wdiReqStatusCB = pAddPeriodicTxPtrnParams->wdiReqStatusCB;
12319 pWDICtx->pReqStatusUserData = pAddPeriodicTxPtrnParams->pUserData;
12320
12321 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12322
12323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12324 "%s: Sent WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12325
12326 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12327} /* WDI_ProcessAddPeriodicTxPtrnInd */
12328
12329/**
12330 @brief Process Delete Periodic Tx Pattern Indication function (called when
12331 Main FSM allows it)
12332
12333 @param pWDICtx: pointer to the WLAN DAL context
12334 pEventData: pointer to the event information structure
12335
12336 @see
12337 @return Result of the function call
12338*/
12339WDI_Status
12340WDI_ProcessDelPeriodicTxPtrnInd
12341(
12342 WDI_ControlBlockType* pWDICtx,
12343 WDI_EventInfoType* pEventData
12344)
12345{
12346 WDI_DelPeriodicTxPtrnParamsType *pDelPeriodicTxPtrnParams;
12347 wpt_uint8* pSendBuffer = NULL;
12348 wpt_uint16 usDataOffset = 0;
12349 wpt_uint16 usSendSize = 0;
12350 WDI_Status wdiStatus;
12351 tHalDelPeriodicTxPtrn *halDelPeriodicTxPtrn;
12352 wpt_uint8 selfStaIdx = 0;
12353
12354 /*-------------------------------------------------------------------------
12355 Sanity check
12356 -------------------------------------------------------------------------*/
12357 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
12358 {
12359 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12360 "%s: Invalid parameters in DelPeriodicTxPtrnInd!", __func__);
12361 WDI_ASSERT(0);
12362 return WDI_STATUS_E_FAILURE;
12363 }
12364
12365 pDelPeriodicTxPtrnParams =
12366 (WDI_DelPeriodicTxPtrnParamsType *)pEventData->pEventData;
12367
12368 /*------------------------------------------------------------------------
12369 Get message buffer
12370 ------------------------------------------------------------------------*/
12371 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
12372 WDI_DEL_PERIODIC_TX_PATTERN_IND, sizeof(tHalDelPeriodicTxPtrn),
12373 &pSendBuffer, &usDataOffset, &usSendSize))||
12374 (usSendSize < (usDataOffset + sizeof(tHalDelPeriodicTxPtrn))))
12375 {
12376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12377 "%s: Unable to get send buffer in DelPeriodicTxPtrnInd!",
12378 __func__);
12379 WDI_ASSERT(0);
12380 return WDI_STATUS_E_FAILURE;
12381 }
12382
12383 halDelPeriodicTxPtrn = (tHalDelPeriodicTxPtrn *)(pSendBuffer + usDataOffset);
12384
12385 if (WDI_STATUS_SUCCESS != WDI_STATableFindStaidByAddr(pWDICtx,
12386 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.macAddr,
12387 &selfStaIdx))
12388 {
12389 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12390 "%s: Failed to get selfStaIdx!", __func__);
Wilson Yang00256342013-10-10 23:13:38 -070012391 wpalMemoryFree(pSendBuffer);
Yue Mab9c86f42013-08-14 15:59:08 -070012392
12393 return WDI_STATUS_E_FAILURE;
12394 }
12395
12396 halDelPeriodicTxPtrn->selfStaIdx = selfStaIdx;
12397 halDelPeriodicTxPtrn->uPatternIdBitmap =
12398 pDelPeriodicTxPtrnParams->wdiDelPeriodicTxPtrnParams.ucPatternIdBitmap;
12399
12400 /*-------------------------------------------------------------------------
12401 Send Indication to HAL
12402 -------------------------------------------------------------------------*/
12403 pWDICtx->wdiReqStatusCB = pDelPeriodicTxPtrnParams->wdiReqStatusCB;
12404 pWDICtx->pReqStatusUserData = pDelPeriodicTxPtrnParams->pUserData;
12405
12406 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
12407
12408 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
12409 "%s: Sent WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND to HAL.", __func__);
12410
12411 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus : WDI_STATUS_SUCCESS_SYNC;
12412} /* WDI_ProcessDelPeriodicTxPtrnInd */
12413
Jeff Johnson295189b2012-06-20 16:38:30 -070012414/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070012415 MISC CONTROL PROCESSING REQUEST API
Jeff Johnson295189b2012-06-20 16:38:30 -070012416==========================================================================*/
12417/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012418 @brief Process Channel Switch Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012419 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012420
12421 @param pWDICtx: pointer to the WLAN DAL context
12422 pEventData: pointer to the event information structure
12423
Jeff Johnson295189b2012-06-20 16:38:30 -070012424 @see
12425 @return Result of the function call
12426*/
12427WDI_Status
12428WDI_ProcessChannelSwitchReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012429(
Jeff Johnson295189b2012-06-20 16:38:30 -070012430 WDI_ControlBlockType* pWDICtx,
12431 WDI_EventInfoType* pEventData
12432)
12433{
12434 WDI_SwitchChReqParamsType* pwdiSwitchChParams;
12435 WDI_SwitchChRspCb wdiSwitchChRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012436 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012437 wpt_uint16 usDataOffset = 0;
12438 wpt_uint16 usSendSize = 0;
12439 tSwitchChannelReqMsg halSwitchChannelReq = {{0}};
12440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12441
12442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012444 -------------------------------------------------------------------------*/
12445 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12446 ( NULL == pEventData->pCBfnc ))
12447 {
12448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012452 }
12453
12454 pwdiSwitchChParams = (WDI_SwitchChReqParamsType*)pEventData->pEventData;
12455 wdiSwitchChRspCb = (WDI_SwitchChRspCb)pEventData->pCBfnc;
12456 /*-----------------------------------------------------------------------
12457 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012458 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012459 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012460 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CH_SWITCH_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012461 sizeof(halSwitchChannelReq.switchChannelParams),
12462 &pSendBuffer, &usDataOffset, &usSendSize))||
12463 ( usSendSize < (usDataOffset + sizeof(halSwitchChannelReq.switchChannelParams) )))
12464 {
12465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012466 "Unable to get send buffer in channel switch req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012467 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012469 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012470 }
12471
Jeff Johnsone7245742012-09-05 17:12:55 -070012472 halSwitchChannelReq.switchChannelParams.channelNumber =
Jeff Johnson295189b2012-06-20 16:38:30 -070012473 pwdiSwitchChParams->wdiChInfo.ucChannel;
Jeff Johnsone7245742012-09-05 17:12:55 -070012474#ifndef WLAN_FEATURE_VOWIFI
12475 halSwitchChannelReq.switchChannelParams.localPowerConstraint =
Jeff Johnson295189b2012-06-20 16:38:30 -070012476 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12477#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012478 halSwitchChannelReq.switchChannelParams.secondaryChannelOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070012479 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12480
12481#ifdef WLAN_FEATURE_VOWIFI
12482 halSwitchChannelReq.switchChannelParams.maxTxPower
Jeff Johnsone7245742012-09-05 17:12:55 -070012483 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070012484 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.selfStaMacAddr,
12485 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12486 WDI_MAC_ADDR_LEN);
12487 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams.bssId,
12488 pwdiSwitchChParams->wdiChInfo.macBSSId,
12489 WDI_MAC_ADDR_LEN);
12490#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070012491 wpalMemoryCopy( pSendBuffer+usDataOffset,
12492 &halSwitchChannelReq.switchChannelParams,
12493 sizeof(halSwitchChannelReq.switchChannelParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012494
12495 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012496 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012497
12498 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012499 Send Switch Channel Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012500 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012501 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12502 wdiSwitchChRspCb, pEventData->pUserData, WDI_CH_SWITCH_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012503}/*WDI_ProcessChannelSwitchReq*/
12504
12505/**
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080012506 @brief Process Channel Switch Request function (called when
12507 Main FSM allows it)
12508
12509 @param pWDICtx: pointer to the WLAN DAL context
12510 pEventData: pointer to the event information structure
12511
12512 @see
12513 @return Result of the function call
12514*/
12515WDI_Status WDI_ProcessChannelSwitchReq_V1
12516(
12517 WDI_ControlBlockType* pWDICtx,
12518 WDI_EventInfoType* pEventData
12519)
12520{
12521 WDI_SwitchChReqParamsType_V1* pwdiSwitchChParams;
12522 WDI_SwitchChRspCb_V1 wdiSwitchChRspCb;
12523 wpt_uint8* pSendBuffer = NULL;
12524 wpt_uint16 usDataOffset = 0;
12525 wpt_uint16 usSendSize = 0;
12526 tSwitchChannelReqMsg_V1 halSwitchChannelReq = {{0}};
12527 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12528
12529 /*-------------------------------------------------------------------------
12530 Sanity check
12531 -------------------------------------------------------------------------*/
12532 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12533 ( NULL == pEventData->pCBfnc ))
12534 {
12535 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12536 "%s: Invalid parameters", __func__);
12537 WDI_ASSERT(0);
12538 return WDI_STATUS_E_FAILURE;
12539 }
12540
12541 pwdiSwitchChParams = (WDI_SwitchChReqParamsType_V1*)pEventData->pEventData;
12542 wdiSwitchChRspCb = (WDI_SwitchChRspCb_V1)pEventData->pCBfnc;
12543 /*-----------------------------------------------------------------------
12544 Get message buffer
12545 ! TO DO : proper conversion into the HAL Message Request Format
12546 -----------------------------------------------------------------------*/
12547 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
12548 WDI_CH_SWITCH_REQ_V1,
12549 sizeof(halSwitchChannelReq.switchChannelParams_V1),
12550 &pSendBuffer, &usDataOffset, &usSendSize))||
12551 ( usSendSize < (usDataOffset +
12552 sizeof(halSwitchChannelReq.switchChannelParams_V1) )))
12553 {
12554 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12555 "Unable to get send buffer in channel switch req %p %p %p",
12556 pEventData, pwdiSwitchChParams, wdiSwitchChRspCb);
12557 WDI_ASSERT(0);
12558 return WDI_STATUS_E_FAILURE;
12559 }
12560
12561 halSwitchChannelReq.switchChannelParams_V1.channelSwitchSrc =
12562 pwdiSwitchChParams->wdiChInfo.channelSwitchSrc;
12563
12564 halSwitchChannelReq.switchChannelParams_V1.channelNumber =
12565 pwdiSwitchChParams->wdiChInfo.ucChannel;
12566#ifndef WLAN_FEATURE_VOWIFI
12567 halSwitchChannelReq.switchChannelParams_V1.localPowerConstraint =
12568 pwdiSwitchChParams->wdiChInfo.ucLocalPowerConstraint;
12569#endif
12570 halSwitchChannelReq.switchChannelParams_V1.secondaryChannelOffset =
12571 pwdiSwitchChParams->wdiChInfo.wdiSecondaryChannelOffset;
12572
12573#ifdef WLAN_FEATURE_VOWIFI
12574 halSwitchChannelReq.switchChannelParams_V1.maxTxPower
12575 = pwdiSwitchChParams->wdiChInfo.cMaxTxPower;
12576 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.selfStaMacAddr,
12577 pwdiSwitchChParams->wdiChInfo.macSelfStaMacAddr,
12578 WDI_MAC_ADDR_LEN);
12579 wpalMemoryCopy(halSwitchChannelReq.switchChannelParams_V1.bssId,
12580 pwdiSwitchChParams->wdiChInfo.macBSSId,
12581 WDI_MAC_ADDR_LEN);
12582#endif
12583 wpalMemoryCopy( pSendBuffer+usDataOffset,
12584 &halSwitchChannelReq.switchChannelParams_V1,
12585 sizeof(halSwitchChannelReq.switchChannelParams_V1));
12586
12587 pWDICtx->wdiReqStatusCB = pwdiSwitchChParams->wdiReqStatusCB;
12588 pWDICtx->pReqStatusUserData = pwdiSwitchChParams->pUserData;
12589
12590 /*-------------------------------------------------------------------------
12591 Send Switch Channel Request to HAL
12592 -------------------------------------------------------------------------*/
12593 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12594 wdiSwitchChRspCb, pEventData->pUserData,
12595 WDI_CH_SWITCH_RESP_V1);
12596}/*WDI_ProcessChannelSwitchReq_V1*/
12597
12598/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012599 @brief Process Config STA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070012600 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012601
12602 @param pWDICtx: pointer to the WLAN DAL context
12603 pEventData: pointer to the event information structure
12604
Jeff Johnson295189b2012-06-20 16:38:30 -070012605 @see
12606 @return Result of the function call
12607*/
12608WDI_Status
12609WDI_ProcessConfigStaReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012610(
Jeff Johnson295189b2012-06-20 16:38:30 -070012611 WDI_ControlBlockType* pWDICtx,
12612 WDI_EventInfoType* pEventData
12613)
12614{
12615 WDI_ConfigSTAReqParamsType* pwdiConfigSTAParams;
12616 WDI_ConfigSTARspCb wdiConfigSTARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012617 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012618 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012619 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012620 wpt_uint16 usDataOffset = 0;
12621 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012622 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012623
Jeff Johnsone7245742012-09-05 17:12:55 -070012624 tConfigStaReqMsg halConfigStaReqMsg;
12625 wpt_uint16 uMsgSize = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012626 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12627
12628 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012629 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012630 -------------------------------------------------------------------------*/
12631 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12632 ( NULL == pEventData->pCBfnc ))
12633 {
12634 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012635 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012636 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012637 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012638 }
12639
Abhishek Singh6927fa02014-06-27 17:19:55 +053012640 wpalMemoryZero(&halConfigStaReqMsg, sizeof(tConfigStaReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012641 pwdiConfigSTAParams = (WDI_ConfigSTAReqParamsType*)pEventData->pEventData;
12642 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pEventData->pCBfnc;
12643 /*-------------------------------------------------------------------------
12644 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012645 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012646 -------------------------------------------------------------------------*/
12647 wpalMutexAcquire(&pWDICtx->wptMutex);
12648
12649 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012650 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012651 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012652 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12653 pwdiConfigSTAParams->wdiReqInfo.macBSSID,
12654 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012655
Jeff Johnsone7245742012-09-05 17:12:55 -070012656 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012657 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012658 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12659 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12660 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012661
12662 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012663 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012664 }
12665
12666 /*------------------------------------------------------------------------
12667 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012668 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012669 ------------------------------------------------------------------------*/
12670 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12671 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012672 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12673 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12674 __func__, MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012675
Jeff Johnsone7245742012-09-05 17:12:55 -070012676 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012677 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012678 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012679 }
12680
12681 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012682
12683 /* Allocation of StaReqMsg Memory Based on Firmware Capabilities */
12684#ifdef WLAN_FEATURE_11AC
12685 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012686 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams_V1); // Version-1 For 11AC
Jeff Johnsone7245742012-09-05 17:12:55 -070012687 else
12688#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070012689 uMsgSize = sizeof(halConfigStaReqMsg.uStaParams.configStaParams); // Version-0 Default
Jeff Johnsone7245742012-09-05 17:12:55 -070012690
Jeff Johnson295189b2012-06-20 16:38:30 -070012691 /*-----------------------------------------------------------------------
12692 Get message buffer
12693 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012694 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIG_STA_REQ,
12695 uMsgSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070012696 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070012697 ( usSendSize < (usDataOffset + uMsgSize )))
Jeff Johnson295189b2012-06-20 16:38:30 -070012698 {
12699 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012700 "Unable to get send buffer in config sta req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012701 pEventData, pwdiConfigSTAParams, wdiConfigSTARspCb);
12702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012704 }
12705
12706 /*Copy the station context*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012707 WDI_CopyWDIStaCtxToHALStaCtx( &halConfigStaReqMsg.uStaParams.configStaParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012708 &pwdiConfigSTAParams->wdiReqInfo);
12709
12710 if(pwdiConfigSTAParams->wdiReqInfo.wdiSTAType == WDI_STA_ENTRY_SELF)
12711 {
12712 /* Need to fill in the self STA Index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012713 if ( WDI_STATUS_SUCCESS !=
Jeff Johnson295189b2012-06-20 16:38:30 -070012714 WDI_STATableFindStaidByAddr(pWDICtx,
12715 pwdiConfigSTAParams->wdiReqInfo.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070012716 (wpt_uint8*)&halConfigStaReqMsg.uStaParams.configStaParams.staIdx ))
Jeff Johnson295189b2012-06-20 16:38:30 -070012717 {
12718 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012719 MAC_ADDRESS_STR
12720 ": This station does not exist in the WDI Station Table",
12721 MAC_ADDR_ARRAY(pwdiConfigSTAParams->wdiReqInfo.macSTA));
Jeff Johnson295189b2012-06-20 16:38:30 -070012722 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudif244d8f2012-11-29 11:21:05 -080012723 wpalMemoryFree(pSendBuffer);
Jeff Johnsone7245742012-09-05 17:12:55 -070012724 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012725 }
12726 }
12727 else
12728 {
12729 /* Need to fill in the STA Index to invalid, since at this point we have not
12730 yet received it from HAL */
Gopichand Nakkalae7cbc5d2013-03-27 21:09:23 -070012731 halConfigStaReqMsg.uStaParams.configStaParams.staIdx = pwdiConfigSTAParams->wdiReqInfo.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070012732 }
12733
12734 /* Need to fill in the BSS index */
Jeff Johnsone7245742012-09-05 17:12:55 -070012735 halConfigStaReqMsg.uStaParams.configStaParams.bssIdx = pBSSSes->ucBSSIdx;
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012736
Jeff Johnsone7245742012-09-05 17:12:55 -070012737 wpalMemoryCopy( pSendBuffer+usDataOffset,
12738 &halConfigStaReqMsg.uStaParams,
Madan Mohan Koyyalamudi0e4acab2012-11-02 12:46:40 -070012739 uMsgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070012740
12741 pWDICtx->wdiReqStatusCB = pwdiConfigSTAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012742 pWDICtx->pReqStatusUserData = pwdiConfigSTAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012743
Jeff Johnsone7245742012-09-05 17:12:55 -070012744 wpalMemoryCopy( &pWDICtx->wdiCachedConfigStaReq,
12745 pwdiConfigSTAParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012746 sizeof(pWDICtx->wdiCachedConfigStaReq));
12747
12748 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012749 Send Config STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012750 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012751 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12752 wdiConfigSTARspCb, pEventData->pUserData, WDI_CONFIG_STA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012753}/*WDI_ProcessConfigStaReq*/
12754
12755
12756/**
Jeff Johnsone7245742012-09-05 17:12:55 -070012757 @brief Process Set Link State Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070012758 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012759
12760 @param pWDICtx: pointer to the WLAN DAL context
12761 pEventData: pointer to the event information structure
12762
Jeff Johnson295189b2012-06-20 16:38:30 -070012763 @see
12764 @return Result of the function call
12765*/
12766WDI_Status
12767WDI_ProcessSetLinkStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012768(
Jeff Johnson295189b2012-06-20 16:38:30 -070012769 WDI_ControlBlockType* pWDICtx,
12770 WDI_EventInfoType* pEventData
12771)
12772{
12773 WDI_SetLinkReqParamsType* pwdiSetLinkParams;
12774 WDI_SetLinkStateRspCb wdiSetLinkRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012775 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012776 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070012777 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012778 wpt_uint16 usDataOffset = 0;
12779 wpt_uint16 usSendSize = 0;
12780 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnsone7245742012-09-05 17:12:55 -070012781 tLinkStateParams halLinkStateReqMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070012782 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12783
12784 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012785 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012786 -------------------------------------------------------------------------*/
12787 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
12788 ( NULL == pEventData->pCBfnc ))
12789 {
12790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012791 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012792 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012793 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012794 }
12795
12796 pwdiSetLinkParams = (WDI_SetLinkReqParamsType*)pEventData->pEventData;
12797 wdiSetLinkRspCb = (WDI_SetLinkStateRspCb)pEventData->pCBfnc;
12798 /*-------------------------------------------------------------------------
12799 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012800 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012801 -------------------------------------------------------------------------*/
12802 wpalMutexAcquire(&pWDICtx->wptMutex);
12803
12804 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012805 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012806 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012807 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
12808 pwdiSetLinkParams->wdiLinkInfo.macBSSID,
12809 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070012810
Jeff Johnsone7245742012-09-05 17:12:55 -070012811 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012812 {
Madan Mohan Koyyalamudi891e9492012-10-21 12:19:31 -070012813 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070012814 "%s: Set link request received outside association session. macBSSID " MAC_ADDRESS_STR,
12815 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012816 }
12817 else
12818 {
12819 /*------------------------------------------------------------------------
12820 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012821 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012822 ------------------------------------------------------------------------*/
12823 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12824 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12826 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12827 __func__, MAC_ADDR_ARRAY(pwdiSetLinkParams->wdiLinkInfo.macBSSID));
12828
12829 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012830 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012831 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012832 }
12833 }
12834 /* If the link is set to enter IDLE - the Session allocated for this BSS
12835 will be deleted on the Set Link State response coming from HAL
12836 - cache the request for response processing */
Jeff Johnsone7245742012-09-05 17:12:55 -070012837 wpalMemoryCopy(&pWDICtx->wdiCacheSetLinkStReq, pwdiSetLinkParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070012838 sizeof(pWDICtx->wdiCacheSetLinkStReq));
12839
12840 wpalMutexRelease(&pWDICtx->wptMutex);
12841 /*-----------------------------------------------------------------------
12842 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070012843 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070012844 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012845
12846 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_LINK_ST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012847 sizeof(halLinkStateReqMsg),
12848 &pSendBuffer, &usDataOffset, &usSendSize))||
12849 ( usSendSize < (usDataOffset + sizeof(halLinkStateReqMsg) )))
12850 {
12851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012852 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012853 pEventData, pwdiSetLinkParams, wdiSetLinkRspCb);
12854 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012855 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012856 }
12857
12858 wpalMemoryCopy(halLinkStateReqMsg.bssid,
12859 pwdiSetLinkParams->wdiLinkInfo.macBSSID, WDI_MAC_ADDR_LEN);
12860
12861 wpalMemoryCopy(halLinkStateReqMsg.selfMacAddr,
12862 pwdiSetLinkParams->wdiLinkInfo.macSelfStaMacAddr, WDI_MAC_ADDR_LEN);
12863
Jeff Johnsone7245742012-09-05 17:12:55 -070012864 halLinkStateReqMsg.state =
Jeff Johnson295189b2012-06-20 16:38:30 -070012865 WDI_2_HAL_LINK_STATE(pwdiSetLinkParams->wdiLinkInfo.wdiLinkState);
12866
Jeff Johnsone7245742012-09-05 17:12:55 -070012867 wpalMemoryCopy( pSendBuffer+usDataOffset,
12868 &halLinkStateReqMsg,
12869 sizeof(halLinkStateReqMsg));
Jeff Johnson295189b2012-06-20 16:38:30 -070012870
12871 pWDICtx->wdiReqStatusCB = pwdiSetLinkParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012872 pWDICtx->pReqStatusUserData = pwdiSetLinkParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070012873
12874 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012875 Send Set Link State Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070012876 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012877 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
12878 wdiSetLinkRspCb, pEventData->pUserData, WDI_SET_LINK_ST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070012879}/*WDI_ProcessSetLinkStateReq*/
12880
12881
12882/**
12883 @brief Process Get Stats Request function (called when Main FSM
12884 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070012885
12886 @param pWDICtx: pointer to the WLAN DAL context
12887 pEventData: pointer to the event information structure
12888
Jeff Johnson295189b2012-06-20 16:38:30 -070012889 @see
12890 @return Result of the function call
12891*/
12892WDI_Status
12893WDI_ProcessGetStatsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070012894(
Jeff Johnson295189b2012-06-20 16:38:30 -070012895 WDI_ControlBlockType* pWDICtx,
12896 WDI_EventInfoType* pEventData
12897)
12898{
12899 WDI_GetStatsReqParamsType* pwdiGetStatsParams;
12900 WDI_GetStatsRspCb wdiGetStatsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070012901 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070012902 wpt_uint16 usDataOffset = 0;
12903 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070012904 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070012905 WDI_BSSSessionType* pBSSSes = NULL;
12906 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070012907 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070012908 tHalStatsReqMsg halStatsReqMsg;
12909 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
12910
12911 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012912 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070012913 -------------------------------------------------------------------------*/
12914 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
12915 ( NULL == pEventData->pCBfnc ) )
12916 {
12917 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070012918 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070012919 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012920 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012921 }
12922
12923 pwdiGetStatsParams = (WDI_GetStatsReqParamsType*)pEventData->pEventData;
12924 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
12925
12926 /*-------------------------------------------------------------------------
12927 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070012928 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070012929 -------------------------------------------------------------------------*/
12930 wpalMutexAcquire(&pWDICtx->wptMutex);
12931
12932 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070012933 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070012934 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012935 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
12936 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070012937 &macBSSID))
12938 {
12939 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012940 "This station does not exist in the WDI Station Table %d",
12941 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070012942 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012943 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012944 }
12945
Jeff Johnsone7245742012-09-05 17:12:55 -070012946 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
12947 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070012948 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012949 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
12950 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
12951 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012952
12953 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012954 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070012955 }
12956
12957 /*------------------------------------------------------------------------
12958 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070012959 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070012960 ------------------------------------------------------------------------*/
12961 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
12962 {
Jeff Johnsone7245742012-09-05 17:12:55 -070012963 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
12964 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
12965 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070012966
Jeff Johnsone7245742012-09-05 17:12:55 -070012967 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070012968 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070012969 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070012970 }
12971
12972
12973 wpalMutexRelease(&pWDICtx->wptMutex);
12974
12975 /*-----------------------------------------------------------------------
12976 Get message buffer
12977 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070012978 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_STATS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070012979 sizeof(halStatsReqMsg.statsReqParams),
12980 &pSendBuffer, &usDataOffset, &usSendSize))||
12981 ( usSendSize < (usDataOffset + sizeof(halStatsReqMsg.statsReqParams) )))
12982 {
12983 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080012984 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070012985 pEventData, pwdiGetStatsParams, wdiGetStatsRspCb);
12986 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070012987 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070012988 }
12989
Jeff Johnsone7245742012-09-05 17:12:55 -070012990 halStatsReqMsg.statsReqParams.staId =
Jeff Johnson295189b2012-06-20 16:38:30 -070012991 pwdiGetStatsParams->wdiGetStatsParamsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070012992 halStatsReqMsg.statsReqParams.statsMask =
Jeff Johnson295189b2012-06-20 16:38:30 -070012993 pwdiGetStatsParams->wdiGetStatsParamsInfo.uStatsMask;
Jeff Johnsone7245742012-09-05 17:12:55 -070012994 wpalMemoryCopy( pSendBuffer+usDataOffset,
12995 &halStatsReqMsg.statsReqParams,
12996 sizeof(halStatsReqMsg.statsReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070012997
12998 pWDICtx->wdiReqStatusCB = pwdiGetStatsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070012999 pWDICtx->pReqStatusUserData = pwdiGetStatsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013000
13001 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013002 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013003 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013004 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13005 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_STATS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013006}/*WDI_ProcessGetStatsReq*/
13007
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080013008#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013009/**
13010 @brief Process Get Roam Rssi Request function (called when Main FSM
13011 allows it)
13012
13013 @param pWDICtx: pointer to the WLAN DAL context
13014 pEventData: pointer to the event information structure
13015
13016 @see
13017 @return Result of the function call
13018*/
13019WDI_Status
13020WDI_ProcessGetRoamRssiReq
13021(
13022 WDI_ControlBlockType* pWDICtx,
13023 WDI_EventInfoType* pEventData
13024)
13025{
13026 WDI_GetRoamRssiReqParamsType* pwdiGetRoamRssiParams;
13027 WDI_GetStatsRspCb wdiGetStatsRspCb;
13028 wpt_uint8* pSendBuffer = NULL;
13029 wpt_uint16 usDataOffset = 0;
13030 wpt_uint16 usSendSize = 0;
13031 wpt_uint8 ucCurrentBSSSesIdx = 0;
13032 WDI_BSSSessionType* pBSSSes = NULL;
13033 wpt_macAddr macBSSID;
13034 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
13035 tHalGetRoamRssiReqMsg halRssiRoamReqMsg;
13036 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13037 /*-------------------------------------------------------------------------
13038 Sanity check
13039 -------------------------------------------------------------------------*/
13040 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
13041 ( NULL == pEventData->pCBfnc ) )
13042 {
13043 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13044 "%s: Invalid parameters", __func__);
13045 WDI_ASSERT(0);
13046 return WDI_STATUS_E_FAILURE;
13047 }
13048
13049 pwdiGetRoamRssiParams = (WDI_GetRoamRssiReqParamsType*)pEventData->pEventData;
13050 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pEventData->pCBfnc;
13051
13052 /*-------------------------------------------------------------------------
13053 Check to see if we are in the middle of an association, if so queue, if
13054 not it means it is free to process request
13055 -------------------------------------------------------------------------*/
13056 wpalMutexAcquire(&pWDICtx->wptMutex);
13057
13058 /*------------------------------------------------------------------------
13059 Find the BSS for which the request is made
13060 ------------------------------------------------------------------------*/
13061 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13062 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx,
13063 &macBSSID))
13064 {
13065 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013066 "This station does not exist in the WDI Station Table %d",
13067 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx);
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013068 wpalMutexRelease(&pWDICtx->wptMutex);
13069 return WDI_STATUS_E_FAILURE;
13070 }
13071
13072 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13073 if ( NULL == pBSSSes )
13074 {
13075 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13076 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13077 __func__, MAC_ADDR_ARRAY(macBSSID));
13078
13079 wpalMutexRelease(&pWDICtx->wptMutex);
13080 return WDI_STATUS_E_NOT_ALLOWED;
13081 }
13082
13083 /*------------------------------------------------------------------------
13084 Check if this BSS is being currently processed or queued,
13085 if queued - queue the new request as well
13086 ------------------------------------------------------------------------*/
13087 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13088 {
13089 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13090 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13091 __func__, MAC_ADDR_ARRAY(macBSSID));
13092
13093 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
13094 wpalMutexRelease(&pWDICtx->wptMutex);
13095 return wdiStatus;
13096 }
13097
13098 wpalMutexRelease(&pWDICtx->wptMutex);
13099
13100 /*-----------------------------------------------------------------------
13101 Get message buffer
13102 -----------------------------------------------------------------------*/
13103 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GET_ROAM_RSSI_REQ,
13104 sizeof(halRssiRoamReqMsg.roamRssiReqParams),
13105 &pSendBuffer, &usDataOffset, &usSendSize))||
13106 ( usSendSize < (usDataOffset + sizeof(halRssiRoamReqMsg.roamRssiReqParams) )))
13107 {
13108 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013109 "Unable to get send buffer in set bss key req %p %p %p",
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080013110 pEventData, pwdiGetRoamRssiParams, wdiGetStatsRspCb);
13111 WDI_ASSERT(0);
13112 return WDI_STATUS_E_FAILURE;
13113 }
13114
13115 halRssiRoamReqMsg.roamRssiReqParams.staId =
13116 pwdiGetRoamRssiParams->wdiGetRoamRssiParamsInfo.ucSTAIdx;
13117 wpalMemoryCopy( pSendBuffer+usDataOffset,
13118 &halRssiRoamReqMsg.roamRssiReqParams,
13119 sizeof(halRssiRoamReqMsg.roamRssiReqParams));
13120
13121 pWDICtx->wdiReqStatusCB = pwdiGetRoamRssiParams->wdiReqStatusCB;
13122 pWDICtx->pReqStatusUserData = pwdiGetRoamRssiParams->pUserData;
13123
13124 /*-------------------------------------------------------------------------
13125 Send Get STA Request to HAL
13126 -------------------------------------------------------------------------*/
13127 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13128 wdiGetStatsRspCb, pEventData->pUserData, WDI_GET_ROAM_RSSI_RESP);
13129}/*WDI_ProcessGetRoamRssiReq*/
13130#endif
13131
Jeff Johnson295189b2012-06-20 16:38:30 -070013132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013133 @brief Process Update Cfg Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013134 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013135
13136 @param pWDICtx: pointer to the WLAN DAL context
13137 pEventData: pointer to the event information structure
13138
Jeff Johnson295189b2012-06-20 16:38:30 -070013139 @see
13140 @return Result of the function call
13141*/
13142WDI_Status
13143WDI_ProcessUpdateCfgReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013144(
Jeff Johnson295189b2012-06-20 16:38:30 -070013145 WDI_ControlBlockType* pWDICtx,
13146 WDI_EventInfoType* pEventData
13147)
13148{
13149 WDI_UpdateCfgReqParamsType* pwdiUpdateCfgParams = NULL;
13150 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb = NULL;
13151
Jeff Johnsone7245742012-09-05 17:12:55 -070013152 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013153 wpt_uint16 usDataOffset = 0;
13154 wpt_uint16 usSendSize = 0;
13155 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13156
13157 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013158 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013159 -------------------------------------------------------------------------*/
13160 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
13161 ( NULL == pEventData->pCBfnc))
13162 {
13163 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013164 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013165 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013166 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013167 }
13168
13169 pwdiUpdateCfgParams = (WDI_UpdateCfgReqParamsType*)pEventData->pEventData;
13170 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pEventData->pCBfnc;
13171
13172 /*-----------------------------------------------------------------------
13173 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070013174 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070013175 -----------------------------------------------------------------------*/
13176
Jeff Johnsone7245742012-09-05 17:12:55 -070013177 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_CFG_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013178 pwdiUpdateCfgParams->uConfigBufferLen + sizeof(wpt_uint32),
13179 &pSendBuffer, &usDataOffset, &usSendSize))||
13180 ( usSendSize < (usDataOffset + pwdiUpdateCfgParams->uConfigBufferLen)))
13181 {
13182 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013183 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013184 pEventData, pwdiUpdateCfgParams, wdiUpdateCfgRspCb);
13185 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013186 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013187 }
13188
Jeff Johnsone7245742012-09-05 17:12:55 -070013189 wpalMemoryCopy( pSendBuffer+usDataOffset,
13190 &pwdiUpdateCfgParams->uConfigBufferLen,
13191 sizeof(wpt_uint32));
13192 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(wpt_uint32),
13193 pwdiUpdateCfgParams->pConfigBuffer,
13194 pwdiUpdateCfgParams->uConfigBufferLen);
Jeff Johnson295189b2012-06-20 16:38:30 -070013195
13196 pWDICtx->wdiReqStatusCB = pwdiUpdateCfgParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013197 pWDICtx->pReqStatusUserData = pwdiUpdateCfgParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013198
13199 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013200 Send Update Cfg Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013201 -------------------------------------------------------------------------*/
13202
Jeff Johnsone7245742012-09-05 17:12:55 -070013203 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13204 wdiUpdateCfgRspCb, pEventData->pUserData, WDI_UPDATE_CFG_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013205
13206}/*WDI_ProcessUpdateCfgReq*/
13207
13208
13209/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013210 @brief Process Add BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013211 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013212
13213 @param pWDICtx: pointer to the WLAN DAL context
13214 pEventData: pointer to the event information structure
13215
Jeff Johnson295189b2012-06-20 16:38:30 -070013216 @see
13217 @return Result of the function call
13218*/
13219WDI_Status
13220WDI_ProcessAddBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013221(
Jeff Johnson295189b2012-06-20 16:38:30 -070013222 WDI_ControlBlockType* pWDICtx,
13223 WDI_EventInfoType* pEventData
13224)
13225{
13226 WDI_AddBAReqParamsType* pwdiAddBAParams;
13227 WDI_AddBARspCb wdiAddBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013228 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013229 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013230 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013231 wpt_uint16 usDataOffset = 0;
13232 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013233 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013234 wpt_macAddr macBSSID;
13235
13236 tAddBAReqMsg halAddBAReq;
13237 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13238
13239 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013240 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013241 -------------------------------------------------------------------------*/
13242 if (( NULL == pEventData ) ||
13243 ( NULL == pEventData->pEventData) ||
13244 ( NULL == pEventData->pCBfnc ))
13245 {
13246 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013247 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013248 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013249 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013250 }
13251
13252 pwdiAddBAParams = (WDI_AddBAReqParamsType*)pEventData->pEventData;
13253 wdiAddBARspCb = (WDI_AddBARspCb)pEventData->pCBfnc;
13254
13255 /*-------------------------------------------------------------------------
13256 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013257 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013258 -------------------------------------------------------------------------*/
13259 wpalMutexAcquire(&pWDICtx->wptMutex);
13260
13261 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013262 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013263 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013264 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13265 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013266 &macBSSID))
13267 {
13268 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013269 "This station does not exist in the WDI Station Table %d",
13270 pwdiAddBAParams->wdiBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013271 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013272 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013273 }
13274
Jeff Johnsone7245742012-09-05 17:12:55 -070013275 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13276 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013277 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013278 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13279 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13280 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013281
13282 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013283 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013284 }
13285
13286 /*------------------------------------------------------------------------
13287 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013288 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013289 ------------------------------------------------------------------------*/
13290 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13291 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13293 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13294 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013295
Jeff Johnsone7245742012-09-05 17:12:55 -070013296 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013297 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013298 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013299 }
13300
13301
13302 wpalMutexRelease(&pWDICtx->wptMutex);
13303 /*-----------------------------------------------------------------------
13304 Get message buffer
13305 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ADD_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013307 sizeof(halAddBAReq.addBAParams),
13308 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013309 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013310 (usDataOffset + sizeof(halAddBAReq.addBAParams) )))
13311 {
13312 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013313 "Unable to get send buffer in Add BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013314 pEventData, pwdiAddBAParams, wdiAddBARspCb);
13315 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013316 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013317 }
13318
Jeff Johnsone7245742012-09-05 17:12:55 -070013319 halAddBAReq.addBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013320 pwdiAddBAParams->wdiBAInfoType.ucBaSessionID;
13321 halAddBAReq.addBAParams.winSize = pwdiAddBAParams->wdiBAInfoType.ucWinSize;
13322#ifdef FEATURE_ON_CHIP_REORDERING
Jeff Johnsone7245742012-09-05 17:12:55 -070013323 halAddBAReq.addBAParams.isReorderingDoneOnChip =
Jeff Johnson295189b2012-06-20 16:38:30 -070013324 pwdiAddBAParams->wdiBAInfoType.bIsReorderingDoneOnChip;
13325#endif
13326
Jeff Johnsone7245742012-09-05 17:12:55 -070013327 wpalMemoryCopy( pSendBuffer+usDataOffset,
13328 &halAddBAReq.addBAParams,
13329 sizeof(halAddBAReq.addBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013330
13331 pWDICtx->wdiReqStatusCB = pwdiAddBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013332 pWDICtx->pReqStatusUserData = pwdiAddBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013333
13334 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013335 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013336 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013337 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13338 wdiAddBARspCb, pEventData->pUserData,
13339 WDI_ADD_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013340}/*WDI_ProcessAddBAReq*/
13341
13342
13343
13344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013345 @brief Process Trigger BA Request function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013346 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013347
13348 @param pWDICtx: pointer to the WLAN DAL context
13349 pEventData: pointer to the event information structure
13350
Jeff Johnson295189b2012-06-20 16:38:30 -070013351 @see
13352 @return Result of the function call
13353*/
13354WDI_Status
13355WDI_ProcessTriggerBAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013356(
Jeff Johnson295189b2012-06-20 16:38:30 -070013357 WDI_ControlBlockType* pWDICtx,
13358 WDI_EventInfoType* pEventData
13359)
13360{
13361 WDI_TriggerBAReqParamsType* pwdiTriggerBAParams;
13362 WDI_TriggerBARspCb wdiTriggerBARspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013363 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070013364 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070013365 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013366 wpt_uint16 usDataOffset = 0;
13367 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013368 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070013369 wpt_uint16 index;
13370 wpt_macAddr macBSSID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013371
Jeff Johnson295189b2012-06-20 16:38:30 -070013372 tTriggerBAReqMsg halTriggerBAReq;
13373 tTriggerBaReqCandidate* halTriggerBACandidate;
13374 WDI_TriggerBAReqCandidateType* wdiTriggerBACandidate;
13375 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13376
13377 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013378 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013379 -------------------------------------------------------------------------*/
13380 if (( NULL == pEventData ) ||
13381 ( NULL == pEventData->pEventData ) ||
13382 ( NULL == pEventData->pCBfnc ))
13383 {
13384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013385 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013386 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013387 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013388 }
13389
13390 pwdiTriggerBAParams = (WDI_TriggerBAReqParamsType*)pEventData->pEventData;
13391 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pEventData->pCBfnc;
13392 /*-------------------------------------------------------------------------
13393 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070013394 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070013395 -------------------------------------------------------------------------*/
13396 wpalMutexAcquire(&pWDICtx->wptMutex);
13397
13398 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013399 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070013400 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013401 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
13402 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070013403 &macBSSID))
13404 {
13405 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013406 "This station does not exist in the WDI Station Table %d",
13407 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070013408 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013409 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013410 }
13411
Jeff Johnsone7245742012-09-05 17:12:55 -070013412 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
13413 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070013414 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13416 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
13417 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013418
13419 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013420 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070013421 }
13422
13423 /*------------------------------------------------------------------------
13424 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070013425 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070013426 ------------------------------------------------------------------------*/
13427 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
13428 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013429 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13430 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
13431 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070013432
Jeff Johnsone7245742012-09-05 17:12:55 -070013433 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070013434 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070013435 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070013436 }
13437
13438
13439 wpalMutexRelease(&pWDICtx->wptMutex);
13440 /*-----------------------------------------------------------------------
13441 Get message buffer
13442 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013443 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
13444 WDI_TRIGGER_BA_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013445 sizeof(halTriggerBAReq.triggerBAParams) +
Jeff Johnsone7245742012-09-05 17:12:55 -070013446 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013447 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt),
13448 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013449 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070013450 (usDataOffset + sizeof(halTriggerBAReq.triggerBAParams)+
Jeff Johnsone7245742012-09-05 17:12:55 -070013451 (sizeof(tTriggerBaReqCandidate) *
Jeff Johnson295189b2012-06-20 16:38:30 -070013452 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt) )))
13453 {
13454 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013455 "Unable to get send buffer in Trigger BA req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013456 pEventData, pwdiTriggerBAParams, wdiTriggerBARspCb);
13457 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013458 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013459 }
13460
Jeff Johnsone7245742012-09-05 17:12:55 -070013461 halTriggerBAReq.triggerBAParams.baSessionID =
Jeff Johnson295189b2012-06-20 16:38:30 -070013462 pwdiTriggerBAParams->wdiTriggerBAInfoType.ucBASessionID;
Jeff Johnsone7245742012-09-05 17:12:55 -070013463 halTriggerBAReq.triggerBAParams.baCandidateCnt =
Jeff Johnson295189b2012-06-20 16:38:30 -070013464 pwdiTriggerBAParams->wdiTriggerBAInfoType.usBACandidateCnt;
13465
Jeff Johnsone7245742012-09-05 17:12:55 -070013466 wpalMemoryCopy( pSendBuffer+usDataOffset,
13467 &halTriggerBAReq.triggerBAParams,
13468 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013469
Jeff Johnsone7245742012-09-05 17:12:55 -070013470 wdiTriggerBACandidate =
Jeff Johnson295189b2012-06-20 16:38:30 -070013471 (WDI_TriggerBAReqCandidateType*)(pwdiTriggerBAParams + 1);
13472 halTriggerBACandidate = (tTriggerBaReqCandidate*)(pSendBuffer+usDataOffset+
13473 sizeof(halTriggerBAReq.triggerBAParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070013474
13475 for(index = 0 ; index < halTriggerBAReq.triggerBAParams.baCandidateCnt ;
Jeff Johnson295189b2012-06-20 16:38:30 -070013476 index++)
13477 {
13478 halTriggerBACandidate->staIdx = wdiTriggerBACandidate->ucSTAIdx;
13479 halTriggerBACandidate->tidBitmap = wdiTriggerBACandidate->ucTidBitmap;
13480 halTriggerBACandidate++;
13481 wdiTriggerBACandidate++;
13482 }
13483
13484 pWDICtx->wdiReqStatusCB = pwdiTriggerBAParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013485 pWDICtx->pReqStatusUserData = pwdiTriggerBAParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013486
13487 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013488 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013489 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013490 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13491 wdiTriggerBARspCb, pEventData->pUserData,
13492 WDI_TRIGGER_BA_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013493}/*WDI_ProcessTriggerBAReq*/
13494
13495
13496
13497/**
13498 @brief Process Update Beacon Params Request function (called when Main FSM
13499 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013500
13501 @param pWDICtx: pointer to the WLAN DAL context
13502 pEventData: pointer to the event information structure
13503
Jeff Johnson295189b2012-06-20 16:38:30 -070013504 @see
13505 @return Result of the function call
13506*/
13507WDI_Status
13508WDI_ProcessUpdateBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013509(
Jeff Johnson295189b2012-06-20 16:38:30 -070013510 WDI_ControlBlockType* pWDICtx,
13511 WDI_EventInfoType* pEventData
13512)
13513{
13514 WDI_UpdateBeaconParamsType* pwdiUpdateBeaconParams;
13515 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013516 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013517 wpt_uint16 usDataOffset = 0;
13518 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013519 tUpdateBeaconParams halUpdateBeaconParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13521
13522 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013523 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013524 -------------------------------------------------------------------------*/
13525 if (( NULL == pEventData ) ||
13526 ( NULL == pEventData->pEventData) ||
13527 ( NULL == pEventData->pCBfnc))
13528 {
13529 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013530 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013531 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013532 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013533 }
13534
13535 pwdiUpdateBeaconParams = (WDI_UpdateBeaconParamsType*)pEventData->pEventData;
13536 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pEventData->pCBfnc;
13537 /*-----------------------------------------------------------------------
13538 Get message buffer
13539 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013540 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_BCON_PRMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013541 sizeof(halUpdateBeaconParams),
13542 &pSendBuffer, &usDataOffset, &usSendSize))||
13543 ( usSendSize < (usDataOffset + sizeof(halUpdateBeaconParams) )))
13544 {
13545 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013546 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013547 pEventData, pwdiUpdateBeaconParams, wdiUpdateBeaconParamsRspCb);
13548 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013549 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013550 }
13551
13552 /*BSS Index of the BSS*/
13553 halUpdateBeaconParams.bssIdx =
13554 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucBssIdx;
13555 /*shortPreamble mode. HAL should update all the STA rates when it
13556 receives this message*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013557 halUpdateBeaconParams.fShortPreamble =
Jeff Johnson295189b2012-06-20 16:38:30 -070013558 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortPreamble;
13559 /* short Slot time.*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013560 halUpdateBeaconParams.fShortSlotTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070013561 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfShortSlotTime;
13562 /* Beacon Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070013563 halUpdateBeaconParams.beaconInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070013564 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usBeaconInterval;
13565
13566 /*Protection related */
Jeff Johnsone7245742012-09-05 17:12:55 -070013567 halUpdateBeaconParams.llaCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013568 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllaCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013569 halUpdateBeaconParams.llbCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013570 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllbCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013571 halUpdateBeaconParams.llgCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013572 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllgCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013573 halUpdateBeaconParams.ht20MhzCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013574 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucHt20MhzCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013575 halUpdateBeaconParams.llnNonGFCoexist =
Jeff Johnson295189b2012-06-20 16:38:30 -070013576 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070013577 halUpdateBeaconParams.fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070013578 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfLsigTXOPProtectionFullSupport;
13579 halUpdateBeaconParams.fRIFSMode =
13580 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.ucfRIFSMode;
Jeff Johnsone7245742012-09-05 17:12:55 -070013581 halUpdateBeaconParams.paramChangeBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070013582 pwdiUpdateBeaconParams->wdiUpdateBeaconParamsInfo.usChangeBitmap;
13583
Jeff Johnsone7245742012-09-05 17:12:55 -070013584 wpalMemoryCopy( pSendBuffer+usDataOffset, &halUpdateBeaconParams,
13585 sizeof(halUpdateBeaconParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013586
13587 pWDICtx->wdiReqStatusCB = pwdiUpdateBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013588 pWDICtx->pReqStatusUserData = pwdiUpdateBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013589
13590 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013591 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013592 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013593 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13594 wdiUpdateBeaconParamsRspCb, pEventData->pUserData, WDI_UPD_BCON_PRMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013595}/*WDI_ProcessUpdateBeaconParamsReq*/
13596
13597
13598
13599/**
13600 @brief Process Send Beacon template Request function (called when Main FSM
13601 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013602
13603 @param pWDICtx: pointer to the WLAN DAL context
13604 pEventData: pointer to the event information structure
13605
Jeff Johnson295189b2012-06-20 16:38:30 -070013606 @see
13607 @return Result of the function call
13608*/
13609WDI_Status
13610WDI_ProcessSendBeaconParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013611(
Jeff Johnson295189b2012-06-20 16:38:30 -070013612 WDI_ControlBlockType* pWDICtx,
13613 WDI_EventInfoType* pEventData
13614)
13615{
13616 WDI_SendBeaconParamsType* pwdiSendBeaconParams;
13617 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013618 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013619 wpt_uint16 usDataOffset = 0;
13620 wpt_uint16 usSendSize = 0;
13621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13622
13623 tSendBeaconReqMsg halSendBeaconReq;
13624 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013625 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013626 -------------------------------------------------------------------------*/
13627 if (( NULL == pEventData ) ||
13628 ( NULL == pEventData->pEventData ) ||
13629 ( NULL == pEventData->pCBfnc ))
13630 {
13631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013632 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013633 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013634 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013635 }
13636
13637 pwdiSendBeaconParams = (WDI_SendBeaconParamsType*)pEventData->pEventData;
13638 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pEventData->pCBfnc;
13639 /*-----------------------------------------------------------------------
13640 Get message buffer
13641 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013642 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SND_BCON_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013643 sizeof(halSendBeaconReq.sendBeaconParam),
13644 &pSendBuffer, &usDataOffset, &usSendSize))||
13645 ( usSendSize < (usDataOffset + sizeof(halSendBeaconReq.sendBeaconParam) )))
13646 {
13647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013648 "Unable to get send buffer in send beacon req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013649 pEventData, pwdiSendBeaconParams, wdiSendBeaconParamsRspCb);
13650 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013651 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013652 }
13653
13654 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.bssId,
13655 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.macBSSID,
13656 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013657 halSendBeaconReq.sendBeaconParam.beaconLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070013658 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength;
13659 wpalMemoryCopy(halSendBeaconReq.sendBeaconParam.beacon,
13660 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beacon,
13661 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.beaconLength);
Jeff Johnsone7245742012-09-05 17:12:55 -070013662 halSendBeaconReq.sendBeaconParam.timIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013663 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset;
Gopichand Nakkala81aef732013-03-22 11:15:19 +053013664 /* usP2PIeOffset should be atleast greater than timIeOffset */
13665 if ((pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset != 0 ) &&
13666 (pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset <
13667 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.timIeOffset))
13668 {
13669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
13670 "Invalid usP2PIeOffset %hu",
13671 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset);
13672 WDI_ASSERT(0);
13673 return WDI_STATUS_E_FAILURE;
13674 }
13675
Jeff Johnsone7245742012-09-05 17:12:55 -070013676 halSendBeaconReq.sendBeaconParam.p2pIeOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070013677 pwdiSendBeaconParams->wdiSendBeaconParamsInfo.usP2PIeOffset;
Jeff Johnson295189b2012-06-20 16:38:30 -070013678
Jeff Johnsone7245742012-09-05 17:12:55 -070013679 wpalMemoryCopy( pSendBuffer+usDataOffset,
13680 &halSendBeaconReq.sendBeaconParam,
13681 sizeof(halSendBeaconReq.sendBeaconParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070013682
13683 pWDICtx->wdiReqStatusCB = pwdiSendBeaconParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013684 pWDICtx->pReqStatusUserData = pwdiSendBeaconParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013685
13686 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013687 Send Del TS 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 wdiSendBeaconParamsRspCb, pEventData->pUserData, WDI_SND_BCON_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013691}/*WDI_ProcessSendBeaconParamsReq*/
13692
13693/**
13694 @brief Process Update Beacon Params Request function (called when Main FSM
13695 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013696
13697 @param pWDICtx: pointer to the WLAN DAL context
13698 pEventData: pointer to the event information structure
13699
Jeff Johnson295189b2012-06-20 16:38:30 -070013700 @see
13701 @return Result of the function call
13702*/
13703WDI_Status
13704WDI_ProcessUpdateProbeRspTemplateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013705(
Jeff Johnson295189b2012-06-20 16:38:30 -070013706 WDI_ControlBlockType* pWDICtx,
13707 WDI_EventInfoType* pEventData
13708)
13709{
13710 WDI_UpdateProbeRspTemplateParamsType* pwdiUpdateProbeRespTmplParams;
13711 WDI_UpdateProbeRspTemplateRspCb wdiUpdateProbeRespTmplRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013712 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013713 wpt_uint16 usDataOffset = 0;
13714 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070013715 tSendProbeRespReqParams halUpdateProbeRspTmplParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070013716 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13717
13718 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013719 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013720 -------------------------------------------------------------------------*/
13721 if (( NULL == pEventData ) ||
13722 ( NULL == pEventData->pEventData) ||
13723 ( NULL == pEventData->pCBfnc))
13724 {
13725 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013726 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013727 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013728 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013729 }
13730
Jeff Johnsone7245742012-09-05 17:12:55 -070013731 pwdiUpdateProbeRespTmplParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013732 (WDI_UpdateProbeRspTemplateParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013733 wdiUpdateProbeRespTmplRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013734 (WDI_UpdateProbeRspTemplateRspCb)pEventData->pCBfnc;
13735 /*-----------------------------------------------------------------------
13736 Get message buffer
13737 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013738 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPD_PROBE_RSP_TEMPLATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013739 sizeof(halUpdateProbeRspTmplParams),
13740 &pSendBuffer, &usDataOffset, &usSendSize))||
13741 ( usSendSize < (usDataOffset + sizeof(halUpdateProbeRspTmplParams) )))
13742 {
13743 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013744 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013745 pEventData, pwdiUpdateProbeRespTmplParams, wdiUpdateProbeRespTmplRspCb);
13746 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013747 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013748 }
13749
13750 wpalMemoryCopy(halUpdateProbeRspTmplParams.bssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070013751 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070013752 WDI_MAC_ADDR_LEN);
13753
Jeff Johnsone7245742012-09-05 17:12:55 -070013754 halUpdateProbeRspTmplParams.probeRespTemplateLen =
Jeff Johnson295189b2012-06-20 16:38:30 -070013755 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uProbeRespTemplateLen;
13756
13757 wpalMemoryCopy(halUpdateProbeRspTmplParams.pProbeRespTemplate,
13758 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.pProbeRespTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070013759 BEACON_TEMPLATE_SIZE);
Jeff Johnson295189b2012-06-20 16:38:30 -070013760
13761
13762 wpalMemoryCopy(halUpdateProbeRspTmplParams.ucProxyProbeReqValidIEBmap,
13763 pwdiUpdateProbeRespTmplParams->wdiProbeRspTemplateInfo.uaProxyProbeReqValidIEBmap,
13764 WDI_PROBE_REQ_BITMAP_IE_LEN);
13765
Jeff Johnsone7245742012-09-05 17:12:55 -070013766 wpalMemoryCopy( pSendBuffer+usDataOffset,
13767 &halUpdateProbeRspTmplParams,
13768 sizeof(halUpdateProbeRspTmplParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013769
13770 pWDICtx->wdiReqStatusCB = pwdiUpdateProbeRespTmplParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013771 pWDICtx->pReqStatusUserData = pwdiUpdateProbeRespTmplParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013772
13773 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013774 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013775 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013776 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13777 wdiUpdateProbeRespTmplRspCb, pEventData->pUserData,
13778 WDI_UPD_PROBE_RSP_TEMPLATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070013779}/*WDI_ProcessUpdateProbeRspTemplateReq*/
13780
13781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013782 @brief Process NV blob download function (called when Main FSM
Jeff Johnson295189b2012-06-20 16:38:30 -070013783 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013784
13785 @param pWDICtx: pointer to the WLAN DAL context
13786 pEventData: pointer to the event information structure
13787
Jeff Johnson295189b2012-06-20 16:38:30 -070013788 @see
13789 @return Result of the function call
13790*/
13791WDI_Status
13792WDI_ProcessNvDownloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070013793(
Jeff Johnson295189b2012-06-20 16:38:30 -070013794 WDI_ControlBlockType* pWDICtx,
13795 WDI_EventInfoType* pEventData
13796)
13797{
13798
13799 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams = NULL;
13800 WDI_NvDownloadRspCb wdiNvDownloadRspCb = NULL;
13801
13802 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013803 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013804 -------------------------------------------------------------------------*/
13805 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013806 ( NULL == (pwdiNvDownloadReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013807 (WDI_NvDownloadReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070013808 ( NULL == (wdiNvDownloadRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013809 (WDI_NvDownloadRspCb)pEventData->pCBfnc)))
13810 {
13811 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013812 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013813 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013814 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013815 }
13816
13817 /*Intialize the Nv Blob Info */
Jeff Johnsone7245742012-09-05 17:12:55 -070013818 pWDICtx->wdiNvBlobInfo.usTotalFragment =
Jeff Johnson295189b2012-06-20 16:38:30 -070013819 TOTALFRAGMENTS(pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize);
13820
13821 /*cache the wdi nv request message here if the the first fragment
13822 * To issue the request to HAL for the next fragment */
13823 if( 0 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
13824 {
Jeff Johnsone7245742012-09-05 17:12:55 -070013825 wpalMemoryCopy(&pWDICtx->wdiCachedNvDownloadReq,
13826 pwdiNvDownloadReqParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070013827 sizeof(pWDICtx->wdiCachedNvDownloadReq));
13828
13829 pWDICtx->pfncRspCB = pEventData->pCBfnc;
13830 pWDICtx->pRspCBUserData = pEventData->pUserData;
13831 }
13832
13833 return WDI_SendNvBlobReq(pWDICtx,pEventData);
13834}
13835
13836/**
Jeff Johnsone7245742012-09-05 17:12:55 -070013837 @brief Process Set Max Tx Power Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070013838 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070013839
13840 @param pWDICtx: pointer to the WLAN DAL context
13841 pEventData: pointer to the event information structure
13842
Jeff Johnson295189b2012-06-20 16:38:30 -070013843 @see
13844 @return Result of the function call
13845*/
13846WDI_Status WDI_ProcessSetMaxTxPowerReq
13847(
13848 WDI_ControlBlockType* pWDICtx,
13849 WDI_EventInfoType* pEventData
13850)
13851{
13852 WDI_SetMaxTxPowerParamsType* pwdiSetMaxTxPowerParams = NULL;
13853 WDA_SetMaxTxPowerRspCb wdiSetMaxTxPowerRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070013854 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070013855 wpt_uint16 usDataOffset = 0;
13856 wpt_uint16 usSendSize = 0;
13857 tSetMaxTxPwrReq halSetMaxTxPower;
13858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13859
13860 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013861 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070013862 -------------------------------------------------------------------------*/
13863 if (( NULL == pEventData ) ||
13864 ( NULL == pEventData->pEventData ) ||
13865 ( NULL == pEventData->pCBfnc ))
13866 {
13867 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070013868 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070013869 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013870 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013871 }
Jeff Johnsone7245742012-09-05 17:12:55 -070013872 pwdiSetMaxTxPowerParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070013873 (WDI_SetMaxTxPowerParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070013874 wdiSetMaxTxPowerRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070013875 (WDA_SetMaxTxPowerRspCb)pEventData->pCBfnc;
13876
13877 /*-----------------------------------------------------------------------
13878 Get message buffer
13879 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013880if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_MAX_TX_POWER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070013881 sizeof(halSetMaxTxPower.setMaxTxPwrParams),
13882 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070013883 ( usSendSize < (usDataOffset + sizeof(halSetMaxTxPower.setMaxTxPwrParams)
Jeff Johnson295189b2012-06-20 16:38:30 -070013884)))
13885 {
13886 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080013887 "Unable to get Set Max Tx Power req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070013888 pEventData, pwdiSetMaxTxPowerParams, wdiSetMaxTxPowerRspCb);
13889 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070013890 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070013891 }
13892
13893 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.bssId,
13894 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macBSSId,
13895 WDI_MAC_ADDR_LEN);
13896
13897 wpalMemoryCopy(halSetMaxTxPower.setMaxTxPwrParams.selfStaMacAddr,
13898 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.macSelfStaMacAddr,
13899 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070013900 halSetMaxTxPower.setMaxTxPwrParams.power =
Jeff Johnson295189b2012-06-20 16:38:30 -070013901 pwdiSetMaxTxPowerParams->wdiMaxTxPowerInfo.ucPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070013902
13903 wpalMemoryCopy( pSendBuffer+usDataOffset,
13904 &halSetMaxTxPower.setMaxTxPwrParams,
13905 sizeof(halSetMaxTxPower.setMaxTxPwrParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070013906
13907 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070013908 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070013909
13910 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070013911 Send Del TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070013912 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070013913 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
13914 wdiSetMaxTxPowerRspCb, pEventData->pUserData,
13915 WDI_SET_MAX_TX_POWER_RESP);
13916
Jeff Johnson295189b2012-06-20 16:38:30 -070013917}
13918
Arif Hussaina5ebce02013-08-09 15:09:58 -070013919/*
13920 @brief Process Set Max Tx Power Per Band Request function (called when Main
13921 FSM allows it)
13922
13923 @param pWDICtx: pointer to the WLAN DAL context
13924 pEventData: pointer to the event information structure
13925
13926 @see
13927 @return Result of the function call
13928*/
13929WDI_Status WDI_ProcessSetMaxTxPowerPerBandReq
13930(
13931 WDI_ControlBlockType* pWDICtx,
13932 WDI_EventInfoType* pEventData
13933)
13934{
13935 WDI_SetMaxTxPowerPerBandParamsType* pwdiSetMaxTxPowerPerBandParams = NULL;
13936 WDA_SetMaxTxPowerPerBandRspCb wdiSetMaxTxPowerPerBandRspCb;
13937 wpt_uint8* pSendBuffer = NULL;
13938 wpt_uint16 usDataOffset = 0;
13939 wpt_uint16 usSendSize = 0;
Arif Hussainf8f080c2014-04-03 09:48:36 -070013940 tpSetMaxTxPwrPerBandParams phalSetMxTxPwrPerBand = NULL;
Arif Hussaina5ebce02013-08-09 15:09:58 -070013941 WDI_Status rValue = WDI_STATUS_SUCCESS;
13942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
13943
13944 /*-------------------------------------------------------------------------
13945 Sanity check
13946 -------------------------------------------------------------------------*/
13947 if (( NULL == pEventData ) ||
13948 ( NULL == pEventData->pEventData ) ||
13949 ( NULL == pEventData->pCBfnc ))
13950 {
13951 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13952 "%s: Invalid parameters", __func__);
13953 WDI_ASSERT(0);
13954 return WDI_STATUS_E_FAILURE;
13955 }
13956 pwdiSetMaxTxPowerPerBandParams = \
13957 (WDI_SetMaxTxPowerPerBandParamsType*)pEventData->pEventData;
13958
13959 wdiSetMaxTxPowerPerBandRspCb = \
13960 (WDA_SetMaxTxPowerPerBandRspCb)pEventData->pCBfnc;
13961
13962 /*-----------------------------------------------------------------------
13963 Get message buffer
13964 -----------------------------------------------------------------------*/
13965
13966 rValue = WDI_GetMessageBuffer(pWDICtx,
13967 WDI_SET_MAX_TX_POWER_PER_BAND_REQ,
13968 sizeof(tSetMaxTxPwrPerBandParams),
13969 &pSendBuffer, &usDataOffset, &usSendSize);
13970
13971 if ((WDI_STATUS_SUCCESS != rValue)|| (usSendSize <
13972 (usDataOffset + sizeof(tSetMaxTxPwrPerBandParams))))
13973 {
13974 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
13975 "Unable to get Set Max Tx Power Per Band req %p %p %p",
13976 pEventData, pwdiSetMaxTxPowerPerBandParams,
13977 wdiSetMaxTxPowerPerBandRspCb);
13978 WDI_ASSERT(0);
13979 return WDI_STATUS_E_FAILURE;
13980 }
13981
13982
Arif Hussainf8f080c2014-04-03 09:48:36 -070013983 phalSetMxTxPwrPerBand = (tpSetMaxTxPwrPerBandParams)(pSendBuffer + usDataOffset);
13984 phalSetMxTxPwrPerBand->bandInfo = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013985 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.bandInfo;
13986
Arif Hussainf8f080c2014-04-03 09:48:36 -070013987 phalSetMxTxPwrPerBand->power = \
Arif Hussaina5ebce02013-08-09 15:09:58 -070013988 pwdiSetMaxTxPowerPerBandParams->wdiMaxTxPowerPerBandInfo.ucPower;
13989
13990 pWDICtx->wdiReqStatusCB = pwdiSetMaxTxPowerPerBandParams->wdiReqStatusCB;
13991 pWDICtx->pReqStatusUserData = pwdiSetMaxTxPowerPerBandParams->pUserData;
13992
13993 /*-------------------------------------------------------------------------
13994 Send Set Max Tx Power Per Band Request to HAL
13995 -------------------------------------------------------------------------*/
13996 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
13997 wdiSetMaxTxPowerPerBandRspCb, pEventData->pUserData,
13998 WDI_SET_MAX_TX_POWER_PER_BAND_RSP);
13999}
14000
schang86c22c42013-03-13 18:41:24 -070014001/**
14002 @brief Process Set Tx Power Request function (called when Main
14003 FSM allows it)
14004
14005 @param pWDICtx: pointer to the WLAN DAL context
14006 pEventData: pointer to the event information structure
14007
14008 @see
14009 @return Result of the function call
14010*/
14011WDI_Status WDI_ProcessSetTxPowerReq
14012(
14013 WDI_ControlBlockType* pWDICtx,
14014 WDI_EventInfoType* pEventData
14015)
14016{
14017 WDI_SetTxPowerParamsType* pwdiSetTxPowerParams = NULL;
14018 WDA_SetTxPowerRspCb wdiSetTxPowerRspCb;
14019 wpt_uint8* pSendBuffer = NULL;
14020 wpt_uint16 usDataOffset = 0;
14021 wpt_uint16 usSendSize = 0;
Leo Chang9a43db92013-03-25 17:39:58 -070014022 tSetTxPwrReqParams *halSetTxPower = NULL;
schang86c22c42013-03-13 18:41:24 -070014023 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14024
14025 /*-------------------------------------------------------------------------
14026 Sanity check
14027 -------------------------------------------------------------------------*/
14028 if (( NULL == pEventData ) ||
14029 ( NULL == pEventData->pEventData ) ||
14030 ( NULL == pEventData->pCBfnc ))
14031 {
14032 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
14033 "%s: Invalid parameters", __func__);
14034 WDI_ASSERT(0);
14035 return WDI_STATUS_E_FAILURE;
14036 }
14037
14038 pwdiSetTxPowerParams =
14039 (WDI_SetTxPowerParamsType*)pEventData->pEventData;
14040 wdiSetTxPowerRspCb =
14041 (WDA_SetTxPowerRspCb)pEventData->pCBfnc;
14042
14043 /*-----------------------------------------------------------------------
14044 Get message buffer
14045 -----------------------------------------------------------------------*/
14046 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TX_POWER_REQ,
14047 sizeof(tSetTxPwrReqParams),
14048 &pSendBuffer, &usDataOffset, &usSendSize))||
14049 ( usSendSize < (usDataOffset + sizeof(tSetTxPwrReqParams)
14050 )))
14051 {
14052 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014053 "Unable to get Set Max Tx Power req %p %p %p",
schang86c22c42013-03-13 18:41:24 -070014054 pEventData, pwdiSetTxPowerParams, wdiSetTxPowerRspCb);
14055 WDI_ASSERT(0);
14056 return WDI_STATUS_E_FAILURE;
14057 }
14058
Leo Chang9a43db92013-03-25 17:39:58 -070014059 halSetTxPower = (tSetTxPwrReqParams *)(pSendBuffer + usDataOffset);
14060 halSetTxPower->txPower = pwdiSetTxPowerParams->wdiTxPowerInfo.ucPower;
14061 halSetTxPower->bssIdx = pwdiSetTxPowerParams->wdiTxPowerInfo.bssIdx;
schang86c22c42013-03-13 18:41:24 -070014062
14063 pWDICtx->wdiReqStatusCB = pwdiSetTxPowerParams->wdiReqStatusCB;
14064 pWDICtx->pReqStatusUserData = pwdiSetTxPowerParams->pUserData;
14065
14066 /*-------------------------------------------------------------------------
14067 Send Set Tx Power Request to HAL
14068 -------------------------------------------------------------------------*/
14069 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14070 wdiSetTxPowerRspCb, pEventData->pUserData,
14071 WDI_SET_TX_POWER_RESP);
14072}
Jeff Johnson295189b2012-06-20 16:38:30 -070014073
14074/**
14075 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14076 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014077
14078 @param pWDICtx: pointer to the WLAN DAL context
14079 pEventData: pointer to the event information structure
14080
Jeff Johnson295189b2012-06-20 16:38:30 -070014081 @see
14082 @return Result of the function call
14083*/
14084WDI_Status
14085WDI_ProcessP2PGONOAReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014086(
Jeff Johnson295189b2012-06-20 16:38:30 -070014087 WDI_ControlBlockType* pWDICtx,
14088 WDI_EventInfoType* pEventData
14089)
14090{
14091 WDI_SetP2PGONOAReqParamsType* pwdiP2PGONOAReqParams;
14092 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070014093 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014094 wpt_uint16 usDataOffset = 0;
14095 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070014096 tSetP2PGONOAParams halSetP2PGONOAParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070014097 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14098
14099 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014100 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014101 -------------------------------------------------------------------------*/
14102 if (( NULL == pEventData ) ||
14103 ( NULL == pEventData->pEventData) ||
14104 ( NULL == pEventData->pCBfnc))
14105 {
14106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014107 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014108 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014109 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014110 }
14111
Jeff Johnsone7245742012-09-05 17:12:55 -070014112 pwdiP2PGONOAReqParams =
Jeff Johnson295189b2012-06-20 16:38:30 -070014113 (WDI_SetP2PGONOAReqParamsType*)pEventData->pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070014114 wdiP2PGONOAReqRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070014115 (WDI_SetP2PGONOAReqParamsRspCb)pEventData->pCBfnc;
14116 /*-----------------------------------------------------------------------
14117 Get message buffer
14118 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014119 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14120 WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014121 sizeof(halSetP2PGONOAParams),
14122 &pSendBuffer, &usDataOffset, &usSendSize))||
14123 ( usSendSize < (usDataOffset + sizeof(halSetP2PGONOAParams) )))
14124 {
14125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014126 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014127 pEventData, pwdiP2PGONOAReqParams, wdiP2PGONOAReqRspCb);
14128 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014129 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014130 }
14131
Jeff Johnsone7245742012-09-05 17:12:55 -070014132 halSetP2PGONOAParams.opp_ps =
Jeff Johnson295189b2012-06-20 16:38:30 -070014133 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucOpp_ps;
Jeff Johnsone7245742012-09-05 17:12:55 -070014134 halSetP2PGONOAParams.ctWindow =
Jeff Johnson295189b2012-06-20 16:38:30 -070014135 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uCtWindow;
14136 halSetP2PGONOAParams.count = pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucCount;
Jeff Johnsone7245742012-09-05 17:12:55 -070014137 halSetP2PGONOAParams.duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014138 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uDuration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014139 halSetP2PGONOAParams.interval =
Jeff Johnson295189b2012-06-20 16:38:30 -070014140 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070014141 halSetP2PGONOAParams.single_noa_duration =
Jeff Johnson295189b2012-06-20 16:38:30 -070014142 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.uSingle_noa_duration;
Jeff Johnsone7245742012-09-05 17:12:55 -070014143 halSetP2PGONOAParams.psSelection =
Jeff Johnson295189b2012-06-20 16:38:30 -070014144 pwdiP2PGONOAReqParams->wdiP2PGONOAInfo.ucPsSelection;
14145
Jeff Johnsone7245742012-09-05 17:12:55 -070014146 wpalMemoryCopy( pSendBuffer+usDataOffset,
14147 &halSetP2PGONOAParams,
14148 sizeof(halSetP2PGONOAParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070014149
14150 pWDICtx->wdiReqStatusCB = pwdiP2PGONOAReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014151 pWDICtx->pReqStatusUserData = pwdiP2PGONOAReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014152
14153 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014154 Send Update Probe Resp Template Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014155 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014156 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14157 wdiP2PGONOAReqRspCb, pEventData->pUserData,
14158 WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014159}/*WDI_ProcessP2PGONOAReq*/
14160
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014161#ifdef FEATURE_WLAN_TDLS
14162
14163/**
14164 @brief Process P2P Notice Of Absence Request function (called when Main FSM
14165 allows it)
14166
14167 @param pWDICtx: pointer to the WLAN DAL context
14168 pEventData: pointer to the event information structure
14169
14170 @see
14171 @return Result of the function call
14172*/
14173WDI_Status
14174WDI_ProcessTdlsLinkEstablishReq
14175(
14176 WDI_ControlBlockType* pWDICtx,
14177 WDI_EventInfoType* pEventData
14178)
14179{
14180 WDI_SetTDLSLinkEstablishReqParamsType* pwdiTDLSLinkEstablishReqParams;
14181 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqRspCb;
14182 wpt_uint8* pSendBuffer = NULL;
14183 wpt_uint16 usDataOffset = 0;
14184 wpt_uint16 usSendSize = 0;
14185
14186 tTDLSLinkEstablishedType halSetTDLSLinkEstablishParams;
14187 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14188
14189 /*-------------------------------------------------------------------------
14190 Sanity check
14191 -------------------------------------------------------------------------*/
14192 if (( NULL == pEventData ) ||
14193 ( NULL == pEventData->pEventData) ||
14194 ( NULL == pEventData->pCBfnc))
14195 {
14196 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14197 "%s: Invalid parameters", __func__);
14198 WDI_ASSERT(0);
14199 return WDI_STATUS_E_FAILURE;
14200 }
14201 pwdiTDLSLinkEstablishReqParams =
14202 (WDI_SetTDLSLinkEstablishReqParamsType*)pEventData->pEventData;
14203 wdiTDLSLinkEstablishReqRspCb =
14204 (WDI_SetTDLSLinkEstablishReqParamsRspCb)pEventData->pCBfnc;
14205
14206
14207 /*-----------------------------------------------------------------------
14208 Get message buffer
14209 -----------------------------------------------------------------------*/
14210 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14211 WDI_TDLS_LINK_ESTABLISH_REQ,
14212 sizeof(halSetTDLSLinkEstablishParams),
14213 &pSendBuffer, &usDataOffset, &usSendSize))||
14214 ( usSendSize < (usDataOffset + sizeof(halSetTDLSLinkEstablishParams) )))
14215 {
14216 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014217 "Unable to get send buffer in set P2P GO NOA REQ %p %p %p",
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014218 pEventData, pwdiTDLSLinkEstablishReqParams, wdiTDLSLinkEstablishReqRspCb);
14219 WDI_ASSERT(0);
14220 return WDI_STATUS_E_FAILURE;
14221 }
14222
14223 halSetTDLSLinkEstablishParams.staIdx =
14224 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uStaIdx;
14225 halSetTDLSLinkEstablishParams.bIsResponder =
14226 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsResponder;
14227 halSetTDLSLinkEstablishParams.acVOUAPSDFlag =
14228 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x08) >> 3;
14229 halSetTDLSLinkEstablishParams.acVIUAPSDFlag =
14230 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x04) >> 2;
14231 halSetTDLSLinkEstablishParams.acBKUAPSDFlag =
14232 (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x02) >> 1;
14233 halSetTDLSLinkEstablishParams.acBEUAPSDFlag =
14234 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uUapsdQueues & 0x01;
14235 halSetTDLSLinkEstablishParams.aAck = 0;
14236 halSetTDLSLinkEstablishParams.maxServicePeriodLength = (pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uMaxSp & 0x03);
14237 halSetTDLSLinkEstablishParams.moreDataAck = 0;
14238 halSetTDLSLinkEstablishParams.TPUBufferStaSupport = pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsBufSta;
Naresh Jayaramc7cbd782014-02-04 17:38:23 +053014239 halSetTDLSLinkEstablishParams.tdlsOffChannelSupport =
14240 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.uIsOffChannelSupported;
14241
14242 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validChannels,
14243 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannels,
14244 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen);
14245 halSetTDLSLinkEstablishParams.validChannelsLen =
14246 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validChannelsLen;
14247
14248 wpalMemoryCopy( halSetTDLSLinkEstablishParams.validOperClasses,
14249 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClasses,
14250 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen);
14251 halSetTDLSLinkEstablishParams.validOperClassesLen =
14252 pwdiTDLSLinkEstablishReqParams->wdiTDLSLinkEstablishInfo.validOperClassesLen;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014253
14254 wpalMemoryCopy( pSendBuffer+usDataOffset,
14255 &halSetTDLSLinkEstablishParams,
14256 sizeof(halSetTDLSLinkEstablishParams));
14257
14258 pWDICtx->wdiReqStatusCB = pwdiTDLSLinkEstablishReqParams->wdiReqStatusCB;
14259 pWDICtx->pReqStatusUserData = pwdiTDLSLinkEstablishReqParams->pUserData;
14260
14261 /*-------------------------------------------------------------------------
14262 Send Update Probe Resp Template Request to HAL
14263 -------------------------------------------------------------------------*/
14264 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14265 wdiTDLSLinkEstablishReqRspCb, pEventData->pUserData,
14266 WDI_TDLS_LINK_ESTABLISH_REQ_RESP);
14267 return 0;
14268}/*WDI_ProcessTdlsLinkEstablishReq*/
14269
14270
Atul Mittalc0f739f2014-07-31 13:47:47 +053014271/**
14272 @brief sends the channel switch command to f/w (called when Main FSM
14273 allows it)
14274
14275 @param pWDICtx: pointer to the WLAN DAL context
14276 pEventData: pointer to the event information structure
14277
14278 @see
14279 @return Result of the function call
14280*/
14281WDI_Status
14282WDI_ProcessTdlsChanSwitchReq
14283(
14284 WDI_ControlBlockType* pWDICtx,
14285 WDI_EventInfoType* pEventData
14286)
14287{
14288 WDI_SetTDLSChanSwitchReqParamsType* pwdiTDLSChanSwitchReqParams;
14289 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqRspCb;
14290 wpt_uint8* pSendBuffer = NULL;
14291 wpt_uint16 usDataOffset = 0;
14292 wpt_uint16 usSendSize = 0;
14293 //WDI_Status wdiStatus;
14294 tTDLSChanSwitchReqType halSetTDLSChanSwitchParams;
14295 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14296
14297 /*-------------------------------------------------------------------------
14298 Sanity check
14299 -------------------------------------------------------------------------*/
14300 if (( NULL == pEventData ) ||
14301 ( NULL == pEventData->pEventData))
14302 {
14303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14304 "%s: Invalid parameters", __func__);
14305 WDI_ASSERT(0);
14306 return WDI_STATUS_E_FAILURE;
14307 }
14308 pwdiTDLSChanSwitchReqParams =
14309 (WDI_SetTDLSChanSwitchReqParamsType*)pEventData->pEventData;
14310 wdiTDLSChanSwitchReqRspCb =
14311 (WDI_SetTDLSChanSwitchReqParamsRspCb)pEventData->pCBfnc;
14312
14313 /*-----------------------------------------------------------------------
14314 Get message buffer
14315 -----------------------------------------------------------------------*/
14316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
14317 WDI_TDLS_CHAN_SWITCH_REQ,
14318 sizeof(halSetTDLSChanSwitchParams),
14319 &pSendBuffer, &usDataOffset, &usSendSize))||
14320 ( usSendSize < (usDataOffset + sizeof(halSetTDLSChanSwitchParams) )))
14321 {
14322 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14323 "Unable to get send buffer in Channel Switch REQ %p %p %p",
14324 pEventData, pwdiTDLSChanSwitchReqParams, wdiTDLSChanSwitchReqRspCb);
14325 WDI_ASSERT(0);
14326 return WDI_STATUS_E_FAILURE;
14327 }
14328
14329 halSetTDLSChanSwitchParams.staIdx =
14330 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.staIdx;
14331 halSetTDLSChanSwitchParams.isOffchannelInitiator =
14332 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.isOffchannelInitiator;
14333 halSetTDLSChanSwitchParams.targetOperClass =
14334 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetOperClass;
14335 halSetTDLSChanSwitchParams.targetChannel =
14336 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.targetChannel;
14337 halSetTDLSChanSwitchParams.secondaryChannelOffset =
14338 pwdiTDLSChanSwitchReqParams->wdiTDLSChanSwitchReqInfo.secondaryChannelOffset;
14339 wpalMemoryCopy( pSendBuffer+usDataOffset,
14340 &halSetTDLSChanSwitchParams,
14341 sizeof(halSetTDLSChanSwitchParams));
14342
14343 pWDICtx->wdiReqStatusCB = NULL;
14344 pWDICtx->pReqStatusUserData = NULL;
14345
14346 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14347 wdiTDLSChanSwitchReqRspCb, pEventData->pUserData,
14348 WDI_TDLS_CHAN_SWITCH_REQ_RESP);
14349}/*WDI_ProcessTdlsChanSwitchReq*/
14350
14351#endif /*FEATURE_WLAN_TDLS*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053014352
Jeff Johnson295189b2012-06-20 16:38:30 -070014353
14354
14355/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014356 @brief Function to handle the ack from DXE once the power
Jeff Johnson295189b2012-06-20 16:38:30 -070014357 state is set.
Jeff Johnsone7245742012-09-05 17:12:55 -070014358 @param None
14359
14360 @see
14361 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070014362*/
14363void
14364WDI_SetPowerStateCb
14365(
14366 wpt_status status,
14367 unsigned int dxePhyAddr,
14368 void *pContext
14369)
14370{
14371 wpt_status wptStatus;
14372 WDI_ControlBlockType *pCB = NULL;
14373 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014374 /*
14375 * Trigger the event to bring the Enter BMPS req function to come
14376 * out of wait
Jeff Johnson295189b2012-06-20 16:38:30 -070014377*/
14378 if( NULL != pContext )
14379 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014380 pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnson295189b2012-06-20 16:38:30 -070014381 }
14382 else
14383 {
Jeff Johnsone7245742012-09-05 17:12:55 -070014384 //put an error msg
Jeff Johnson295189b2012-06-20 16:38:30 -070014385 pCB = &gWDICb;
14386 }
Mihir Shetea4306052014-03-25 00:02:54 +053014387
14388 if(eWLAN_PAL_STATUS_SUCCESS == status )
14389 {
14390 pCB->dxeRingsEmpty = eWLAN_PAL_TRUE;
14391 }
14392 else
14393 {
14394 pCB->dxeRingsEmpty = eWLAN_PAL_FALSE;
14395 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014396 pCB->dxePhyAddr = dxePhyAddr;
14397 wptStatus = wpalEventSet(&pCB->setPowerStateEvent);
14398 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14399 {
14400 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14401 "Failed to set an event");
14402
Jeff Johnsone7245742012-09-05 17:12:55 -070014403 WDI_ASSERT(0);
Jeff Johnson295189b2012-06-20 16:38:30 -070014404 }
14405 return;
14406}
14407
14408
14409/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014410 @brief Process Enter IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014411 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014412
14413 @param pWDICtx: pointer to the WLAN DAL context
14414 pEventData: pointer to the event information structure
14415
Jeff Johnson295189b2012-06-20 16:38:30 -070014416 @see
14417 @return Result of the function call
14418*/
14419WDI_Status
14420WDI_ProcessEnterImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014421(
Jeff Johnson295189b2012-06-20 16:38:30 -070014422 WDI_ControlBlockType* pWDICtx,
14423 WDI_EventInfoType* pEventData
14424)
14425{
Jeff Johnson43971f52012-07-17 12:26:56 -070014426 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070014427 WDI_EnterImpsRspCb wdiEnterImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014428 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014429 wpt_uint16 usDataOffset = 0;
14430 wpt_uint16 usSendSize = 0;
Mihir Shetea4306052014-03-25 00:02:54 +053014431 WDI_EnterImpsReqParamsType* pwdiEnterImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014432 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14433
14434 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014435 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014436 -------------------------------------------------------------------------*/
Mihir Shetea4306052014-03-25 00:02:54 +053014437 if ((NULL == pEventData ) ||
14438 (NULL == (wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pEventData->pCBfnc)) ||
14439 (NULL == (pwdiEnterImpsReqParams =
14440 (WDI_EnterImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014441 {
14442 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014443 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014444 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014445 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014446 }
14447
14448 /*-----------------------------------------------------------------------
14449 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014450 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014451 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014452 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014453 0,
14454 &pSendBuffer, &usDataOffset, &usSendSize))||
14455 ( usSendSize < (usDataOffset )))
14456 {
14457 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014458 "Unable to get send buffer in Enter IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014459 pEventData, wdiEnterImpsRspCb);
14460 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014461 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014462 }
14463
14464 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014465 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14466 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014467 {
14468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14469 "WDI Init failed to reset an event");
14470
Jeff Johnsone7245742012-09-05 17:12:55 -070014471 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014472 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014473 }
14474
14475 // notify DTS that we are entering IMPS
Ravali85acf6b2012-12-12 14:01:38 -080014476 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_IMPS, WDI_SetPowerStateCb);
14477 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
14478 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014479 "WDTS_SetPowerState returned with status %d when trying to notify DTS that host is entering IMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014480 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014481 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014482 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014483
14484 /*
Jeff Johnsone7245742012-09-05 17:12:55 -070014485 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014486 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014487 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14488 WDI_SET_POWER_STATE_TIMEOUT);
14489 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014490 {
14491 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14492 "WDI Init failed to wait on an event");
14493
Karthick S1fa70262015-08-20 13:28:14 +053014494 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014495 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014496 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014497 }
14498
Mihir Shetea4306052014-03-25 00:02:54 +053014499 if (pWDICtx->dxeRingsEmpty == eWLAN_PAL_FALSE)
14500 {
14501 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
14502 "%s: DXE Rings not empty, cannot enter IMPS",__func__);
14503
14504 goto fail;
14505 }
14506
14507 pWDICtx->wdiReqStatusCB = pwdiEnterImpsReqParams->wdiReqStatusCB;
14508 pWDICtx->pReqStatusUserData = pwdiEnterImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014509 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014510 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014511 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014512 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14513 wdiEnterImpsRspCb, pEventData->pUserData, WDI_ENTER_IMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014514
14515fail:
14516 // Release the message buffer so we don't leak
14517 wpalMemoryFree(pSendBuffer);
14518
14519failRequest:
14520 //WDA should have failure check to avoid the memory leak
14521 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014522}/*WDI_ProcessEnterImpsReq*/
14523
14524/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014525 @brief Process Exit IMPS Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014526 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014527
14528 @param pWDICtx: pointer to the WLAN DAL context
14529 pEventData: pointer to the event information structure
14530
Jeff Johnson295189b2012-06-20 16:38:30 -070014531 @see
14532 @return Result of the function call
14533*/
14534WDI_Status
14535WDI_ProcessExitImpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014536(
Jeff Johnson295189b2012-06-20 16:38:30 -070014537 WDI_ControlBlockType* pWDICtx,
14538 WDI_EventInfoType* pEventData
14539)
14540{
14541 WDI_ExitImpsRspCb wdiExitImpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014542 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014543 wpt_uint16 usDataOffset = 0;
14544 wpt_uint16 usSendSize = 0;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014545 WDI_ExitImpsReqParamsType *pwdiExitImpsReqParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014546 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14547
14548 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014549 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014550 -------------------------------------------------------------------------*/
14551 if (( NULL == pEventData ) ||
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014552 ( NULL == (wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pEventData->pCBfnc)) ||
14553 (NULL == (pwdiExitImpsReqParams =
14554 (WDI_ExitImpsReqParamsType*)pEventData->pEventData)))
Jeff Johnson295189b2012-06-20 16:38:30 -070014555 {
14556 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014557 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014558 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014559 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014560 }
14561
14562 /*-----------------------------------------------------------------------
14563 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014564 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014565 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014566 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_IMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014567 0,
14568 &pSendBuffer, &usDataOffset, &usSendSize))||
14569 ( usSendSize < (usDataOffset )))
14570 {
14571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014572 "Unable to get send buffer in Exit IMPS req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014573 pEventData, wdiExitImpsRspCb);
14574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014576 }
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053014577 pWDICtx->wdiReqStatusCB = pwdiExitImpsReqParams->wdiReqStatusCB;
14578 pWDICtx->pReqStatusUserData = pwdiExitImpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014579 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014580 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014581 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014582 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14583 wdiExitImpsRspCb, pEventData->pUserData, WDI_EXIT_IMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014584}/*WDI_ProcessExitImpsReq*/
14585
14586/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014587 @brief Process Enter BMPS Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014588 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014589
14590 @param pWDICtx: pointer to the WLAN DAL context
14591 pEventData: pointer to the event information structure
14592
Jeff Johnson295189b2012-06-20 16:38:30 -070014593 @see
14594 @return Result of the function call
14595*/
14596WDI_Status
14597WDI_ProcessEnterBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014598(
Jeff Johnson295189b2012-06-20 16:38:30 -070014599 WDI_ControlBlockType* pWDICtx,
14600 WDI_EventInfoType* pEventData
14601)
14602{
14603 WDI_EnterBmpsReqParamsType* pwdiEnterBmpsReqParams = NULL;
14604 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014605 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014606 wpt_uint16 usDataOffset = 0;
14607 wpt_uint16 usSendSize = 0;
14608 tHalEnterBmpsReqParams enterBmpsReq;
Jeff Johnson43971f52012-07-17 12:26:56 -070014609 wpt_status wptStatus;
14610
Jeff Johnson295189b2012-06-20 16:38:30 -070014611 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14612
14613 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014614 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014615 -------------------------------------------------------------------------*/
14616 if (( NULL == pEventData ) ||
14617 ( NULL == (pwdiEnterBmpsReqParams = (WDI_EnterBmpsReqParamsType*)pEventData->pEventData)) ||
14618 ( NULL == (wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pEventData->pCBfnc)))
14619 {
14620 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014621 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014622 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014623 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014624 }
14625
14626 /*-----------------------------------------------------------------------
14627 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014628 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014629 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014630 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014631 sizeof(enterBmpsReq),
14632 &pSendBuffer, &usDataOffset, &usSendSize))||
14633 ( usSendSize < (usDataOffset + sizeof(enterBmpsReq) )))
14634 {
14635 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014636 "Unable to get send buffer in Enter BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014637 pEventData, pwdiEnterBmpsReqParams, wdiEnterBmpsRspCb);
14638 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014639 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070014640 }
14641
14642 /* Reset the event to be not signalled */
Jeff Johnson43971f52012-07-17 12:26:56 -070014643 wptStatus = wpalEventReset(&pWDICtx->setPowerStateEvent);
14644 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014645 {
14646 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14647 "WDI Init failed to reset an event");
14648
Jeff Johnsone7245742012-09-05 17:12:55 -070014649 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014650 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014651 }
14652
14653 // notify DTS that we are entering BMPS
Ravali85acf6b2012-12-12 14:01:38 -080014654 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_BMPS, WDI_SetPowerStateCb);
14655 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
14656 {
14657 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080014658 "WDTS_SetPowerState returned with status %d when trying to notify DTS that we are entering BMPS", wptStatus);
Ravali85acf6b2012-12-12 14:01:38 -080014659 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014660 goto fail;
Ravali85acf6b2012-12-12 14:01:38 -080014661 }
Jeff Johnson295189b2012-06-20 16:38:30 -070014662
14663/*
Jeff Johnsone7245742012-09-05 17:12:55 -070014664 * Wait for the event to be set once the ACK comes back from DXE
Jeff Johnson295189b2012-06-20 16:38:30 -070014665 */
Jeff Johnson43971f52012-07-17 12:26:56 -070014666 wptStatus = wpalEventWait(&pWDICtx->setPowerStateEvent,
14667 WDI_SET_POWER_STATE_TIMEOUT);
14668 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070014669 {
14670 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
14671 "WDI Init failed to wait on an event");
14672
Karthick S1fa70262015-08-20 13:28:14 +053014673 WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
Jeff Johnsone7245742012-09-05 17:12:55 -070014674 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014675 goto fail;
Jeff Johnson295189b2012-06-20 16:38:30 -070014676 }
14677
14678 pWDICtx->bInBmps = eWLAN_PAL_TRUE;
14679
14680 enterBmpsReq.bssIdx = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucBssIdx;
14681 enterBmpsReq.tbtt = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.uTbtt;
14682 enterBmpsReq.dtimCount = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimCount;
14683 enterBmpsReq.dtimPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.ucDtimPeriod;
14684
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080014685 // For ESE and 11R Roaming
Jeff Johnson295189b2012-06-20 16:38:30 -070014686 enterBmpsReq.rssiFilterPeriod = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.rssiFilterPeriod;
14687 enterBmpsReq.numBeaconPerRssiAverage = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.numBeaconPerRssiAverage;
14688 enterBmpsReq.bRssiFilterEnable = pwdiEnterBmpsReqParams->wdiEnterBmpsInfo.bRssiFilterEnable;
14689
14690 wpalMemoryCopy( pSendBuffer+usDataOffset,
14691 &enterBmpsReq,
14692 sizeof(enterBmpsReq));
14693
14694 pWDICtx->wdiReqStatusCB = pwdiEnterBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014695 pWDICtx->pReqStatusUserData = pwdiEnterBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014696
14697 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014698 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014699 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014700 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14701 wdiEnterBmpsRspCb, pEventData->pUserData, WDI_ENTER_BMPS_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080014702
14703fail:
14704 // Release the message buffer so we don't leak
14705 wpalMemoryFree(pSendBuffer);
14706
14707failRequest:
14708 //WDA should have failure check to avoid the memory leak
14709 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014710}/*WDI_ProcessEnterBmpsReq*/
14711
14712/**
14713 @brief Process Exit BMPS Request function (called when Main FSM
14714 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014715
14716 @param pWDICtx: pointer to the WLAN DAL context
14717 pEventData: pointer to the event information structure
14718
Jeff Johnson295189b2012-06-20 16:38:30 -070014719 @see
14720 @return Result of the function call
14721*/
14722WDI_Status
14723WDI_ProcessExitBmpsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014724(
Jeff Johnson295189b2012-06-20 16:38:30 -070014725 WDI_ControlBlockType* pWDICtx,
14726 WDI_EventInfoType* pEventData
14727)
14728{
14729 WDI_ExitBmpsReqParamsType* pwdiExitBmpsReqParams = NULL;
14730 WDI_ExitBmpsRspCb wdiExitBmpsRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014731 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014732 wpt_uint16 usDataOffset = 0;
14733 wpt_uint16 usSendSize = 0;
14734 tHalExitBmpsReqParams exitBmpsReq;
14735 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14736
14737 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014738 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014739 -------------------------------------------------------------------------*/
14740 if (( NULL == pEventData ) ||
14741 ( NULL == (pwdiExitBmpsReqParams = (WDI_ExitBmpsReqParamsType*)pEventData->pEventData)) ||
14742 ( NULL == (wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pEventData->pCBfnc)))
14743 {
14744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014745 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014746 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 /*-----------------------------------------------------------------------
14751 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014752 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014753 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014754 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_BMPS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014755 sizeof(exitBmpsReq),
14756 &pSendBuffer, &usDataOffset, &usSendSize))||
14757 ( usSendSize < (usDataOffset + sizeof(exitBmpsReq) )))
14758 {
14759 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014760 "Unable to get send buffer in Exit BMPS req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014761 pEventData, pwdiExitBmpsReqParams, wdiExitBmpsRspCb);
14762 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014763 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014764 }
14765 exitBmpsReq.sendDataNull = pwdiExitBmpsReqParams->wdiExitBmpsInfo.ucSendDataNull;
14766
Jeff Johnsone7245742012-09-05 17:12:55 -070014767 exitBmpsReq.bssIdx = pwdiExitBmpsReqParams->wdiExitBmpsInfo.bssIdx;
14768
Jeff Johnson295189b2012-06-20 16:38:30 -070014769 wpalMemoryCopy( pSendBuffer+usDataOffset,
14770 &exitBmpsReq,
14771 sizeof(exitBmpsReq));
14772
14773 pWDICtx->wdiReqStatusCB = pwdiExitBmpsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014774 pWDICtx->pReqStatusUserData = pwdiExitBmpsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014775
14776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014777 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014778 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014779 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14780 wdiExitBmpsRspCb, pEventData->pUserData, WDI_EXIT_BMPS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014781}/*WDI_ProcessExitBmpsReq*/
14782
14783/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014784 @brief Process Enter UAPSD Request function (called when Main
Jeff Johnson295189b2012-06-20 16:38:30 -070014785 FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014786
14787 @param pWDICtx: pointer to the WLAN DAL context
14788 pEventData: pointer to the event information structure
14789
Jeff Johnson295189b2012-06-20 16:38:30 -070014790 @see
14791 @return Result of the function call
14792*/
14793WDI_Status
14794WDI_ProcessEnterUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014795(
Jeff Johnson295189b2012-06-20 16:38:30 -070014796 WDI_ControlBlockType* pWDICtx,
14797 WDI_EventInfoType* pEventData
14798)
14799{
14800 WDI_EnterUapsdReqParamsType* pwdiEnterUapsdReqParams = NULL;
14801 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014802 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014803 wpt_uint16 usDataOffset = 0;
14804 wpt_uint16 usSendSize = 0;
14805 tUapsdReqParams enterUapsdReq;
14806 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14807
14808 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014809 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014810 -------------------------------------------------------------------------*/
14811 if (( NULL == pEventData ) ||
14812 ( NULL == (pwdiEnterUapsdReqParams = (WDI_EnterUapsdReqParamsType*)pEventData->pEventData)) ||
14813 ( NULL == (wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pEventData->pCBfnc)))
14814 {
14815 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014816 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014817 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014818 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014819 }
14820
14821 /*-----------------------------------------------------------------------
14822 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014823 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014824 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014825 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ENTER_UAPSD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014826 sizeof(enterUapsdReq),
14827 &pSendBuffer, &usDataOffset, &usSendSize))||
14828 ( usSendSize < (usDataOffset + sizeof(enterUapsdReq) )))
14829 {
14830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014831 "Unable to get send buffer in Enter UAPSD req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014832 pEventData, pwdiEnterUapsdReqParams, wdiEnterUapsdRspCb);
14833 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014834 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014835 }
14836
14837 enterUapsdReq.beDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeDeliveryEnabled;
14838 enterUapsdReq.beTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBeTriggerEnabled;
14839 enterUapsdReq.bkDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkDeliveryEnabled;
14840 enterUapsdReq.bkTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucBkTriggerEnabled;
14841 enterUapsdReq.viDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViDeliveryEnabled;
14842 enterUapsdReq.viTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucViTriggerEnabled;
14843 enterUapsdReq.voDeliveryEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoDeliveryEnabled;
14844 enterUapsdReq.voTriggerEnabled = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.ucVoTriggerEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070014845 enterUapsdReq.bssIdx = pwdiEnterUapsdReqParams->wdiEnterUapsdInfo.bssIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070014846
Jeff Johnsone7245742012-09-05 17:12:55 -070014847 wpalMemoryCopy( pSendBuffer+usDataOffset,
14848 &enterUapsdReq,
14849 sizeof(enterUapsdReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014850
14851 pWDICtx->wdiReqStatusCB = pwdiEnterUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014852 pWDICtx->pReqStatusUserData = pwdiEnterUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014853
14854 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014855 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014856 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014857 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14858 wdiEnterUapsdRspCb, pEventData->pUserData, WDI_ENTER_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014859}/*WDI_ProcessEnterUapsdReq*/
14860
14861/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014862 @brief Process Exit UAPSD Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014863 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014864
14865 @param pWDICtx: pointer to the WLAN DAL context
14866 pEventData: pointer to the event information structure
14867
Jeff Johnson295189b2012-06-20 16:38:30 -070014868 @see
14869 @return Result of the function call
14870*/
14871WDI_Status
14872WDI_ProcessExitUapsdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014873(
Jeff Johnson295189b2012-06-20 16:38:30 -070014874 WDI_ControlBlockType* pWDICtx,
14875 WDI_EventInfoType* pEventData
14876)
14877{
14878 WDI_ExitUapsdRspCb wdiExitUapsdRspCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014879 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014880 wpt_uint16 usDataOffset = 0;
14881 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014882 WDI_ExitUapsdReqParamsType *pExitUapsdparams;
14883 wpt_uint8 bssIdx = 0;
14884
Jeff Johnson295189b2012-06-20 16:38:30 -070014885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14886
14887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014889 -------------------------------------------------------------------------*/
14890 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014891 ( NULL == (pExitUapsdparams = (WDI_ExitUapsdReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070014892 ( NULL == (wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pEventData->pCBfnc)))
14893 {
14894 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014895 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014896 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014897 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014898 }
14899
14900 /*-----------------------------------------------------------------------
14901 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014902 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014903 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014904 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_EXIT_UAPSD_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014905 sizeof(wpt_uint8),
Jeff Johnson295189b2012-06-20 16:38:30 -070014906 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014907 ( usSendSize < (usDataOffset + sizeof(wpt_uint8))))
Jeff Johnson295189b2012-06-20 16:38:30 -070014908 {
14909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014910 "Unable to get send buffer in Exit UAPSD req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014911 pEventData, wdiExitUapsdRspCb);
14912 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014913 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014914 }
14915
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070014916 bssIdx = pExitUapsdparams->wdiExitUapsdInfo.bssIdx;
14917
14918 wpalMemoryCopy( pSendBuffer+usDataOffset,
14919 &bssIdx,
14920 sizeof(wpt_uint8));
14921
14922 pWDICtx->wdiReqStatusCB = pExitUapsdparams->wdiReqStatusCB;
14923 pWDICtx->pReqStatusUserData = pExitUapsdparams->pUserData;
14924
Jeff Johnson295189b2012-06-20 16:38:30 -070014925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014926 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070014927 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014928 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
14929 wdiExitUapsdRspCb, pEventData->pUserData, WDI_EXIT_UAPSD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070014930}/*WDI_ProcessExitUapsdReq*/
14931
14932/**
Jeff Johnsone7245742012-09-05 17:12:55 -070014933 @brief Process Set UAPSD params Request function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070014934 Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070014935
14936 @param pWDICtx: pointer to the WLAN DAL context
14937 pEventData: pointer to the event information structure
14938
Jeff Johnson295189b2012-06-20 16:38:30 -070014939 @see
14940 @return Result of the function call
14941*/
14942WDI_Status
14943WDI_ProcessSetUapsdAcParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070014944(
Jeff Johnson295189b2012-06-20 16:38:30 -070014945 WDI_ControlBlockType* pWDICtx,
14946 WDI_EventInfoType* pEventData
14947)
14948{
14949 WDI_SetUapsdAcParamsReqParamsType* pwdiSetUapsdAcParams = NULL;
14950 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070014951 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070014952 wpt_uint16 usDataOffset = 0;
14953 wpt_uint16 usSendSize = 0;
14954 tUapsdInfo uapsdAcParamsReq;
14955 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
14956
14957 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070014958 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070014959 -------------------------------------------------------------------------*/
14960 if (( NULL == pEventData ) ||
14961 ( NULL == (pwdiSetUapsdAcParams = (WDI_SetUapsdAcParamsReqParamsType*)pEventData->pEventData)) ||
14962 ( NULL == (wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pEventData->pCBfnc)))
14963 {
14964 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070014965 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070014966 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014967 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014968 }
14969
14970 /*-----------------------------------------------------------------------
14971 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070014972 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070014973 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070014974 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070014975 sizeof(uapsdAcParamsReq),
14976 &pSendBuffer, &usDataOffset, &usSendSize))||
14977 ( usSendSize < (usDataOffset + sizeof(uapsdAcParamsReq) )))
14978 {
14979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080014980 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070014981 pEventData, pwdiSetUapsdAcParams, wdiSetUapsdAcParamsCb);
14982 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070014983 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070014984 }
14985
14986 uapsdAcParamsReq.ac = pwdiSetUapsdAcParams->wdiUapsdInfo.ucAc;
14987 uapsdAcParamsReq.staidx = pwdiSetUapsdAcParams->wdiUapsdInfo.ucSTAIdx;
14988 uapsdAcParamsReq.up = pwdiSetUapsdAcParams->wdiUapsdInfo.ucUp;
14989 uapsdAcParamsReq.delayInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uDelayInterval;
14990 uapsdAcParamsReq.srvInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSrvInterval;
14991 uapsdAcParamsReq.susInterval = pwdiSetUapsdAcParams->wdiUapsdInfo.uSusInterval;
14992
Jeff Johnsone7245742012-09-05 17:12:55 -070014993 wpalMemoryCopy( pSendBuffer+usDataOffset,
14994 &uapsdAcParamsReq,
14995 sizeof(uapsdAcParamsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070014996
14997 pWDICtx->wdiReqStatusCB = pwdiSetUapsdAcParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070014998 pWDICtx->pReqStatusUserData = pwdiSetUapsdAcParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070014999
15000 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015001 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015002 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015003 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15004 wdiSetUapsdAcParamsCb, pEventData->pUserData, WDI_SET_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015005}/*WDI_ProcessSetUapsdAcParamsReq*/
15006
15007/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015008 @brief Process update UAPSD params Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015009 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015010
15011 @param pWDICtx: pointer to the WLAN DAL context
15012 pEventData: pointer to the event information structure
15013
Jeff Johnson295189b2012-06-20 16:38:30 -070015014 @see
15015 @return Result of the function call
15016*/
15017WDI_Status
15018WDI_ProcessUpdateUapsdParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015019(
Jeff Johnson295189b2012-06-20 16:38:30 -070015020 WDI_ControlBlockType* pWDICtx,
15021 WDI_EventInfoType* pEventData
15022)
15023{
15024 WDI_UpdateUapsdReqParamsType* pwdiUpdateUapsdReqParams = NULL;
15025 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015026 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015027 wpt_uint16 usDataOffset = 0;
15028 wpt_uint16 usSendSize = 0;
15029 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15030
15031 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015032 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015033 -------------------------------------------------------------------------*/
15034 if (( NULL == pEventData ) ||
15035 ( NULL == (pwdiUpdateUapsdReqParams = (WDI_UpdateUapsdReqParamsType*)pEventData->pEventData)) ||
15036 ( NULL == (wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pEventData->pCBfnc)))
15037 {
15038 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015039 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015040 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015041 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015042 }
15043
15044 /*-----------------------------------------------------------------------
15045 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015046 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015047 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015048 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_UAPSD_PARAM_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015049 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo),
15050 &pSendBuffer, &usDataOffset, &usSendSize))||
15051 ( usSendSize < (usDataOffset + sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo) )))
15052 {
15053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015054 "Unable to get send buffer in Update UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015055 pEventData, pwdiUpdateUapsdReqParams, wdiUpdateUapsdParamsCb);
15056 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015057 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015058 }
15059
Jeff Johnsone7245742012-09-05 17:12:55 -070015060 wpalMemoryCopy( pSendBuffer+usDataOffset,
15061 &pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo,
15062 sizeof(pwdiUpdateUapsdReqParams->wdiUpdateUapsdInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015063
15064 pWDICtx->wdiReqStatusCB = pwdiUpdateUapsdReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015065 pWDICtx->pReqStatusUserData = pwdiUpdateUapsdReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015066
15067 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015068 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015069 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015070 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15071 wdiUpdateUapsdParamsCb, pEventData->pUserData, WDI_UPDATE_UAPSD_PARAM_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015072}/*WDI_ProcessUpdateUapsdParamsReq*/
15073
15074/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015075 @brief Process Configure RXP filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015076 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015077
15078 @param pWDICtx: pointer to the WLAN DAL context
15079 pEventData: pointer to the event information structure
15080
Jeff Johnson295189b2012-06-20 16:38:30 -070015081 @see
15082 @return Result of the function call
15083*/
15084WDI_Status
15085WDI_ProcessConfigureRxpFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015086(
Jeff Johnson295189b2012-06-20 16:38:30 -070015087 WDI_ControlBlockType* pWDICtx,
15088 WDI_EventInfoType* pEventData
15089)
15090{
15091 WDI_ConfigureRxpFilterReqParamsType* pwdiRxpFilterParams = NULL;
15092 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015093 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015094 wpt_uint16 usDataOffset = 0;
15095 wpt_uint16 usSendSize = 0;
15096 tHalConfigureRxpFilterReqParams halRxpFilterParams;
15097
15098 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15099
15100 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015101 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015102 -------------------------------------------------------------------------*/
15103 if (( NULL == pEventData ) ||
15104 ( NULL == (pwdiRxpFilterParams = (WDI_ConfigureRxpFilterReqParamsType*)pEventData->pEventData)) ||
15105 ( NULL == (wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pEventData->pCBfnc)))
15106 {
15107 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015108 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015109 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
15113 /*-----------------------------------------------------------------------
15114 Get message buffer
15115 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015116 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_RXP_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015117 sizeof(halRxpFilterParams),
15118 &pSendBuffer, &usDataOffset, &usSendSize))||
15119 ( usSendSize < (usDataOffset + sizeof(halRxpFilterParams) )))
15120 {
15121 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015122 "Unable to get send buffer in Set UAPSD params req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015123 pEventData, pwdiRxpFilterParams, wdiConfigureRxpFilterCb);
15124 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015125 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015126 }
15127
Jeff Johnsone7245742012-09-05 17:12:55 -070015128 halRxpFilterParams.setMcstBcstFilterSetting =
Jeff Johnson295189b2012-06-20 16:38:30 -070015129 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilterSetting;
Jeff Johnsone7245742012-09-05 17:12:55 -070015130 halRxpFilterParams.setMcstBcstFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070015131 pwdiRxpFilterParams->wdiRxpFilterParam.ucSetMcstBcstFilter;
15132
Jeff Johnsone7245742012-09-05 17:12:55 -070015133 wpalMemoryCopy( pSendBuffer+usDataOffset,
15134 &halRxpFilterParams,
15135 sizeof(halRxpFilterParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070015136
15137 pWDICtx->wdiReqStatusCB = pwdiRxpFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015138 pWDICtx->pReqStatusUserData = pwdiRxpFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015139
15140 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015141 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015142 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015143 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15144 wdiConfigureRxpFilterCb, pEventData->pUserData, WDI_CONFIGURE_RXP_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015145}/*WDI_ProcessConfigureRxpFilterReq*/
15146
15147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015148 @brief Process set beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015149 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015150
15151 @param pWDICtx: pointer to the WLAN DAL context
15152 pEventData: pointer to the event information structure
15153
Jeff Johnson295189b2012-06-20 16:38:30 -070015154 @see
15155 @return Result of the function call
15156*/
15157WDI_Status
15158WDI_ProcessSetBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015159(
Jeff Johnson295189b2012-06-20 16:38:30 -070015160 WDI_ControlBlockType* pWDICtx,
15161 WDI_EventInfoType* pEventData
15162)
15163{
15164 WDI_BeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15165 WDI_SetBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015166 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015167 wpt_uint16 usDataOffset = 0;
15168 wpt_uint16 usSendSize = 0;
15169 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15170
15171 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015172 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015173 -------------------------------------------------------------------------*/
15174 if (( NULL == pEventData ) ||
15175 ( NULL == (pwdiBeaconFilterParams = (WDI_BeaconFilterReqParamsType*)pEventData->pEventData)) ||
15176 ( NULL == (wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pEventData->pCBfnc)))
15177 {
15178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015182 }
15183
15184 /*-----------------------------------------------------------------------
15185 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015186 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015187 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015188 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015189 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) + pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe),
15190 &pSendBuffer, &usDataOffset, &usSendSize))||
15191 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15192 {
15193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015194 "Unable to get send buffer in Set beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015195 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15196 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015197 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015198 }
15199
Jeff Johnsone7245742012-09-05 17:12:55 -070015200 wpalMemoryCopy( pSendBuffer+usDataOffset,
15201 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15202 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
15203 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15204 &pwdiBeaconFilterParams->aFilters[0],
15205 pwdiBeaconFilterParams->wdiBeaconFilterInfo.usIeNum * sizeof(tBeaconFilterIe));
Jeff Johnson295189b2012-06-20 16:38:30 -070015206
15207 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015208 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015209
15210 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015211 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015212 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015213 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15214 wdiBeaconFilterCb, pEventData->pUserData, WDI_SET_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015215}/*WDI_ProcessSetBeaconFilterReq*/
15216
15217/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015218 @brief Process remove beacon filter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015219 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015220
15221 @param pWDICtx: pointer to the WLAN DAL context
15222 pEventData: pointer to the event information structure
15223
Jeff Johnson295189b2012-06-20 16:38:30 -070015224 @see
15225 @return Result of the function call
15226*/
15227WDI_Status
15228WDI_ProcessRemBeaconFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015229(
Jeff Johnson295189b2012-06-20 16:38:30 -070015230 WDI_ControlBlockType* pWDICtx,
15231 WDI_EventInfoType* pEventData
15232)
15233{
15234 WDI_RemBeaconFilterReqParamsType* pwdiBeaconFilterParams = NULL;
15235 WDI_RemBeaconFilterCb wdiBeaconFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015236 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015237 wpt_uint16 usDataOffset = 0;
15238 wpt_uint16 usSendSize = 0;
15239 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15240
15241 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015242 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015243 -------------------------------------------------------------------------*/
15244 if (( NULL == pEventData ) ||
15245 ( NULL == (pwdiBeaconFilterParams = (WDI_RemBeaconFilterReqParamsType*)pEventData->pEventData)) ||
15246 ( NULL == (wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pEventData->pCBfnc)))
15247 {
15248 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015249 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015250 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015251 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015252 }
15253
15254 /*-----------------------------------------------------------------------
15255 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015256 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015257 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015258 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_REM_BEACON_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015259 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo),
15260 &pSendBuffer, &usDataOffset, &usSendSize))||
15261 ( usSendSize < (usDataOffset + sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo) )))
15262 {
15263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015264 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015265 pEventData, pwdiBeaconFilterParams, wdiBeaconFilterCb);
15266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015267 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015268 }
15269
Jeff Johnsone7245742012-09-05 17:12:55 -070015270 wpalMemoryCopy( pSendBuffer+usDataOffset,
15271 &pwdiBeaconFilterParams->wdiBeaconFilterInfo,
15272 sizeof(pwdiBeaconFilterParams->wdiBeaconFilterInfo));
Jeff Johnson295189b2012-06-20 16:38:30 -070015273
15274 pWDICtx->wdiReqStatusCB = pwdiBeaconFilterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015275 pWDICtx->pReqStatusUserData = pwdiBeaconFilterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015276
15277 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015278 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015279 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015280 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15281 wdiBeaconFilterCb, pEventData->pUserData, WDI_REM_BEACON_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015282}
15283
15284/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015285 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015286 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015287
15288 @param pWDICtx: pointer to the WLAN DAL context
15289 pEventData: pointer to the event information structure
15290
Jeff Johnson295189b2012-06-20 16:38:30 -070015291 @see
15292 @return Result of the function call
15293*/
15294WDI_Status
15295WDI_ProcessSetRSSIThresholdsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015296(
Jeff Johnson295189b2012-06-20 16:38:30 -070015297 WDI_ControlBlockType* pWDICtx,
15298 WDI_EventInfoType* pEventData
15299)
15300{
15301 WDI_SetRSSIThresholdsReqParamsType* pwdiRSSIThresholdsParams = NULL;
15302 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015303 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015304 wpt_uint16 usDataOffset = 0;
15305 wpt_uint16 usSendSize = 0;
15306 tHalRSSIThresholds rssiThresholdsReq;
15307 WDI_Status ret_status = 0;
15308 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15309
15310 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015311 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015312 -------------------------------------------------------------------------*/
15313 if (( NULL == pEventData ) ||
15314 ( NULL == (pwdiRSSIThresholdsParams = (WDI_SetRSSIThresholdsReqParamsType*)pEventData->pEventData)) ||
15315 ( NULL == (wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pEventData->pCBfnc)))
15316 {
15317 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015318 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015319 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015320 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015321 }
15322
15323 /*-----------------------------------------------------------------------
15324 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015325 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015326 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015327 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_THRESHOLDS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015328 sizeof(rssiThresholdsReq),
15329 &pSendBuffer, &usDataOffset, &usSendSize))||
15330 ( usSendSize < (usDataOffset + sizeof(rssiThresholdsReq) )))
15331 {
15332 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015333 "Unable to get send buffer in remove beacon filter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015334 pEventData, pwdiRSSIThresholdsParams, wdiRSSIThresholdsCb);
15335 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015336 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015337 }
15338
Jeff Johnsone7245742012-09-05 17:12:55 -070015339 rssiThresholdsReq.bReserved10 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015340 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bReserved10;
Jeff Johnsone7245742012-09-05 17:12:55 -070015341 rssiThresholdsReq.bRssiThres1NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015342 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015343 rssiThresholdsReq.bRssiThres1PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015344 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres1PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015345 rssiThresholdsReq.bRssiThres2NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015346 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015347 rssiThresholdsReq.bRssiThres2PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015348 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres2PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015349 rssiThresholdsReq.bRssiThres3NegNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015350 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3NegNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015351 rssiThresholdsReq.bRssiThres3PosNotify =
Jeff Johnson295189b2012-06-20 16:38:30 -070015352 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.bRssiThres3PosNotify;
Jeff Johnsone7245742012-09-05 17:12:55 -070015353 rssiThresholdsReq.ucRssiThreshold1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015354 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold1;
Jeff Johnsone7245742012-09-05 17:12:55 -070015355 rssiThresholdsReq.ucRssiThreshold2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015356 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold2;
Jeff Johnsone7245742012-09-05 17:12:55 -070015357 rssiThresholdsReq.ucRssiThreshold3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070015358 pwdiRSSIThresholdsParams->wdiRSSIThresholdsInfo.ucRssiThreshold3;
15359
Jeff Johnsone7245742012-09-05 17:12:55 -070015360 wpalMemoryCopy( pSendBuffer+usDataOffset,
15361 &rssiThresholdsReq,
15362 sizeof(rssiThresholdsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015363
15364 pWDICtx->wdiReqStatusCB = pwdiRSSIThresholdsParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015365 pWDICtx->pReqStatusUserData = pwdiRSSIThresholdsParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015366
15367 /*-------------------------------------------------------------------------
15368 Send Set threshold req to HAL
15369 -------------------------------------------------------------------------*/
15370 if ((ret_status = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15371 wdiRSSIThresholdsCb, pEventData->pUserData, WDI_SET_RSSI_THRESHOLDS_RESP)) == WDI_STATUS_SUCCESS)
15372 {
15373 // When we are in idle state WDI_STARTED_ST and we receive indication for threshold
15374 // req. Then as a result of processing the threshold cross ind, we trigger
15375 // a Set threshold req, then we need to indicate to WDI that it needs to
15376 // go to busy state as a result of the indication as we sent a req in the
15377 // same WDI context.
15378 // Hence expected state transition is to busy.
15379 pWDICtx->ucExpectedStateTransition = WDI_BUSY_ST;
15380 }
15381
15382 return ret_status;
15383}
15384
15385/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015386 @brief Process set RSSI thresholds Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015387 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015388
15389 @param pWDICtx: pointer to the WLAN DAL context
15390 pEventData: pointer to the event information structure
15391
Jeff Johnson295189b2012-06-20 16:38:30 -070015392 @see
15393 @return Result of the function call
15394*/
15395WDI_Status
15396WDI_ProcessHostOffloadReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015397(
Jeff Johnson295189b2012-06-20 16:38:30 -070015398 WDI_ControlBlockType* pWDICtx,
15399 WDI_EventInfoType* pEventData
15400)
15401{
15402 WDI_HostOffloadReqParamsType* pwdiHostOffloadParams = NULL;
15403 WDI_HostOffloadCb wdiHostOffloadCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015404 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015405 wpt_uint16 usDataOffset = 0;
15406 wpt_uint16 usSendSize = 0;
15407 tHalHostOffloadReq hostOffloadParams;
15408 tHalNSOffloadParams nsOffloadParams;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015409 wpt_uint8 ucCurrentBSSSesIdx = 0;
15410 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015411
15412 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15413
15414 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015415 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015416 -------------------------------------------------------------------------*/
15417 if (( NULL == pEventData ) ||
15418 ( NULL == (pwdiHostOffloadParams = (WDI_HostOffloadReqParamsType*)pEventData->pEventData)) ||
15419 ( NULL == (wdiHostOffloadCb = (WDI_HostOffloadCb)pEventData->pCBfnc)))
15420 {
15421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015423 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015424 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015425 }
15426
15427 /*-----------------------------------------------------------------------
15428 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015429 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015430 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015431 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HOST_OFFLOAD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015432 sizeof(hostOffloadParams)+sizeof(nsOffloadParams),
15433 &pSendBuffer, &usDataOffset, &usSendSize))||
15434 ( usSendSize < (usDataOffset + sizeof(hostOffloadParams) + sizeof(nsOffloadParams) )))
15435 {
15436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015437 "Unable to get send buffer in host offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015438 pEventData, pwdiHostOffloadParams, wdiHostOffloadCb);
15439 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015440 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015441 }
15442
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015443 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15444 pwdiHostOffloadParams->wdiHostOffloadInfo.bssId,
15445 &pBSSSes);
15446 if ( NULL == pBSSSes )
15447 {
c_hpothu86feba52014-10-28 15:51:18 +053015448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053015449 " %s : Association for this BSSID does not exist " MAC_ADDRESS_STR,
15450 __func__, MAC_ADDR_ARRAY(pwdiHostOffloadParams->wdiHostOffloadInfo.bssId));
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015451 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015452 }
15453
Jeff Johnson295189b2012-06-20 16:38:30 -070015454 hostOffloadParams.offloadType = pwdiHostOffloadParams->wdiHostOffloadInfo.ucOffloadType;
15455 hostOffloadParams.enableOrDisable = pwdiHostOffloadParams->wdiHostOffloadInfo.ucEnableOrDisable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015456
Jeff Johnson295189b2012-06-20 16:38:30 -070015457 if( HAL_IPV4_ARP_REPLY_OFFLOAD == hostOffloadParams.offloadType )
15458 {
15459 // ARP Offload
15460 wpalMemoryCopy(hostOffloadParams.params.hostIpv4Addr,
15461 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv4Addr,
15462 4);
15463 }
15464 else
15465 {
15466 // NS Offload
15467 wpalMemoryCopy(hostOffloadParams.params.hostIpv6Addr,
15468 pwdiHostOffloadParams->wdiHostOffloadInfo.params.aHostIpv6Addr,
15469 16);
15470
15471#ifdef WLAN_NS_OFFLOAD
15472 // copy pwdiHostOffloadParams->wdiNsOffloadParams into nsOffloadParams
15473 wpalMemoryCopy(nsOffloadParams.srcIPv6Addr,
15474 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6Addr,
15475 16);
15476 wpalMemoryCopy(nsOffloadParams.selfIPv6Addr,
15477 pwdiHostOffloadParams->wdiNsOffloadParams.selfIPv6Addr,
15478 16);
15479 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr1,
15480 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1,
15481 16);
15482 wpalMemoryCopy(nsOffloadParams.targetIPv6Addr2,
15483 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2,
15484 16);
15485 wpalMemoryCopy(nsOffloadParams.selfMacAddr,
15486 pwdiHostOffloadParams->wdiNsOffloadParams.selfMacAddr,
15487 6);
Gopichand Nakkala746a9452013-06-11 12:45:54 +053015488 nsOffloadParams.srcIPv6AddrValid =
15489 pwdiHostOffloadParams->wdiNsOffloadParams.srcIPv6AddrValid;
15490
15491 nsOffloadParams.targetIPv6Addr1Valid =
15492 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr1Valid;
15493
15494 nsOffloadParams.targetIPv6Addr2Valid =
15495 pwdiHostOffloadParams->wdiNsOffloadParams.targetIPv6Addr2Valid;
15496
15497 nsOffloadParams.slotIndex =
15498 pwdiHostOffloadParams->wdiNsOffloadParams.slotIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015499
Jeff Johnson295189b2012-06-20 16:38:30 -070015500#endif // WLAN_NS_OFFLOAD
15501 }
15502
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015503 nsOffloadParams.bssIdx = pBSSSes->ucBSSIdx;
15504
Jeff Johnson295189b2012-06-20 16:38:30 -070015505 // copy hostOffloadParams into pSendBuffer
15506 wpalMemoryCopy( pSendBuffer+usDataOffset,
15507 &hostOffloadParams,
15508 sizeof(hostOffloadParams));
15509
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015510 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
Jeff Johnson295189b2012-06-20 16:38:30 -070015511 {
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015512 // copy nsOffloadParams into pSendBuffer
15513 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070015514 &nsOffloadParams,
15515 sizeof(nsOffloadParams));
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015516 }
15517 else
15518 {
15519#ifdef WLAN_NS_OFFLOAD
15520 if( HAL_IPV6_NS_OFFLOAD == hostOffloadParams.offloadType )
15521 {
15522 // copy nsOffloadParams into pSendBuffer
15523 wpalMemoryCopy( pSendBuffer+usDataOffset+sizeof(hostOffloadParams),
15524 &nsOffloadParams,
15525 sizeof(nsOffloadParams));
15526 }
15527#endif
15528 }
Jeff Johnson295189b2012-06-20 16:38:30 -070015529
15530 pWDICtx->wdiReqStatusCB = pwdiHostOffloadParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015531 pWDICtx->pReqStatusUserData = pwdiHostOffloadParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015532
15533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015534 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015535 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015536 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15537 wdiHostOffloadCb, pEventData->pUserData, WDI_HOST_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015538
15539fail:
15540 // Release the message buffer so we don't leak
15541 wpalMemoryFree(pSendBuffer);
15542
15543failRequest:
15544 //WDA should have failure check to avoid the memory leak
15545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015546}/*WDI_ProcessHostOffloadReq*/
15547
15548/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015549 @brief Process Keep Alive Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015550 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015551
15552 @param pWDICtx: pointer to the WLAN DAL context
15553 pEventData: pointer to the event information structure
15554
Jeff Johnson295189b2012-06-20 16:38:30 -070015555 @see
15556 @return Result of the function call
15557*/
15558WDI_Status
15559WDI_ProcessKeepAliveReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015560(
Jeff Johnson295189b2012-06-20 16:38:30 -070015561 WDI_ControlBlockType* pWDICtx,
15562 WDI_EventInfoType* pEventData
15563)
15564{
15565 WDI_KeepAliveReqParamsType* pwdiKeepAliveParams = NULL;
15566 WDI_KeepAliveCb wdiKeepAliveCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015567 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015568 wpt_uint16 usDataOffset = 0;
15569 wpt_uint16 usSendSize = 0;
15570 tHalKeepAliveReq keepAliveReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015571 wpt_uint8 ucCurrentBSSSesIdx = 0;
15572 WDI_BSSSessionType* pBSSSes = NULL;
15573
Jeff Johnson295189b2012-06-20 16:38:30 -070015574 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15575
15576 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015577 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015578 -------------------------------------------------------------------------*/
15579 if (( NULL == pEventData ) ||
15580 ( NULL == (pwdiKeepAliveParams = (WDI_KeepAliveReqParamsType*)pEventData->pEventData)) ||
15581 ( NULL == (wdiKeepAliveCb = (WDI_KeepAliveCb)pEventData->pCBfnc)))
15582 {
15583 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
15584 "Invalid parameters in Keep Alive req");
15585 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015586 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015587 }
15588
15589 /*-----------------------------------------------------------------------
15590 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015591 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015592 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_KEEP_ALIVE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015594 sizeof(keepAliveReq),
15595 &pSendBuffer, &usDataOffset, &usSendSize))||
15596 ( usSendSize < (usDataOffset + sizeof(keepAliveReq) )))
15597 {
15598 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015599 "Unable to get send buffer in keep alive req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015600 pEventData, pwdiKeepAliveParams, wdiKeepAliveCb);
15601 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015602 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015603 }
15604
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015605 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15606 pwdiKeepAliveParams->wdiKeepAliveInfo.bssId,
15607 &pBSSSes);
15608 if ( NULL == pBSSSes )
15609 {
15610 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015611 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015612 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015613 }
15614
Jeff Johnson295189b2012-06-20 16:38:30 -070015615 keepAliveReq.packetType = pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType;
15616 keepAliveReq.timePeriod = pwdiKeepAliveParams->wdiKeepAliveInfo.ucTimePeriod;
15617
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015618 keepAliveReq.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070015619
Jeff Johnson295189b2012-06-20 16:38:30 -070015620 if(pwdiKeepAliveParams->wdiKeepAliveInfo.ucPacketType == 2)
15621 {
15622 wpalMemoryCopy(keepAliveReq.hostIpv4Addr,
15623 pwdiKeepAliveParams->wdiKeepAliveInfo.aHostIpv4Addr,
15624 HAL_IPV4_ADDR_LEN);
15625 wpalMemoryCopy(keepAliveReq.destIpv4Addr,
15626 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestIpv4Addr,
Jeff Johnsone7245742012-09-05 17:12:55 -070015627 HAL_IPV4_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070015628 wpalMemoryCopy(keepAliveReq.destMacAddr,
15629 pwdiKeepAliveParams->wdiKeepAliveInfo.aDestMacAddr,
15630 HAL_MAC_ADDR_LEN);
15631 }
Jeff Johnsone7245742012-09-05 17:12:55 -070015632
15633 wpalMemoryCopy( pSendBuffer+usDataOffset,
15634 &keepAliveReq,
15635 sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015636
15637 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015638 "Process keep alive req %zu", sizeof(keepAliveReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015639
15640 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson5b414462013-11-22 16:44:20 -080015641 "Process keep alive req time period %d",
15642 keepAliveReq.timePeriod);
Jeff Johnson295189b2012-06-20 16:38:30 -070015643
15644 pWDICtx->wdiReqStatusCB = pwdiKeepAliveParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015645 pWDICtx->pReqStatusUserData = pwdiKeepAliveParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015646
15647 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
15648 "Sending keep alive req to HAL");
15649
15650 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015651 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015652 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015653 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15654 wdiKeepAliveCb, pEventData->pUserData, WDI_KEEP_ALIVE_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015655
15656fail:
15657 // Release the message buffer so we don't leak
15658 wpalMemoryFree(pSendBuffer);
15659
15660failRequest:
15661 //WDA should have failure check to avoid the memory leak
15662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015663}/*WDI_ProcessKeepAliveReq*/
15664
15665
15666/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015667 @brief Process Wowl add bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015668 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015669
15670 @param pWDICtx: pointer to the WLAN DAL context
15671 pEventData: pointer to the event information structure
15672
Jeff Johnson295189b2012-06-20 16:38:30 -070015673 @see
15674 @return Result of the function call
15675*/
15676WDI_Status
15677WDI_ProcessWowlAddBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015678(
Jeff Johnson295189b2012-06-20 16:38:30 -070015679 WDI_ControlBlockType* pWDICtx,
15680 WDI_EventInfoType* pEventData
15681)
15682{
15683 WDI_WowlAddBcPtrnReqParamsType* pwdiWowlAddBcPtrnParams = NULL;
15684 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015685 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015686 wpt_uint16 usDataOffset = 0;
15687 wpt_uint16 usSendSize = 0;
15688 tHalWowlAddBcastPtrn wowlAddBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015689 wpt_uint8 ucCurrentBSSSesIdx = 0;
15690 WDI_BSSSessionType* pBSSSes = NULL;
15691
Jeff Johnson295189b2012-06-20 16:38:30 -070015692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15693
15694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015696 -------------------------------------------------------------------------*/
15697 if (( NULL == pEventData ) ||
15698 ( NULL == (pwdiWowlAddBcPtrnParams = (WDI_WowlAddBcPtrnReqParamsType*)pEventData->pEventData)) ||
15699 ( NULL == (wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pEventData->pCBfnc)))
15700 {
15701 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015702 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015703 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015704 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015705 }
15706
15707 /*-----------------------------------------------------------------------
15708 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015709 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015710 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015711 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ADD_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015712 sizeof(wowlAddBcPtrnReq),
15713 &pSendBuffer, &usDataOffset, &usSendSize))||
15714 ( usSendSize < (usDataOffset + sizeof(wowlAddBcPtrnReq) )))
15715 {
15716 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015717 "Unable to get send buffer in Wowl add bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015718 pEventData, pwdiWowlAddBcPtrnParams, wdiWowlAddBcPtrnCb);
15719 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015720 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015721 }
15722
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015723 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15724 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.bssId,
15725 &pBSSSes);
15726 if ( NULL == pBSSSes )
15727 {
15728 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015729 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015730 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015731 }
15732
Jeff Johnsone7245742012-09-05 17:12:55 -070015733 wowlAddBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015734 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternId;
Jeff Johnsone7245742012-09-05 17:12:55 -070015735 wowlAddBcPtrnReq.ucPatternByteOffset =
Jeff Johnson295189b2012-06-20 16:38:30 -070015736 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternByteOffset;
Jeff Johnsone7245742012-09-05 17:12:55 -070015737 wowlAddBcPtrnReq.ucPatternMaskSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015738 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize;
Jeff Johnsone7245742012-09-05 17:12:55 -070015739 wowlAddBcPtrnReq.ucPatternSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070015740 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize;
15741
15742 if (pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize <= HAL_WOWL_BCAST_PATTERN_MAX_SIZE)
15743 {
15744 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15745 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15746 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternSize);
15747 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15748 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15749 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize);
15750 }
15751 else
15752 {
15753 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15754 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15755 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15756 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15757 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15758 HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15759
15760 wpalMemoryCopy(wowlAddBcPtrnReq.ucPattern,
15761 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPattern,
15762 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15763 wpalMemoryCopy(wowlAddBcPtrnReq.ucPatternMask,
15764 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMask,
15765 pwdiWowlAddBcPtrnParams->wdiWowlAddBcPtrnInfo.ucPatternMaskSize - HAL_WOWL_BCAST_PATTERN_MAX_SIZE);
15766 }
15767
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015768 wowlAddBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15769
Jeff Johnson295189b2012-06-20 16:38:30 -070015770 wpalMemoryCopy( pSendBuffer+usDataOffset,
15771 &wowlAddBcPtrnReq,
15772 sizeof(wowlAddBcPtrnReq));
15773
15774 pWDICtx->wdiReqStatusCB = pwdiWowlAddBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015775 pWDICtx->pReqStatusUserData = pwdiWowlAddBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015776
15777 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015778 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015779 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015780 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15781 wdiWowlAddBcPtrnCb, pEventData->pUserData, WDI_WOWL_ADD_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015782fail:
15783 // Release the message buffer so we don't leak
15784 wpalMemoryFree(pSendBuffer);
15785
15786failRequest:
15787 //WDA should have failure check to avoid the memory leak
15788 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015789}/*WDI_ProcessWowlAddBcPtrnReq*/
15790
15791/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015792 @brief Process Wowl delete bc ptrn Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015793 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015794
15795 @param pWDICtx: pointer to the WLAN DAL context
15796 pEventData: pointer to the event information structure
15797
Jeff Johnson295189b2012-06-20 16:38:30 -070015798 @see
15799 @return Result of the function call
15800*/
15801WDI_Status
15802WDI_ProcessWowlDelBcPtrnReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015803(
Jeff Johnson295189b2012-06-20 16:38:30 -070015804 WDI_ControlBlockType* pWDICtx,
15805 WDI_EventInfoType* pEventData
15806)
15807{
15808 WDI_WowlDelBcPtrnReqParamsType* pwdiWowlDelBcPtrnParams = NULL;
15809 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015810 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015811 wpt_uint16 usDataOffset = 0;
15812 wpt_uint16 usSendSize = 0;
15813 tHalWowlDelBcastPtrn wowlDelBcPtrnReq;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015814 wpt_uint8 ucCurrentBSSSesIdx = 0;
15815 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015816 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15817
15818 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015819 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015820 -------------------------------------------------------------------------*/
15821 if (( NULL == pEventData ) ||
15822 ( NULL == (pwdiWowlDelBcPtrnParams = (WDI_WowlDelBcPtrnReqParamsType*)pEventData->pEventData)) ||
15823 ( NULL == (wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pEventData->pCBfnc)))
15824 {
15825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015826 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015827 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015828 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015829 }
15830
15831 /*-----------------------------------------------------------------------
15832 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015833 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015834 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015835 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_DEL_BC_PTRN_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015836 sizeof(wowlDelBcPtrnReq),
15837 &pSendBuffer, &usDataOffset, &usSendSize))||
15838 ( usSendSize < (usDataOffset + sizeof(wowlDelBcPtrnReq) )))
15839 {
15840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015841 "Unable to get send buffer in Wowl del bc ptrn req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015842 pEventData, pwdiWowlDelBcPtrnParams, wdiWowlDelBcPtrnCb);
15843 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015844 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070015845 }
15846
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015847 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
15848 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.bssId,
15849 &pBSSSes);
15850 if ( NULL == pBSSSes )
15851 {
15852 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015853 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015854 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015855 }
15856
Jeff Johnsone7245742012-09-05 17:12:55 -070015857 wowlDelBcPtrnReq.ucPatternId =
Jeff Johnson295189b2012-06-20 16:38:30 -070015858 pwdiWowlDelBcPtrnParams->wdiWowlDelBcPtrnInfo.ucPatternId;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015859
15860 wowlDelBcPtrnReq.bssIdx = pBSSSes->ucBSSIdx;
15861
Jeff Johnsone7245742012-09-05 17:12:55 -070015862 wpalMemoryCopy( pSendBuffer+usDataOffset,
15863 &wowlDelBcPtrnReq,
15864 sizeof(wowlDelBcPtrnReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015865
15866 pWDICtx->wdiReqStatusCB = pwdiWowlDelBcPtrnParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015867 pWDICtx->pReqStatusUserData = pwdiWowlDelBcPtrnParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015868
15869 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015870 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015871 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015872 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15873 wdiWowlDelBcPtrnCb, pEventData->pUserData, WDI_WOWL_DEL_BC_PTRN_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080015874
15875fail:
15876 // Release the message buffer so we don't leak
15877 wpalMemoryFree(pSendBuffer);
15878
15879failRequest:
15880 //WDA should have failure check to avoid the memory leak
15881 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015882}/*WDI_ProcessWowlDelBcPtrnReq*/
15883
15884/**
Jeff Johnsone7245742012-09-05 17:12:55 -070015885 @brief Process Wowl enter Request function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070015886 when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015887
15888 @param pWDICtx: pointer to the WLAN DAL context
15889 pEventData: pointer to the event information structure
15890
Jeff Johnson295189b2012-06-20 16:38:30 -070015891 @see
15892 @return Result of the function call
15893*/
15894WDI_Status
15895WDI_ProcessWowlEnterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070015896(
Jeff Johnson295189b2012-06-20 16:38:30 -070015897 WDI_ControlBlockType* pWDICtx,
15898 WDI_EventInfoType* pEventData
15899)
15900{
15901 WDI_WowlEnterReqParamsType* pwdiWowlEnterParams = NULL;
15902 WDI_WowlEnterReqCb wdiWowlEnterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070015903 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070015904 wpt_uint16 usDataOffset = 0;
15905 wpt_uint16 usSendSize = 0;
15906 tHalWowlEnterParams wowlEnterReq;
15907 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
15908
15909 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015910 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070015911 -------------------------------------------------------------------------*/
15912 if (( NULL == pEventData ) ||
15913 ( NULL == (pwdiWowlEnterParams = (WDI_WowlEnterReqParamsType*)pEventData->pEventData)) ||
15914 ( NULL == (wdiWowlEnterCb = (WDI_WowlEnterReqCb)pEventData->pCBfnc)))
15915 {
15916 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070015917 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070015918 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015919 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015920 }
15921
15922 /*-----------------------------------------------------------------------
15923 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070015924 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070015925 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015926 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_ENTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070015927 sizeof(wowlEnterReq),
15928 &pSendBuffer, &usDataOffset, &usSendSize))||
15929 ( usSendSize < (usDataOffset + sizeof(wowlEnterReq) )))
15930 {
15931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080015932 "Unable to get send buffer in Wowl enter req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070015933 pEventData, pwdiWowlEnterParams, wdiWowlEnterCb);
15934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070015935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070015936 }
15937
Kumar Anandaca924e2013-07-22 14:35:34 -070015938 wpalMemoryZero(&wowlEnterReq, sizeof(tHalWowlEnterParams));
15939
Jeff Johnsone7245742012-09-05 17:12:55 -070015940 wowlEnterReq.ucMagicPktEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015941 pwdiWowlEnterParams->wdiWowlEnterInfo.ucMagicPktEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015942 wowlEnterReq.ucPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015943 pwdiWowlEnterParams->wdiWowlEnterInfo.ucPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015944 wowlEnterReq.ucUcastPatternFilteringEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070015945 pwdiWowlEnterParams->wdiWowlEnterInfo.ucUcastPatternFilteringEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070015946 wowlEnterReq.ucWowChnlSwitchRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015947 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowChnlSwitchRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015948 wowlEnterReq.ucWowDeauthRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015949 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDeauthRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015950 wowlEnterReq.ucWowDisassocRcv =
Jeff Johnson295189b2012-06-20 16:38:30 -070015951 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowDisassocRcv;
Jeff Johnsone7245742012-09-05 17:12:55 -070015952 wowlEnterReq.ucWowMaxMissedBeacons =
Jeff Johnson295189b2012-06-20 16:38:30 -070015953 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxMissedBeacons;
Jeff Johnsone7245742012-09-05 17:12:55 -070015954 wowlEnterReq.ucWowMaxSleepUsec =
Jeff Johnson295189b2012-06-20 16:38:30 -070015955 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowMaxSleepUsec;
15956
15957#ifdef WLAN_WAKEUP_EVENTS
15958 wowlEnterReq.ucWoWEAPIDRequestEnable =
15959 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPIDRequestEnable;
15960
15961 wowlEnterReq.ucWoWEAPOL4WayEnable =
15962 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWEAPOL4WayEnable;
15963
15964 wowlEnterReq.ucWowNetScanOffloadMatch =
15965 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowNetScanOffloadMatch;
15966
15967 wowlEnterReq.ucWowGTKRekeyError =
15968 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWowGTKRekeyError;
15969
15970 wowlEnterReq.ucWoWBSSConnLoss =
15971 pwdiWowlEnterParams->wdiWowlEnterInfo.ucWoWBSSConnLoss;
15972#endif // WLAN_WAKEUP_EVENTS
15973
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070015974 wowlEnterReq.bssIdx = pwdiWowlEnterParams->wdiWowlEnterInfo.bssIdx;
15975
Jeff Johnson295189b2012-06-20 16:38:30 -070015976 wpalMemoryCopy(wowlEnterReq.magicPtrn,
15977 pwdiWowlEnterParams->wdiWowlEnterInfo.magicPtrn,
15978 sizeof(tSirMacAddr));
15979
Jeff Johnsone7245742012-09-05 17:12:55 -070015980 wpalMemoryCopy( pSendBuffer+usDataOffset,
15981 &wowlEnterReq,
15982 sizeof(wowlEnterReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070015983
15984 pWDICtx->wdiReqStatusCB = pwdiWowlEnterParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070015985 pWDICtx->pReqStatusUserData = pwdiWowlEnterParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070015986
15987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070015988 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070015989 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070015990 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
15991 wdiWowlEnterCb, pEventData->pUserData, WDI_WOWL_ENTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070015992}/*WDI_ProcessWowlEnterReq*/
15993
15994/**
15995 @brief Process Wowl exit Request function (called when Main FSM
15996 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070015997
15998 @param pWDICtx: pointer to the WLAN DAL context
15999 pEventData: pointer to the event information structure
16000
Jeff Johnson295189b2012-06-20 16:38:30 -070016001 @see
16002 @return Result of the function call
16003*/
16004WDI_Status
16005WDI_ProcessWowlExitReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016006(
Jeff Johnson295189b2012-06-20 16:38:30 -070016007 WDI_ControlBlockType* pWDICtx,
16008 WDI_EventInfoType* pEventData
16009)
16010{
16011 WDI_WowlExitReqCb wdiWowlExitCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016012 WDI_WowlExitReqParamsType* pwdiWowlExitParams = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016013 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016014 wpt_uint16 usDataOffset = 0;
16015 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016016 tHalWowlExitParams wowlExitparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070016017 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16018
16019 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016020 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016021 -------------------------------------------------------------------------*/
16022 if (( NULL == pEventData ) ||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016023 ( NULL == (pwdiWowlExitParams = (WDI_WowlExitReqParamsType *)pEventData->pEventData)) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070016024 ( NULL == (wdiWowlExitCb = (WDI_WowlExitReqCb)pEventData->pCBfnc)))
16025 {
16026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016027 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016028 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016029 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016030 }
16031
16032 /*-----------------------------------------------------------------------
16033 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016034 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016035 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016036 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_WOWL_EXIT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016037 sizeof(wowlExitparams),
Jeff Johnson295189b2012-06-20 16:38:30 -070016038 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016039 ( usSendSize < (usDataOffset + sizeof(wowlExitparams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070016040 {
16041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016042 "Unable to get send buffer in Wowl Exit req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016043 pEventData, wdiWowlExitCb);
16044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016045 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016046 }
16047
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070016048 wowlExitparams.bssIdx = pwdiWowlExitParams->wdiWowlExitInfo.bssIdx;
16049
16050 wpalMemoryCopy( pSendBuffer+usDataOffset,
16051 &wowlExitparams,
16052 sizeof(wowlExitparams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016053 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016054 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016055 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016056 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16057 wdiWowlExitCb, pEventData->pUserData, WDI_WOWL_EXIT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016058}/*WDI_ProcessWowlExitReq*/
16059
16060/**
16061 @brief Process Configure Apps Cpu Wakeup State Request function
16062 (called when Main FSM allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016063
16064 @param pWDICtx: pointer to the WLAN DAL context
16065 pEventData: pointer to the event information structure
16066
Jeff Johnson295189b2012-06-20 16:38:30 -070016067 @see
16068 @return Result of the function call
16069*/
16070WDI_Status
16071WDI_ProcessConfigureAppsCpuWakeupStateReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016072(
Jeff Johnson295189b2012-06-20 16:38:30 -070016073 WDI_ControlBlockType* pWDICtx,
16074 WDI_EventInfoType* pEventData
16075)
16076{
16077 WDI_ConfigureAppsCpuWakeupStateReqParamsType* pwdiAppsCpuWakeupStateParams = NULL;
16078 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016079 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016080 wpt_uint16 usDataOffset = 0;
16081 wpt_uint16 usSendSize = 0;
16082 tHalConfigureAppsCpuWakeupStateReqParams halCfgAppsCpuWakeupStateReqParams;
16083 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16084
16085 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016086 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016087 -------------------------------------------------------------------------*/
16088 if (( NULL == pEventData ) ||
16089 ( NULL == (pwdiAppsCpuWakeupStateParams = (WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEventData->pEventData)) ||
16090 ( NULL == (wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pEventData->pCBfnc)))
16091 {
16092 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016093 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016094 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016095 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016096 }
16097
16098 /*-----------------------------------------------------------------------
16099 Get message buffer
16100 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016101 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016102 sizeof(halCfgAppsCpuWakeupStateReqParams),
16103 &pSendBuffer, &usDataOffset, &usSendSize))||
16104 ( usSendSize < (usDataOffset + sizeof(pwdiAppsCpuWakeupStateParams->bIsAppsAwake) )))
16105 {
16106 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016107 "Unable to get send buffer in Apps CPU Wakeup State req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016108 pEventData, pwdiAppsCpuWakeupStateParams, wdiConfigureAppsCpuWakeupStateCb);
16109 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016110 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016111 }
16112
Jeff Johnsone7245742012-09-05 17:12:55 -070016113 halCfgAppsCpuWakeupStateReqParams.isAppsCpuAwake =
Jeff Johnson295189b2012-06-20 16:38:30 -070016114 pwdiAppsCpuWakeupStateParams->bIsAppsAwake;
16115
Jeff Johnsone7245742012-09-05 17:12:55 -070016116 wpalMemoryCopy( pSendBuffer+usDataOffset,
16117 &halCfgAppsCpuWakeupStateReqParams,
16118 sizeof(halCfgAppsCpuWakeupStateReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070016119
16120 pWDICtx->wdiReqStatusCB = pwdiAppsCpuWakeupStateParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016121 pWDICtx->pReqStatusUserData = pwdiAppsCpuWakeupStateParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016122
16123 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016124 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016125 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016126 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
16127 wdiConfigureAppsCpuWakeupStateCb, pEventData->pUserData,
16128 WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016129}/*WDI_ProcessConfigureAppsCpuWakeupStateReq*/
16130
16131#ifdef WLAN_FEATURE_VOWIFI_11R
16132/**
16133 @brief Process Aggregated Add TSpec Request function (called when Main FSM
16134 allows it)
Jeff Johnsone7245742012-09-05 17:12:55 -070016135
16136 @param pWDICtx: pointer to the WLAN DAL context
16137 pEventData: pointer to the event information structure
16138
Jeff Johnson295189b2012-06-20 16:38:30 -070016139 @see
16140 @return Result of the function call
16141*/
16142WDI_Status
16143WDI_ProcessAggrAddTSpecReq
Jeff Johnsone7245742012-09-05 17:12:55 -070016144(
Jeff Johnson295189b2012-06-20 16:38:30 -070016145 WDI_ControlBlockType* pWDICtx,
16146 WDI_EventInfoType* pEventData
16147)
16148{
16149 WDI_AggrAddTSReqParamsType* pwdiAggrAddTSParams;
16150 WDI_AggrAddTsRspCb wdiAggrAddTSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016151 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070016152 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070016153 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070016154 wpt_uint16 usDataOffset = 0;
16155 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070016156 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016157 wpt_macAddr macBSSID;
16158 tAggrAddTsReq halAggrAddTsReq;
16159 int i;
16160 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16161
16162 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016163 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016164 -------------------------------------------------------------------------*/
16165 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
16166 ( NULL == pEventData->pCBfnc ))
16167 {
16168 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016169 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016170 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016171 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016172 }
16173 wpalMemoryFill( &halAggrAddTsReq, sizeof(tAggrAddTsReq), 0 );
16174 pwdiAggrAddTSParams = (WDI_AggrAddTSReqParamsType*)pEventData->pEventData;
16175 wdiAggrAddTSRspCb = (WDI_AggrAddTsRspCb)pEventData->pCBfnc;
16176 /*-------------------------------------------------------------------------
16177 Check to see if we are in the middle of an association, if so queue, if
Jeff Johnsone7245742012-09-05 17:12:55 -070016178 not it means it is free to process request
Jeff Johnson295189b2012-06-20 16:38:30 -070016179 -------------------------------------------------------------------------*/
16180 wpalMutexAcquire(&pWDICtx->wptMutex);
16181
16182 /*------------------------------------------------------------------------
16183 Find the BSS for which the request is made and identify WDI session
16184 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016185 if ( WDI_STATUS_SUCCESS != WDI_STATableGetStaBSSIDAddr(pWDICtx,
16186 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx,
Jeff Johnson295189b2012-06-20 16:38:30 -070016187 &macBSSID))
16188 {
16189 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016190 "This station does not exist in the WDI Station Table %d",
16191 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx);
Jeff Johnson295189b2012-06-20 16:38:30 -070016192 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016194 }
16195
Jeff Johnsone7245742012-09-05 17:12:55 -070016196 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx, macBSSID, &pBSSSes);
16197 if ( NULL == pBSSSes )
Jeff Johnson295189b2012-06-20 16:38:30 -070016198 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016199 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16200 "%s: Association sequence for this BSS does not yet exist. macBSSID " MAC_ADDRESS_STR,
16201 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016202
16203 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016204 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070016205 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016206
Jeff Johnson295189b2012-06-20 16:38:30 -070016207 /*------------------------------------------------------------------------
16208 Check if this BSS is being currently processed or queued,
Jeff Johnsone7245742012-09-05 17:12:55 -070016209 if queued - queue the new request as well
Jeff Johnson295189b2012-06-20 16:38:30 -070016210 ------------------------------------------------------------------------*/
16211 if ( eWLAN_PAL_TRUE == pBSSSes->bAssocReqQueued )
16212 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016213 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
16214 "%s: Association sequence for this BSS exists but currently queued. macBSSID " MAC_ADDRESS_STR,
16215 __func__, MAC_ADDR_ARRAY(macBSSID));
Jeff Johnson295189b2012-06-20 16:38:30 -070016216
Jeff Johnsone7245742012-09-05 17:12:55 -070016217 wdiStatus = WDI_QueueAssocRequest( pWDICtx, pBSSSes, pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070016218 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016219 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016220 }
16221
16222 wpalMutexRelease(&pWDICtx->wptMutex);
16223 /*-----------------------------------------------------------------------
16224 Get message buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070016225 ! TO DO : proper conversion into the HAL Message Request Format
Jeff Johnson295189b2012-06-20 16:38:30 -070016226 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016227 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_AGGR_ADD_TS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070016228 sizeof(tAggrAddTsParams),
16229 &pSendBuffer, &usDataOffset, &usSendSize))||
16230 ( usSendSize < (usDataOffset + sizeof(tAggrAddTsParams) )))
16231 {
16232 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016233 "Unable to get send buffer in set bss key req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070016234 pEventData, pwdiAggrAddTSParams, wdiAggrAddTSRspCb);
16235 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016236 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016237 }
16238
Jeff Johnsone7245742012-09-05 17:12:55 -070016239 halAggrAddTsReq.aggrAddTsParam.staIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016240 pwdiAggrAddTSParams->wdiAggrTsInfo.ucSTAIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070016241 halAggrAddTsReq.aggrAddTsParam.tspecIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070016242 pwdiAggrAddTSParams->wdiAggrTsInfo.ucTspecIdx;
16243
16244 for( i = 0; i < WLAN_HAL_MAX_AC; i++ )
16245 {
Jeff Johnsone7245742012-09-05 17:12:55 -070016246 halAggrAddTsReq.aggrAddTsParam.tspec[i].type =
Jeff Johnson295189b2012-06-20 16:38:30 -070016247 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016248 halAggrAddTsReq.aggrAddTsParam.tspec[i].length =
Jeff Johnson295189b2012-06-20 16:38:30 -070016249 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].ucLength;
Jeff Johnsone7245742012-09-05 17:12:55 -070016250 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.ackPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016251 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16252 ackPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016253 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.accessPolicy =
Jeff Johnson295189b2012-06-20 16:38:30 -070016254 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16255 accessPolicy;
Jeff Johnsone7245742012-09-05 17:12:55 -070016256 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.userPrio =
Jeff Johnson295189b2012-06-20 16:38:30 -070016257 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16258 userPrio;
Jeff Johnsone7245742012-09-05 17:12:55 -070016259 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.psb =
Jeff Johnson295189b2012-06-20 16:38:30 -070016260 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16261 psb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016262 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.aggregation =
Jeff Johnson295189b2012-06-20 16:38:30 -070016263 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16264 aggregation;
Jeff Johnsone7245742012-09-05 17:12:55 -070016265 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.direction =
Jeff Johnson295189b2012-06-20 16:38:30 -070016266 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16267 direction;
Jeff Johnsone7245742012-09-05 17:12:55 -070016268 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016269 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16270 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016271 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.traffic.tsid =
Jeff Johnson295189b2012-06-20 16:38:30 -070016272 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiTraffic.
16273 trafficType;
Jeff Johnsone7245742012-09-05 17:12:55 -070016274 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.rsvd =
Jeff Johnson295189b2012-06-20 16:38:30 -070016275 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.rsvd;
Jeff Johnsone7245742012-09-05 17:12:55 -070016276 halAggrAddTsReq.aggrAddTsParam.tspec[i].tsinfo.schedule.schedule =
Jeff Johnson295189b2012-06-20 16:38:30 -070016277 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].wdiTSinfo.wdiSchedule.schedule;
Jeff Johnsone7245742012-09-05 17:12:55 -070016278
16279
16280 halAggrAddTsReq.aggrAddTsParam.tspec[i].nomMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016281 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usNomMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016282 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxMsduSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016283 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMaxMsduSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016284 halAggrAddTsReq.aggrAddTsParam.tspec[i].minSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016285 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016286 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxSvcInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016287 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxSvcInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016288 halAggrAddTsReq.aggrAddTsParam.tspec[i].inactInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016289 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uInactInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016290 halAggrAddTsReq.aggrAddTsParam.tspec[i].suspendInterval =
Jeff Johnson295189b2012-06-20 16:38:30 -070016291 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSuspendInterval;
Jeff Johnsone7245742012-09-05 17:12:55 -070016292 halAggrAddTsReq.aggrAddTsParam.tspec[i].svcStartTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016293 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uSvcStartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070016294 halAggrAddTsReq.aggrAddTsParam.tspec[i].minDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016295 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016296 halAggrAddTsReq.aggrAddTsParam.tspec[i].meanDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016297 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMeanDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016298 halAggrAddTsReq.aggrAddTsParam.tspec[i].peakDataRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016299 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uPeakDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016300 halAggrAddTsReq.aggrAddTsParam.tspec[i].maxBurstSz =
Jeff Johnson295189b2012-06-20 16:38:30 -070016301 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMaxBurstSz;
Jeff Johnsone7245742012-09-05 17:12:55 -070016302 halAggrAddTsReq.aggrAddTsParam.tspec[i].delayBound =
Jeff Johnson295189b2012-06-20 16:38:30 -070016303 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uDelayBound;
Jeff Johnsone7245742012-09-05 17:12:55 -070016304 halAggrAddTsReq.aggrAddTsParam.tspec[i].minPhyRate =
Jeff Johnson295189b2012-06-20 16:38:30 -070016305 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].uMinPhyRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070016306 halAggrAddTsReq.aggrAddTsParam.tspec[i].surplusBw =
Jeff Johnson295189b2012-06-20 16:38:30 -070016307 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usSurplusBw;
Jeff Johnsone7245742012-09-05 17:12:55 -070016308 halAggrAddTsReq.aggrAddTsParam.tspec[i].mediumTime =
Jeff Johnson295189b2012-06-20 16:38:30 -070016309 pwdiAggrAddTSParams->wdiAggrTsInfo.wdiTspecIE[i].usMediumTime;
16310 }
16311
Jeff Johnsone7245742012-09-05 17:12:55 -070016312 wpalMemoryCopy( pSendBuffer+usDataOffset,
16313 &halAggrAddTsReq,
16314 sizeof(halAggrAddTsReq));
Jeff Johnson295189b2012-06-20 16:38:30 -070016315
16316 pWDICtx->wdiReqStatusCB = pwdiAggrAddTSParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070016317 pWDICtx->pReqStatusUserData = pwdiAggrAddTSParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070016318
16319 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016320 Send Add TS Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070016321 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016322 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070016323 wdiAggrAddTSRspCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070016324 WDI_AGGR_ADD_TS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070016325}/*WDI_ProcessAggrAddTSpecReq*/
16326#endif /* WLAN_FEATURE_VOWIFI_11R */
16327
16328/**
16329 @brief Process Shutdown Request function (called when Main FSM
16330 allows it)
16331
16332 @param pWDICtx: pointer to the WLAN DAL context
16333 pEventData: pointer to the event information structure
16334
16335 @see
16336 @return Result of the function call
16337*/
16338WDI_Status
16339WDI_ProcessShutdownReq
16340(
16341 WDI_ControlBlockType* pWDICtx,
16342 WDI_EventInfoType* pEventData
16343 )
16344{
16345 wpt_status wptStatus;
16346
16347
16348 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16349
16350 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016351 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016352 -------------------------------------------------------------------------*/
16353 if ( NULL == pEventData )
16354 {
16355 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016356 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016357 WDI_ASSERT(0);
16358 return WDI_STATUS_E_FAILURE;
16359 }
16360
16361 wpalMutexAcquire(&pWDICtx->wptMutex);
16362
16363
16364 gWDIInitialized = eWLAN_PAL_FALSE;
16365 /*! TO DO: stop the data services */
16366 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16367 {
16368 /*Stop the STA Table !UT- check this logic again
16369 It is safer to do it here than on the response - because a stop is imminent*/
16370 WDI_STATableStop(pWDICtx);
16371
16372 /* Stop Transport Driver, DXE */
16373 WDTS_Stop(pWDICtx);
16374 }
16375
16376 /*Clear all pending request*/
16377 WDI_ClearPendingRequests(pWDICtx);
16378 /* Close Data transport*/
16379 /* FTM mode does not open Data Path */
16380 if ( eDRIVER_TYPE_MFG != pWDICtx->driverMode )
16381 {
16382 WDTS_Close(pWDICtx);
16383 }
16384 /*Close the STA Table !UT- check this logic again*/
16385 WDI_STATableClose(pWDICtx);
16386 /*close the PAL */
16387 wptStatus = wpalClose(pWDICtx->pPALContext);
16388 if ( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
16389 {
16390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16391 "Failed to wpal Close %d", wptStatus);
16392 WDI_ASSERT(0);
16393 }
16394
16395 /*Transition back to init state*/
16396 WDI_STATE_TRANSITION( pWDICtx, WDI_INIT_ST);
16397
16398 wpalMutexRelease(&pWDICtx->wptMutex);
16399
16400 /*Make sure the expected state is properly defaulted to Init*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016401 pWDICtx->ucExpectedStateTransition = WDI_INIT_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070016402
16403
Jeff Johnsone7245742012-09-05 17:12:55 -070016404 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016405}/*WDI_ProcessShutdownReq*/
16406
16407/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016408 Main DAL Control Path Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070016409========================================================================*/
16410
16411/**
16412 @brief Process Start Response function (called when a response
16413 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016414
16415 @param pWDICtx: pointer to the WLAN DAL context
16416 pEventData: pointer to the event information structure
16417
Jeff Johnson295189b2012-06-20 16:38:30 -070016418 @see
16419 @return Result of the function call
16420*/
16421WDI_Status
16422WDI_ProcessStartRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016423(
Jeff Johnson295189b2012-06-20 16:38:30 -070016424 WDI_ControlBlockType* pWDICtx,
16425 WDI_EventInfoType* pEventData
16426)
16427{
16428 WDI_StartRspParamsType wdiRspParams;
16429 WDI_StartRspCb wdiStartRspCb = NULL;
16430
16431 tHalMacStartRspParams* startRspParams;
16432
16433#ifndef HAL_SELF_STA_PER_BSS
16434 WDI_AddStaParams wdiAddSTAParam = {0};
16435#endif
16436 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16437
Jeff Johnsone7245742012-09-05 17:12:55 -070016438 wdiStartRspCb = (WDI_StartRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016439 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016440 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016441 -------------------------------------------------------------------------*/
16442 if (( NULL == pEventData ) ||
16443 ( NULL == pEventData->pEventData) ||
16444 ( NULL == wdiStartRspCb ))
16445 {
16446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016450 }
16451
16452 /*-------------------------------------------------------------------------
16453 Extract response and send it to UMAC
16454 -------------------------------------------------------------------------*/
16455 if ( sizeof(tHalMacStartRspParams) > pEventData->uEventDataSize )
16456 {
16457 // not enough data was received
16458 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson5b414462013-11-22 16:44:20 -080016459 "Invalid response length in Start Resp Expect %zx Rcvd %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070016460 sizeof(tHalMacStartRspParams), pEventData->uEventDataSize);
16461 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016462 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016463 }
16464
16465 /*-------------------------------------------------------------------------
16466 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016467 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016468 -------------------------------------------------------------------------*/
16469 startRspParams = (tHalMacStartRspParams *) pEventData->pEventData;
16470
16471 wdiRspParams.ucMaxBssids = startRspParams->ucMaxBssids;
16472 wdiRspParams.ucMaxStations = startRspParams->ucMaxStations;
16473 wdiRspParams.wlanCompiledVersion.major = WLAN_HAL_VER_MAJOR;
16474 wdiRspParams.wlanCompiledVersion.minor = WLAN_HAL_VER_MINOR;
16475 wdiRspParams.wlanCompiledVersion.version = WLAN_HAL_VER_VERSION;
16476 wdiRspParams.wlanCompiledVersion.revision = WLAN_HAL_VER_REVISION;
16477 wdiRspParams.wlanReportedVersion.major =
16478 startRspParams->wcnssWlanVersion.major;
16479 wdiRspParams.wlanReportedVersion.minor =
16480 startRspParams->wcnssWlanVersion.minor;
16481 wdiRspParams.wlanReportedVersion.version =
16482 startRspParams->wcnssWlanVersion.version;
16483 wdiRspParams.wlanReportedVersion.revision =
16484 startRspParams->wcnssWlanVersion.revision;
16485 wpalMemoryCopy(wdiRspParams.wcnssSoftwareVersion,
16486 startRspParams->wcnssCrmVersionString,
16487 sizeof(wdiRspParams.wcnssSoftwareVersion));
16488 wpalMemoryCopy(wdiRspParams.wcnssHardwareVersion,
16489 startRspParams->wcnssWlanVersionString,
16490 sizeof(wdiRspParams.wcnssHardwareVersion));
16491 wdiRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(startRspParams->status);
16492
Pratik Bhalgatd4404592012-11-22 17:49:14 +053016493 /*Save the HAL Version*/
16494 pWDICtx->wlanVersion = wdiRspParams.wlanReportedVersion;
16495
Jeff Johnson295189b2012-06-20 16:38:30 -070016496 wpalMutexAcquire(&pWDICtx->wptMutex);
16497 if ( WDI_STATUS_SUCCESS == wdiRspParams.wdiStatus )
16498 {
16499 pWDICtx->ucExpectedStateTransition = WDI_STARTED_ST;
16500
16501 /*Cache the start response for further use*/
16502 wpalMemoryCopy( &pWDICtx->wdiCachedStartRspParams ,
Jeff Johnsone7245742012-09-05 17:12:55 -070016503 &wdiRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070016504 sizeof(pWDICtx->wdiCachedStartRspParams));
16505
16506 }
16507 else
16508 {
16509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16510 "Failed to start device with status %s(%d)",
16511 WDI_getHALStatusMsgString(startRspParams->status),
16512 startRspParams->status);
16513
16514 /*Set the expected state transition to stopped - because the start has
16515 failed*/
16516 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16517
16518 wpalMutexRelease(&pWDICtx->wptMutex);
16519
16520 /*Notify UMAC*/
16521 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
Jeff Johnsone7245742012-09-05 17:12:55 -070016522
Jeff Johnson295189b2012-06-20 16:38:30 -070016523 WDI_DetectedDeviceError(pWDICtx, wdiRspParams.wdiStatus);
Katya Nigamf02ad012014-05-05 16:12:49 +053016524 wpalWlanReload();
Jeff Johnson295189b2012-06-20 16:38:30 -070016525
16526 /*Although the response is an error - it was processed by our function
16527 so as far as the caller is concerned this is a succesful reponse processing*/
16528 return WDI_STATUS_SUCCESS;
16529 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016530
Jeff Johnson295189b2012-06-20 16:38:30 -070016531 wpalMutexRelease(&pWDICtx->wptMutex);
16532
16533 if(eDRIVER_TYPE_MFG == pWDICtx->driverMode)
16534 {
16535 /* FTM mode does not need to execute below */
16536 /* Notify UMAC */
16537 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16538 return WDI_STATUS_SUCCESS;
16539 }
16540
16541 /* START the Data transport */
16542 WDTS_startTransport(pWDICtx);
16543
16544 /*Start the STA Table !- check this logic again*/
16545 WDI_STATableStart(pWDICtx);
16546
16547#ifndef HAL_SELF_STA_PER_BSS
16548 /* Store the Self STA Index */
16549 pWDICtx->ucSelfStaId = halStartRspMsg.startRspParams.selfStaIdx;
16550
16551 pWDICtx->usSelfStaDpuId = wdiRspParams.usSelfStaDpuId;
16552 wpalMemoryCopy(pWDICtx->macSelfSta, wdiRspParams.macSelfSta,
16553 WDI_MAC_ADDR_LEN);
16554
16555 /* At this point add the self-STA */
16556
16557 /*! TO DO: wdiAddSTAParam.bcastMgmtDpuSignature */
16558 /* !TO DO: wdiAddSTAParam.bcastDpuSignature */
16559 /*! TO DO: wdiAddSTAParam.dpuSig */
16560 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
16561 /*! TO DO: wdiAddSTAParam.ucHTCapable */
16562 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
16563
16564 //all DPU indices are the same for self STA
16565 wdiAddSTAParam.bcastDpuIndex = wdiRspParams.usSelfStaDpuId;
16566 wdiAddSTAParam.bcastMgmtDpuIndex = wdiRspParams.usSelfStaDpuId;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070016567 wdiAddSTAParam.dpuIndex = wdiRspParams.usSelfStaDpuId;
Jeff Johnson295189b2012-06-20 16:38:30 -070016568 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiRspParams.macSelfSta,
16569 WDI_MAC_ADDR_LEN);
16570 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
16571 wdiAddSTAParam.ucSTAIdx = halStartRspMsg.startRspParams.selfStaIdx;
16572
16573 /* Note: Since we don't get an explicit config STA request for self STA, we
16574 add the self STA upon receiving the Start response message. But the
16575 self STA entry in the table is deleted when WDI gets an explicit delete STA
16576 request */
16577 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
16578#endif
16579
16580 /*Notify UMAC*/
16581 wdiStartRspCb( &wdiRspParams, pWDICtx->pRspCBUserData);
16582
Jeff Johnsone7245742012-09-05 17:12:55 -070016583 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016584}/*WDI_ProcessStartRsp*/
16585
16586
16587/**
16588 @brief Process Stop Response function (called when a response
16589 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016590
16591 @param pWDICtx: pointer to the WLAN DAL context
16592 pEventData: pointer to the event information structure
16593
Jeff Johnson295189b2012-06-20 16:38:30 -070016594 @see
16595 @return Result of the function call
16596*/
16597WDI_Status
16598WDI_ProcessStopRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016599(
Jeff Johnson295189b2012-06-20 16:38:30 -070016600 WDI_ControlBlockType* pWDICtx,
16601 WDI_EventInfoType* pEventData
16602)
16603{
16604 WDI_Status wdiStatus;
16605 WDI_StopRspCb wdiStopRspCb = NULL;
16606
Jeff Johnsone7245742012-09-05 17:12:55 -070016607 tHalMacStopRspMsg halMacStopRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016608 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16609
Jeff Johnsone7245742012-09-05 17:12:55 -070016610 wdiStopRspCb = (WDI_StopRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070016611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016613 -------------------------------------------------------------------------*/
16614 if (( NULL == pEventData ) ||
16615 ( NULL == pEventData->pEventData) ||
16616 ( NULL == wdiStopRspCb ))
16617 {
16618 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016619 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016620 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016621 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016622 }
16623
16624 /*-------------------------------------------------------------------------
16625 Extract response and send it to UMAC
16626 -------------------------------------------------------------------------*/
16627 if ( sizeof(halMacStopRspMsg) < pEventData->uEventDataSize )
16628 {
16629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080016630 "Invalid response length in Stop Resp %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070016631 pEventData->uEventDataSize);
16632 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016633 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016634 }
16635
16636 /*-------------------------------------------------------------------------
16637 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016638 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016639 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016640 wpalMemoryCopy( &halMacStopRspMsg.stopRspParams,
16641 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016642 sizeof(halMacStopRspMsg.stopRspParams));
16643
Jeff Johnsone7245742012-09-05 17:12:55 -070016644 wdiStatus = WDI_HAL_2_WDI_STATUS(halMacStopRspMsg.stopRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016645
16646 wpalMutexAcquire(&pWDICtx->wptMutex);
16647
16648 /*--------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016649 Check to see if the stop went OK
Jeff Johnson295189b2012-06-20 16:38:30 -070016650 --------------------------------------------------------------------------*/
16651 if ( WDI_STATUS_SUCCESS != wdiStatus )
16652 {
16653 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16654 "Failed to stop the device with status %s (%d)",
16655 WDI_getHALStatusMsgString(halMacStopRspMsg.stopRspParams.status),
16656 halMacStopRspMsg.stopRspParams.status);
16657
Jeff Johnsone7245742012-09-05 17:12:55 -070016658 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Katya Nigamf02ad012014-05-05 16:12:49 +053016659 wpalWlanReload();
Jeff Johnsone7245742012-09-05 17:12:55 -070016660
Jeff Johnson295189b2012-06-20 16:38:30 -070016661 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070016662 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016663 }
Jeff Johnsone7245742012-09-05 17:12:55 -070016664
Jeff Johnson295189b2012-06-20 16:38:30 -070016665 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
16666
16667 /*Transition now as WDI may get preempted imediately after it sends
16668 up the Stop Response and it will not get to process the state transition
16669 from Main Rsp function*/
16670 WDI_STATE_TRANSITION( pWDICtx, pWDICtx->ucExpectedStateTransition);
16671 wpalMutexRelease(&pWDICtx->wptMutex);
16672
16673 /*! TO DO: - STOP the Data transport */
16674
16675 /*Notify UMAC*/
16676 wdiStopRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16677
Jeff Johnsone7245742012-09-05 17:12:55 -070016678 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016679}/*WDI_ProcessStopRsp*/
16680
16681/**
16682 @brief Process Close Rsp function (called when a response
16683 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016684
16685 @param pWDICtx: pointer to the WLAN DAL context
16686 pEventData: pointer to the event information structure
16687
Jeff Johnson295189b2012-06-20 16:38:30 -070016688 @see
16689 @return Result of the function call
16690*/
16691WDI_Status
16692WDI_ProcessCloseRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016693(
Jeff Johnson295189b2012-06-20 16:38:30 -070016694 WDI_ControlBlockType* pWDICtx,
16695 WDI_EventInfoType* pEventData
16696)
16697{
16698 /*There is no close response comming from HAL - function just kept for
16699 simmetry */
16700 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016701 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016702}/*WDI_ProcessCloseRsp*/
16703
16704
16705/*============================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070016706 SCAN RESPONSE PROCESSING API
Jeff Johnson295189b2012-06-20 16:38:30 -070016707============================================================================*/
16708
16709/**
16710 @brief Process Init Scan Rsp function (called when a response
16711 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016712
16713 @param pWDICtx: pointer to the WLAN DAL context
16714 pEventData: pointer to the event information structure
16715
Jeff Johnson295189b2012-06-20 16:38:30 -070016716 @see
16717 @return Result of the function call
16718*/
16719WDI_Status
16720WDI_ProcessInitScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016721(
Jeff Johnson295189b2012-06-20 16:38:30 -070016722 WDI_ControlBlockType* pWDICtx,
16723 WDI_EventInfoType* pEventData
16724)
16725{
16726 WDI_Status wdiStatus;
16727 WDI_InitScanRspCb wdiInitScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016728 tHalInitScanRspMsg halInitScanRspMsg;
Ravali85acf6b2012-12-12 14:01:38 -080016729 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070016730 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16731
16732 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016733 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016734 -------------------------------------------------------------------------*/
16735 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16736 ( NULL == pEventData->pEventData))
16737 {
16738 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016739 "%s: Invalid parameters", __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 wdiInitScanRspCb = (WDI_InitScanRspCb)pWDICtx->pfncRspCB;
16745 if( NULL == wdiInitScanRspCb)
16746 {
16747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016748 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016749 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016750 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016751 }
16752
16753 /*-------------------------------------------------------------------------
16754 Unpack HAL Response Message - the header was already extracted by the
Jeff Johnsone7245742012-09-05 17:12:55 -070016755 main Response Handling procedure
Jeff Johnson295189b2012-06-20 16:38:30 -070016756 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016757 wpalMemoryCopy( &halInitScanRspMsg.initScanRspParams,
16758 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016759 sizeof(halInitScanRspMsg.initScanRspParams));
16760
Jeff Johnsone7245742012-09-05 17:12:55 -070016761 wdiStatus = WDI_HAL_2_WDI_STATUS(halInitScanRspMsg.initScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016762
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016763 if (pWDICtx->bInBmps && (WDI_STATUS_SUCCESS == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070016764 {
16765 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080016766 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
16767 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
16768 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080016769 "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 -080016770 WDI_ASSERT(0);
16771 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016772 }
Abhishek Singha7d80b12016-02-03 15:27:20 +053016773 else if (WDI_STATUS_SUCCESS != wdiStatus)
Sravan Kumar Kairam57aa07b2015-10-28 16:54:25 +053016774 {
16775 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16776 "Error returned WDI_ProcessInitScanRspi:%d BMPS%d",
16777 wdiStatus, pWDICtx->bInBmps);
16778 }
Jeff Johnson295189b2012-06-20 16:38:30 -070016779
16780 /*Notify UMAC*/
16781 wdiInitScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16782
Jeff Johnsone7245742012-09-05 17:12:55 -070016783 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016784}/*WDI_ProcessInitScanRsp*/
16785
16786
16787/**
16788 @brief Process Start Scan Rsp function (called when a response
16789 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016790
16791 @param pWDICtx: pointer to the WLAN DAL context
16792 pEventData: pointer to the event information structure
16793
Jeff Johnson295189b2012-06-20 16:38:30 -070016794 @see
16795 @return Result of the function call
16796*/
16797WDI_Status
16798WDI_ProcessStartScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016799(
Jeff Johnson295189b2012-06-20 16:38:30 -070016800 WDI_ControlBlockType* pWDICtx,
16801 WDI_EventInfoType* pEventData
16802)
16803{
16804 WDI_StartScanRspParamsType wdiStartScanParams;
16805 WDI_StartScanRspCb wdiStartScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016806
16807 tHalStartScanRspMsg halStartScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016808 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16809
16810 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016811 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016812 -------------------------------------------------------------------------*/
16813 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16814 ( NULL == pEventData->pEventData))
16815 {
16816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016817 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016818 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016819 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016820 }
16821
16822 wdiStartScanRspCb = (WDI_StartScanRspCb)pWDICtx->pfncRspCB;
16823 if( NULL == wdiStartScanRspCb)
16824 {
16825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016826 "%s: call back function is NULL", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016827 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016828 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016829 }
16830
16831 /*-------------------------------------------------------------------------
16832 Extract response and send it to UMAC
16833 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016834 wpalMemoryCopy( &halStartScanRspMsg.startScanRspParams,
16835 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016836 sizeof(halStartScanRspMsg.startScanRspParams));
16837
16838 wdiStartScanParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
16839 halStartScanRspMsg.startScanRspParams.status);
16840#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070016841 wdiStartScanParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070016842 halStartScanRspMsg.startScanRspParams.txMgmtPower;
Jeff Johnsone7245742012-09-05 17:12:55 -070016843 wpalMemoryCopy( wdiStartScanParams.aStartTSF,
Jeff Johnson295189b2012-06-20 16:38:30 -070016844 halStartScanRspMsg.startScanRspParams.startTSF,
16845 2);
Jeff Johnsone7245742012-09-05 17:12:55 -070016846#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070016847
16848 if ( eHAL_STATUS_SUCCESS != halStartScanRspMsg.startScanRspParams.status )
16849 {
16850 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16851 "Start scan failed with status %s (%d)",
16852 WDI_getHALStatusMsgString(halStartScanRspMsg.startScanRspParams.status),
16853 halStartScanRspMsg.startScanRspParams.status);
16854 /* send the status to UMAC, don't return from here*/
16855 }
16856
16857 /*Notify UMAC*/
16858 wdiStartScanRspCb( &wdiStartScanParams, pWDICtx->pRspCBUserData);
16859
Jeff Johnsone7245742012-09-05 17:12:55 -070016860 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016861
16862}/*WDI_ProcessStartScanRsp*/
16863
16864
16865/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016866 @brief Process End Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016867 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016868
16869 @param pWDICtx: pointer to the WLAN DAL context
16870 pEventData: pointer to the event information structure
16871
Jeff Johnson295189b2012-06-20 16:38:30 -070016872 @see
16873 @return Result of the function call
16874*/
16875WDI_Status
16876WDI_ProcessEndScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016877(
Jeff Johnson295189b2012-06-20 16:38:30 -070016878 WDI_ControlBlockType* pWDICtx,
16879 WDI_EventInfoType* pEventData
16880)
16881{
16882 WDI_Status wdiStatus;
16883 tHalEndScanRspMsg halEndScanRspMsg;
16884 WDI_EndScanRspCb wdiEndScanRspCb;
16885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16886
16887 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016888 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016889 -------------------------------------------------------------------------*/
16890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16891 ( NULL == pEventData->pEventData))
16892 {
16893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016895 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016896 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016897 }
16898
16899 wdiEndScanRspCb = (WDI_EndScanRspCb)pWDICtx->pfncRspCB;
16900
16901 /*-------------------------------------------------------------------------
16902 Extract response and send it to UMAC
16903 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016904 wpalMemoryCopy( &halEndScanRspMsg.endScanRspParams,
16905 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016906 sizeof(halEndScanRspMsg.endScanRspParams));
16907
Jeff Johnsone7245742012-09-05 17:12:55 -070016908 wdiStatus = WDI_HAL_2_WDI_STATUS(halEndScanRspMsg.endScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016909
16910 if ( eHAL_STATUS_SUCCESS != halEndScanRspMsg.endScanRspParams.status )
16911 {
16912 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16913 "End Scan failed with status %s (%d )",
16914 WDI_getHALStatusMsgString(halEndScanRspMsg.endScanRspParams.status),
16915 halEndScanRspMsg.endScanRspParams.status);
16916 /* send the status to UMAC, don't return from here*/
16917 }
16918
16919 /*Notify UMAC*/
16920 wdiEndScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16921
Jeff Johnsone7245742012-09-05 17:12:55 -070016922 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016923}/*WDI_ProcessEndScanRsp*/
16924
16925
16926/**
Jeff Johnsone7245742012-09-05 17:12:55 -070016927 @brief Process Finish Scan Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070016928 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016929
16930 @param pWDICtx: pointer to the WLAN DAL context
16931 pEventData: pointer to the event information structure
16932
Jeff Johnson295189b2012-06-20 16:38:30 -070016933 @see
16934 @return Result of the function call
16935*/
16936WDI_Status
16937WDI_ProcessFinishScanRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070016938(
Jeff Johnson295189b2012-06-20 16:38:30 -070016939 WDI_ControlBlockType* pWDICtx,
16940 WDI_EventInfoType* pEventData
Jeff Johnsone7245742012-09-05 17:12:55 -070016941)
Jeff Johnson295189b2012-06-20 16:38:30 -070016942{
16943 WDI_Status wdiStatus;
16944 WDI_FinishScanRspCb wdiFinishScanRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070016945
16946 tHalFinishScanRspMsg halFinishScanRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070016947 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
16948
16949 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070016950 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070016951 -------------------------------------------------------------------------*/
16952 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
16953 ( NULL == pEventData->pEventData))
16954 {
16955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070016956 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070016957 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070016958 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070016959 }
16960
16961 wdiFinishScanRspCb = (WDI_FinishScanRspCb)pWDICtx->pfncRspCB;
16962
16963 /*-------------------------------------------------------------------------
16964 Extract response and send it to UMAC
16965 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070016966 wpalMemoryCopy( (void *)&halFinishScanRspMsg.finishScanRspParams.status,
16967 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070016968 sizeof(halFinishScanRspMsg.finishScanRspParams.status));
16969
Jeff Johnsone7245742012-09-05 17:12:55 -070016970 wdiStatus = WDI_HAL_2_WDI_STATUS(halFinishScanRspMsg.finishScanRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070016971
16972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_LOW,
Jeff Johnsone7245742012-09-05 17:12:55 -070016973 "Finish scan response reported status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070016974 halFinishScanRspMsg.finishScanRspParams.status);
16975
16976 if (( eHAL_STATUS_SUCCESS != halFinishScanRspMsg.finishScanRspParams.status )&&
16977 ( eHAL_STATUS_NOTIFY_BSS_FAIL != halFinishScanRspMsg.finishScanRspParams.status ))
16978 {
16979 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
16980 "Finish Scan failed with status %s (%d)",
16981 WDI_getHALStatusMsgString(halFinishScanRspMsg.finishScanRspParams.status),
16982 halFinishScanRspMsg.finishScanRspParams.status);
16983 /* send the status to UMAC, don't return from here*/
16984 }
16985
16986 /*Notify UMAC*/
16987 wdiFinishScanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
16988
Jeff Johnsone7245742012-09-05 17:12:55 -070016989 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070016990}/*WDI_ProcessFinishScanRsp*/
16991
16992/**
16993 @brief Process Join Response function (called when a response
16994 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070016995
16996 @param pWDICtx: pointer to the WLAN DAL context
16997 pEventData: pointer to the event information structure
16998
Jeff Johnson295189b2012-06-20 16:38:30 -070016999 @see
17000 @return Result of the function call
17001*/
17002WDI_Status
17003WDI_ProcessJoinRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017004(
Jeff Johnson295189b2012-06-20 16:38:30 -070017005 WDI_ControlBlockType* pWDICtx,
17006 WDI_EventInfoType* pEventData
17007)
17008{
17009 WDI_Status wdiStatus;
17010 WDI_JoinRspCb wdiJoinRspCb;
17011 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017012
17013 tHalJoinRspMsg halJoinRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017014 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17015
17016 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017017 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017018 -------------------------------------------------------------------------*/
17019 if (( NULL == pWDICtx ) ||
17020 ( NULL == pWDICtx->pfncRspCB ) ||
17021 ( NULL == pEventData ) ||
17022 ( NULL == pEventData->pEventData))
17023 {
17024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017025 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017026 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017027 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017028 }
17029
17030 wdiJoinRspCb = (WDI_JoinRspCb)pWDICtx->pfncRspCB;
17031
17032 /*-------------------------------------------------------------------------
17033 Extract response and send it to UMAC
17034 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017035 wpalMemoryCopy( &halJoinRspMsg.joinRspParams,
17036 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017037 sizeof(halJoinRspMsg.joinRspParams));
17038
Jeff Johnsone7245742012-09-05 17:12:55 -070017039 wdiStatus = WDI_HAL_2_WDI_STATUS(halJoinRspMsg.joinRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017040
17041 wpalMutexAcquire(&pWDICtx->wptMutex);
17042
17043 /*-----------------------------------------------------------------------
17044 Join response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017045 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017046 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017047 if (( !WDI_VALID_SESSION_IDX(pWDICtx->ucCurrentBSSSesIdx )) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017048 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17049 {
17050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070017051 "%s: Association sequence for this BSS does not yet exist (bssIdx %d) or "
17052 "association no longer in progress %d - mysterious HAL response",
17053 __func__, pWDICtx->ucCurrentBSSSesIdx, pWDICtx->bAssociationInProgress);
Jeff Johnson295189b2012-06-20 16:38:30 -070017054
Jeff Johnsone7245742012-09-05 17:12:55 -070017055 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
Jeff Johnson295189b2012-06-20 16:38:30 -070017056 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017057 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017058 }
17059
17060 pBSSSes = &pWDICtx->aBSSSessions[pWDICtx->ucCurrentBSSSesIdx];
17061
17062 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017063 Join Response is only allowed in init state
Jeff Johnson295189b2012-06-20 16:38:30 -070017064 -----------------------------------------------------------------------*/
17065 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17066 {
17067 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17068 "Join only allowed in Joining state - failure state is %d "
17069 "strange HAL response", pBSSSes->wdiAssocState);
17070
Jeff Johnsone7245742012-09-05 17:12:55 -070017071 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17072
Jeff Johnson295189b2012-06-20 16:38:30 -070017073 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017074 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017075 }
17076
17077
17078 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017079 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017080 -----------------------------------------------------------------------*/
17081 if ( WDI_STATUS_SUCCESS != wdiStatus )
17082 {
17083 /*Association was failed by HAL - remove session*/
17084 WDI_DeleteSession(pWDICtx, pBSSSes);
17085
17086 /*Association no longer in progress */
17087 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17088
17089 /*Association no longer in progress - prepare pending assoc for processing*/
17090 WDI_DequeueAssocRequest(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070017091
Jeff Johnson295189b2012-06-20 16:38:30 -070017092 }
17093 else
17094 {
17095 /*Transition to state Joining - this may be redundant as we are supposed
17096 to be in this state already - but just to be safe*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017097 pBSSSes->wdiAssocState = WDI_ASSOC_JOINING_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017098 }
17099
17100 wpalMutexRelease(&pWDICtx->wptMutex);
17101
17102 /*Notify UMAC*/
17103 wdiJoinRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17104
Jeff Johnsone7245742012-09-05 17:12:55 -070017105 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017106}/*WDI_ProcessJoinRsp*/
17107
17108
17109/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017110 @brief Process Config BSS Response function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017111 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017112
17113 @param pWDICtx: pointer to the WLAN DAL context
17114 pEventData: pointer to the event information structure
17115
Jeff Johnson295189b2012-06-20 16:38:30 -070017116 @see
17117 @return Result of the function call
17118*/
17119WDI_Status
17120WDI_ProcessConfigBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017121(
Jeff Johnson295189b2012-06-20 16:38:30 -070017122 WDI_ControlBlockType* pWDICtx,
17123 WDI_EventInfoType* pEventData
17124)
17125{
17126 WDI_ConfigBSSRspParamsType wdiConfigBSSParams;
17127 WDI_ConfigBSSRspCb wdiConfigBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017128 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017129 WDI_BSSSessionType* pBSSSes = NULL;
17130
Jeff Johnsone7245742012-09-05 17:12:55 -070017131 tConfigBssRspMsg halConfigBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017132 WDI_AddStaParams wdiBcastAddSTAParam = {0};
17133 WDI_AddStaParams wdiAddSTAParam = {0};
Jeff Johnsone7245742012-09-05 17:12:55 -070017134
Jeff Johnson295189b2012-06-20 16:38:30 -070017135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17136
17137 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017138 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017139 -------------------------------------------------------------------------*/
17140 if (( NULL == pEventData ) ||
17141 ( NULL == pEventData->pEventData))
17142 {
17143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017144 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017145 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017146 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017147 }
17148
17149 wdiConfigBSSRspCb = (WDI_ConfigBSSRspCb)pWDICtx->pfncRspCB;
17150
17151 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017152 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017153 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017154 wpalMemoryCopy( &halConfigBssRspMsg.configBssRspParams,
17155 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017156 sizeof(halConfigBssRspMsg.configBssRspParams));
17157
17158 wdiConfigBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
17159 halConfigBssRspMsg.configBssRspParams.status);
17160 if(WDI_STATUS_SUCCESS == wdiConfigBSSParams.wdiStatus)
17161 {
Jeff Johnsone7245742012-09-05 17:12:55 -070017162 wpalMemoryCopy( wdiConfigBSSParams.macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070017163 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.macBSSID,
17164 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017165
Jeff Johnson295189b2012-06-20 16:38:30 -070017166 wdiConfigBSSParams.ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017167
17168 wdiConfigBSSParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017169 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017170
17171 wdiConfigBSSParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017172 halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017173
Jeff Johnson295189b2012-06-20 16:38:30 -070017174 wdiConfigBSSParams.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017175
Jeff Johnson295189b2012-06-20 16:38:30 -070017176 #ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070017177 wdiConfigBSSParams.ucTxMgmtPower =
Jeff Johnson295189b2012-06-20 16:38:30 -070017178 halConfigBssRspMsg.configBssRspParams.txMgmtPower;
17179 #endif
17180 wpalMemoryCopy( wdiConfigBSSParams.macSTA,
17181 halConfigBssRspMsg.configBssRspParams.staMac,
17182 WDI_MAC_ADDR_LEN );
Jeff Johnsone7245742012-09-05 17:12:55 -070017183
Jeff Johnson295189b2012-06-20 16:38:30 -070017184 wpalMutexAcquire(&pWDICtx->wptMutex);
17185 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017186 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017187 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017188 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
17189 wdiConfigBSSParams.macBSSID,
17190 &pBSSSes);
17191
Jeff Johnson295189b2012-06-20 16:38:30 -070017192 /*-----------------------------------------------------------------------
17193 Config BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017194 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017195 -----------------------------------------------------------------------*/
17196 if ( NULL == pBSSSes )
17197 {
17198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17199 "Association sequence for this BSS does not yet exist "
17200 "- mysterious HAL response");
Jeff Johnsone7245742012-09-05 17:12:55 -070017201
17202 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17203
Jeff Johnson295189b2012-06-20 16:38:30 -070017204 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017205 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017206 }
Jeff Johnsone7245742012-09-05 17:12:55 -070017207
Jeff Johnson295189b2012-06-20 16:38:30 -070017208 /*Save data for this BSS*/
17209 pBSSSes->wdiBssType = pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiBSSType;
17210 pBSSSes->ucBSSIdx = halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017211 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017212 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017213 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017214 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017215 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017216 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017217 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017218 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017219 pBSSSes->ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017220 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
17221 pBSSSes->bcastStaIdx =
17222 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017223
Jeff Johnson295189b2012-06-20 16:38:30 -070017224 /* !TO DO: Shuould we be updating the RMF Capability of self STA here? */
Jeff Johnsone7245742012-09-05 17:12:55 -070017225
Jeff Johnson295189b2012-06-20 16:38:30 -070017226 /*-------------------------------------------------------------------------
17227 Add Peer STA
17228 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017229 wdiAddSTAParam.ucSTAIdx = halConfigBssRspMsg.configBssRspParams.bssStaIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070017230 wdiAddSTAParam.dpuIndex = halConfigBssRspMsg.configBssRspParams.dpuDescIndx;
17231 wdiAddSTAParam.dpuSig = halConfigBssRspMsg.configBssRspParams.ucastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017232
Jeff Johnson295189b2012-06-20 16:38:30 -070017233 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017234 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017235 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017236 wdiAddSTAParam.ucHTCapable =
17237 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.ucHTCapable;
17238 wdiAddSTAParam.ucStaType =
17239 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.wdiSTAType;
17240
Jeff Johnson295189b2012-06-20 16:38:30 -070017241 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070017242 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
17243 halConfigBssRspMsg.configBssRspParams.staMac,
Jeff Johnson295189b2012-06-20 16:38:30 -070017244 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070017245
17246 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
17247 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.wdiSTAContext.macBSSID ,
17248 WDI_MAC_ADDR_LEN);
17249
Jeff Johnson295189b2012-06-20 16:38:30 -070017250 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017251 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017252 halConfigBssRspMsg.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017253 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017254 halConfigBssRspMsg.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017255 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017256 halConfigBssRspMsg.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017257 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017258 halConfigBssRspMsg.configBssRspParams.bcastDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017259 wdiAddSTAParam.ucRmfEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070017260 pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070017261 wdiAddSTAParam.ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017262 halConfigBssRspMsg.configBssRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017263
Jeff Johnson295189b2012-06-20 16:38:30 -070017264 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17265 "Add STA to the table index: %d", wdiAddSTAParam.ucSTAIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017266
Jeff Johnson295189b2012-06-20 16:38:30 -070017267 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
17268 /*-------------------------------------------------------------------------
17269 Add Broadcast STA only in AP mode
17270 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017271 if( pWDICtx->wdiCachedConfigBssReq.wdiReqInfo.ucOperMode ==
Ravi Joshid0699502013-07-08 15:48:47 -070017272 WDI_BSS_OPERATIONAL_MODE_AP || pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017273 {
17274 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
17275 "Add BCAST STA to table for index: %d",
17276 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
Jeff Johnsone7245742012-09-05 17:12:55 -070017277
17278 wpalMemoryCopy( &wdiBcastAddSTAParam, &wdiAddSTAParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070017279 sizeof(WDI_AddStaParams) );
Jeff Johnsone7245742012-09-05 17:12:55 -070017280
Jeff Johnson295189b2012-06-20 16:38:30 -070017281 WDI_AddBcastSTAtoSTATable( pWDICtx, &wdiBcastAddSTAParam,
17282 halConfigBssRspMsg.configBssRspParams.bssBcastStaIdx );
17283 }
17284 wpalMutexRelease(&pWDICtx->wptMutex);
17285 }
17286 else
17287 {
17288 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17289 "Config BSS RSP failed with status : %s(%d)",
17290 WDI_getHALStatusMsgString(
Jeff Johnsone7245742012-09-05 17:12:55 -070017291 halConfigBssRspMsg.configBssRspParams.status),
Jeff Johnson295189b2012-06-20 16:38:30 -070017292 halConfigBssRspMsg.configBssRspParams.status);
17293
Jeff Johnsone7245742012-09-05 17:12:55 -070017294
Jeff Johnson295189b2012-06-20 16:38:30 -070017295 /*Association was failed by HAL - remove session*/
17296 WDI_DeleteSession(pWDICtx, pBSSSes);
17297
17298 /*Association no longer in progress */
17299 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17300
17301 /*Association no longer in progress - prepare pending assoc for processing*/
17302 WDI_DequeueAssocRequest(pWDICtx);
17303
17304 }
17305
17306 /*Notify UMAC*/
17307 wdiConfigBSSRspCb( &wdiConfigBSSParams, pWDICtx->pRspCBUserData);
17308
Jeff Johnsone7245742012-09-05 17:12:55 -070017309 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017310}/*WDI_ProcessConfigBSSRsp*/
17311
17312
17313/**
17314 @brief Process Del BSS Response function (called when a response
17315 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017316
17317 @param pWDICtx: pointer to the WLAN DAL context
17318 pEventData: pointer to the event information structure
17319
Jeff Johnson295189b2012-06-20 16:38:30 -070017320 @see
17321 @return Result of the function call
17322*/
17323WDI_Status
17324WDI_ProcessDelBSSRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017325(
Jeff Johnson295189b2012-06-20 16:38:30 -070017326 WDI_ControlBlockType* pWDICtx,
17327 WDI_EventInfoType* pEventData
17328)
17329{
17330 WDI_DelBSSRspParamsType wdiDelBSSParams;
17331 WDI_DelBSSRspCb wdiDelBSSRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017332 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017333 WDI_BSSSessionType* pBSSSes = NULL;
17334
Jeff Johnsone7245742012-09-05 17:12:55 -070017335 tDeleteBssRspMsg halDelBssRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17337
17338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017340 -------------------------------------------------------------------------*/
17341 if (( NULL == pEventData ) ||
17342 ( NULL == pEventData->pEventData))
17343 {
17344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017348 }
17349
17350 wdiDelBSSRspCb = (WDI_DelBSSRspCb)pWDICtx->pfncRspCB;
17351
17352 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017353 Extract response and send it to UMAC
Jeff Johnson295189b2012-06-20 16:38:30 -070017354 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017355 wpalMemoryCopy( &halDelBssRspMsg.deleteBssRspParams,
17356 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017357 sizeof(halDelBssRspMsg.deleteBssRspParams));
17358
17359
17360 wdiDelBSSParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
Jeff Johnsone7245742012-09-05 17:12:55 -070017361 halDelBssRspMsg.deleteBssRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017362
17363 wpalMutexAcquire(&pWDICtx->wptMutex);
17364
17365 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017366 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017367 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017368 ucCurrentBSSSesIdx = WDI_FindAssocSessionByBSSIdx( pWDICtx,
17369 halDelBssRspMsg.deleteBssRspParams.bssIdx,
17370 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017371
17372 /*-----------------------------------------------------------------------
17373 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017374 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017375 -----------------------------------------------------------------------*/
17376 if ( NULL == pBSSSes )
17377 {
17378 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17379 "Association sequence for this BSS does not yet exist or "
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017380 "association no longer in progress - mysterious HAL response");
17381
17382 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17383
17384 wpalMutexRelease(&pWDICtx->wptMutex);
17385 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017386 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017387
17388 /*Extract BSSID for the response to UMAC*/
17389 wpalMemoryCopy(wdiDelBSSParams.macBSSID,
17390 pBSSSes->macBSSID, WDI_MAC_ADDR_LEN);
17391
17392 wdiDelBSSParams.ucBssIdx = halDelBssRspMsg.deleteBssRspParams.bssIdx;
17393
17394 /*-----------------------------------------------------------------------
17395 The current session will be deleted
17396 -----------------------------------------------------------------------*/
17397 WDI_DeleteSession(pWDICtx, pBSSSes);
17398
17399
17400 /* Delete the BCAST STA entry from the STA table if SAP/GO session is deleted */
krunal soni3fc26642013-10-08 22:41:42 -070017401 if(WDI_INFRA_AP_MODE == pBSSSes->wdiBssType ||
17402 pBSSSes->wdiBssType == WDI_IBSS_MODE)
Jeff Johnson295189b2012-06-20 16:38:30 -070017403 {
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017404 (void)WDI_STATableDelSta( pWDICtx, pBSSSes->bcastStaIdx );
Madan Mohan Koyyalamudif371f172012-10-31 16:35:43 -070017405 }
Madan Mohan Koyyalamudicbb9f542012-11-15 17:30:05 -080017406
17407 /* Delete the STA's in this BSS */
17408 WDI_STATableBSSDelSta(pWDICtx, halDelBssRspMsg.deleteBssRspParams.bssIdx);
17409
Jeff Johnson295189b2012-06-20 16:38:30 -070017410 wpalMutexRelease(&pWDICtx->wptMutex);
17411
17412 /*Notify UMAC*/
17413 wdiDelBSSRspCb( &wdiDelBSSParams, pWDICtx->pRspCBUserData);
17414
Jeff Johnsone7245742012-09-05 17:12:55 -070017415 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017416}/*WDI_ProcessDelBSSRsp*/
17417
17418/**
17419 @brief Process Post Assoc Rsp function (called when a response
17420 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017421
17422 @param pWDICtx: pointer to the WLAN DAL context
17423 pEventData: pointer to the event information structure
17424
Jeff Johnson295189b2012-06-20 16:38:30 -070017425 @see
17426 @return Result of the function call
17427*/
17428WDI_Status
17429WDI_ProcessPostAssocRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017430(
Jeff Johnson295189b2012-06-20 16:38:30 -070017431 WDI_ControlBlockType* pWDICtx,
17432 WDI_EventInfoType* pEventData
17433)
17434{
17435 WDI_PostAssocRspParamsType wdiPostAssocParams;
17436 WDI_PostAssocRspCb wdiPostAssocRspCb;
Jeff Johnsone7245742012-09-05 17:12:55 -070017437 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070017438 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070017439 tPostAssocRspMsg halPostAssocRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017440 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17441
17442 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017443 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017444 -------------------------------------------------------------------------*/
17445 if (( NULL == pEventData ) ||
17446 ( NULL == pEventData->pEventData))
17447 {
17448 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017449 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017450 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017451 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017452 }
17453
17454 wdiPostAssocRspCb = (WDI_PostAssocRspCb)pWDICtx->pfncRspCB;
17455
17456 /*-------------------------------------------------------------------------
17457 Extract response and send it to UMAC
17458 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017459 wpalMemoryCopy( &halPostAssocRspMsg.postAssocRspParams,
17460 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017461 sizeof(halPostAssocRspMsg.postAssocRspParams));
17462
17463 /*Extract the Post Assoc STA Params */
17464
Jeff Johnsone7245742012-09-05 17:12:55 -070017465 wdiPostAssocParams.staParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017466 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.staIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017467 wdiPostAssocParams.staParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017468 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070017469 wdiPostAssocParams.staParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017470 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17471
Jeff Johnsone7245742012-09-05 17:12:55 -070017472 wdiPostAssocParams.wdiStatus =
17473 WDI_HAL_2_WDI_STATUS(halPostAssocRspMsg.postAssocRspParams.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017474
17475 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17476 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017477 wpalMemoryCopy( wdiPostAssocParams.staParams.macSTA,
17478 pWDICtx->wdiCachedPostAssocReq.wdiSTAParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017479 WDI_MAC_ADDR_LEN);
17480
17481 /* Extract Post Assoc BSS Params */
17482
Jeff Johnsone7245742012-09-05 17:12:55 -070017483 wpalMemoryCopy( wdiPostAssocParams.bssParams.macBSSID,
17484 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.macBSSID,
17485 WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070017486
17487 /*Copy the MAC addresses from the cached storage in the WDI CB as they are not
17488 included in the response */
Jeff Johnsone7245742012-09-05 17:12:55 -070017489 wpalMemoryCopy( wdiPostAssocParams.bssParams.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070017490 pWDICtx->wdiCachedPostAssocReq.wdiBSSParams.wdiSTAContext
17491 .macSTA, WDI_MAC_ADDR_LEN);
17492
Jeff Johnsone7245742012-09-05 17:12:55 -070017493 wdiPostAssocParams.bssParams.ucBcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017494 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucBcastSig;
17495
Jeff Johnsone7245742012-09-05 17:12:55 -070017496 wdiPostAssocParams.bssParams.ucUcastSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070017497 halPostAssocRspMsg.postAssocRspParams.configStaRspParams.ucUcastSig;
17498
17499 wdiPostAssocParams.bssParams.ucBSSIdx =
17500 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17501
Jeff Johnsone7245742012-09-05 17:12:55 -070017502 wdiPostAssocParams.bssParams.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017503 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssStaIdx;
17504
17505 wpalMutexAcquire(&pWDICtx->wptMutex);
17506
17507 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017508 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070017509 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017510 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070017511 wdiPostAssocParams.bssParams.
Jeff Johnsone7245742012-09-05 17:12:55 -070017512 macBSSID, &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070017513
17514 /*-----------------------------------------------------------------------
17515 Post assoc response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070017516 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070017517 -----------------------------------------------------------------------*/
17518 if (( NULL == pBSSSes ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070017519 ( ucCurrentBSSSesIdx != pWDICtx->ucCurrentBSSSesIdx ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070017520 ( eWLAN_PAL_FALSE == pWDICtx->bAssociationInProgress ))
17521 {
17522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17523 "Association sequence for this BSS does not yet exist or "
17524 "association no longer in progress - mysterious HAL response");
17525
Jeff Johnsone7245742012-09-05 17:12:55 -070017526 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17527
Jeff Johnson295189b2012-06-20 16:38:30 -070017528 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017529 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017530 }
17531
17532 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017533 Post Assoc Request is only allowed in Joining state
Jeff Johnson295189b2012-06-20 16:38:30 -070017534 -----------------------------------------------------------------------*/
17535 if ( WDI_ASSOC_JOINING_ST != pBSSSes->wdiAssocState)
17536 {
17537 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17538 "Post Assoc not allowed before JOIN - failing request "
17539 "strange HAL response");
17540
Jeff Johnsone7245742012-09-05 17:12:55 -070017541 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
17542
Jeff Johnson295189b2012-06-20 16:38:30 -070017543 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070017544 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070017545 }
17546
17547 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017548 If assoc has failed the current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070017549 -----------------------------------------------------------------------*/
17550 if ( WDI_STATUS_SUCCESS != wdiPostAssocParams.wdiStatus )
17551 {
17552 /*Association was failed by HAL - remove session*/
17553 WDI_DeleteSession(pWDICtx, pBSSSes);
17554 }
17555 else
17556 {
17557 /*Transition to state POST Assoc*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017558 pBSSSes->wdiAssocState = WDI_ASSOC_POST_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070017559
17560 /*Save DPU Info*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017561 pBSSSes->bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017562 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017563 pBSSSes->bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017564 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.mgmtDpuSignature;
Jeff Johnsone7245742012-09-05 17:12:55 -070017565 pBSSSes->bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070017566 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuDescIndx;
Jeff Johnsone7245742012-09-05 17:12:55 -070017567 pBSSSes->bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070017568 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bcastDpuSignature;
17569
Jeff Johnsone7245742012-09-05 17:12:55 -070017570 pBSSSes->ucBSSIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070017571 halPostAssocRspMsg.postAssocRspParams.configBssRspParams.bssIdx;
17572 }
17573
17574 /*Association no longer in progress */
17575 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
17576
17577 /*Association no longer in progress - prepare pending assoc for processing*/
17578 WDI_DequeueAssocRequest(pWDICtx);
17579
17580 wpalMutexRelease(&pWDICtx->wptMutex);
17581
17582 /*Notify UMAC*/
17583 wdiPostAssocRspCb( &wdiPostAssocParams, pWDICtx->pRspCBUserData);
17584
Jeff Johnsone7245742012-09-05 17:12:55 -070017585 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017586}/*WDI_ProcessPostAssocRsp*/
17587
17588/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017589 @brief Process Del STA Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070017590 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017591
17592 @param pWDICtx: pointer to the WLAN DAL context
17593 pEventData: pointer to the event information structure
17594
Jeff Johnson295189b2012-06-20 16:38:30 -070017595 @see
17596 @return Result of the function call
17597*/
17598WDI_Status
17599WDI_ProcessDelSTARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017600(
Jeff Johnson295189b2012-06-20 16:38:30 -070017601 WDI_ControlBlockType* pWDICtx,
17602 WDI_EventInfoType* pEventData
17603)
17604{
17605 WDI_DelSTARspParamsType wdiDelSTARsp;
17606 WDI_DelSTARspCb wdiDelSTARspCb;
17607 wpt_uint8 staType;
Jeff Johnsone7245742012-09-05 17:12:55 -070017608 tDeleteStaRspMsg halDelStaRspMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070017609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17610
17611 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017612 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017613 -------------------------------------------------------------------------*/
17614 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17615 ( NULL == pEventData->pEventData))
17616 {
17617 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017618 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017619 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017620 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017621 }
17622
17623 wdiDelSTARspCb = (WDI_DelSTARspCb)pWDICtx->pfncRspCB;
17624
17625 /*-------------------------------------------------------------------------
17626 Extract response and send it to UMAC
17627 -------------------------------------------------------------------------*/
17628 wpalMemoryCopy( &halDelStaRspMsg.delStaRspParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070017629 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017630 sizeof(halDelStaRspMsg.delStaRspParams));
17631
17632 wdiDelSTARsp.ucSTAIdx = halDelStaRspMsg.delStaRspParams.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070017633 wdiDelSTARsp.wdiStatus =
17634 WDI_HAL_2_WDI_STATUS(halDelStaRspMsg.delStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070017635
17636 WDI_STATableGetStaType(pWDICtx, wdiDelSTARsp.ucSTAIdx, &staType);
17637
17638 /* If the DEL STA request is for self STA do not delete it - Really weird!!What happens in concurrency */
17639 if(staType == WDI_STA_ENTRY_SELF)
17640 {
17641 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
17642
17643 /* At this point add the self-STA */
17644
17645 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
17646 /*! TO DO: wdiAddSTAParam.ucHTCapable */
17647 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
17648
17649#define WDI_DPU_SELF_STA_DEFAULT_IDX 0
17650#define WDI_DPU_SELF_STA_DEFAULT_SIG 0
17651
17652 //all DPU indices are the same for self STA
17653 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17654 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17655 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuIndex = WDI_DPU_SELF_STA_DEFAULT_IDX;
17656 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17657 pSTATable[wdiDelSTARsp.ucSTAIdx].bcastMgmtDpuSignature = WDI_DPU_SELF_STA_DEFAULT_SIG;
17658 pSTATable[wdiDelSTARsp.ucSTAIdx].dpuSig = WDI_DPU_SELF_STA_DEFAULT_SIG;
Madan Mohan Koyyalamudi15a48f02012-10-05 17:13:53 -070017659
17660 pSTATable[wdiDelSTARsp.ucSTAIdx].bssIdx = WDI_BSS_INVALID_IDX;
Jeff Johnson295189b2012-06-20 16:38:30 -070017661 }
17662 else
17663 {
17664 //Delete the station in the table
17665 WDI_STATableDelSta( pWDICtx, wdiDelSTARsp.ucSTAIdx);
17666 }
17667
17668 /*Notify UMAC*/
17669 wdiDelSTARspCb( &wdiDelSTARsp, pWDICtx->pRspCBUserData);
17670
Jeff Johnsone7245742012-09-05 17:12:55 -070017671 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017672}/*WDI_ProcessDelSTARsp*/
17673
17674
17675/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070017676 Security Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070017677==========================================================================*/
17678
17679/**
17680 @brief Process Set BSS Key Rsp function (called when a response
17681 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017682
17683 @param pWDICtx: pointer to the WLAN DAL context
17684 pEventData: pointer to the event information structure
17685
Jeff Johnson295189b2012-06-20 16:38:30 -070017686 @see
17687 @return Result of the function call
17688*/
17689WDI_Status
17690WDI_ProcessSetBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017691(
Jeff Johnson295189b2012-06-20 16:38:30 -070017692 WDI_ControlBlockType* pWDICtx,
17693 WDI_EventInfoType* pEventData
17694)
17695{
17696 WDI_Status wdiStatus;
17697 eHalStatus halStatus;
17698 WDI_SetBSSKeyRspCb wdiSetBSSKeyRspCb;
17699 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17700
17701 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017702 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017703 -------------------------------------------------------------------------*/
17704 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17705 ( NULL == pEventData->pEventData))
17706 {
17707 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017708 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017709 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017710 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017711 }
17712
17713 wdiSetBSSKeyRspCb = (WDI_SetBSSKeyRspCb)pWDICtx->pfncRspCB;
17714
17715 /*-------------------------------------------------------------------------
17716 Extract response and send it to UMAC
17717 -------------------------------------------------------------------------*/
17718 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017719 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017720
17721 if ( eHAL_STATUS_SUCCESS != halStatus )
17722 {
17723 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17724 "Set BSS Key failed with status %s (%d)",
17725 WDI_getHALStatusMsgString(halStatus),
17726 halStatus);
17727 /* send the status to UMAC, don't return from here*/
17728 }
17729
17730 /*Notify UMAC*/
17731 wdiSetBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17732
Jeff Johnsone7245742012-09-05 17:12:55 -070017733 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017734}/*WDI_ProcessSetBssKeyRsp*/
17735
17736/**
17737 @brief Process Remove BSS Key Rsp function (called when a response
17738 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017739
17740 @param pWDICtx: pointer to the WLAN DAL context
17741 pEventData: pointer to the event information structure
17742
Jeff Johnson295189b2012-06-20 16:38:30 -070017743 @see
17744 @return Result of the function call
17745*/
17746WDI_Status
17747WDI_ProcessRemoveBssKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017748(
Jeff Johnson295189b2012-06-20 16:38:30 -070017749 WDI_ControlBlockType* pWDICtx,
17750 WDI_EventInfoType* pEventData
17751)
17752{
17753 WDI_Status wdiStatus;
17754 eHalStatus halStatus;
17755 WDI_RemoveBSSKeyRspCb wdiRemoveBSSKeyRspCb;
17756 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17757
17758 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017759 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017760 -------------------------------------------------------------------------*/
17761 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17762 ( NULL == pEventData->pEventData))
17763 {
17764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017765 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017766 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017768 }
17769
17770 wdiRemoveBSSKeyRspCb = (WDI_RemoveBSSKeyRspCb)pWDICtx->pfncRspCB;
17771
17772 /*-------------------------------------------------------------------------
17773 Extract response and send it to UMAC
17774 -------------------------------------------------------------------------*/
17775 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017776 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017777
17778 if ( eHAL_STATUS_SUCCESS != halStatus )
17779 {
17780 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17781 "Remove BSS Key failed with status %s (%d )",
17782 WDI_getHALStatusMsgString(halStatus),
17783 halStatus);
17784 /* send the status to UMAC, don't return from here*/
17785 }
17786
17787 /*Notify UMAC*/
17788 wdiRemoveBSSKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17789
Jeff Johnsone7245742012-09-05 17:12:55 -070017790 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017791}/*WDI_ProcessSetBssKeyRsp*/
17792
17793
17794/**
17795 @brief Process Set STA Key Rsp function (called when a response
17796 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017797
17798 @param pWDICtx: pointer to the WLAN DAL context
17799 pEventData: pointer to the event information structure
17800
Jeff Johnson295189b2012-06-20 16:38:30 -070017801 @see
17802 @return Result of the function call
17803*/
17804WDI_Status
17805WDI_ProcessSetStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017806(
Jeff Johnson295189b2012-06-20 16:38:30 -070017807 WDI_ControlBlockType* pWDICtx,
17808 WDI_EventInfoType* pEventData
17809)
17810{
17811 WDI_Status wdiStatus;
17812 eHalStatus halStatus;
17813 WDI_SetSTAKeyRspCb wdiSetSTAKeyRspCb;
17814 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17815
17816 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017817 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017818 -------------------------------------------------------------------------*/
17819 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17820 ( NULL == pEventData->pEventData))
17821 {
17822 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017823 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017824 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017825 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017826 }
17827
17828 wdiSetSTAKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17829
17830 /*-------------------------------------------------------------------------
17831 Extract response and send it to UMAC
17832 -------------------------------------------------------------------------*/
17833 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017834 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017835
17836 if ( eHAL_STATUS_SUCCESS != halStatus )
17837 {
17838 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17839 "Set STA Key failed with status %s (%d)",
17840 WDI_getHALStatusMsgString(halStatus),
17841 halStatus);
17842 /* send the status to UMAC, don't return from here*/
17843 }
17844
17845 /*Notify UMAC*/
17846 wdiSetSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17847
Jeff Johnsone7245742012-09-05 17:12:55 -070017848 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017849}/*WDI_ProcessSetSTAKeyRsp*/
17850
17851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017852 @brief Process Remove STA Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017853 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017854
17855 @param pWDICtx: pointer to the WLAN DAL context
17856 pEventData: pointer to the event information structure
17857
Jeff Johnson295189b2012-06-20 16:38:30 -070017858 @see
17859 @return Result of the function call
17860*/
17861WDI_Status
17862WDI_ProcessRemoveStaKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017863(
Jeff Johnson295189b2012-06-20 16:38:30 -070017864 WDI_ControlBlockType* pWDICtx,
17865 WDI_EventInfoType* pEventData
17866)
17867{
17868 WDI_Status wdiStatus;
17869 eHalStatus halStatus;
17870 WDI_RemoveSTAKeyRspCb wdiRemoveSTAKeyRspCb;
17871 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17872
17873 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017874 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017875 -------------------------------------------------------------------------*/
17876 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17877 ( NULL == pEventData->pEventData))
17878 {
17879 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017880 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017881 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017882 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017883 }
17884
17885 wdiRemoveSTAKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
17886
17887 /*-------------------------------------------------------------------------
17888 Extract response and send it to UMAC
17889 -------------------------------------------------------------------------*/
17890 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070017891 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017892
17893 if ( eHAL_STATUS_SUCCESS != halStatus )
17894 {
17895 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17896 "Remove STA Key failed with status %s (%d)",
17897 WDI_getHALStatusMsgString(halStatus),
17898 halStatus);
17899 /* send the status to UMAC, don't return from here*/
17900 }
17901
17902 /*Notify UMAC*/
17903 wdiRemoveSTAKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17904
Jeff Johnsone7245742012-09-05 17:12:55 -070017905 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017906}/*WDI_ProcessRemoveStaKeyRsp*/
17907
17908/**
Jeff Johnsone7245742012-09-05 17:12:55 -070017909 @brief Process Set STA Bcast Key Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070017910 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017911
17912 @param pWDICtx: pointer to the WLAN DAL context
17913 pEventData: pointer to the event information structure
17914
Jeff Johnson295189b2012-06-20 16:38:30 -070017915 @see
17916 @return Result of the function call
17917*/
17918WDI_Status
17919WDI_ProcessSetStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017920(
Jeff Johnson295189b2012-06-20 16:38:30 -070017921 WDI_ControlBlockType* pWDICtx,
17922 WDI_EventInfoType* pEventData
17923)
17924{
17925 WDI_Status wdiStatus;
17926 eHalStatus halStatus;
17927 WDI_SetSTAKeyRspCb wdiSetSTABcastKeyRspCb;
17928 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17929
17930 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017931 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017932 -------------------------------------------------------------------------*/
17933 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17934 ( NULL == pEventData->pEventData))
17935 {
17936 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017937 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017938 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017939 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070017940 }
17941
17942 wdiSetSTABcastKeyRspCb = (WDI_SetSTAKeyRspCb)pWDICtx->pfncRspCB;
17943
17944 /*-------------------------------------------------------------------------
17945 Extract response and send it to UMAC
17946 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070017947 wpalMemoryCopy( &halStatus,
17948 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070017949 sizeof(halStatus));
17950
Jeff Johnsone7245742012-09-05 17:12:55 -070017951 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070017952
17953 if ( eHAL_STATUS_SUCCESS != halStatus )
17954 {
17955 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
17956 "Set STA Key failed with status %s (%d)",
17957 WDI_getHALStatusMsgString(halStatus),
17958 halStatus);
17959 /* send the status to UMAC, don't return from here*/
17960 }
17961
17962 /*Notify UMAC*/
17963 wdiSetSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
17964
Jeff Johnsone7245742012-09-05 17:12:55 -070017965 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070017966}/*WDI_ProcessSetSTABcastKeyRsp*/
17967
17968/**
17969 @brief Process Remove STA Bcast Key Rsp function (called when a
17970 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070017971
17972 @param pWDICtx: pointer to the WLAN DAL context
17973 pEventData: pointer to the event information structure
17974
Jeff Johnson295189b2012-06-20 16:38:30 -070017975 @see
17976 @return Result of the function call
17977*/
17978WDI_Status
17979WDI_ProcessRemoveStaBcastKeyRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070017980(
Jeff Johnson295189b2012-06-20 16:38:30 -070017981 WDI_ControlBlockType* pWDICtx,
17982 WDI_EventInfoType* pEventData
17983)
17984{
17985 WDI_Status wdiStatus;
17986 eHalStatus halStatus;
17987 WDI_RemoveSTAKeyRspCb wdiRemoveSTABcastKeyRspCb;
17988 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
17989
17990 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070017991 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070017992 -------------------------------------------------------------------------*/
17993 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
17994 ( NULL == pEventData->pEventData))
17995 {
17996 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070017997 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070017998 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070017999 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018000 }
18001
18002 wdiRemoveSTABcastKeyRspCb = (WDI_RemoveSTAKeyRspCb)pWDICtx->pfncRspCB;
18003
18004 /*-------------------------------------------------------------------------
18005 Extract response and send it to UMAC
18006 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018007 wpalMemoryCopy( &halStatus,
18008 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018009 sizeof(halStatus));
18010
Jeff Johnsone7245742012-09-05 17:12:55 -070018011 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018012
18013 if ( eHAL_STATUS_SUCCESS != halStatus )
18014 {
18015 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18016 "Remove STA Key failed with status %s (%d)",
18017 WDI_getHALStatusMsgString(halStatus),
18018 halStatus);
18019 /* send the status to UMAC, don't return from here*/
18020 }
18021
18022 /*Notify UMAC*/
18023 wdiRemoveSTABcastKeyRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18024
Jeff Johnsone7245742012-09-05 17:12:55 -070018025 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018026}/*WDI_ProcessRemoveStaBcastKeyRsp*/
18027
18028
18029/*==========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018030 QoS and BA Response Processing Functions
Jeff Johnson295189b2012-06-20 16:38:30 -070018031==========================================================================*/
18032
18033/**
18034 @brief Process Add TSpec Rsp function (called when a response
18035 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018036
18037 @param pWDICtx: pointer to the WLAN DAL context
18038 pEventData: pointer to the event information structure
18039
Jeff Johnson295189b2012-06-20 16:38:30 -070018040 @see
18041 @return Result of the function call
18042*/
18043WDI_Status
18044WDI_ProcessAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018045(
Jeff Johnson295189b2012-06-20 16:38:30 -070018046 WDI_ControlBlockType* pWDICtx,
18047 WDI_EventInfoType* pEventData
18048)
18049{
18050 WDI_Status wdiStatus;
18051 eHalStatus halStatus;
18052 WDI_AddTsRspCb wdiAddTsRspCb;
18053 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18054
18055 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018056 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018057 -------------------------------------------------------------------------*/
18058 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18059 ( NULL == pEventData->pEventData))
18060 {
18061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018062 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018063 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018064 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018065 }
18066
18067 wdiAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
18068
18069 /*-------------------------------------------------------------------------
18070 Extract response and send it to UMAC
18071 -------------------------------------------------------------------------*/
18072 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018073 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018074
18075 /*Notify UMAC*/
18076 wdiAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18077
Jeff Johnsone7245742012-09-05 17:12:55 -070018078 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018079}/*WDI_ProcessAddTSpecRsp*/
18080
18081
Sunil Duttbd736ed2014-05-26 21:19:41 +053018082
18083#ifdef WLAN_FEATURE_LINK_LAYER_STATS
18084
18085WDI_Status
18086WDI_ProcessLLStatsSetRsp
18087(
18088 WDI_ControlBlockType* pWDICtx,
18089 WDI_EventInfoType* pEventData
18090)
18091{
18092 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb;
18093
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018094 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018095 "%s: Enter ", __func__);
18096 /*-------------------------------------------------------------------------
18097 Sanity check
18098 -------------------------------------------------------------------------*/
18099 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18100 ( NULL == pEventData->pEventData))
18101 {
18102 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18103 "%s: Invalid parameters", __func__);
18104 WDI_ASSERT(0);
18105 return WDI_STATUS_E_FAILURE;
18106 }
18107
18108 wdiLLStatsSetRspCb = (WDI_LLStatsSetRspCb)pWDICtx->pfncRspCB;
18109
18110 wdiLLStatsSetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18111
18112 return WDI_STATUS_SUCCESS;
18113}
18114
18115WDI_Status
18116WDI_ProcessLLStatsGetRsp
18117(
18118 WDI_ControlBlockType* pWDICtx,
18119 WDI_EventInfoType* pEventData
18120)
18121{
18122 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb;
18123
18124 /*-------------------------------------------------------------------------
18125 Sanity check
18126 -------------------------------------------------------------------------*/
18127 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18128 ( NULL == pEventData->pEventData))
18129 {
18130 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18131 "%s: Invalid parameters", __func__);
18132 WDI_ASSERT(0);
18133 return WDI_STATUS_E_FAILURE;
18134 }
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018135 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018136 "%s: Enter ", __func__);
18137
18138 wdiLLStatsGetRspCb = (WDI_LLStatsGetRspCb)pWDICtx->pfncRspCB;
18139
18140 wdiLLStatsGetRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18141
18142 return WDI_STATUS_SUCCESS;
18143}
18144
18145WDI_Status
18146WDI_ProcessLLStatsClearRsp
18147(
18148 WDI_ControlBlockType* pWDICtx,
18149 WDI_EventInfoType* pEventData
18150)
18151{
18152 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb;
18153
18154 /*-------------------------------------------------------------------------
18155 Sanity check
18156 -------------------------------------------------------------------------*/
18157 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18158 ( NULL == pEventData->pEventData))
18159 {
18160 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
18161 "%s: Invalid parameters", __func__);
18162 WDI_ASSERT(0);
18163 return WDI_STATUS_E_FAILURE;
18164 }
18165
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053018166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sunil Duttbd736ed2014-05-26 21:19:41 +053018167 "%s: CLEAR RESPONSE CALL BACK", __func__);
18168 wdiLLStatsClearRspCb = (WDI_LLStatsClearRspCb)pWDICtx->pfncRspCB;
18169
18170 wdiLLStatsClearRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
18171
18172 return WDI_STATUS_SUCCESS;
18173}
18174#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
18175
Jeff Johnson295189b2012-06-20 16:38:30 -070018176/**
18177 @brief Process Del TSpec Rsp function (called when a response
18178 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018179
18180 @param pWDICtx: pointer to the WLAN DAL context
18181 pEventData: pointer to the event information structure
18182
Jeff Johnson295189b2012-06-20 16:38:30 -070018183 @see
18184 @return Result of the function call
18185*/
18186WDI_Status
18187WDI_ProcessDelTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018188(
Jeff Johnson295189b2012-06-20 16:38:30 -070018189 WDI_ControlBlockType* pWDICtx,
18190 WDI_EventInfoType* pEventData
18191)
18192{
18193 WDI_Status wdiStatus;
18194 eHalStatus halStatus;
18195 WDI_DelTsRspCb wdiDelTsRspCb;
18196 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18197
18198 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018199 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018200 -------------------------------------------------------------------------*/
18201 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18202 ( NULL == pEventData->pEventData))
18203 {
18204 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018205 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018206 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018207 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018208 }
18209
18210 wdiDelTsRspCb = (WDI_DelTsRspCb)pWDICtx->pfncRspCB;
18211
18212 /*-------------------------------------------------------------------------
18213 Extract response and send it to UMAC
18214 -------------------------------------------------------------------------*/
18215 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018216 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018217
18218 /*Notify UMAC*/
18219 wdiDelTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18220
Jeff Johnsone7245742012-09-05 17:12:55 -070018221 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018222}/*WDI_ProcessDelTSpecRsp*/
18223
18224/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018225 @brief Process Update EDCA Parameters Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018226 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018227
18228 @param pWDICtx: pointer to the WLAN DAL context
18229 pEventData: pointer to the event information structure
18230
Jeff Johnson295189b2012-06-20 16:38:30 -070018231 @see
18232 @return Result of the function call
18233*/
18234WDI_Status
18235WDI_ProcessUpdateEDCAParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018236(
Jeff Johnson295189b2012-06-20 16:38:30 -070018237 WDI_ControlBlockType* pWDICtx,
18238 WDI_EventInfoType* pEventData
18239)
18240{
18241 WDI_Status wdiStatus;
18242 eHalStatus halStatus;
18243 WDI_UpdateEDCAParamsRspCb wdiUpdateEDCAParamsRspCb;
18244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18245
18246 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018247 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018248 -------------------------------------------------------------------------*/
18249 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18250 ( NULL == pEventData->pEventData))
18251 {
18252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018253 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018254 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018255 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018256 }
18257
18258 wdiUpdateEDCAParamsRspCb = (WDI_UpdateEDCAParamsRspCb)pWDICtx->pfncRspCB;
18259
18260 /*-------------------------------------------------------------------------
18261 Extract response and send it to UMAC
18262 -------------------------------------------------------------------------*/
18263 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018264 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018265
18266 /*Notify UMAC*/
18267 wdiUpdateEDCAParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18268
Jeff Johnsone7245742012-09-05 17:12:55 -070018269 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018270}/*WDI_ProcessUpdateEDCAParamsRsp*/
18271
18272
18273/**
18274 @brief Process Add BA Rsp function (called when a response
18275 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018276
18277 @param pWDICtx: pointer to the WLAN DAL context
18278 pEventData: pointer to the event information structure
18279
Jeff Johnson295189b2012-06-20 16:38:30 -070018280 @see
18281 @return Result of the function call
18282*/
18283WDI_Status
18284WDI_ProcessAddBASessionRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018285(
Jeff Johnson295189b2012-06-20 16:38:30 -070018286 WDI_ControlBlockType* pWDICtx,
18287 WDI_EventInfoType* pEventData
18288)
18289{
18290 WDI_AddBASessionRspCb wdiAddBASessionRspCb;
18291
18292 tAddBASessionRspParams halBASessionRsp;
18293 WDI_AddBASessionRspParamsType wdiBASessionRsp;
18294
Jeff Johnsone7245742012-09-05 17:12:55 -070018295
Jeff Johnson295189b2012-06-20 16:38:30 -070018296 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18297
18298 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018299 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018300 -------------------------------------------------------------------------*/
18301 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18302 ( NULL == pEventData->pEventData))
18303 {
18304 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018305 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018306 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018307 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018308 }
18309
18310 wdiAddBASessionRspCb = (WDI_AddBASessionRspCb)pWDICtx->pfncRspCB;
18311
18312 /*-------------------------------------------------------------------------
18313 Extract response and send it to UMAC
18314 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018315 wpalMemoryCopy( &halBASessionRsp,
18316 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018317 sizeof(halBASessionRsp));
18318
18319 wdiBASessionRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halBASessionRsp.status);
18320
Jeff Johnson43971f52012-07-17 12:26:56 -070018321 if ( WDI_STATUS_SUCCESS == wdiBASessionRsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070018322 {
18323 wdiBASessionRsp.ucBaDialogToken = halBASessionRsp.baDialogToken;
18324 wdiBASessionRsp.ucBaTID = halBASessionRsp.baTID;
18325 wdiBASessionRsp.ucBaBufferSize = halBASessionRsp.baBufferSize;
18326 wdiBASessionRsp.usBaSessionID = halBASessionRsp.baSessionID;
18327 wdiBASessionRsp.ucWinSize = halBASessionRsp.winSize;
18328 wdiBASessionRsp.ucSTAIdx = halBASessionRsp.STAID;
18329 wdiBASessionRsp.usBaSSN = halBASessionRsp.SSN;
18330 }
18331
18332 /*Notify UMAC*/
18333 wdiAddBASessionRspCb( &wdiBASessionRsp, pWDICtx->pRspCBUserData);
18334
Jeff Johnsone7245742012-09-05 17:12:55 -070018335 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018336}/*WDI_ProcessAddSessionBARsp*/
18337
18338
18339/**
18340 @brief Process Del BA Rsp function (called when a response
18341 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018342
18343 @param pWDICtx: pointer to the WLAN DAL context
18344 pEventData: pointer to the event information structure
18345
Jeff Johnson295189b2012-06-20 16:38:30 -070018346 @see
18347 @return Result of the function call
18348*/
18349WDI_Status
18350WDI_ProcessDelBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018351(
Jeff Johnson295189b2012-06-20 16:38:30 -070018352 WDI_ControlBlockType* pWDICtx,
18353 WDI_EventInfoType* pEventData
18354)
18355{
18356 WDI_Status wdiStatus;
18357 eHalStatus halStatus;
18358 WDI_DelBARspCb wdiDelBARspCb;
18359 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18360
18361 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018362 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018363 -------------------------------------------------------------------------*/
18364 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18365 ( NULL == pEventData->pEventData))
18366 {
18367 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018368 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018369 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018370 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018371 }
18372
18373 wdiDelBARspCb = (WDI_DelBARspCb)pWDICtx->pfncRspCB;
18374
18375 /*-------------------------------------------------------------------------
18376 Extract response and send it to UMAC
18377 -------------------------------------------------------------------------*/
18378 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070018379 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018380
18381 if ( eHAL_STATUS_SUCCESS == halStatus )
18382 {
18383 /*! TO DO: I should notify the DAL Data Path that the BA was deleted*/
18384 }
18385
18386 /*Notify UMAC*/
18387 wdiDelBARspCb( wdiStatus, pWDICtx->pRspCBUserData);
18388
Jeff Johnsone7245742012-09-05 17:12:55 -070018389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018390}/*WDI_ProcessDelBARsp*/
18391
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080018392#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070018393/**
18394 @brief Process TSM Stats Rsp function (called when a response
18395 is being received over the bus from HAL)
18396
18397 @param pWDICtx: pointer to the WLAN DAL context
18398 pEventData: pointer to the event information structure
18399
18400 @see
18401 @return Result of the function call
18402*/
18403WDI_Status
18404WDI_ProcessTsmStatsRsp
18405(
18406 WDI_ControlBlockType* pWDICtx,
18407 WDI_EventInfoType* pEventData
18408)
18409{
18410 WDI_TsmRspCb wdiTsmStatsRspCb;
18411 tTsmStatsRspMsg halTsmStatsRspMsg;
18412 WDI_TSMStatsRspParamsType wdiTsmStatsRspParams;
18413 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18414
18415 /*-------------------------------------------------------------------------
18416 Sanity check
18417 -------------------------------------------------------------------------*/
18418 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18419 ( NULL == pEventData->pEventData))
18420 {
18421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018422 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018423 WDI_ASSERT(0);
18424 return WDI_STATUS_E_FAILURE;
18425 }
18426
18427 wdiTsmStatsRspCb = (WDI_TsmRspCb)pWDICtx->pfncRspCB;
18428
18429 /*-------------------------------------------------------------------------
18430 Unpack HAL Response Message - the header was already extracted by the
18431 main Response Handling procedure
18432 -------------------------------------------------------------------------*/
18433 wpalMemoryCopy( &halTsmStatsRspMsg.tsmStatsRspParams,
18434 pEventData->pEventData,
18435 sizeof(halTsmStatsRspMsg.tsmStatsRspParams));
18436
18437 wdiTsmStatsRspParams.UplinkPktQueueDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDly;
18438 wpalMemoryCopy( wdiTsmStatsRspParams.UplinkPktQueueDlyHist,
18439 halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist,
18440 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist)/
18441 sizeof(halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktQueueDlyHist[0]));
18442 wdiTsmStatsRspParams.UplinkPktTxDly = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktTxDly;
18443 wdiTsmStatsRspParams.UplinkPktLoss = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktLoss;
18444 wdiTsmStatsRspParams.UplinkPktCount = halTsmStatsRspMsg.tsmStatsRspParams.UplinkPktCount;
18445 wdiTsmStatsRspParams.RoamingCount = halTsmStatsRspMsg.tsmStatsRspParams.RoamingCount;
18446 wdiTsmStatsRspParams.RoamingDly = halTsmStatsRspMsg.tsmStatsRspParams.RoamingDly;
18447 wdiTsmStatsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(
18448 halTsmStatsRspMsg.tsmStatsRspParams.status);
18449
18450 /*Notify UMAC*/
18451 wdiTsmStatsRspCb( &wdiTsmStatsRspParams, pWDICtx->pRspCBUserData);
18452
18453 return WDI_STATUS_SUCCESS;
18454}/*WDI_ProcessTsmStatsRsp*/
18455
18456#endif
18457
18458
18459
18460/**
18461 @brief Process Flush AC Rsp function (called when a response
18462 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018463
18464 @param pWDICtx: pointer to the WLAN DAL context
18465 pEventData: pointer to the event information structure
18466
Jeff Johnson295189b2012-06-20 16:38:30 -070018467 @see
18468 @return Result of the function call
18469*/
18470WDI_Status
18471WDI_ProcessFlushAcRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018472(
Jeff Johnson295189b2012-06-20 16:38:30 -070018473 WDI_ControlBlockType* pWDICtx,
18474 WDI_EventInfoType* pEventData
18475)
18476{
18477 WDI_Status wdiStatus;
18478 eHalStatus halStatus;
18479 WDI_FlushAcRspCb wdiFlushAcRspCb;
18480 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18481
18482 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018483 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018484 -------------------------------------------------------------------------*/
18485 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18486 ( NULL == pEventData->pEventData))
18487 {
18488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018489 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018490 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018491 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018492 }
18493
18494 wdiFlushAcRspCb = (WDI_FlushAcRspCb)pWDICtx->pfncRspCB;
18495
18496 /*-------------------------------------------------------------------------
18497 Extract response and send it to UMAC
18498 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018499 wpalMemoryCopy( &halStatus,
18500 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018501 sizeof(halStatus));
18502
Jeff Johnsone7245742012-09-05 17:12:55 -070018503 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018504
18505 /*Notify UMAC*/
18506 wdiFlushAcRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18507
Jeff Johnsone7245742012-09-05 17:12:55 -070018508 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018509}/*WDI_ProcessFlushAcRsp*/
18510
18511/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018512 @brief Process BT AMP event Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018513 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018514
18515 @param pWDICtx: pointer to the WLAN DAL context
18516 pEventData: pointer to the event information structure
18517
Jeff Johnson295189b2012-06-20 16:38:30 -070018518 @see
18519 @return Result of the function call
18520*/
18521WDI_Status
18522WDI_ProcessBtAmpEventRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018523(
Jeff Johnson295189b2012-06-20 16:38:30 -070018524 WDI_ControlBlockType* pWDICtx,
18525 WDI_EventInfoType* pEventData
18526)
18527{
18528 WDI_Status wdiStatus;
18529 eHalStatus halStatus;
18530 WDI_BtAmpEventRspCb wdiBtAmpEventRspCb;
18531 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18532
18533 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018534 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018535 -------------------------------------------------------------------------*/
18536 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18537 ( NULL == pEventData->pEventData))
18538 {
18539 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018540 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018541 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018542 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018543 }
18544
18545 wdiBtAmpEventRspCb = (WDI_BtAmpEventRspCb)pWDICtx->pfncRspCB;
18546
18547 /*-------------------------------------------------------------------------
18548 Extract response and send it to UMAC
18549 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018550 wpalMemoryCopy( &halStatus,
18551 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018552 sizeof(halStatus));
18553
Jeff Johnsone7245742012-09-05 17:12:55 -070018554 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070018555
18556 /*Notify UMAC*/
18557 wdiBtAmpEventRspCb( wdiStatus, pWDICtx->pRspCBUserData);
18558
Jeff Johnsone7245742012-09-05 17:12:55 -070018559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018560}/*WDI_ProcessBtAmpEventRsp*/
18561
18562
18563/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018564 @brief Process ADD STA SELF Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070018565 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018566
18567 @param pWDICtx: pointer to the WLAN DAL context
18568 pEventData: pointer to the event information structure
18569
Jeff Johnson295189b2012-06-20 16:38:30 -070018570 @see
18571 @return Result of the function call
18572*/
18573WDI_Status
18574WDI_ProcessAddSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018575(
Jeff Johnson295189b2012-06-20 16:38:30 -070018576 WDI_ControlBlockType* pWDICtx,
18577 WDI_EventInfoType* pEventData
18578)
18579{
18580 WDI_AddSTASelfRspParamsType wdiAddSTASelfParams;
18581 WDI_AddSTASelfParamsRspCb wdiAddSTASelfReqParamsRspCb;
18582 tAddStaSelfRspMsg halAddStaSelfRsp;
18583 WDI_AddStaParams wdiAddSTAParam = {0};
18584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18585
18586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018588 -------------------------------------------------------------------------*/
18589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18590 ( NULL == pEventData->pEventData))
18591 {
18592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018596 }
18597
Jeff Johnsone7245742012-09-05 17:12:55 -070018598 wdiAddSTASelfReqParamsRspCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070018599 (WDI_AddSTASelfParamsRspCb)pWDICtx->pfncRspCB;
18600
18601 /*-------------------------------------------------------------------------
18602 Extract response and send it to UMAC
18603 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018604 wpalMemoryCopy( &halAddStaSelfRsp.addStaSelfRspParams,
18605 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018606 sizeof(halAddStaSelfRsp.addStaSelfRspParams));
18607
18608
Jeff Johnsone7245742012-09-05 17:12:55 -070018609 wdiAddSTASelfParams.wdiStatus =
18610 WDI_HAL_2_WDI_STATUS(halAddStaSelfRsp.addStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018611
Jeff Johnsone7245742012-09-05 17:12:55 -070018612 wdiAddSTASelfParams.ucSTASelfIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018613 halAddStaSelfRsp.addStaSelfRspParams.selfStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018614 wdiAddSTASelfParams.dpuIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070018615 halAddStaSelfRsp.addStaSelfRspParams.dpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070018616 wdiAddSTASelfParams.dpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070018617 halAddStaSelfRsp.addStaSelfRspParams.dpuSignature;
18618
18619 wpalMemoryCopy(wdiAddSTASelfParams.macSelfSta,
18620 pWDICtx->wdiCacheAddSTASelfReq.wdiAddSTASelfInfo.selfMacAddr,
18621 WDI_MAC_ADDR_LEN);
18622
18623
18624#ifdef HAL_SELF_STA_PER_BSS
18625
18626 /* At this point add the self-STA */
18627
18628 /*! TO DO: wdiAddSTAParam.ucWmmEnabled */
18629 /*! TO DO: wdiAddSTAParam.ucHTCapable */
18630 /*! TO DO: wdiAddSTAParam.ucRmfEnabled */
18631
18632 //all DPU indices are the same for self STA
18633
18634 /*DPU Information*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018635 wdiAddSTAParam.dpuIndex = wdiAddSTASelfParams.dpuIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070018636 wdiAddSTAParam.dpuSig = wdiAddSTASelfParams.dpuSignature;
18637 wdiAddSTAParam.bcastDpuSignature = wdiAddSTASelfParams.dpuSignature;
18638 wdiAddSTAParam.bcastMgmtDpuSignature = wdiAddSTASelfParams.dpuSignature;
18639 wdiAddSTAParam.bcastDpuIndex = wdiAddSTASelfParams.dpuIdx;
18640 wdiAddSTAParam.bcastMgmtDpuIndex = wdiAddSTASelfParams.dpuIdx;
18641
18642 wpalMemoryCopy(wdiAddSTAParam.staMacAddr, wdiAddSTASelfParams.macSelfSta,
18643 WDI_MAC_ADDR_LEN);
18644
18645 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_SELF; /* 0 - self */
18646 wdiAddSTAParam.ucSTAIdx = wdiAddSTASelfParams.ucSTASelfIdx;
18647
Jeff Johnsone7245742012-09-05 17:12:55 -070018648 if(halAddStaSelfRsp.addStaSelfRspParams.status
Jeff Johnson295189b2012-06-20 16:38:30 -070018649 != eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO)
18650 {
18651 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
18652 }
18653#endif
18654
18655 /*Notify UMAC*/
18656 wdiAddSTASelfReqParamsRspCb( &wdiAddSTASelfParams, pWDICtx->pRspCBUserData);
18657
Jeff Johnsone7245742012-09-05 17:12:55 -070018658 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018659}/*WDI_ProcessAddSTASelfRsp*/
18660
18661
18662
18663/**
Jeff Johnsone7245742012-09-05 17:12:55 -070018664 @brief WDI_ProcessDelSTASelfRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070018665 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018666
18667 @param pWDICtx: pointer to the WLAN DAL context
18668 pEventData: pointer to the event information structure
18669
Jeff Johnson295189b2012-06-20 16:38:30 -070018670 @see
18671 @return Result of the function call
18672*/
18673WDI_Status
18674WDI_ProcessDelSTASelfRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018675(
Jeff Johnson295189b2012-06-20 16:38:30 -070018676 WDI_ControlBlockType* pWDICtx,
18677 WDI_EventInfoType* pEventData
18678)
18679{
18680 WDI_DelSTASelfRspParamsType wdiDelStaSelfRspParams;
18681 WDI_DelSTASelfRspCb wdiDelStaSelfRspCb;
18682 tDelStaSelfRspParams delStaSelfRspParams;
18683 wpt_uint8 ucStaIdx;
18684
18685 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18686
18687 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018688 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018689 -------------------------------------------------------------------------*/
18690 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18691 ( NULL == pEventData->pEventData))
18692 {
18693 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018694 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018695 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018696 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018697 }
18698
18699 wdiDelStaSelfRspCb = (WDI_DelSTASelfRspCb)pWDICtx->pfncRspCB;
18700
18701 /*-------------------------------------------------------------------------
18702 Extract response and send it to UMAC
18703 -------------------------------------------------------------------------*/
18704
Jeff Johnsone7245742012-09-05 17:12:55 -070018705 wpalMemoryCopy( &delStaSelfRspParams,
Jeff Johnson295189b2012-06-20 16:38:30 -070018706 (wpt_uint8*)pEventData->pEventData,
18707 sizeof(tDelStaSelfRspParams));
18708
Jeff Johnsone7245742012-09-05 17:12:55 -070018709 wdiDelStaSelfRspParams.wdiStatus =
18710 WDI_HAL_2_WDI_STATUS(delStaSelfRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018711
Jeff Johnsone7245742012-09-05 17:12:55 -070018712 /* delStaSelfRspParams.status is not
Jeff Johnson295189b2012-06-20 16:38:30 -070018713 eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO*/
18714 if( eHAL_STATUS_SUCCESS == delStaSelfRspParams.status )
18715 {
18716 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070018717 wdiStatus = WDI_STATableFindStaidByAddr(pWDICtx,
Jeff Johnson295189b2012-06-20 16:38:30 -070018718 delStaSelfRspParams.selfMacAddr,
18719 &ucStaIdx);
18720 if(WDI_STATUS_E_FAILURE == wdiStatus)
18721 {
18722 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018723 "%s: Unable to extract the STA Idx ", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018724 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018725 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018726 }
18727 WDI_STATableDelSta(pWDICtx, ucStaIdx);
18728 }
18729
18730 /*Notify UMAC*/
18731 wdiDelStaSelfRspCb(&wdiDelStaSelfRspParams, (void*) pWDICtx->pRspCBUserData);
18732
18733 return WDI_STATUS_SUCCESS;
18734}
18735
Jeff Johnsone7245742012-09-05 17:12:55 -070018736#ifdef FEATURE_OEM_DATA_SUPPORT
18737/**
18738 @brief Start Oem Data Rsp function (called when a
18739 response is being received over the bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070018740
Jeff Johnsone7245742012-09-05 17:12:55 -070018741 @param pWDICtx: pointer to the WLAN DAL context
18742 pEventData: pointer to the event information structure
18743
18744 @see
18745 @return Result of the function call
18746*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018747
18748WDI_Status
18749WDI_ProcessStartOemDataRsp
18750(
18751 WDI_ControlBlockType* pWDICtx,
18752 WDI_EventInfoType* pEventData
18753)
18754{
18755 WDI_oemDataRspCb wdiOemDataRspCb;
18756 WDI_oemDataRspParamsType* wdiOemDataRspParams;
18757 tStartOemDataRspParams* halStartOemDataRspParams;
18758
18759 /*-------------------------------------------------------------------------
18760 Sanity check
18761 -------------------------------------------------------------------------*/
18762 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18763 ( NULL == pEventData->pEventData))
18764 {
18765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018766 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070018767 WDI_ASSERT(0);
18768 return WDI_STATUS_E_FAILURE;
18769 }
18770
18771 wdiOemDataRspCb = (WDI_oemDataRspCb)pWDICtx->pfncRspCB;
18772
18773 /*-------------------------------------------------------------------------
18774 Extract response and send it to UMAC
18775 -------------------------------------------------------------------------*/
18776 halStartOemDataRspParams = (tStartOemDataRspParams *)pEventData->pEventData;
18777
18778
18779 //It is the responsibility of the application code to check for failure
18780 //conditions!
18781
18782 //Allocate memory for WDI OEM DATA RSP structure
18783 wdiOemDataRspParams = wpalMemoryAllocate(sizeof(WDI_oemDataRspParamsType)) ;
18784
18785 if(NULL == wdiOemDataRspParams)
18786 {
18787 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080018788 "Failed to allocate memory in OEM DATA Response %p %p %p ",
Jeff Johnsone7245742012-09-05 17:12:55 -070018789 pWDICtx, pEventData, pEventData->pEventData);
18790 WDI_ASSERT(0);
18791 return WDI_STATUS_E_FAILURE;
18792 }
18793
Padma, Santhosh Kumarabe6c432016-10-24 18:13:11 +053018794 wpalMemoryZero(wdiOemDataRspParams->oemDataRsp, OEM_DATA_RSP_SIZE);
18795
Jeff Johnsone7245742012-09-05 17:12:55 -070018796 /* Populate WDI structure members */
Padma, Santhosh Kumarabe6c432016-10-24 18:13:11 +053018797 wpalMemoryCopy(wdiOemDataRspParams->oemDataRsp,
18798 halStartOemDataRspParams->oemDataRsp,
18799 pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070018800
18801 /*Notify UMAC*/
18802 wdiOemDataRspCb(wdiOemDataRspParams, pWDICtx->pRspCBUserData);
18803
18804 //Free memory allocated for WDI OEM_DATA MEAS RSP structure
18805 wpalMemoryFree(wdiOemDataRspParams);
18806
18807 return WDI_STATUS_SUCCESS;
18808}/*WDI_PrcoessStartOemDataRsp*/
18809#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070018810
18811/*===========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070018812 Miscellaneous Control Response Processing API
Jeff Johnson295189b2012-06-20 16:38:30 -070018813===========================================================================*/
18814
18815/**
18816 @brief Process Channel Switch Rsp function (called when a response
18817 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018818
18819 @param pWDICtx: pointer to the WLAN DAL context
18820 pEventData: pointer to the event information structure
18821
Jeff Johnson295189b2012-06-20 16:38:30 -070018822 @see
18823 @return Result of the function call
18824*/
18825WDI_Status
18826WDI_ProcessChannelSwitchRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018827(
Jeff Johnson295189b2012-06-20 16:38:30 -070018828 WDI_ControlBlockType* pWDICtx,
18829 WDI_EventInfoType* pEventData
18830)
18831{
18832 WDI_SwitchCHRspParamsType wdiSwitchChRsp;
18833 WDI_SwitchChRspCb wdiChSwitchRspCb;
18834 tSwitchChannelRspParams halSwitchChannelRsp;
18835 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18836
18837 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018838 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018839 -------------------------------------------------------------------------*/
18840 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18841 ( NULL == pEventData->pEventData))
18842 {
18843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018844 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018845 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018846 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018847 }
18848
18849 wdiChSwitchRspCb = (WDI_SwitchChRspCb)pWDICtx->pfncRspCB;
18850
18851 /*-------------------------------------------------------------------------
18852 Extract response and send it to UMAC
18853 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018854 wpalMemoryCopy( &halSwitchChannelRsp,
Jeff Johnson295189b2012-06-20 16:38:30 -070018855 (wpt_uint8*)pEventData->pEventData,
18856 sizeof(halSwitchChannelRsp));
18857
Jeff Johnsone7245742012-09-05 17:12:55 -070018858 wdiSwitchChRsp.wdiStatus =
18859 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070018860 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18861
18862#ifdef WLAN_FEATURE_VOWIFI
Jeff Johnsone7245742012-09-05 17:12:55 -070018863 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
Jeff Johnson295189b2012-06-20 16:38:30 -070018864#endif
18865
18866 /*Notify UMAC*/
18867 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18868
Jeff Johnsone7245742012-09-05 17:12:55 -070018869 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070018870}/*WDI_ProcessChannelSwitchRsp*/
18871
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080018872/**
18873 @brief Process Channel Switch Rsp function (called when a response
18874 is being received over the bus from HAL against
18875 WDI_ProcessChannelSwitchReq_V1)
18876
18877 @param pWDICtx: pointer to the WLAN DAL context
18878 pEventData: pointer to the event information structure
18879
18880 @see
18881 @return Result of the function call
18882*/
18883
18884WDI_Status
18885WDI_ProcessChannelSwitchRsp_V1
18886(
18887 WDI_ControlBlockType* pWDICtx,
18888 WDI_EventInfoType* pEventData
18889)
18890{
18891 WDI_SwitchChRspParamsType_V1 wdiSwitchChRsp;
18892 WDI_SwitchChRspCb_V1 wdiChSwitchRspCb;
18893 tSwitchChannelRspParams_V1 halSwitchChannelRsp;
18894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18895
18896 /*-------------------------------------------------------------------------
18897 Sanity check
18898 -------------------------------------------------------------------------*/
18899 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18900 ( NULL == pEventData->pEventData))
18901 {
18902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18903 "%s: Invalid parameters", __func__);
18904 WDI_ASSERT(0);
18905 return WDI_STATUS_E_FAILURE;
18906 }
18907
18908 wdiChSwitchRspCb = (WDI_SwitchChRspCb_V1)pWDICtx->pfncRspCB;
18909
18910 /*-------------------------------------------------------------------------
18911 Extract response and send it to UMAC
18912 -------------------------------------------------------------------------*/
18913 wpalMemoryCopy( &halSwitchChannelRsp,
18914 (wpt_uint8*)pEventData->pEventData,
18915 sizeof(halSwitchChannelRsp));
18916
18917 wdiSwitchChRsp.wdiStatus =
18918 WDI_HAL_2_WDI_STATUS(halSwitchChannelRsp.status);
18919 wdiSwitchChRsp.ucChannel = halSwitchChannelRsp.channelNumber;
18920
18921#ifdef WLAN_FEATURE_VOWIFI
18922 wdiSwitchChRsp.ucTxMgmtPower = halSwitchChannelRsp.txMgmtPower;
18923#endif
18924
18925 wdiSwitchChRsp.channelSwitchSrc = halSwitchChannelRsp.channelSwitchSrc;
18926 if (( NULL == wdiChSwitchRspCb ) )
18927 {
18928 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
18929 "%s: ### Call back function is null", __func__);
18930 WDI_ASSERT(0);
18931 return WDI_STATUS_E_FAILURE;
18932 }
18933 /*Notify UMAC*/
18934 wdiChSwitchRspCb( &wdiSwitchChRsp, pWDICtx->pRspCBUserData);
18935
18936 return WDI_STATUS_SUCCESS;
18937}/*WDI_ProcessChannelSwitchRsp_V1*/
Jeff Johnson295189b2012-06-20 16:38:30 -070018938
18939/**
18940 @brief Process Config STA Rsp function (called when a response
18941 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070018942
18943 @param pWDICtx: pointer to the WLAN DAL context
18944 pEventData: pointer to the event information structure
18945
Jeff Johnson295189b2012-06-20 16:38:30 -070018946 @see
18947 @return Result of the function call
18948*/
18949WDI_Status
18950WDI_ProcessConfigStaRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070018951(
Jeff Johnson295189b2012-06-20 16:38:30 -070018952 WDI_ControlBlockType* pWDICtx,
18953 WDI_EventInfoType* pEventData
18954)
18955{
18956 WDI_ConfigSTARspParamsType wdiCfgSTAParams;
18957 WDI_ConfigSTARspCb wdiConfigSTARspCb;
18958 WDI_AddStaParams wdiAddSTAParam;
18959
18960 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070018961 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070018962
Jeff Johnsone7245742012-09-05 17:12:55 -070018963 tConfigStaRspMsg halConfigStaRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070018964 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
18965
18966 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070018967 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070018968 -------------------------------------------------------------------------*/
18969 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
18970 ( NULL == pEventData->pEventData))
18971 {
18972 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070018973 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070018974 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070018975 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070018976 }
18977
18978 wdiConfigSTARspCb = (WDI_ConfigSTARspCb)pWDICtx->pfncRspCB;
18979
18980 /*-------------------------------------------------------------------------
18981 Extract response and send it to UMAC
18982 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070018983 wpalMemoryCopy( &halConfigStaRsp.configStaRspParams,
18984 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070018985 sizeof(halConfigStaRsp.configStaRspParams));
18986
18987
18988 wdiCfgSTAParams.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
18989 wdiCfgSTAParams.ucBssIdx = halConfigStaRsp.configStaRspParams.bssIdx;
18990 wdiCfgSTAParams.ucUcastSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
18991 wdiCfgSTAParams.ucBcastSig = halConfigStaRsp.configStaRspParams.ucBcastSig;
18992 wdiCfgSTAParams.ucMgmtSig = halConfigStaRsp.configStaRspParams.ucMgmtSig;
18993
18994 /* MAC Address of STA - take from cache as it does not come back in the
18995 response*/
18996 wpalMemoryCopy( wdiCfgSTAParams.macSTA,
Jeff Johnsone7245742012-09-05 17:12:55 -070018997 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070018998 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070018999
19000 wdiCfgSTAParams.wdiStatus =
19001 WDI_HAL_2_WDI_STATUS(halConfigStaRsp.configStaRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070019002
19003 wdiCfgSTAParams.ucDpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
19004 wdiCfgSTAParams.ucBcastDpuIndex = halConfigStaRsp.configStaRspParams.bcastDpuIndex;
19005 wdiCfgSTAParams.ucBcastMgmtDpuIdx = halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
19006
19007 if ( WDI_STATUS_SUCCESS == wdiCfgSTAParams.wdiStatus )
19008 {
19009 if ( WDI_ADD_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
19010 {
19011 /* ADD STA to table */
Jeff Johnsone7245742012-09-05 17:12:55 -070019012 wdiAddSTAParam.ucSTAIdx = halConfigStaRsp.configStaRspParams.staIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070019013 wdiAddSTAParam.dpuSig = halConfigStaRsp.configStaRspParams.ucUcastSig;
19014 wdiAddSTAParam.dpuIndex = halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019015
Jeff Johnson295189b2012-06-20 16:38:30 -070019016 /*This info can be retrieved from the cached initial request*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019017 wdiAddSTAParam.ucWmmEnabled =
Jeff Johnson295189b2012-06-20 16:38:30 -070019018 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucWMMEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070019019 wdiAddSTAParam.ucHTCapable =
19020 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucHTCapable;
19021 wdiAddSTAParam.ucStaType =
19022 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiSTAType;
Chet Lanctot4b9abd72013-06-27 11:14:56 -070019023 wdiAddSTAParam.ucRmfEnabled =
19024 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.ucRMFEnabled;
Jeff Johnsone7245742012-09-05 17:12:55 -070019025
Jeff Johnson295189b2012-06-20 16:38:30 -070019026 /* MAC Address of STA */
Jeff Johnsone7245742012-09-05 17:12:55 -070019027 wpalMemoryCopy(wdiAddSTAParam.staMacAddr,
19028 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019029 WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070019030
19031 wpalMemoryCopy(wdiAddSTAParam.macBSSID,
19032 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID ,
19033 WDI_MAC_ADDR_LEN);
19034
19035 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19036 pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.macBSSID,
19037 &pBSSSes);
Jeff Johnson295189b2012-06-20 16:38:30 -070019038
19039 if ( NULL == pBSSSes )
19040 {
19041 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19042 "Association for this BSSID is not in place");
Jeff Johnsone7245742012-09-05 17:12:55 -070019043
Jeff Johnson295189b2012-06-20 16:38:30 -070019044 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019045 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070019046 }
19047
19048 /*Add BSS specific parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019049 wdiAddSTAParam.bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019050 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019051 wdiAddSTAParam.bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019052 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019053 wdiAddSTAParam.bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019054 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019055 wdiAddSTAParam.bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019056 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnson295189b2012-06-20 16:38:30 -070019057 wdiAddSTAParam.ucBSSIdx = ucCurrentBSSSesIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019058
Jeff Johnson295189b2012-06-20 16:38:30 -070019059 WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
19060 }
19061 if( WDI_UPDATE_STA == pWDICtx->wdiCachedConfigStaReq.wdiReqInfo.wdiAction )
19062 {
19063 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
19064
Jeff Johnsone7245742012-09-05 17:12:55 -070019065 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019066 halConfigStaRsp.configStaRspParams.bcastDpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019067 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019068 halConfigStaRsp.configStaRspParams.ucBcastSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019069 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019070 halConfigStaRsp.configStaRspParams.bcastMgmtDpuIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019071 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bcastMgmtDpuSignature =
Jeff Johnson295189b2012-06-20 16:38:30 -070019072 halConfigStaRsp.configStaRspParams.ucMgmtSig;
Jeff Johnsone7245742012-09-05 17:12:55 -070019073 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].bssIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070019074 halConfigStaRsp.configStaRspParams.bssIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070019075 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuIndex =
Jeff Johnson295189b2012-06-20 16:38:30 -070019076 halConfigStaRsp.configStaRspParams.dpuIndex;
Jeff Johnsone7245742012-09-05 17:12:55 -070019077 pSTATable[halConfigStaRsp.configStaRspParams.staIdx].dpuSig =
Jeff Johnson295189b2012-06-20 16:38:30 -070019078 halConfigStaRsp.configStaRspParams.ucUcastSig;
19079 }
19080 }
19081
19082 /*Notify UMAC*/
19083 wdiConfigSTARspCb( &wdiCfgSTAParams, pWDICtx->pRspCBUserData);
19084
Jeff Johnsone7245742012-09-05 17:12:55 -070019085 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019086}/*WDI_ProcessConfigStaRsp*/
19087
19088
19089/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019090 @brief Process Set Link State Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070019091 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019092
19093 @param pWDICtx: pointer to the WLAN DAL context
19094 pEventData: pointer to the event information structure
19095
Jeff Johnson295189b2012-06-20 16:38:30 -070019096 @see
19097 @return Result of the function call
19098*/
19099WDI_Status
19100WDI_ProcessSetLinkStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019101(
Jeff Johnson295189b2012-06-20 16:38:30 -070019102 WDI_ControlBlockType* pWDICtx,
19103 WDI_EventInfoType* pEventData
19104)
19105{
19106 WDI_Status wdiStatus;
19107 eHalStatus halStatus;
19108 WDI_SetLinkStateRspCb wdiSetLinkStateRspCb;
19109
19110 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070019111 wpt_uint8 ucCurrentBSSSesIdx = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070019112 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19113
19114 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019115 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019116 -------------------------------------------------------------------------*/
19117 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19118 ( NULL == pEventData->pEventData))
19119 {
19120 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019121 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019122 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019123 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019124 }
19125
19126 wdiSetLinkStateRspCb = (WDI_SetLinkStateRspCb)pWDICtx->pfncRspCB;
19127
19128 wpalMutexAcquire(&pWDICtx->wptMutex);
19129
19130 /*If the link is being transitioned to idle - the BSS is to be deleted
19131 - this type of ending a session is possible when UMAC has failed an
19132 - association session during Join*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019133 if ( WDI_LINK_IDLE_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019134 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19135 {
19136 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019137 Find the BSS for which the request is made
Jeff Johnson295189b2012-06-20 16:38:30 -070019138 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019139 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
19140 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.macBSSID,
19141 &pBSSSes);
19142
Jeff Johnson295189b2012-06-20 16:38:30 -070019143 /*-----------------------------------------------------------------------
19144 Del BSS response can only be received for an existing assoc that
Jeff Johnsone7245742012-09-05 17:12:55 -070019145 is current and in progress
Jeff Johnson295189b2012-06-20 16:38:30 -070019146 -----------------------------------------------------------------------*/
19147 if ( NULL == pBSSSes )
19148 {
19149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
19150 "Set link response received outside association session");
19151 }
19152 else
19153 {
19154 /* For BT AMP roles no need to delete the sessions if assoc fails. There
19155 will be del BSS coming after this to stop the beaconing & cleaning up the
19156 sessions*/
19157 if(( WDI_BTAMP_STA_MODE != pBSSSes->wdiBssType )&&
19158 ( WDI_BTAMP_AP_MODE != pBSSSes->wdiBssType ))
19159 {
19160 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019161 The current session will be deleted
Jeff Johnson295189b2012-06-20 16:38:30 -070019162 -----------------------------------------------------------------------*/
19163 WDI_DeleteSession(pWDICtx, pBSSSes);
19164
19165 /*-----------------------------------------------------------------------
19166 Check to see if this association is in progress - if so disable the
19167 flag as this has ended
19168 -----------------------------------------------------------------------*/
19169 if ( ucCurrentBSSSesIdx == pWDICtx->ucCurrentBSSSesIdx )
Jeff Johnsone7245742012-09-05 17:12:55 -070019170 {
Jeff Johnson295189b2012-06-20 16:38:30 -070019171 /*Association no longer in progress */
19172 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19173 /*Association no longer in progress - prepare pending assoc for processing*/
19174 WDI_DequeueAssocRequest(pWDICtx);
19175 }
19176 }
19177 }
19178 }
19179 /* If the link state has been set to POST ASSOC, reset the "association in
19180 progress" flag */
Jeff Johnsone7245742012-09-05 17:12:55 -070019181 if ( WDI_LINK_POSTASSOC_STATE ==
Jeff Johnson295189b2012-06-20 16:38:30 -070019182 pWDICtx->wdiCacheSetLinkStReq.wdiLinkInfo.wdiLinkState )
19183 {
19184 pWDICtx->bAssociationInProgress = eWLAN_PAL_FALSE;
19185 WDI_DequeueAssocRequest(pWDICtx);
19186 }
19187
19188 wpalMutexRelease(&pWDICtx->wptMutex);
19189
19190 /*-------------------------------------------------------------------------
19191 Extract response and send it to UMAC
19192 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019193 wpalMemoryCopy( &halStatus,
19194 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019195 sizeof(halStatus));
19196
Jeff Johnsone7245742012-09-05 17:12:55 -070019197 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019198
19199 /*Notify UMAC*/
19200 wdiSetLinkStateRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19201
Jeff Johnsone7245742012-09-05 17:12:55 -070019202 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019203}/*WDI_ProcessSetLinkStateRsp*/
19204
19205/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019206 @brief Process Get Stats Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019207 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019208
19209 @param pWDICtx: pointer to the WLAN DAL context
19210 pEventData: pointer to the event information structure
19211
Jeff Johnson295189b2012-06-20 16:38:30 -070019212 @see
19213 @return Result of the function call
19214*/
19215WDI_Status
19216WDI_ProcessGetStatsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019217(
Jeff Johnson295189b2012-06-20 16:38:30 -070019218 WDI_ControlBlockType* pWDICtx,
19219 WDI_EventInfoType* pEventData
19220)
19221{
19222 WDI_GetStatsRspParamsType *wdiGetStatsRsp;
19223 WDI_GetStatsRspCb wdiGetStatsRspCb;
19224 tHalStatsRspParams* pHalStatsRspParams;
Jeff Johnsone7245742012-09-05 17:12:55 -070019225
Jeff Johnson295189b2012-06-20 16:38:30 -070019226 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19227
19228 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019229 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019230 -------------------------------------------------------------------------*/
19231 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19232 ( NULL == pEventData->pEventData))
19233 {
19234 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019235 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019236 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019237 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019238 }
19239
19240 /*-------------------------------------------------------------------------
19241 Extract response and send it to UMAC
19242 -------------------------------------------------------------------------*/
19243 pHalStatsRspParams = (tHalStatsRspParams *)pEventData->pEventData;
19244
19245 /*allocate the stats response buffer */
19246 wdiGetStatsRsp = (WDI_GetStatsRspParamsType *)wpalMemoryAllocate(
19247 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams)
19248 + sizeof(WDI_GetStatsRspParamsType));
19249
19250 if(NULL == wdiGetStatsRsp)
19251 {
19252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019253 "Failed to allocate memory in Get Stats Response %p %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070019254 pWDICtx, pEventData, pEventData->pEventData);
19255 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019256 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019257 }
19258
19259 wdiGetStatsRspCb = (WDI_GetStatsRspCb)pWDICtx->pfncRspCB;
19260
19261 wpalMemoryZero(wdiGetStatsRsp, pHalStatsRspParams->msgLen);
19262 wdiGetStatsRsp->usMsgType = pHalStatsRspParams->msgType;
19263 wdiGetStatsRsp->usMsgLen = pHalStatsRspParams->msgLen;
19264 wdiGetStatsRsp->wdiStatus = WDI_HAL_2_WDI_STATUS(pHalStatsRspParams->status);
19265 wdiGetStatsRsp->ucSTAIdx = pHalStatsRspParams->staId;
19266 wdiGetStatsRsp->uStatsMask = pHalStatsRspParams->statsMask;
19267
19268 /* copy the stats from buffer at the end of the tHalStatsRspParams message */
19269 wpalMemoryCopy(wdiGetStatsRsp + 1,
19270 (wpt_uint8*)pEventData->pEventData + sizeof(tHalStatsRspParams),
19271 pHalStatsRspParams->msgLen - sizeof(tHalStatsRspParams));
19272
19273 /*Notify UMAC*/
19274 wdiGetStatsRspCb( wdiGetStatsRsp, pWDICtx->pRspCBUserData);
19275
19276 wpalMemoryFree(wdiGetStatsRsp);
19277
Jeff Johnsone7245742012-09-05 17:12:55 -070019278 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019279}/*WDI_ProcessGetStatsRsp*/
19280
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080019281#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080019282/**
19283 @brief Process Get Roam Rssi Rsp function (called when a response is
19284 being received over the bus from HAL)
19285
19286 @param pWDICtx: pointer to the WLAN DAL context
19287 pEventData: pointer to the event information structure
19288
19289 @see
19290 @return Result of the function call
19291*/
19292WDI_Status
19293WDI_ProcessGetRoamRssiRsp
19294(
19295 WDI_ControlBlockType* pWDICtx,
19296 WDI_EventInfoType* pEventData
19297)
19298{
19299 WDI_GetRoamRssiRspParamsType wdiGetRoamRssiRsp;
19300 WDI_GetRoamRssiRspCb wdiGetRoamRssiRspCb;
19301 tHalGetRoamRssiRspMsg halRoamRssiRspParams;
19302 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19303
19304 /*-------------------------------------------------------------------------
19305 Sanity check
19306 -------------------------------------------------------------------------*/
19307 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19308 ( NULL == pEventData->pEventData))
19309 {
19310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19311 "%s: Invalid parameters", __func__);
19312 WDI_ASSERT(0);
19313 return WDI_STATUS_E_FAILURE;
19314 }
19315
19316 wdiGetRoamRssiRspCb = (WDI_GetRoamRssiRspCb)pWDICtx->pfncRspCB;
19317 if(NULL == wdiGetRoamRssiRspCb)
19318 {
19319 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
19320 "%s: call back function is NULL", __func__);
19321 WDI_ASSERT(0);
19322 return WDI_STATUS_E_FAILURE;
19323 }
19324
19325 /*-------------------------------------------------------------------------
19326 Extract response and send it to UMAC
19327 -------------------------------------------------------------------------*/
19328 wpalMemoryCopy( &halRoamRssiRspParams.roamRssiRspParams,
19329 pEventData->pEventData,
19330 sizeof(halRoamRssiRspParams.roamRssiRspParams));
19331
19332 wdiGetRoamRssiRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRoamRssiRspParams.roamRssiRspParams.status);
19333 wdiGetRoamRssiRsp.ucSTAIdx = halRoamRssiRspParams.roamRssiRspParams.staId;
19334 wdiGetRoamRssiRsp.rssi = halRoamRssiRspParams.roamRssiRspParams.rssi;
19335
19336 /*Notify UMAC*/
19337 wdiGetRoamRssiRspCb( &wdiGetRoamRssiRsp, pWDICtx->pRspCBUserData);
19338
19339 return WDI_STATUS_SUCCESS;
19340}/*WDI_ProcessGetRoamRssiRsp*/
19341#endif
19342
Jeff Johnson295189b2012-06-20 16:38:30 -070019343
19344/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019345 @brief Process Update Cfg Rsp function (called when a response is
Jeff Johnson295189b2012-06-20 16:38:30 -070019346 being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019347
19348 @param pWDICtx: pointer to the WLAN DAL context
19349 pEventData: pointer to the event information structure
19350
Jeff Johnson295189b2012-06-20 16:38:30 -070019351 @see
19352 @return Result of the function call
19353*/
19354WDI_Status
19355WDI_ProcessUpdateCfgRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019356(
Jeff Johnson295189b2012-06-20 16:38:30 -070019357 WDI_ControlBlockType* pWDICtx,
19358 WDI_EventInfoType* pEventData
19359)
19360{
19361 WDI_Status wdiStatus;
19362 eHalStatus halStatus;
19363 WDI_UpdateCfgRspCb wdiUpdateCfgRspCb;
19364 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19365
19366 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019367 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019368 -------------------------------------------------------------------------*/
19369 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19370 ( NULL == pEventData->pEventData))
19371 {
19372 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019373 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019374 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019375 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019376 }
19377
19378 wdiUpdateCfgRspCb = (WDI_UpdateCfgRspCb)pWDICtx->pfncRspCB;
19379
19380 /*-------------------------------------------------------------------------
19381 Extract response and send it to UMAC
19382 -------------------------------------------------------------------------*/
19383 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070019384 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019385
19386 /*Notify UMAC*/
19387 wdiUpdateCfgRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19388
Jeff Johnsone7245742012-09-05 17:12:55 -070019389 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019390}/*WDI_ProcessUpdateCfgRsp*/
19391
19392
19393
19394/**
19395 @brief Process Add BA Rsp function (called when a response
19396 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019397
19398 @param pWDICtx: pointer to the WLAN DAL context
19399 pEventData: pointer to the event information structure
19400
Jeff Johnson295189b2012-06-20 16:38:30 -070019401 @see
19402 @return Result of the function call
19403*/
19404WDI_Status
19405WDI_ProcessAddBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019406(
Jeff Johnson295189b2012-06-20 16:38:30 -070019407 WDI_ControlBlockType* pWDICtx,
19408 WDI_EventInfoType* pEventData
19409)
19410{
19411 WDI_AddBARspCb wdiAddBARspCb;
19412
19413 tAddBARspParams halAddBARsp;
19414 WDI_AddBARspinfoType wdiAddBARsp;
19415
19416 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19417
19418 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019419 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019420 -------------------------------------------------------------------------*/
19421 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19422 ( NULL == pEventData->pEventData))
19423 {
19424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019425 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019426 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019427 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019428 }
19429
19430 wdiAddBARspCb = (WDI_AddBARspCb)pWDICtx->pfncRspCB;
19431
19432 /*-------------------------------------------------------------------------
19433 Extract response and send it to UMAC
19434 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019435 wpalMemoryCopy( &halAddBARsp,
19436 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019437 sizeof(halAddBARsp));
19438
19439 wdiAddBARsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halAddBARsp.status);
19440
Jeff Johnson43971f52012-07-17 12:26:56 -070019441 if ( WDI_STATUS_SUCCESS == wdiAddBARsp.wdiStatus )
Jeff Johnson295189b2012-06-20 16:38:30 -070019442 {
19443 wdiAddBARsp.ucBaDialogToken = halAddBARsp.baDialogToken;
19444 }
19445
19446 /*Notify UMAC*/
19447 wdiAddBARspCb( &wdiAddBARsp, pWDICtx->pRspCBUserData);
19448
Jeff Johnsone7245742012-09-05 17:12:55 -070019449 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019450}/*WDI_ProcessAddSessionBARsp*/
19451
19452/**
19453 @brief Process Add BA Rsp function (called when a response
19454 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019455
19456 @param pWDICtx: pointer to the WLAN DAL context
19457 pEventData: pointer to the event information structure
19458
Jeff Johnson295189b2012-06-20 16:38:30 -070019459 @see
19460 @return Result of the function call
19461*/
19462WDI_Status
19463WDI_ProcessTriggerBARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019464(
Jeff Johnson295189b2012-06-20 16:38:30 -070019465 WDI_ControlBlockType* pWDICtx,
19466 WDI_EventInfoType* pEventData
19467)
19468{
19469 WDI_TriggerBARspCb wdiTriggerBARspCb;
19470
19471 tTriggerBARspParams* halTriggerBARsp;
19472 tTriggerBaRspCandidate* halBaCandidate;
19473 WDI_TriggerBARspParamsType* wdiTriggerBARsp;
19474 WDI_TriggerBARspCandidateType* wdiTriggerBARspCandidate;
19475 wpt_uint16 index;
19476 wpt_uint16 TidIndex;
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019477 WDI_Status halTriggerBARspStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070019478 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19479
19480 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019481 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019482 -------------------------------------------------------------------------*/
19483 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19484 ( NULL == pEventData->pEventData))
19485 {
19486 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019487 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019488 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019489 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019490 }
19491
19492 wdiTriggerBARspCb = (WDI_TriggerBARspCb)pWDICtx->pfncRspCB;
19493
19494 /*-------------------------------------------------------------------------
19495 Extract response and send it to UMAC
19496 -------------------------------------------------------------------------*/
19497 halTriggerBARsp = (tTriggerBARspParams *)pEventData->pEventData;
19498
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019499 halTriggerBARspStatus = WDI_HAL_2_WDI_STATUS(halTriggerBARsp->status);
19500
19501 if ( WDI_STATUS_SUCCESS == halTriggerBARspStatus)
19502 {
19503 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType) +
Jeff Johnsone7245742012-09-05 17:12:55 -070019504 halTriggerBARsp->baCandidateCnt *
Jeff Johnson295189b2012-06-20 16:38:30 -070019505 sizeof(WDI_TriggerBARspCandidateType));
Jeff Johnson295189b2012-06-20 16:38:30 -070019506
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019507 if(NULL == wdiTriggerBARsp)
19508 {
19509 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019510 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019511 pWDICtx, pEventData, pEventData->pEventData);
19512 WDI_ASSERT(0);
19513 return WDI_STATUS_E_FAILURE;
19514 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019515
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019516 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19517
Jeff Johnson295189b2012-06-20 16:38:30 -070019518 wdiTriggerBARsp->usBaCandidateCnt = halTriggerBARsp->baCandidateCnt;
Jeff Johnsone7245742012-09-05 17:12:55 -070019519 wpalMemoryCopy(wdiTriggerBARsp->macBSSID,
Jeff Johnson295189b2012-06-20 16:38:30 -070019520 halTriggerBARsp->bssId , WDI_MAC_ADDR_LEN);
19521
19522 wdiTriggerBARspCandidate = (WDI_TriggerBARspCandidateType*)(wdiTriggerBARsp + 1);
19523 halBaCandidate = (tTriggerBaRspCandidate*)(halTriggerBARsp + 1);
19524
19525 for(index = 0; index < wdiTriggerBARsp->usBaCandidateCnt; index++)
19526 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019527 wpalMemoryCopy(wdiTriggerBARspCandidate->macSTA,
Jeff Johnson295189b2012-06-20 16:38:30 -070019528 halBaCandidate->staAddr, WDI_MAC_ADDR_LEN);
19529 for(TidIndex = 0; TidIndex < STA_MAX_TC; TidIndex++)
19530 {
Jeff Johnsone7245742012-09-05 17:12:55 -070019531 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].fBaEnable =
Jeff Johnson295189b2012-06-20 16:38:30 -070019532 halBaCandidate->baInfo[TidIndex].fBaEnable;
Jeff Johnsone7245742012-09-05 17:12:55 -070019533 wdiTriggerBARspCandidate->wdiBAInfo[TidIndex].startingSeqNum =
Jeff Johnson295189b2012-06-20 16:38:30 -070019534 halBaCandidate->baInfo[TidIndex].startingSeqNum;
19535 }
19536 wdiTriggerBARspCandidate++;
19537 halBaCandidate++;
19538 }
19539 }
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019540 else
19541 {
19542 wdiTriggerBARsp = wpalMemoryAllocate(sizeof(WDI_TriggerBARspParamsType));
19543
19544 if(NULL == wdiTriggerBARsp)
19545 {
19546 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080019547 "Failed to allocate memory in Trigger BA Response %p %p %p ",
Tushnim Bhattacharyyaf64c5dc2013-03-21 15:11:31 -070019548 pWDICtx, pEventData, pEventData->pEventData);
19549 WDI_ASSERT(0);
19550 return WDI_STATUS_E_FAILURE;
19551 }
19552
19553 wdiTriggerBARsp->wdiStatus = halTriggerBARspStatus;
19554
19555 }
Jeff Johnson295189b2012-06-20 16:38:30 -070019556
19557 /*Notify UMAC*/
19558 wdiTriggerBARspCb( wdiTriggerBARsp, pWDICtx->pRspCBUserData);
19559
19560 wpalMemoryFree(wdiTriggerBARsp);
Jeff Johnsone7245742012-09-05 17:12:55 -070019561 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019562}/*WDI_ProcessAddSessionBARsp*/
19563
19564/**
19565 @brief Process Update Beacon Params Rsp function (called when a response
19566 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019567
19568 @param pWDICtx: pointer to the WLAN DAL context
19569 pEventData: pointer to the event information structure
19570
Jeff Johnson295189b2012-06-20 16:38:30 -070019571 @see
19572 @return Result of the function call
19573*/
19574WDI_Status
19575WDI_ProcessUpdateBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019576(
Jeff Johnson295189b2012-06-20 16:38:30 -070019577 WDI_ControlBlockType* pWDICtx,
19578 WDI_EventInfoType* pEventData
19579)
19580{
19581 WDI_Status wdiStatus;
19582 eHalStatus halStatus;
19583 WDI_UpdateBeaconParamsRspCb wdiUpdateBeaconParamsRspCb;
19584 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19585
19586 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019587 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019588 -------------------------------------------------------------------------*/
19589 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19590 ( NULL == pEventData->pEventData))
19591 {
19592 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019593 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019594 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019595 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019596 }
19597
19598 wdiUpdateBeaconParamsRspCb = (WDI_UpdateBeaconParamsRspCb)pWDICtx->pfncRspCB;
19599
19600 /*-------------------------------------------------------------------------
19601 Extract response and send it to UMAC
19602 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019603 wpalMemoryCopy( &halStatus,
19604 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019605 sizeof(halStatus));
19606
Jeff Johnsone7245742012-09-05 17:12:55 -070019607 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019608
19609 /*Notify UMAC*/
19610 wdiUpdateBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19611
Jeff Johnsone7245742012-09-05 17:12:55 -070019612 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019613}/*WDI_ProcessUpdateBeaconParamsRsp*/
19614
19615/**
19616 @brief Process Send Beacon template Rsp function (called when a response
19617 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019618
19619 @param pWDICtx: pointer to the WLAN DAL context
19620 pEventData: pointer to the event information structure
19621
Jeff Johnson295189b2012-06-20 16:38:30 -070019622 @see
19623 @return Result of the function call
19624*/
19625WDI_Status
19626WDI_ProcessSendBeaconParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019627(
Jeff Johnson295189b2012-06-20 16:38:30 -070019628 WDI_ControlBlockType* pWDICtx,
19629 WDI_EventInfoType* pEventData
19630)
19631{
19632 WDI_Status wdiStatus;
19633 eHalStatus halStatus;
19634 WDI_SendBeaconParamsRspCb wdiSendBeaconParamsRspCb;
19635 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19636
19637 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019638 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019639 -------------------------------------------------------------------------*/
19640 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19641 ( NULL == pEventData->pEventData))
19642 {
19643 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019644 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019645 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019646 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019647 }
19648
19649 wdiSendBeaconParamsRspCb = (WDI_SendBeaconParamsRspCb)pWDICtx->pfncRspCB;
19650
19651 /*-------------------------------------------------------------------------
19652 Extract response and send it to UMAC
19653 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019654 wpalMemoryCopy( &halStatus,
19655 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019656 sizeof(halStatus));
19657
Jeff Johnsone7245742012-09-05 17:12:55 -070019658 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019659
19660 /*Notify UMAC*/
19661 wdiSendBeaconParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19662
Jeff Johnsone7245742012-09-05 17:12:55 -070019663 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019664}/*WDI_ProcessSendBeaconParamsRsp*/
19665
Jeff Johnsone7245742012-09-05 17:12:55 -070019666
Jeff Johnson295189b2012-06-20 16:38:30 -070019667/**
Jeff Johnsone7245742012-09-05 17:12:55 -070019668 @brief Process Update Probe Resp Template Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070019669 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019670
19671 @param pWDICtx: pointer to the WLAN DAL context
19672 pEventData: pointer to the event information structure
19673
Jeff Johnson295189b2012-06-20 16:38:30 -070019674 @see
19675 @return Result of the function call
19676*/
19677WDI_Status
19678WDI_ProcessUpdateProbeRspTemplateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019679(
Jeff Johnson295189b2012-06-20 16:38:30 -070019680 WDI_ControlBlockType* pWDICtx,
19681 WDI_EventInfoType* pEventData
19682)
19683{
19684 WDI_Status wdiStatus;
19685 eHalStatus halStatus;
19686 WDI_UpdateProbeRspTemplateRspCb wdiUpdProbeRspTemplRspCb;
19687 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19688
19689 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019690 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019691 -------------------------------------------------------------------------*/
19692 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19693 ( NULL == pEventData->pEventData))
19694 {
19695 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019696 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019697 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019698 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019699 }
19700
19701 wdiUpdProbeRspTemplRspCb = (WDI_UpdateProbeRspTemplateRspCb)pWDICtx->pfncRspCB;
19702
19703 /*-------------------------------------------------------------------------
19704 Extract response and send it to UMAC
19705 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019706 wpalMemoryCopy( &halStatus,
19707 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070019708 sizeof(halStatus));
19709
Jeff Johnsone7245742012-09-05 17:12:55 -070019710 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070019711
19712 /*Notify UMAC*/
19713 wdiUpdProbeRspTemplRspCb( wdiStatus, pWDICtx->pRspCBUserData);
19714
Jeff Johnsone7245742012-09-05 17:12:55 -070019715 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019716}/*WDI_ProcessUpdateProbeRspTemplateRsp*/
19717
19718 /**
19719 @brief Process Set Max Tx Power Rsp function (called when a response
19720 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070019721
19722 @param pWDICtx: pointer to the WLAN DAL context
19723 pEventData: pointer to the event information structure
19724
Jeff Johnson295189b2012-06-20 16:38:30 -070019725 @see
19726 @return Result of the function call
19727*/
19728WDI_Status
19729WDI_ProcessSetMaxTxPowerRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070019730(
Jeff Johnson295189b2012-06-20 16:38:30 -070019731 WDI_ControlBlockType* pWDICtx,
19732 WDI_EventInfoType* pEventData
19733)
19734{
19735 tSetMaxTxPwrRspMsg halTxpowerrsp;
Jeff Johnsone7245742012-09-05 17:12:55 -070019736
Jeff Johnson295189b2012-06-20 16:38:30 -070019737 WDI_SetMaxTxPowerRspMsg wdiSetMaxTxPowerRspMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070019738
Jeff Johnson295189b2012-06-20 16:38:30 -070019739 WDA_SetMaxTxPowerRspCb wdiReqStatusCb;
19740 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19741
19742 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070019743 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070019744 -------------------------------------------------------------------------*/
19745 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19746 ( NULL == pEventData->pEventData))
19747 {
19748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070019749 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070019750 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070019751 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019752 }
19753
19754 wdiReqStatusCb = (WDA_SetMaxTxPowerRspCb)pWDICtx->pfncRspCB;
19755
19756 /*-------------------------------------------------------------------------
19757 Extract response and send it to UMAC
19758 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070019759 wpalMemoryCopy( &halTxpowerrsp.setMaxTxPwrRspParams,
19760 pEventData->pEventData,
19761 sizeof(halTxpowerrsp.setMaxTxPwrRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070019762
19763 if ( eHAL_STATUS_SUCCESS != halTxpowerrsp.setMaxTxPwrRspParams.status )
19764 {
19765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19766 "Error status returned in Set Max Tx Power Response ");
Jeff Johnsone7245742012-09-05 17:12:55 -070019767 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070019768 }
19769
Jeff Johnsone7245742012-09-05 17:12:55 -070019770 wdiSetMaxTxPowerRspMsg.wdiStatus =
Jeff Johnson295189b2012-06-20 16:38:30 -070019771 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setMaxTxPwrRspParams.status);
Jeff Johnsone7245742012-09-05 17:12:55 -070019772 wdiSetMaxTxPowerRspMsg.ucPower = halTxpowerrsp.setMaxTxPwrRspParams.power;
Jeff Johnson295189b2012-06-20 16:38:30 -070019773
19774 /*Notify UMAC*/
19775 wdiReqStatusCb( &wdiSetMaxTxPowerRspMsg, pWDICtx->pRspCBUserData);
19776
Jeff Johnsone7245742012-09-05 17:12:55 -070019777 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070019778}
19779
schang86c22c42013-03-13 18:41:24 -070019780 /**
19781 @brief Process Set Tx Power Rsp function (called when a response
19782 is being received over the bus from HAL)
19783
19784 @param pWDICtx: pointer to the WLAN DAL context
19785 pEventData: pointer to the event information structure
19786
19787 @see
19788 @return Result of the function call
19789*/
19790WDI_Status
19791WDI_ProcessSetTxPowerRsp
19792(
19793 WDI_ControlBlockType* pWDICtx,
19794 WDI_EventInfoType* pEventData
19795)
19796{
19797 tSetTxPwrRspMsg halTxpowerrsp;
19798 WDI_SetTxPowerRspMsg wdiSetTxPowerRspMsg;
19799 WDA_SetTxPowerRspCb wdiReqStatusCb;
19800 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19801
19802 /*-------------------------------------------------------------------------
19803 Sanity check
19804 -------------------------------------------------------------------------*/
19805 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19806 ( NULL == pEventData->pEventData))
19807 {
19808 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19809 "%s: Invalid parameters", __func__);
19810 WDI_ASSERT(0);
19811 return WDI_STATUS_E_FAILURE;
19812 }
19813
19814 wdiReqStatusCb = (WDA_SetTxPowerRspCb)pWDICtx->pfncRspCB;
19815
19816 /*-------------------------------------------------------------------------
19817 Extract response and send it to UMAC
19818 -------------------------------------------------------------------------*/
19819 wpalMemoryCopy(&halTxpowerrsp.setTxPwrRspParams,
19820 pEventData->pEventData,
19821 sizeof(halTxpowerrsp.setTxPwrRspParams));
19822
19823 if (eHAL_STATUS_SUCCESS != halTxpowerrsp.setTxPwrRspParams.status)
19824 {
19825 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19826 "Error status returned in Set Tx Power Response ");
19827 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
19828 return WDI_STATUS_E_FAILURE;
19829 }
19830
19831 wdiSetTxPowerRspMsg.wdiStatus =
19832 WDI_HAL_2_WDI_STATUS(halTxpowerrsp.setTxPwrRspParams.status);
19833
19834 /*Notify UMAC*/
19835 wdiReqStatusCb(&wdiSetTxPowerRspMsg, pWDICtx->pRspCBUserData);
19836
19837 return WDI_STATUS_SUCCESS;
19838}
Arif Hussain935a8fb2014-01-31 12:12:28 -080019839
19840/**
19841 @brief Process Set Max Tx Power Per Band Rsp function (called when a response
19842 is being received over the bus from HAL)
19843
19844 @param pWDICtx: pointer to the WLAN DAL context
19845 pEventData: pointer to the event information structure
19846
19847 @see
19848 @return Result of the function call
19849*/
19850WDI_Status
19851WDI_ProcessSetMaxTxPowerPerBandRsp
19852(
19853 WDI_ControlBlockType* pWDICtx,
19854 WDI_EventInfoType* pEventData
19855)
19856{
19857 tSetMaxTxPwrPerBandRspMsg halMaxTxPowerPerBandRsp;
19858 WDI_SetMaxTxPowerPerBandRspMsg wdiSetTxPowerPerBandRspMsg;
19859 WDA_SetMaxTxPowerPerBandRspCb wdiReqStatusCb;
19860 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19861
19862 /*-------------------------------------------------------------------------
19863 Sanity check
19864 -------------------------------------------------------------------------*/
19865 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19866 ( NULL == pEventData->pEventData))
19867 {
19868 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19869 "%s: Invalid parameters", __func__);
19870 WDI_ASSERT(0);
19871 return WDI_STATUS_E_FAILURE;
19872 }
19873
19874 wdiReqStatusCb = (WDA_SetMaxTxPowerPerBandRspCb)pWDICtx->pfncRspCB;
19875
19876 /*-------------------------------------------------------------------------
19877 Extract response and send it to UMAC
19878 -------------------------------------------------------------------------*/
19879 wpalMemoryCopy(&halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams,
19880 pEventData->pEventData,
19881 sizeof(halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams));
19882
19883 if (eHAL_STATUS_SUCCESS !=
19884 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status)
19885 {
19886 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
19887 "Error status returned in Set Max Tx Power Per Band Response");
19888 return WDI_STATUS_E_FAILURE;
19889 }
19890
19891 wdiSetTxPowerPerBandRspMsg.wdiStatus =
19892 WDI_HAL_2_WDI_STATUS(
19893 halMaxTxPowerPerBandRsp.setMaxTxPwrPerBandRspParams.status);
19894
19895 /* Notify UMAC */
19896 wdiReqStatusCb(&wdiSetTxPowerPerBandRspMsg, pWDICtx->pRspCBUserData);
19897
19898 return WDI_STATUS_SUCCESS;
19899}
19900
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019901#ifdef FEATURE_WLAN_TDLS
19902/**
19903 @brief Process TDLS Link Establish Rsp function (called
19904 when a response is being received over the bus from HAL)
19905
19906 @param pWDICtx: pointer to the WLAN DAL context
19907 pEventData: pointer to the event information structure
19908
19909 @see
19910 @return Result of the function call
19911*/
19912WDI_Status
19913WDI_ProcessLinkEstablishReqRsp
19914(
19915 WDI_ControlBlockType* pWDICtx,
19916 WDI_EventInfoType* pEventData
19917)
19918{
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019919 eHalStatus halStatus;
19920 WDI_SetTDLSLinkEstablishReqParamsRspCb wdiTDLSLinkEstablishReqParamsRspCb;
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019921 tTDLSLinkEstablishedRespMsg halTdlsLinkEstablishedRespMsg;
19922 WDI_SetTdlsLinkEstablishReqResp wdiSetTdlsLinkEstablishReqResp;
19923
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019924 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19925
19926 /*-------------------------------------------------------------------------
19927 Sanity check
19928 -------------------------------------------------------------------------*/
19929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19930 ( NULL == pEventData->pEventData))
19931 {
19932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19933 "%s: Invalid parameters", __func__);
19934 WDI_ASSERT(0);
19935 return WDI_STATUS_E_FAILURE;
19936 }
19937
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019938 /*-------------------------------------------------------------------------
19939 Extract indication and send it to UMAC
19940 -------------------------------------------------------------------------*/
19941 wpalMemoryCopy( &halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams,
19942 pEventData->pEventData,
19943 sizeof(halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams) );
19944
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019945 wdiTDLSLinkEstablishReqParamsRspCb = (WDI_SetTDLSLinkEstablishReqParamsRspCb)pWDICtx->pfncRspCB;
19946
19947 /*-------------------------------------------------------------------------
19948 Extract response and send it to UMAC
19949 -------------------------------------------------------------------------*/
19950 wpalMemoryCopy( &halStatus,
19951 pEventData->pEventData,
19952 sizeof(halStatus));
19953
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019954 wdiSetTdlsLinkEstablishReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
19955 wdiSetTdlsLinkEstablishReqResp.uStaIdx = halTdlsLinkEstablishedRespMsg.TDLSLinkEstablishedRespParams.staIdx;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019956
19957 /*Notify UMAC*/
Gopichand Nakkala574f6d12013-06-27 19:38:43 +053019958 wdiTDLSLinkEstablishReqParamsRspCb( &wdiSetTdlsLinkEstablishReqResp, pWDICtx->pRspCBUserData);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053019959
19960 return WDI_STATUS_SUCCESS;
19961}/*WDI_ProcessLinkEstablishReqRsp*/
Atul Mittalc0f739f2014-07-31 13:47:47 +053019962
19963
19964
19965/**
19966 @brief Process TDLS Chan switch Rsp function (called
19967 when a response is being received over the bus from HAL)
19968
19969 @param pWDICtx: pointer to the WLAN DAL context
19970 pEventData: pointer to the event information structure
19971
19972 @see
19973 @return Result of the function call
19974*/
19975WDI_Status
19976WDI_ProcessChanSwitchReqRsp
19977(
19978 WDI_ControlBlockType* pWDICtx,
19979 WDI_EventInfoType* pEventData
19980)
19981{
19982 eHalStatus halStatus;
19983 WDI_SetTDLSChanSwitchReqParamsRspCb wdiTDLSChanSwitchReqParamsRspCb;
19984 tTDLSChanSwitchRespMsg halTdlsChanSwitchRespMsg;
19985 WDI_SetTdlsChanSwitchReqResp wdiSetTdlsChanSwitchReqResp;
19986
19987 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
19988
19989 /*-------------------------------------------------------------------------
19990 Sanity check
19991 -------------------------------------------------------------------------*/
19992 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
19993 ( NULL == pEventData->pEventData))
19994 {
19995 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
19996 "%s: Invalid parameters", __func__);
19997 WDI_ASSERT(0);
19998 return WDI_STATUS_E_FAILURE;
19999 }
20000
20001 /*-------------------------------------------------------------------------
20002 Extract indication and send it to UMAC
20003 -------------------------------------------------------------------------*/
20004 wpalMemoryCopy( &halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams,
20005 pEventData->pEventData,
20006 sizeof(halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams) );
20007
20008 wdiTDLSChanSwitchReqParamsRspCb = (WDI_SetTDLSChanSwitchReqParamsRspCb)pWDICtx->pfncRspCB;
20009
20010 /*-------------------------------------------------------------------------
20011 Extract response and send it to UMAC
20012 -------------------------------------------------------------------------*/
20013 wpalMemoryCopy( &halStatus,
20014 pEventData->pEventData,
20015 sizeof(halStatus));
20016
20017 wdiSetTdlsChanSwitchReqResp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20018 wdiSetTdlsChanSwitchReqResp.uStaIdx = halTdlsChanSwitchRespMsg.tdlsChanSwitchRespParams.staIdx;
20019
20020 /*Notify UMAC*/
20021 wdiTDLSChanSwitchReqParamsRspCb( &wdiSetTdlsChanSwitchReqResp, pWDICtx->pRspCBUserData );
20022
20023 return WDI_STATUS_SUCCESS;
20024}/*WDI_ProcessChanSwitchReqRsp*/
20025
20026
20027
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053020028#endif
schang86c22c42013-03-13 18:41:24 -070020029
Jeff Johnson295189b2012-06-20 16:38:30 -070020030/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020031 @brief Process P2P Group Owner Notice Of Absense Rsp function (called
Jeff Johnson295189b2012-06-20 16:38:30 -070020032 when a response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020033
20034 @param pWDICtx: pointer to the WLAN DAL context
20035 pEventData: pointer to the event information structure
20036
Jeff Johnson295189b2012-06-20 16:38:30 -070020037 @see
20038 @return Result of the function call
20039*/
20040WDI_Status
20041WDI_ProcessP2PGONOARsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020042(
Jeff Johnson295189b2012-06-20 16:38:30 -070020043 WDI_ControlBlockType* pWDICtx,
20044 WDI_EventInfoType* pEventData
20045)
20046{
20047 WDI_Status wdiStatus;
20048 eHalStatus halStatus;
20049 WDI_SetP2PGONOAReqParamsRspCb wdiP2PGONOAReqParamsRspCb;
20050 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20051
20052 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020053 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020054 -------------------------------------------------------------------------*/
20055 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20056 ( NULL == pEventData->pEventData))
20057 {
20058 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020059 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020060 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020061 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020062 }
20063
20064 wdiP2PGONOAReqParamsRspCb = (WDI_SetP2PGONOAReqParamsRspCb)pWDICtx->pfncRspCB;
20065
20066 /*-------------------------------------------------------------------------
20067 Extract response and send it to UMAC
20068 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070020069 wpalMemoryCopy( &halStatus,
20070 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070020071 sizeof(halStatus));
20072
Jeff Johnsone7245742012-09-05 17:12:55 -070020073 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020074
20075 /*Notify UMAC*/
20076 wdiP2PGONOAReqParamsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20077
Jeff Johnsone7245742012-09-05 17:12:55 -070020078 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020079}/*WDI_ProcessP2PGONOARsp*/
Jeff Johnson295189b2012-06-20 16:38:30 -070020080/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020081 @brief Process Enter IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020082 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020083
20084 @param pWDICtx: pointer to the WLAN DAL context
20085 pEventData: pointer to the event information structure
20086
Jeff Johnson295189b2012-06-20 16:38:30 -070020087 @see
20088 @return Result of the function call
20089*/
20090WDI_Status
20091WDI_ProcessEnterImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020092(
Jeff Johnson295189b2012-06-20 16:38:30 -070020093 WDI_ControlBlockType* pWDICtx,
20094 WDI_EventInfoType* pEventData
20095)
20096{
20097 WDI_Status wdiStatus;
20098 eHalStatus halStatus;
20099 WDI_EnterImpsRspCb wdiEnterImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020100 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020101 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20102
20103 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020104 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020105 -------------------------------------------------------------------------*/
20106 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20107 ( NULL == pEventData->pEventData))
20108 {
20109 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020112 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020113 }
20114
20115 wdiEnterImpsRspCb = (WDI_EnterImpsRspCb)pWDICtx->pfncRspCB;
20116
20117 /*-------------------------------------------------------------------------
20118 Extract response and send it to UMAC
20119 -------------------------------------------------------------------------*/
20120 halStatus = *((eHalStatus*)pEventData->pEventData);
20121
Jeff Johnsone7245742012-09-05 17:12:55 -070020122 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020123
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020124 /* If IMPS req failed, riva is not power collapsed Put the DXE in FULL state.
20125 * Other module states are taken care by PMC.
20126 * TODO: How do we take care of the case where IMPS is success, but riva power collapse fails??
20127 */
20128 if (wdiStatus != WDI_STATUS_SUCCESS) {
20129
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
20131 "WDI Process Enter IMPS RSP failed With HAL Status Code: %d",
20132 halStatus);
20133 /* Call Back is not required as we are putting the DXE in FULL
20134 * and riva is already in full (IMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020135 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20136
20137 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus ) {
20138 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020139 "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 -080020140 WDI_ASSERT(0);
20141 }
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020142 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020143 /*Notify UMAC*/
20144 wdiEnterImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20145
Jeff Johnsone7245742012-09-05 17:12:55 -070020146 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020147}/*WDI_ProcessEnterImpsRsp*/
20148
20149/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020150 @brief Process Exit IMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020151 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020152
20153 @param pWDICtx: pointer to the WLAN DAL context
20154 pEventData: pointer to the event information structure
20155
Jeff Johnson295189b2012-06-20 16:38:30 -070020156 @see
20157 @return Result of the function call
20158*/
20159WDI_Status
20160WDI_ProcessExitImpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020161(
Jeff Johnson295189b2012-06-20 16:38:30 -070020162 WDI_ControlBlockType* pWDICtx,
20163 WDI_EventInfoType* pEventData
20164)
20165{
20166 WDI_Status wdiStatus;
20167 eHalStatus halStatus;
20168 WDI_ExitImpsRspCb wdiExitImpsRspCb;
Ravali85acf6b2012-12-12 14:01:38 -080020169 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020170 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20171
20172 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020173 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020174 -------------------------------------------------------------------------*/
20175 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20176 ( NULL == pEventData->pEventData))
20177 {
20178 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020179 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020180 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020181 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020182 }
20183
20184 wdiExitImpsRspCb = (WDI_ExitImpsRspCb)pWDICtx->pfncRspCB;
20185
20186 /*-------------------------------------------------------------------------
20187 Extract response and send it to UMAC
20188 -------------------------------------------------------------------------*/
20189 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020190 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020191
Gopichand Nakkalac6c91902013-05-29 18:53:35 +053020192 if (halStatus != eHAL_STATUS_SUCCESS)
20193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
20194 "%s: Exit IMPS response is a failure with halStatus %d", __func__, halStatus);
20195
Jeff Johnson295189b2012-06-20 16:38:30 -070020196 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020197 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20198 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20199 {
20200 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020201 "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 -080020202 WDI_ASSERT(0);
20203 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020204 /*Notify UMAC*/
20205 wdiExitImpsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
20206
Jeff Johnsone7245742012-09-05 17:12:55 -070020207 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020208}/*WDI_ProcessExitImpsRsp*/
20209
20210/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020211 @brief Process Enter BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020212 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020213
20214 @param pWDICtx: pointer to the WLAN DAL context
20215 pEventData: pointer to the event information structure
20216
Jeff Johnson295189b2012-06-20 16:38:30 -070020217 @see
20218 @return Result of the function call
20219*/
20220WDI_Status
20221WDI_ProcessEnterBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020222(
Jeff Johnson295189b2012-06-20 16:38:30 -070020223 WDI_ControlBlockType* pWDICtx,
20224 WDI_EventInfoType* pEventData
20225)
20226{
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020227 eHalStatus halStatus = eHAL_STATUS_FAILURE;
20228 tHalEnterBmpsRspParams halEnterBmpsRsp;
20229 WDI_EnterBmpsRspCb wdiEnterBmpsRspCb;
20230 WDI_EnterBmpsRspParamsType wdiEnterBmpsRspparams;
Ravali85acf6b2012-12-12 14:01:38 -080020231 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020232 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20233
20234 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020235 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020236 -------------------------------------------------------------------------*/
20237 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20238 ( NULL == pEventData->pEventData))
20239 {
20240 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020241 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020242 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020243 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020244 }
20245
Jeff Johnson295189b2012-06-20 16:38:30 -070020246 /*-------------------------------------------------------------------------
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020247 Extract response and send it to UMAC
20248 -------------------------------------------------------------------------*/
20249 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20250 {
20251 wpalMemoryCopy( &halEnterBmpsRsp,
20252 pEventData->pEventData,
20253 sizeof(halEnterBmpsRsp));
20254
20255 //Used to print debug message
20256 halStatus = halEnterBmpsRsp.status;
20257 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterBmpsRsp.status);
20258 wdiEnterBmpsRspparams.bssIdx = halEnterBmpsRsp.bssIdx;
20259 }
20260 else
20261 {
20262 halStatus = *((eHalStatus*)pEventData->pEventData);
20263 wdiEnterBmpsRspparams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20264 }
20265
20266 wdiEnterBmpsRspCb = (WDI_EnterBmpsRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070020267
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020268 /* If BMPS req failed, riva is not power collapsed put the DXE in FULL state.
20269 * Other module states are taken care by PMC.
20270 * TODO: How do we take care of the case where BMPS is success, but riva power collapse fails??
20271 */
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020272 if (wdiEnterBmpsRspparams.wdiStatus != WDI_STATUS_SUCCESS)
20273 {
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020274
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020275 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070020276 "WDI Process Enter BMPS RSP failed With HAL Status Code: %d",
20277 halStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020278 /* Call Back is not required as we are putting the DXE in FULL
20279 * and riva is already in FULL (BMPS RSP Failed)*/
Ravali85acf6b2012-12-12 14:01:38 -080020280 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20281 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20282 {
20283 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020284 "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 -080020285 WDI_ASSERT(0);
20286 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020287 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
Madan Mohan Koyyalamudi48e375a2012-09-24 13:19:17 -070020288 }
20289
Jeff Johnson295189b2012-06-20 16:38:30 -070020290 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020291 wdiEnterBmpsRspCb( &wdiEnterBmpsRspparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020292
Jeff Johnsone7245742012-09-05 17:12:55 -070020293 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020294}/*WDI_ProcessEnterBmpsRsp*/
20295
20296/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020297 @brief Process Exit BMPS Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020298 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020299
20300 @param pWDICtx: pointer to the WLAN DAL context
20301 pEventData: pointer to the event information structure
20302
Jeff Johnson295189b2012-06-20 16:38:30 -070020303 @see
20304 @return Result of the function call
20305*/
20306WDI_Status
20307WDI_ProcessExitBmpsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020308(
Jeff Johnson295189b2012-06-20 16:38:30 -070020309 WDI_ControlBlockType* pWDICtx,
20310 WDI_EventInfoType* pEventData
20311)
20312{
Jeff Johnson295189b2012-06-20 16:38:30 -070020313 eHalStatus halStatus;
20314 WDI_ExitBmpsRspCb wdiExitBmpsRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020315 tHalExitBmpsRspParams halExitBmpsRsp;
Ravali85acf6b2012-12-12 14:01:38 -080020316 WDI_ExitBmpsRspParamsType wdiExitBmpsRspParams;
20317 wpt_status wptStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070020318 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20319
20320 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020321 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020322 -------------------------------------------------------------------------*/
20323 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20324 ( NULL == pEventData->pEventData))
20325 {
20326 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020327 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020328 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020329 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020330 }
20331
20332 wdiExitBmpsRspCb = (WDI_ExitBmpsRspCb)pWDICtx->pfncRspCB;
20333
20334 /*-------------------------------------------------------------------------
20335 Extract response and send it to UMAC
20336 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020337
20338 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20339 {
20340 wpalMemoryCopy( &halExitBmpsRsp,
20341 pEventData->pEventData,
20342 sizeof(halExitBmpsRsp));
20343
20344 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitBmpsRsp.status);
20345 wdiExitBmpsRspParams.bssIdx = halExitBmpsRsp.bssIdx;
20346 }
20347 else
20348 {
20349 halStatus = *((eHalStatus*)pEventData->pEventData);
20350 wdiExitBmpsRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20351 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020352
20353 // notify DTS that we are entering Full power
Ravali85acf6b2012-12-12 14:01:38 -080020354 wptStatus = WDTS_SetPowerState(pWDICtx, WDTS_POWER_STATE_FULL, NULL);
20355 if( eWLAN_PAL_STATUS_SUCCESS != wptStatus )
20356 {
20357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Arif Hussain9a5d5382013-11-17 22:05:35 -080020358 "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 -080020359 WDI_ASSERT(0);
20360 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020361 pWDICtx->bInBmps = eWLAN_PAL_FALSE;
20362
20363 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020364 wdiExitBmpsRspCb( &wdiExitBmpsRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020365
Jeff Johnsone7245742012-09-05 17:12:55 -070020366 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020367}/*WDI_ProcessExitBmpsRsp*/
20368
20369/**
20370 @brief Process Enter UAPSD Rsp function (called when a response
20371 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020372
20373 @param pWDICtx: pointer to the WLAN DAL context
20374 pEventData: pointer to the event information structure
20375
Jeff Johnson295189b2012-06-20 16:38:30 -070020376 @see
20377 @return Result of the function call
20378*/
20379WDI_Status
20380WDI_ProcessEnterUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020381(
Jeff Johnson295189b2012-06-20 16:38:30 -070020382 WDI_ControlBlockType* pWDICtx,
20383 WDI_EventInfoType* pEventData
20384)
20385{
Jeff Johnson295189b2012-06-20 16:38:30 -070020386 eHalStatus halStatus;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020387 tUapsdRspParams halEnterUapsdRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020388 WDI_EnterUapsdRspCb wdiEnterUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020389 WDI_EnterUapsdRspParamsType wdiEnterUapsdRspParams;
20390
Jeff Johnson295189b2012-06-20 16:38:30 -070020391 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20392
20393 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020394 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020395 -------------------------------------------------------------------------*/
20396 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20397 ( NULL == pEventData->pEventData))
20398 {
20399 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020400 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020401 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020402 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020403 }
20404
20405 wdiEnterUapsdRspCb = (WDI_EnterUapsdRspCb)pWDICtx->pfncRspCB;
20406
20407 /*-------------------------------------------------------------------------
20408 Extract response and send it to UMAC
20409 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020410 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20411 {
20412 wpalMemoryCopy( &halEnterUapsdRsp,
20413 pEventData->pEventData,
20414 sizeof(halEnterUapsdRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070020415
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020416 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halEnterUapsdRsp.status);
20417 wdiEnterUapsdRspParams.bssIdx = halEnterUapsdRsp.bssIdx;
20418 }
20419 else
20420 {
20421 halStatus = *((eHalStatus*)pEventData->pEventData);
20422 wdiEnterUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20423 }
20424
20425 if(WDI_STATUS_SUCCESS == wdiEnterUapsdRspParams.wdiStatus)
Jeff Johnson295189b2012-06-20 16:38:30 -070020426 {
20427 // Set the DPU routing flag to the FW WQ, all the TX frames would be now pushed
20428 // from DPU to the FW-WQ (5) in UAPSD. FW would be in data path, monitoring
20429 // the traffic to decide when to suspend the trigger frames when there is no traffic
20430 // activity on the trigger enabled ACs
20431 pWDICtx->ucDpuRF = BMUWQ_FW_DPU_TX;
20432
20433#ifdef WLAN_PERF
20434 // Increment the BD signature to refresh the fast path BD utilization
20435 pWDICtx->uBdSigSerialNum++;
20436#endif
20437 }
20438
20439 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020440 wdiEnterUapsdRspCb( &wdiEnterUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020441
Jeff Johnsone7245742012-09-05 17:12:55 -070020442 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020443}/*WDI_ProcessEnterUapsdRsp*/
20444
20445/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020446 @brief Process Exit UAPSD Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070020447 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020448
20449 @param pWDICtx: pointer to the WLAN DAL context
20450 pEventData: pointer to the event information structure
20451
Jeff Johnson295189b2012-06-20 16:38:30 -070020452 @see
20453 @return Result of the function call
20454*/
20455WDI_Status
20456WDI_ProcessExitUapsdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020457(
Jeff Johnson295189b2012-06-20 16:38:30 -070020458 WDI_ControlBlockType* pWDICtx,
20459 WDI_EventInfoType* pEventData
20460)
20461{
Jeff Johnson295189b2012-06-20 16:38:30 -070020462 eHalStatus halStatus;
20463 WDI_ExitUapsdRspCb wdiExitUapsdRspCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020464 tHalExitUapsdRspParams halExitUapsdRsp;
20465 WDI_ExitUapsdRspParamsType wdiExitUapsdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070020466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20467
20468 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020469 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020470 -------------------------------------------------------------------------*/
20471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20472 ( NULL == pEventData->pEventData))
20473 {
20474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020475 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020476 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020477 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020478 }
20479
20480 wdiExitUapsdRspCb = (WDI_ExitUapsdRspCb)pWDICtx->pfncRspCB;
20481
20482 /*-------------------------------------------------------------------------
20483 Extract response and send it to UMAC
20484 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020485 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20486 {
20487 wpalMemoryCopy( &halExitUapsdRsp,
20488 pEventData->pEventData,
20489 sizeof(halExitUapsdRsp));
20490
20491 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halExitUapsdRsp.status);
20492 wdiExitUapsdRspParams.bssIdx = halExitUapsdRsp.bssIdx;
20493 }
20494 else
20495 {
20496 halStatus = *((eHalStatus*)pEventData->pEventData);
20497 wdiExitUapsdRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
20498 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020499 // Restore back the DPU routing flag in the TxBD, for DPU to push the TxBDs to BTQM
20500 // directly instead of the FW WQ.
20501 pWDICtx->ucDpuRF = BMUWQ_BTQM_TX_MGMT;
20502
20503#ifdef WLAN_PERF
20504 // Increment the BD signature to refresh the fast path BD utilization
20505 pWDICtx->uBdSigSerialNum++;
20506#endif
20507
20508 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020509 wdiExitUapsdRspCb( &wdiExitUapsdRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020510
Jeff Johnsone7245742012-09-05 17:12:55 -070020511 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020512}/*WDI_ProcessExitUapsdRsp*/
20513
20514/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020515 @brief Process set UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020516 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020517
20518 @param pWDICtx: pointer to the WLAN DAL context
20519 pEventData: pointer to the event information structure
20520
Jeff Johnson295189b2012-06-20 16:38:30 -070020521 @see
20522 @return Result of the function call
20523*/
20524WDI_Status
20525WDI_ProcessSetUapsdAcParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020526(
Jeff Johnson295189b2012-06-20 16:38:30 -070020527 WDI_ControlBlockType* pWDICtx,
20528 WDI_EventInfoType* pEventData
20529)
20530{
20531 WDI_Status wdiStatus;
20532 eHalStatus halStatus;
20533 WDI_SetUapsdAcParamsCb wdiSetUapsdAcParamsCb;
20534 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20535
20536 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020537 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020538 -------------------------------------------------------------------------*/
20539 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20540 ( NULL == pEventData->pEventData))
20541 {
20542 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020543 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020544 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020545 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020546 }
20547
20548 wdiSetUapsdAcParamsCb = (WDI_SetUapsdAcParamsCb)pWDICtx->pfncRspCB;
20549
20550 /*-------------------------------------------------------------------------
20551 Extract response and send it to UMAC
20552 -------------------------------------------------------------------------*/
20553 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020554 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020555
20556 /*Notify UMAC*/
20557 wdiSetUapsdAcParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20558
Jeff Johnsone7245742012-09-05 17:12:55 -070020559 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020560}/*WDI_ProcessSetUapsdAcParamsRsp*/
20561
20562/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020563 @brief Process update UAPSD params Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020564 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020565
20566 @param pWDICtx: pointer to the WLAN DAL context
20567 pEventData: pointer to the event information structure
20568
Jeff Johnson295189b2012-06-20 16:38:30 -070020569 @see
20570 @return Result of the function call
20571*/
20572WDI_Status
20573WDI_ProcessUpdateUapsdParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020574(
Jeff Johnson295189b2012-06-20 16:38:30 -070020575 WDI_ControlBlockType* pWDICtx,
20576 WDI_EventInfoType* pEventData
20577)
20578{
20579 WDI_Status wdiStatus;
20580 eHalStatus halStatus;
20581 WDI_UpdateUapsdParamsCb wdiUpdateUapsdParamsCb;
20582 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20583
20584 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020585 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020586 -------------------------------------------------------------------------*/
20587 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20588 ( NULL == pEventData->pEventData))
20589 {
20590 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020591 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020592 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020593 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020594 }
20595
20596 wdiUpdateUapsdParamsCb = (WDI_UpdateUapsdParamsCb)pWDICtx->pfncRspCB;
20597
20598 /*-------------------------------------------------------------------------
20599 Extract response and send it to UMAC
20600 -------------------------------------------------------------------------*/
20601 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020602 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020603
20604 /*Notify UMAC*/
20605 wdiUpdateUapsdParamsCb( wdiStatus, pWDICtx->pRspCBUserData);
20606
Jeff Johnsone7245742012-09-05 17:12:55 -070020607 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020608}/*WDI_ProcessUpdateUapsdParamsRsp*/
20609
20610/**
20611 @brief Process Configure RXP filter Rsp function (called when a
20612 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020613
20614 @param pWDICtx: pointer to the WLAN DAL context
20615 pEventData: pointer to the event information structure
20616
Jeff Johnson295189b2012-06-20 16:38:30 -070020617 @see
20618 @return Result of the function call
20619*/
20620WDI_Status
20621WDI_ProcessConfigureRxpFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020622(
Jeff Johnson295189b2012-06-20 16:38:30 -070020623 WDI_ControlBlockType* pWDICtx,
20624 WDI_EventInfoType* pEventData
20625)
20626{
20627 WDI_Status wdiStatus;
20628 eHalStatus halStatus;
20629 WDI_ConfigureRxpFilterCb wdiConfigureRxpFilterCb;
20630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20631
20632 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020633 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020634 -------------------------------------------------------------------------*/
20635 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20636 ( NULL == pEventData->pEventData))
20637 {
20638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020639 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020640 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020641 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020642 }
20643
20644 wdiConfigureRxpFilterCb = (WDI_ConfigureRxpFilterCb)pWDICtx->pfncRspCB;
20645
20646 /*-------------------------------------------------------------------------
20647 Extract response and send it to UMAC
20648 -------------------------------------------------------------------------*/
20649 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020650 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020651
20652 /*Notify UMAC*/
20653 wdiConfigureRxpFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20654
Jeff Johnsone7245742012-09-05 17:12:55 -070020655 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020656}/*WDI_ProcessConfigureRxpFilterRsp*/
20657
20658/**
20659 @brief Process Set beacon filter Rsp function (called when a
20660 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020661
20662 @param pWDICtx: pointer to the WLAN DAL context
20663 pEventData: pointer to the event information structure
20664
Jeff Johnson295189b2012-06-20 16:38:30 -070020665 @see
20666 @return Result of the function call
20667*/
20668WDI_Status
20669WDI_ProcessSetBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020670(
Jeff Johnson295189b2012-06-20 16:38:30 -070020671 WDI_ControlBlockType* pWDICtx,
20672 WDI_EventInfoType* pEventData
20673)
20674{
20675 WDI_Status wdiStatus;
20676 eHalStatus halStatus;
20677 WDI_SetBeaconFilterCb wdiBeaconFilterCb;
20678 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20679
20680 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020681 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020682 -------------------------------------------------------------------------*/
20683 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20684 ( NULL == pEventData->pEventData))
20685 {
20686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020687 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020688 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020689 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020690 }
20691
20692 wdiBeaconFilterCb = (WDI_SetBeaconFilterCb)pWDICtx->pfncRspCB;
20693
20694 /*-------------------------------------------------------------------------
20695 Extract response and send it to UMAC
20696 -------------------------------------------------------------------------*/
20697 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020698 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020699
20700 /*Notify UMAC*/
20701 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20702
Jeff Johnsone7245742012-09-05 17:12:55 -070020703 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020704}/*WDI_ProcessSetBeaconFilterRsp*/
20705
20706/**
20707 @brief Process remove beacon filter Rsp function (called when a
20708 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020709
20710 @param pWDICtx: pointer to the WLAN DAL context
20711 pEventData: pointer to the event information structure
20712
Jeff Johnson295189b2012-06-20 16:38:30 -070020713 @see
20714 @return Result of the function call
20715*/
20716WDI_Status
20717WDI_ProcessRemBeaconFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020718(
Jeff Johnson295189b2012-06-20 16:38:30 -070020719 WDI_ControlBlockType* pWDICtx,
20720 WDI_EventInfoType* pEventData
20721)
20722{
20723 WDI_Status wdiStatus;
20724 eHalStatus halStatus;
20725 WDI_RemBeaconFilterCb wdiBeaconFilterCb;
20726 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20727
20728 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020729 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020730 -------------------------------------------------------------------------*/
20731 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20732 ( NULL == pEventData->pEventData))
20733 {
20734 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020735 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020736 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020737 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020738 }
20739
20740 wdiBeaconFilterCb = (WDI_RemBeaconFilterCb)pWDICtx->pfncRspCB;
20741
20742 /*-------------------------------------------------------------------------
20743 Extract response and send it to UMAC
20744 -------------------------------------------------------------------------*/
20745 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020746 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020747
20748 /*Notify UMAC*/
20749 wdiBeaconFilterCb( wdiStatus, pWDICtx->pRspCBUserData);
20750
Jeff Johnsone7245742012-09-05 17:12:55 -070020751 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020752}/*WDI_ProcessRemBeaconFilterRsp*/
20753
20754/**
20755 @brief Process set RSSI thresholds Rsp function (called when a
20756 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020757
20758 @param pWDICtx: pointer to the WLAN DAL context
20759 pEventData: pointer to the event information structure
20760
Jeff Johnson295189b2012-06-20 16:38:30 -070020761 @see
20762 @return Result of the function call
20763*/
20764WDI_Status
20765WDI_ProcessSetRSSIThresoldsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020766(
Jeff Johnson295189b2012-06-20 16:38:30 -070020767 WDI_ControlBlockType* pWDICtx,
20768 WDI_EventInfoType* pEventData
20769)
20770{
20771 WDI_Status wdiStatus;
20772 eHalStatus halStatus;
20773 WDI_SetRSSIThresholdsCb wdiRSSIThresholdsCb;
20774 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20775
20776 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020777 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020778 -------------------------------------------------------------------------*/
20779 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20780 ( NULL == pEventData->pEventData))
20781 {
20782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020783 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020784 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020785 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020786 }
20787
20788 wdiRSSIThresholdsCb = (WDI_SetRSSIThresholdsCb)pWDICtx->pfncRspCB;
20789
20790 /*-------------------------------------------------------------------------
20791 Extract response and send it to UMAC
20792 -------------------------------------------------------------------------*/
20793 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020794 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020795
20796 /*Notify UMAC*/
20797 wdiRSSIThresholdsCb( wdiStatus, pWDICtx->pRspCBUserData);
20798
Jeff Johnsone7245742012-09-05 17:12:55 -070020799 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020800}/*WDI_ProcessSetRSSIThresoldsRsp*/
20801
20802/**
20803 @brief Process host offload Rsp function (called when a
20804 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020805
20806 @param pWDICtx: pointer to the WLAN DAL context
20807 pEventData: pointer to the event information structure
20808
Jeff Johnson295189b2012-06-20 16:38:30 -070020809 @see
20810 @return Result of the function call
20811*/
20812WDI_Status
20813WDI_ProcessHostOffloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020814(
Jeff Johnson295189b2012-06-20 16:38:30 -070020815 WDI_ControlBlockType* pWDICtx,
20816 WDI_EventInfoType* pEventData
20817)
20818{
20819 WDI_Status wdiStatus;
20820 eHalStatus halStatus;
20821 WDI_HostOffloadCb wdiHostOffloadCb;
20822 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20823
20824 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020825 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020826 -------------------------------------------------------------------------*/
20827 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20828 ( NULL == pEventData->pEventData))
20829 {
20830 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020831 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020832 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020833 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020834 }
20835
20836 wdiHostOffloadCb = (WDI_HostOffloadCb)pWDICtx->pfncRspCB;
20837
20838 /*-------------------------------------------------------------------------
20839 Extract response and send it to UMAC
20840 -------------------------------------------------------------------------*/
20841 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020842 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020843
20844 /*Notify UMAC*/
20845 wdiHostOffloadCb( wdiStatus, pWDICtx->pRspCBUserData);
20846
Jeff Johnsone7245742012-09-05 17:12:55 -070020847 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020848}/*WDI_ProcessHostOffloadRsp*/
20849
20850/**
20851 @brief Process keep alive Rsp function (called when a
20852 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020853
20854 @param pWDICtx: pointer to the WLAN DAL context
20855 pEventData: pointer to the event information structure
20856
Jeff Johnson295189b2012-06-20 16:38:30 -070020857 @see
20858 @return Result of the function call
20859*/
20860WDI_Status
20861WDI_ProcessKeepAliveRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020862(
Jeff Johnson295189b2012-06-20 16:38:30 -070020863 WDI_ControlBlockType* pWDICtx,
20864 WDI_EventInfoType* pEventData
20865)
20866{
20867 WDI_Status wdiStatus;
20868 eHalStatus halStatus;
20869 WDI_KeepAliveCb wdiKeepAliveCb;
20870 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Sushant Kaushikdc3184b2015-10-09 12:00:21 +053020871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070020872 "Received WDI_ProcessKeepAliveRsp Callback from HAL");
20873
20874
20875 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020876 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020877 -------------------------------------------------------------------------*/
20878 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20879 ( NULL == pEventData->pEventData))
20880 {
20881 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020882 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020883 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020884 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020885 }
20886
Jeff Johnsone7245742012-09-05 17:12:55 -070020887 wdiKeepAliveCb = (WDI_KeepAliveCb)pWDICtx->pfncRspCB;
20888
Jeff Johnson295189b2012-06-20 16:38:30 -070020889 /*-------------------------------------------------------------------------
20890 Extract response and send it to UMAC
20891 -------------------------------------------------------------------------*/
20892 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070020893 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070020894
20895 /*Notify UMAC*/
20896 wdiKeepAliveCb( wdiStatus, pWDICtx->pRspCBUserData);
20897
Jeff Johnsone7245742012-09-05 17:12:55 -070020898 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020899}/*WDI_ProcessKeepAliveRsp*/
20900
20901/**
20902 @brief Process wowl add ptrn Rsp function (called when a
20903 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020904
20905 @param pWDICtx: pointer to the WLAN DAL context
20906 pEventData: pointer to the event information structure
20907
Jeff Johnson295189b2012-06-20 16:38:30 -070020908 @see
20909 @return Result of the function call
20910*/
20911WDI_Status
20912WDI_ProcessWowlAddBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020913(
Jeff Johnson295189b2012-06-20 16:38:30 -070020914 WDI_ControlBlockType* pWDICtx,
20915 WDI_EventInfoType* pEventData
20916)
20917{
Jeff Johnson295189b2012-06-20 16:38:30 -070020918 eHalStatus halStatus;
20919 WDI_WowlAddBcPtrnCb wdiWowlAddBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020920 tHalAddWowlBcastPtrnRspParams halAddWowlBcastPtrRsp;
20921 WDI_WowlAddBcPtrnRspParamsType wdiWowlAddBcPtrRsp;
20922
Jeff Johnson295189b2012-06-20 16:38:30 -070020923 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20924
20925 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020926 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020927 -------------------------------------------------------------------------*/
20928 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20929 ( NULL == pEventData->pEventData))
20930 {
20931 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020932 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020933 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020934 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020935 }
20936
20937 wdiWowlAddBcPtrnCb = (WDI_WowlAddBcPtrnCb)pWDICtx->pfncRspCB;
20938
20939 /*-------------------------------------------------------------------------
20940 Extract response and send it to UMAC
20941 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020942 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
20943 {
20944 wpalMemoryCopy( &halAddWowlBcastPtrRsp,
20945 pEventData->pEventData,
20946 sizeof(halAddWowlBcastPtrRsp));
20947
20948 wdiWowlAddBcPtrRsp.wdiStatus =
20949 WDI_HAL_2_WDI_STATUS(halAddWowlBcastPtrRsp.status);
20950 }
20951 else
20952 {
20953 halStatus = *((eHalStatus*)pEventData->pEventData);
20954 wdiWowlAddBcPtrRsp.wdiStatus =
20955 WDI_HAL_2_WDI_STATUS(halStatus);
20956 }
Jeff Johnson295189b2012-06-20 16:38:30 -070020957
20958 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020959 wdiWowlAddBcPtrnCb( &wdiWowlAddBcPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070020960
Jeff Johnsone7245742012-09-05 17:12:55 -070020961 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070020962}/*WDI_ProcessWowlAddBcPtrnRsp*/
20963
20964/**
Jeff Johnsone7245742012-09-05 17:12:55 -070020965 @brief Process wowl delete ptrn Rsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070020966 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070020967
20968 @param pWDICtx: pointer to the WLAN DAL context
20969 pEventData: pointer to the event information structure
20970
Jeff Johnson295189b2012-06-20 16:38:30 -070020971 @see
20972 @return Result of the function call
20973*/
20974WDI_Status
20975WDI_ProcessWowlDelBcPtrnRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070020976(
Jeff Johnson295189b2012-06-20 16:38:30 -070020977 WDI_ControlBlockType* pWDICtx,
20978 WDI_EventInfoType* pEventData
20979)
20980{
Jeff Johnson295189b2012-06-20 16:38:30 -070020981 eHalStatus halStatus;
20982 WDI_WowlDelBcPtrnCb wdiWowlDelBcPtrnCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070020983 tHalDelWowlBcastPtrnRspParams halDelWowlBcastPtrRsp;
20984 WDI_WowlDelBcPtrnRspParamsType wdiWowlDelBcstPtrRsp;
Jeff Johnson295189b2012-06-20 16:38:30 -070020985 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
20986
20987 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070020988 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070020989 -------------------------------------------------------------------------*/
20990 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
20991 ( NULL == pEventData->pEventData))
20992 {
20993 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070020994 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070020995 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070020996 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070020997 }
20998
20999 wdiWowlDelBcPtrnCb = (WDI_WowlDelBcPtrnCb)pWDICtx->pfncRspCB;
21000
21001 /*-------------------------------------------------------------------------
21002 Extract response and send it to UMAC
21003 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021004 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21005 {
21006 wpalMemoryCopy( &halDelWowlBcastPtrRsp,
21007 pEventData->pEventData,
21008 sizeof(halDelWowlBcastPtrRsp));
Jeff Johnson295189b2012-06-20 16:38:30 -070021009
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021010 wdiWowlDelBcstPtrRsp.wdiStatus =
21011 WDI_HAL_2_WDI_STATUS(halDelWowlBcastPtrRsp.status);
21012 }
21013 else
21014 {
21015 halStatus = *((eHalStatus*)pEventData->pEventData);
21016 wdiWowlDelBcstPtrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
21017 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021018 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021019 wdiWowlDelBcPtrnCb( &wdiWowlDelBcstPtrRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021020
Jeff Johnsone7245742012-09-05 17:12:55 -070021021 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021022}/*WDI_ProcessWowlDelBcPtrnRsp*/
21023
21024/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021025 @brief Process wowl enter Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021026 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021027
21028 @param pWDICtx: pointer to the WLAN DAL context
21029 pEventData: pointer to the event information structure
21030
Jeff Johnson295189b2012-06-20 16:38:30 -070021031 @see
21032 @return Result of the function call
21033*/
21034WDI_Status
21035WDI_ProcessWowlEnterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021036(
Jeff Johnson295189b2012-06-20 16:38:30 -070021037 WDI_ControlBlockType* pWDICtx,
21038 WDI_EventInfoType* pEventData
21039)
21040{
Jeff Johnson295189b2012-06-20 16:38:30 -070021041 eHalStatus halStatus;
21042 WDI_WowlEnterReqCb wdiWowlEnterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021043 WDI_WowlEnterRspParamsType wdiwowlEnterRsp;
21044 tHalEnterWowlRspParams halEnterWowlRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021045 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21046
21047 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021048 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021049 -------------------------------------------------------------------------*/
21050 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21051 ( NULL == pEventData->pEventData))
21052 {
21053 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021054 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021055 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021056 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021057 }
21058
21059 wdiWowlEnterCb = (WDI_WowlEnterReqCb)pWDICtx->pfncRspCB;
21060
21061 /*-------------------------------------------------------------------------
21062 Extract response and send it to UMAC
21063 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021064 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21065 {
21066 wpalMemoryCopy( &halEnterWowlRspParams,
21067 (wpt_uint8*)pEventData->pEventData,
21068 sizeof(halEnterWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021069
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021070 wdiwowlEnterRsp.bssIdx = halEnterWowlRspParams.bssIdx;
21071 wdiwowlEnterRsp.status =
21072 WDI_HAL_2_WDI_STATUS(halEnterWowlRspParams.status);
21073 }
21074 else
21075 {
21076 halStatus = *((eHalStatus*)pEventData->pEventData);
21077 wdiwowlEnterRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21078 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021079 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021080 wdiWowlEnterCb( &wdiwowlEnterRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021081
Jeff Johnsone7245742012-09-05 17:12:55 -070021082 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021083}/*WDI_ProcessWowlEnterRsp*/
21084
21085/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021086 @brief Process wowl exit Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021087 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021088
21089 @param pWDICtx: pointer to the WLAN DAL context
21090 pEventData: pointer to the event information structure
21091
Jeff Johnson295189b2012-06-20 16:38:30 -070021092 @see
21093 @return Result of the function call
21094*/
21095WDI_Status
21096WDI_ProcessWowlExitRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021097(
Jeff Johnson295189b2012-06-20 16:38:30 -070021098 WDI_ControlBlockType* pWDICtx,
21099 WDI_EventInfoType* pEventData
21100)
21101{
Jeff Johnson295189b2012-06-20 16:38:30 -070021102 eHalStatus halStatus;
21103 WDI_WowlExitReqCb wdiWowlExitCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021104 tHalExitWowlRspParams halExitWowlRspParams;
21105 WDI_WowlExitRspParamsType wdiWowlExitRsp;
21106
Jeff Johnson295189b2012-06-20 16:38:30 -070021107 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21108
21109 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021110 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021111 -------------------------------------------------------------------------*/
21112 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21113 ( NULL == pEventData->pEventData))
21114 {
21115 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021116 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021117 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021118 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021119 }
21120
21121 wdiWowlExitCb = (WDI_WowlExitReqCb)pWDICtx->pfncRspCB;
21122
21123 /*-------------------------------------------------------------------------
21124 Extract response and send it to UMAC
21125 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021126 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
21127 {
21128 wpalMemoryCopy( &halExitWowlRspParams,
21129 pEventData->pEventData,
21130 sizeof(halExitWowlRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070021131
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021132 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halExitWowlRspParams.status);
21133 wdiWowlExitRsp.bssIdx = halExitWowlRspParams.bssIdx;
21134
21135 }
21136 else
21137 {
21138 halStatus = *((eHalStatus*)pEventData->pEventData);
21139 wdiWowlExitRsp.status = WDI_HAL_2_WDI_STATUS(halStatus);
21140 }
Jeff Johnson295189b2012-06-20 16:38:30 -070021141 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070021142 wdiWowlExitCb( &wdiWowlExitRsp, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021143
Jeff Johnsone7245742012-09-05 17:12:55 -070021144 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021145}/*WDI_ProcessWowlExitRsp*/
21146
21147/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021148 @brief Process Configure Apps CPU wakeup State Rsp function
Jeff Johnson295189b2012-06-20 16:38:30 -070021149 (called when a response is being received over the bus
21150 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021151
21152 @param pWDICtx: pointer to the WLAN DAL context
21153 pEventData: pointer to the event information structure
21154
Jeff Johnson295189b2012-06-20 16:38:30 -070021155 @see
21156 @return Result of the function call
21157*/
21158WDI_Status
21159WDI_ProcessConfigureAppsCpuWakeupStateRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021160(
Jeff Johnson295189b2012-06-20 16:38:30 -070021161 WDI_ControlBlockType* pWDICtx,
21162 WDI_EventInfoType* pEventData
21163)
21164{
21165 WDI_Status wdiStatus;
21166 eHalStatus halStatus;
21167 WDI_ConfigureAppsCpuWakeupStateCb wdiConfigureAppsCpuWakeupStateCb;
21168 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21169
21170 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021171 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021172 -------------------------------------------------------------------------*/
21173 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21174 ( NULL == pEventData->pEventData))
21175 {
21176 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021177 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021178 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021179 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021180 }
21181
21182 wdiConfigureAppsCpuWakeupStateCb = (WDI_ConfigureAppsCpuWakeupStateCb)pWDICtx->pfncRspCB;
21183
21184 /*-------------------------------------------------------------------------
21185 Extract response and send it to UMAC
21186 -------------------------------------------------------------------------*/
21187 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021188 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021189
21190 /*Notify UMAC*/
21191 wdiConfigureAppsCpuWakeupStateCb( wdiStatus, pWDICtx->pRspCBUserData);
21192
Jeff Johnsone7245742012-09-05 17:12:55 -070021193 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021194}/*WDI_ProcessConfigureAppsCpuWakeupStateRsp*/
21195
21196
21197/**
21198 @brief Process Nv download(called when a response
21199 is being received over the bus from HAL,will check if the responce is )
Jeff Johnsone7245742012-09-05 17:12:55 -070021200
21201 @param pWDICtx: pointer to the WLAN DAL context
21202 pEventData: pointer to the event information structure
21203
Jeff Johnson295189b2012-06-20 16:38:30 -070021204 @see
21205 @return Result of the function call
21206*/
21207WDI_Status
21208WDI_ProcessNvDownloadRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021209(
Jeff Johnson295189b2012-06-20 16:38:30 -070021210 WDI_ControlBlockType* pWDICtx,
21211 WDI_EventInfoType* pEventData
21212)
21213{
21214
21215 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
21216 tHalNvImgDownloadRspParams halNvDownloadRsp;
21217 WDI_NvDownloadRspInfoType wdiNvDownloadRsp;
21218
21219 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021220 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021221 -------------------------------------------------------------------------*/
21222 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21223 ( NULL == pEventData->pEventData))
21224 {
21225 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021226 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021227 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021228 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021229 }
21230
21231 /*-------------------------------------------------------------------------
21232 Extract response and send it to UMAC
21233 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021234 wpalMemoryCopy( &halNvDownloadRsp,
21235 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021236 sizeof(halNvDownloadRsp));
21237
21238 wdiNvDownloadRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halNvDownloadRsp.status);
21239
21240 if((wdiNvDownloadRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Jeff Johnsone7245742012-09-05 17:12:55 -070021241 (pWDICtx->wdiNvBlobInfo.usCurrentFragment !=
21242 pWDICtx->wdiNvBlobInfo.usTotalFragment ))
Jeff Johnson295189b2012-06-20 16:38:30 -070021243 {
21244 WDI_NvDownloadReq(&pWDICtx->wdiCachedNvDownloadReq,
Jeff Johnsone7245742012-09-05 17:12:55 -070021245 (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070021246 }
21247 else
21248 {
21249 /*Reset the Nv related global information in WDI context information */
21250 pWDICtx->wdiNvBlobInfo.usTotalFragment = 0;
21251 pWDICtx->wdiNvBlobInfo.usFragmentSize = 0;
21252 pWDICtx->wdiNvBlobInfo.usCurrentFragment = 0;
21253 /*call WDA callback function for last fragment */
21254 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pWDICtx->pfncRspCB;
21255 wdiNvDownloadRspCb( &wdiNvDownloadRsp, pWDICtx->pRspCBUserData);
21256 }
21257
Jeff Johnsone7245742012-09-05 17:12:55 -070021258 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021259}
21260#ifdef WLAN_FEATURE_VOWIFI_11R
21261/**
21262 @brief Process Add TSpec Rsp function (called when a response
21263 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021264
21265 @param pWDICtx: pointer to the WLAN DAL context
21266 pEventData: pointer to the event information structure
21267
Jeff Johnson295189b2012-06-20 16:38:30 -070021268 @see
21269 @return Result of the function call
21270*/
21271WDI_Status
21272WDI_ProcessAggrAddTSpecRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021273(
Jeff Johnson295189b2012-06-20 16:38:30 -070021274 WDI_ControlBlockType* pWDICtx,
21275 WDI_EventInfoType* pEventData
21276)
21277{
21278 WDI_Status wdiStatus;
21279 tAggrAddTsRspParams aggrAddTsRsp;
21280 WDI_AggrAddTsRspCb wdiAggrAddTsRspCb;
21281 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21282
21283 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021284 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021285 -------------------------------------------------------------------------*/
21286 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21287 ( NULL == pEventData->pEventData))
21288 {
21289 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021290 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021291 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021292 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021293 }
21294
21295 wdiAggrAddTsRspCb = (WDI_AddTsRspCb)pWDICtx->pfncRspCB;
21296
21297 /*-------------------------------------------------------------------------
21298 Extract response and send it to UMAC
21299 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021300 wpalMemoryCopy( &aggrAddTsRsp,
21301 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021302 sizeof(aggrAddTsRsp));
21303
21304 /* What is the difference between status0 and status1? */
Jeff Johnsone7245742012-09-05 17:12:55 -070021305 wdiStatus = WDI_HAL_2_WDI_STATUS(aggrAddTsRsp.status0);
Jeff Johnson295189b2012-06-20 16:38:30 -070021306
21307 /*Notify UMAC*/
21308 wdiAggrAddTsRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21309
Jeff Johnsone7245742012-09-05 17:12:55 -070021310 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021311}/*WDI_ProcessAddTSpecRsp*/
21312#endif /* WLAN_FEATURE_VOWIFI_11R */
21313
21314/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021315 @brief WDI_ProcessHostResumeRsp function (called when a
Jeff Johnson295189b2012-06-20 16:38:30 -070021316 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021317
21318 @param pWDICtx: pointer to the WLAN DAL context
21319 pEventData: pointer to the event information structure
21320
Jeff Johnson295189b2012-06-20 16:38:30 -070021321 @see
21322 @return Result of the function call
21323*/
21324WDI_Status
21325WDI_ProcessHostResumeRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021326(
Jeff Johnson295189b2012-06-20 16:38:30 -070021327 WDI_ControlBlockType* pWDICtx,
21328 WDI_EventInfoType* pEventData
21329)
21330{
21331 WDI_SuspendResumeRspParamsType wdiResumeRspParams;
21332 WDI_HostResumeEventRspCb wdiHostResumeRspCb;
21333 tHalHostResumeRspParams hostResumeRspMsg;
21334 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21335
21336 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021337 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021338 -------------------------------------------------------------------------*/
21339 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21340 ( NULL == pEventData->pEventData))
21341 {
21342 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021343 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021344 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021345 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021346 }
21347
21348 wdiHostResumeRspCb = (WDI_HostResumeEventRspCb)pWDICtx->pfncRspCB;
21349
21350 /*-------------------------------------------------------------------------
21351 Extract response and send it to UMAC
21352 -------------------------------------------------------------------------*/
21353
Jeff Johnsone7245742012-09-05 17:12:55 -070021354 wpalMemoryCopy( &hostResumeRspMsg,
Jeff Johnson295189b2012-06-20 16:38:30 -070021355 (wpt_uint8*)pEventData->pEventData,
21356 sizeof(hostResumeRspMsg));
21357
Jeff Johnsone7245742012-09-05 17:12:55 -070021358 wdiResumeRspParams.wdiStatus =
21359 WDI_HAL_2_WDI_STATUS(hostResumeRspMsg.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070021360
21361 /*Notify UMAC*/
21362 wdiHostResumeRspCb(&wdiResumeRspParams, (void*) pWDICtx->pRspCBUserData);
21363
21364 return WDI_STATUS_SUCCESS;
21365}
21366
21367/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021368 @brief Process Set Tx PER Rsp function (called when a response
Jeff Johnson295189b2012-06-20 16:38:30 -070021369 is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021370
21371 @param pWDICtx: pointer to the WLAN DAL context
21372 pEventData: pointer to the event information structure
21373
Jeff Johnson295189b2012-06-20 16:38:30 -070021374 @see
21375 @return Result of the function call
21376*/
21377WDI_Status
21378WDI_ProcessSetTxPerTrackingRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070021379(
Jeff Johnson295189b2012-06-20 16:38:30 -070021380 WDI_ControlBlockType* pWDICtx,
21381 WDI_EventInfoType* pEventData
21382)
21383{
21384 WDI_Status wdiStatus;
21385 eHalStatus halStatus;
21386 WDI_SetTxPerTrackingRspCb pwdiSetTxPerTrackingRspCb;
21387 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21388
21389 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021390 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021391 -------------------------------------------------------------------------*/
21392 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21393 ( NULL == pEventData->pEventData))
21394 {
21395 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021396 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021397 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021398 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021399 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021400
21401 pwdiSetTxPerTrackingRspCb = (WDI_SetTxPerTrackingRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070021402
21403 /*-------------------------------------------------------------------------
21404 Extract response and send it to UMAC
21405 -------------------------------------------------------------------------*/
21406 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021407 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021408
21409 /*Notify UMAC*/
21410 pwdiSetTxPerTrackingRspCb( wdiStatus, pWDICtx->pRspCBUserData);
21411
Jeff Johnsone7245742012-09-05 17:12:55 -070021412 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021413}/*WDI_ProcessSetTxPerTrackingRsp*/
21414
21415/*==========================================================================
21416 Indications from HAL
21417 ==========================================================================*/
21418/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021419 @brief Process Low RSSI Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021420 indication of this kind is being received over the bus
21421 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021422
21423 @param pWDICtx: pointer to the WLAN DAL context
21424 pEventData: pointer to the event information structure
21425
Jeff Johnson295189b2012-06-20 16:38:30 -070021426 @see
21427 @return Result of the function call
21428*/
21429WDI_Status
21430WDI_ProcessLowRSSIInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021431(
Jeff Johnson295189b2012-06-20 16:38:30 -070021432 WDI_ControlBlockType* pWDICtx,
21433 WDI_EventInfoType* pEventData
21434)
21435{
21436 WDI_LowLevelIndType wdiInd;
21437 tHalRSSINotificationIndMsg halRSSINotificationIndMsg;
21438 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21439
21440 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021441 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021442 -------------------------------------------------------------------------*/
21443 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21444 ( NULL == pEventData->pEventData))
21445 {
21446 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021447 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021448 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021449 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021450 }
21451
21452 /*-------------------------------------------------------------------------
21453 Extract indication and send it to UMAC
21454 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021455 wpalMemoryCopy( (void *)&halRSSINotificationIndMsg.rssiNotificationParams,
21456 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021457 sizeof(tHalRSSINotification));
21458
21459 /*Fill in the indication parameters*/
21460 wdiInd.wdiIndicationType = WDI_RSSI_NOTIFICATION_IND;
21461 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1PosCross =
21462 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1PosCross;
21463 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres1NegCross =
21464 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres1NegCross;
21465 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2PosCross =
21466 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2PosCross;
21467 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres2NegCross =
21468 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres2NegCross;
21469 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3PosCross =
21470 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3PosCross;
21471 wdiInd.wdiIndicationData.wdiLowRSSIInfo.bRssiThres3NegCross =
21472 halRSSINotificationIndMsg.rssiNotificationParams.bRssiThres3NegCross;
Srinivasdaaec712012-12-12 15:59:44 -080021473 wdiInd.wdiIndicationData.wdiLowRSSIInfo.avgRssi =
21474 halRSSINotificationIndMsg.rssiNotificationParams.avgRssi;
Jeff Johnson295189b2012-06-20 16:38:30 -070021475
ltimariub77f24b2013-01-24 18:54:33 -080021476 if ( pWDICtx->wdiLowLevelIndCB )
21477 {
21478 /*Notify UMAC of indication*/
21479 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21480 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021481
21482 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021483}/*WDI_ProcessLowRSSIInd*/
21484
21485
21486/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021487 @brief Process Missed Beacon Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021488 an indication of this kind is being received over the
21489 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021490
21491 @param pWDICtx: pointer to the WLAN DAL context
21492 pEventData: pointer to the event information structure
21493
Jeff Johnson295189b2012-06-20 16:38:30 -070021494 @see
21495 @return Result of the function call
21496*/
21497WDI_Status
21498WDI_ProcessMissedBeaconInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021499(
Jeff Johnson295189b2012-06-20 16:38:30 -070021500 WDI_ControlBlockType* pWDICtx,
21501 WDI_EventInfoType* pEventData
21502)
21503{
21504 WDI_Status wdiStatus;
21505 eHalStatus halStatus;
21506 WDI_LowLevelIndType wdiInd;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021507 tpHalMissedBeaconIndParams halMissedBeaconIndParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070021508 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21509
21510 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021511 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021512 -------------------------------------------------------------------------*/
21513 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21514 ( NULL == pEventData->pEventData))
21515 {
21516 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021517 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021518 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021519 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021520 }
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021521 halMissedBeaconIndParams = (tpHalMissedBeaconIndParams)pEventData->pEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070021522 /*-------------------------------------------------------------------------
21523 Extract indication and send it to UMAC
21524 -------------------------------------------------------------------------*/
21525 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21526 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021527 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021528
21529 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021530 wdiInd.wdiIndicationType = WDI_MISSED_BEACON_IND;
Leela Venkata Kiran Kumar Reddy Chirala3ca17902013-02-27 19:50:05 -080021531 wdiInd.wdiIndicationData.wdiMissedBeaconInd.bssIdx =
21532 halMissedBeaconIndParams->bssIdx;
ltimariub77f24b2013-01-24 18:54:33 -080021533 if ( pWDICtx->wdiLowLevelIndCB )
21534 {
21535 /*Notify UMAC*/
21536 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21537 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021538
21539 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021540}/*WDI_ProcessMissedBeaconInd*/
21541
21542
21543/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021544 @brief Process Unk Addr Frame Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021545 an indication of this kind is being received over the
21546 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021547
21548 @param pWDICtx: pointer to the WLAN DAL context
21549 pEventData: pointer to the event information structure
21550
Jeff Johnson295189b2012-06-20 16:38:30 -070021551 @see
21552 @return Result of the function call
21553*/
21554WDI_Status
21555WDI_ProcessUnkAddrFrameInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021556(
Jeff Johnson295189b2012-06-20 16:38:30 -070021557 WDI_ControlBlockType* pWDICtx,
21558 WDI_EventInfoType* pEventData
21559)
21560{
21561 WDI_Status wdiStatus;
21562 eHalStatus halStatus;
21563 WDI_LowLevelIndType wdiInd;
21564 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21565
21566 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021567 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021568 -------------------------------------------------------------------------*/
21569 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21570 ( NULL == pEventData->pEventData))
21571 {
21572 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021573 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021574 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021575 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021576 }
21577
21578 /*-------------------------------------------------------------------------
21579 Extract indication and send it to UMAC
21580 -------------------------------------------------------------------------*/
21581 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21582 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021583 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021584
21585 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021586 wdiInd.wdiIndicationType = WDI_UNKNOWN_ADDR2_FRAME_RX_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021587 /* ! TO DO - fill in from HAL struct:
21588 wdiInd.wdiIndicationData.wdiUnkAddr2FrmInfo*/
21589
ltimariub77f24b2013-01-24 18:54:33 -080021590 if ( pWDICtx->wdiLowLevelIndCB )
21591 {
21592 /*Notify UMAC*/
21593 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21594 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021595
21596 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021597}/*WDI_ProcessUnkAddrFrameInd*/
21598
21599
21600/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021601 @brief Process MIC Failure Indication function (called when an
Jeff Johnson295189b2012-06-20 16:38:30 -070021602 indication of this kind is being received over the bus
21603 from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021604
21605 @param pWDICtx: pointer to the WLAN DAL context
21606 pEventData: pointer to the event information structure
21607
Jeff Johnson295189b2012-06-20 16:38:30 -070021608 @see
21609 @return Result of the function call
21610*/
21611WDI_Status
21612WDI_ProcessMicFailureInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021613(
Jeff Johnson295189b2012-06-20 16:38:30 -070021614 WDI_ControlBlockType* pWDICtx,
21615 WDI_EventInfoType* pEventData
21616)
21617{
21618 WDI_LowLevelIndType wdiInd;
21619 tpSirMicFailureInd pHalMicFailureInd;
21620
21621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21622
21623 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021624 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021625 -------------------------------------------------------------------------*/
21626 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21627 ( NULL == pEventData->pEventData))
21628 {
21629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021630 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021632 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021633 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021634
Jeff Johnson295189b2012-06-20 16:38:30 -070021635 pHalMicFailureInd = (tpSirMicFailureInd)pEventData->pEventData;
21636 /*-------------------------------------------------------------------------
21637 Extract indication and send it to UMAC
21638 -------------------------------------------------------------------------*/
21639
21640 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021641 wdiInd.wdiIndicationType = WDI_MIC_FAILURE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021642 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.bssId,
21643 pHalMicFailureInd->bssId, WDI_MAC_ADDR_LEN);
21644 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macSrcAddr,
21645 pHalMicFailureInd->info.srcMacAddr, WDI_MAC_ADDR_LEN);
21646 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macTaAddr,
21647 pHalMicFailureInd->info.taMacAddr, WDI_MAC_ADDR_LEN);
21648 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macDstAddr,
21649 pHalMicFailureInd->info.dstMacAddr, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070021650 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucMulticast =
Jeff Johnson295189b2012-06-20 16:38:30 -070021651 pHalMicFailureInd->info.multicast;
Jeff Johnsone7245742012-09-05 17:12:55 -070021652 wdiInd.wdiIndicationData.wdiMICFailureInfo.ucIV1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070021653 pHalMicFailureInd->info.IV1;
Jeff Johnsone7245742012-09-05 17:12:55 -070021654 wdiInd.wdiIndicationData.wdiMICFailureInfo.keyId=
Jeff Johnson295189b2012-06-20 16:38:30 -070021655 pHalMicFailureInd->info.keyId;
21656 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.TSC,
21657 pHalMicFailureInd->info.TSC,WDI_CIPHER_SEQ_CTR_SIZE);
21658 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiMICFailureInfo.macRxAddr,
21659 pHalMicFailureInd->info.rxMacAddr, WDI_MAC_ADDR_LEN);
ltimariub77f24b2013-01-24 18:54:33 -080021660
21661 if ( pWDICtx->wdiLowLevelIndCB )
21662 {
21663 /*Notify UMAC*/
21664 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21665 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021666
21667 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021668}/*WDI_ProcessMicFailureInd*/
21669
21670
21671/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021672 @brief Process Fatal Failure Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021673 an indication of this kind is being received over the
21674 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021675
21676 @param pWDICtx: pointer to the WLAN DAL context
21677 pEventData: pointer to the event information structure
21678
Jeff Johnson295189b2012-06-20 16:38:30 -070021679 @see
21680 @return Result of the function call
21681*/
21682WDI_Status
21683WDI_ProcessFatalErrorInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021684(
Jeff Johnson295189b2012-06-20 16:38:30 -070021685 WDI_ControlBlockType* pWDICtx,
21686 WDI_EventInfoType* pEventData
21687)
21688{
21689 WDI_Status wdiStatus;
21690 eHalStatus halStatus;
21691 WDI_LowLevelIndType wdiInd;
21692 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21693
21694 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021695 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021696 -------------------------------------------------------------------------*/
21697 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21698 ( NULL == pEventData->pEventData))
21699 {
21700 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021701 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021702 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021703 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021704 }
21705
21706 /*-------------------------------------------------------------------------
21707 Extract indication and send it to UMAC
21708 -------------------------------------------------------------------------*/
21709
21710 /*! TO DO: Parameters need to be unpacked according to HAL struct*/
21711 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070021712 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070021713
21714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
21715 "Fatal failure received from device %d ", halStatus );
Jeff Johnsone7245742012-09-05 17:12:55 -070021716
Jeff Johnson295189b2012-06-20 16:38:30 -070021717 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021718 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
21719 wdiInd.wdiIndicationData.usErrorCode = WDI_ERR_DEV_INTERNAL_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021720
ltimariub77f24b2013-01-24 18:54:33 -080021721 if ( pWDICtx->wdiLowLevelIndCB )
21722 {
21723 /*Notify UMAC*/
21724 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21725 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021726
21727 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021728}/*WDI_ProcessFatalErrorInd*/
21729
21730/**
Jeff Johnsone7245742012-09-05 17:12:55 -070021731 @brief Process Delete STA Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070021732 an indication of this kind is being received over the
21733 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021734
21735 @param pWDICtx: pointer to the WLAN DAL context
21736 pEventData: pointer to the event information structure
21737
Jeff Johnson295189b2012-06-20 16:38:30 -070021738 @see
21739 @return Result of the function call
21740*/
21741WDI_Status
21742WDI_ProcessDelSTAInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021743(
Jeff Johnson295189b2012-06-20 16:38:30 -070021744 WDI_ControlBlockType* pWDICtx,
21745 WDI_EventInfoType* pEventData
21746)
21747{
21748 tDeleteStaContextParams halDelSTACtx;
21749 WDI_LowLevelIndType wdiInd;
21750 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21751
21752 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021753 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021754 -------------------------------------------------------------------------*/
21755 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21756 ( NULL == pEventData->pEventData))
21757 {
21758 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021759 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021760 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070021761 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021762 }
21763
21764 /*-------------------------------------------------------------------------
21765 Extract indication and send it to UMAC
21766 -------------------------------------------------------------------------*/
21767
21768 /* Parameters need to be unpacked according to HAL struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021769 wpalMemoryCopy( &halDelSTACtx,
21770 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021771 sizeof(halDelSTACtx));
21772
21773 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021774 wdiInd.wdiIndicationType = WDI_DEL_STA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070021775
21776 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macADDR2,
21777 halDelSTACtx.addr2, WDI_MAC_ADDR_LEN);
21778 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteSTAIndType.macBSSID,
21779 halDelSTACtx.bssId, WDI_MAC_ADDR_LEN);
21780
Jeff Johnsone7245742012-09-05 17:12:55 -070021781 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.usAssocId =
Jeff Johnson295189b2012-06-20 16:38:30 -070021782 halDelSTACtx.assocId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021783 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.ucSTAIdx =
Jeff Johnson295189b2012-06-20 16:38:30 -070021784 halDelSTACtx.staId;
Jeff Johnsone7245742012-09-05 17:12:55 -070021785 wdiInd.wdiIndicationData.wdiDeleteSTAIndType.wptReasonCode =
21786 halDelSTACtx.reasonCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070021787
ltimariub77f24b2013-01-24 18:54:33 -080021788 if ( pWDICtx->wdiLowLevelIndCB )
21789 {
21790 /*Notify UMAC*/
21791 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21792 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021793
21794 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021795}/*WDI_ProcessDelSTAInd*/
21796
21797/**
21798*@brief Process Coex Indication function (called when
21799 an indication of this kind is being received over the
21800 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021801
21802 @param pWDICtx: pointer to the WLAN DAL context
21803 pEventData: pointer to the event information structure
21804
Jeff Johnson295189b2012-06-20 16:38:30 -070021805 @see
21806 @return Result of the function call
21807*/
21808WDI_Status
21809WDI_ProcessCoexInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021810(
Jeff Johnson295189b2012-06-20 16:38:30 -070021811 WDI_ControlBlockType* pWDICtx,
21812 WDI_EventInfoType* pEventData
21813)
21814{
21815 WDI_LowLevelIndType wdiInd;
21816 tCoexIndMsg halCoexIndMsg;
21817 wpt_uint32 index;
21818 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21819
21820 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070021821 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070021822 -------------------------------------------------------------------------*/
21823 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21824 ( NULL == pEventData->pEventData ))
21825 {
21826 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021827 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021828 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070021829 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070021830 }
21831
21832 /*-------------------------------------------------------------------------
21833 Extract indication and send it to UMAC
21834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021835 wpalMemoryCopy( &halCoexIndMsg.coexIndParams,
21836 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021837 sizeof(halCoexIndMsg.coexIndParams) );
21838
21839 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021840 wdiInd.wdiIndicationType = WDI_COEX_IND;
21841 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType = halCoexIndMsg.coexIndParams.coexIndType;
Jeff Johnson295189b2012-06-20 16:38:30 -070021842 for (index = 0; index < WDI_COEX_IND_DATA_SIZE; index++)
21843 {
Jeff Johnsone7245742012-09-05 17:12:55 -070021844 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[index] = halCoexIndMsg.coexIndParams.coexIndData[index];
Jeff Johnson295189b2012-06-20 16:38:30 -070021845 }
21846
21847 // DEBUG
21848 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
21849 "[COEX WDI] Coex Ind Type (%x) data (%x %x %x %x)",
Jeff Johnsone7245742012-09-05 17:12:55 -070021850 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndType,
21851 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[0],
21852 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[1],
21853 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[2],
21854 wdiInd.wdiIndicationData.wdiCoexInfo.coexIndData[3] );
Jeff Johnson295189b2012-06-20 16:38:30 -070021855
ltimariub77f24b2013-01-24 18:54:33 -080021856 if ( pWDICtx->wdiLowLevelIndCB )
21857 {
21858 /*Notify UMAC*/
21859 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21860 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021861
21862 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021863}/*WDI_ProcessCoexInd*/
21864
21865/**
21866*@brief Process Tx Complete Indication function (called when
21867 an indication of this kind is being received over the
21868 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070021869
21870 @param pWDICtx: pointer to the WLAN DAL context
21871 pEventData: pointer to the event information structure
21872
Jeff Johnson295189b2012-06-20 16:38:30 -070021873 @see
21874 @return Result of the function call
21875*/
21876WDI_Status
21877WDI_ProcessTxCompleteInd
Jeff Johnsone7245742012-09-05 17:12:55 -070021878(
Jeff Johnson295189b2012-06-20 16:38:30 -070021879 WDI_ControlBlockType* pWDICtx,
21880 WDI_EventInfoType* pEventData
21881)
21882{
21883 WDI_LowLevelIndType wdiInd;
21884 tTxComplIndMsg halTxComplIndMsg;
21885 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21886
21887 /*-------------------------------------------------------------------------
21888 Sanity check
21889 -------------------------------------------------------------------------*/
21890 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21891 ( NULL == pEventData->pEventData ))
21892 {
21893 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070021894 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070021895 WDI_ASSERT( 0 );
21896 return WDI_STATUS_E_FAILURE;
21897 }
21898
21899 /*-------------------------------------------------------------------------
21900 Extract indication and send it to UMAC
21901 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021902 wpalMemoryCopy( &halTxComplIndMsg.txComplParams,
21903 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070021904 sizeof(halTxComplIndMsg.txComplParams) );
21905
21906 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070021907 wdiInd.wdiIndicationType = WDI_TX_COMPLETE_IND;
Ganesh Kondabattinie1accae2015-06-11 17:18:00 +053021908
21909 wpalMemoryCopy( &wdiInd.wdiIndicationData,
21910 &halTxComplIndMsg.txComplParams,
21911 sizeof(WDI_TxBDStatus) );
Jeff Johnson295189b2012-06-20 16:38:30 -070021912
ltimariub77f24b2013-01-24 18:54:33 -080021913 if ( pWDICtx->wdiLowLevelIndCB )
21914 {
21915 /*Notify UMAC*/
21916 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21917 }
Jeff Johnsone7245742012-09-05 17:12:55 -070021918
21919 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070021920}/*WDI_ProcessTxCompleteInd*/
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021921#ifdef FEATURE_WLAN_TDLS
21922/**
21923*@brief Process TDLS Indication function (called when
21924 an indication of this kind is being received over the
21925 bus from HAL)
Jeff Johnson295189b2012-06-20 16:38:30 -070021926
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021927 @param pWDICtx: pointer to the WLAN DAL context
21928 pEventData: pointer to the event information structure
21929
21930 @see
21931 @return Result of the function call
21932*/
21933WDI_Status
21934WDI_ProcessTdlsInd
21935(
21936 WDI_ControlBlockType* pWDICtx,
21937 WDI_EventInfoType* pEventData
21938)
21939{
21940 WDI_LowLevelIndType wdiInd;
21941 tTdlsIndMsg halTdlsIndMsg;
21942 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
21943
21944 /*-------------------------------------------------------------------------
21945 Sanity check
21946 -------------------------------------------------------------------------*/
21947 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
21948 ( NULL == pEventData->pEventData ))
21949 {
21950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
21951 "%s: Invalid parameters", __func__);
21952 WDI_ASSERT( 0 );
21953 return WDI_STATUS_E_FAILURE;
21954 }
21955
21956 /*-------------------------------------------------------------------------
21957 Extract indication and send it to UMAC
21958 -------------------------------------------------------------------------*/
21959 wpalMemoryCopy( &halTdlsIndMsg.tdlsIndParams,
21960 pEventData->pEventData,
21961 sizeof(halTdlsIndMsg.tdlsIndParams) );
21962
21963 /*Fill in the indication parameters*/
21964 wdiInd.wdiIndicationType = WDI_TDLS_IND;
21965
21966 wdiInd.wdiIndicationData.wdiTdlsIndInfo.status
21967 = halTdlsIndMsg.tdlsIndParams.status;
21968
21969 wdiInd.wdiIndicationData.wdiTdlsIndInfo.staIdx
21970 = halTdlsIndMsg.tdlsIndParams.staIdx;
21971
21972 wdiInd.wdiIndicationData.wdiTdlsIndInfo.reasonCode
21973 = halTdlsIndMsg.tdlsIndParams.reasonCode;
21974
Atul Mittalbb2aad02014-09-22 19:09:36 +053021975 wdiInd.wdiIndicationData.wdiTdlsIndInfo.assocId
21976 = halTdlsIndMsg.tdlsIndParams.assocId;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053021977 /*Notify UMAC*/
21978 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
21979
21980 return WDI_STATUS_SUCCESS;
21981}/*WDI_ProcessTdlsInd*/
21982#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +053021983
21984#ifdef WLAN_FEATURE_RMC
21985/**
21986*@brief Process Tx Fail Indication
21987
21988 @param pWDICtx: pointer to the WLAN DAL context
21989 pEventData: pointer to the event information structure
21990
21991 @see
21992 @return Result of the function call
21993*/
21994WDI_Status
21995WDI_ProcessTXFailInd
21996(
21997 WDI_ControlBlockType* pWDICtx,
21998 WDI_EventInfoType* pEventData
21999)
22000{
22001 WDI_LowLevelIndType wdiInd;
22002 tHalTXFailIndMsg halTXFailIndMsg;
22003 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22004
22005 /*-------------------------------------------------------------------------
22006 Sanity check
22007 -------------------------------------------------------------------------*/
22008 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22009 ( NULL == pEventData->pEventData ))
22010 {
22011 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22012 "%s: Invalid parameters", __func__);
22013 WDI_ASSERT( 0 );
22014 return WDI_STATUS_E_FAILURE;
22015 }
22016 /*-------------------------------------------------------------------------
22017 Extract indication and send it to UMAC
22018 -------------------------------------------------------------------------*/
22019 wpalMemoryCopy( &halTXFailIndMsg.txFailIndParams,
22020 pEventData->pEventData,
22021 sizeof(halTXFailIndMsg.txFailIndParams) );
22022
22023 /*Fill in the indication parameters*/
22024 wdiInd.wdiIndicationType = WDI_TX_FAIL_IND;
22025
22026 wdiInd.wdiIndicationData.wdiTXFailInd.seqNo
22027 = halTXFailIndMsg.txFailIndParams.seqNo;
22028
22029 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiTXFailInd.macAddr,
22030 halTXFailIndMsg.txFailIndParams.macAddr,
22031 sizeof(wdiInd.wdiIndicationData.wdiTXFailInd.macAddr));
22032
22033 /*Notify UMAC*/
22034 if (pWDICtx->wdiLowLevelIndCB)
22035 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22036
22037 return WDI_STATUS_SUCCESS;
22038}
22039#endif /* WLAN_FEATURE_RMC */
22040
Jeff Johnson295189b2012-06-20 16:38:30 -070022041/**
Viral Modid86bde22012-12-10 13:09:21 -080022042*@brief Process Noa Start Indication function (called when
22043 an indication of this kind is being received over the
22044 bus from HAL)
22045
22046 @param pWDICtx: pointer to the WLAN DAL context
22047 pEventData: pointer to the event information structure
22048
22049 @see
22050 @return Result of the function call
22051*/
22052WDI_Status
22053WDI_ProcessP2pNoaStartInd
22054(
22055 WDI_ControlBlockType* pWDICtx,
22056 WDI_EventInfoType* pEventData
22057)
22058{
22059 WDI_LowLevelIndType wdiInd;
22060 tNoaStartIndMsg halNoaStartIndMsg;
22061 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22062
22063 /*-------------------------------------------------------------------------
22064 Sanity check
22065 -------------------------------------------------------------------------*/
22066 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22067 ( NULL == pEventData->pEventData ))
22068 {
22069 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22070 "%s: Invalid parameters", __func__);
22071 WDI_ASSERT( 0 );
22072 return WDI_STATUS_E_FAILURE;
22073 }
22074
22075 /*-------------------------------------------------------------------------
22076 Extract indication and send it to UMAC
22077 -------------------------------------------------------------------------*/
22078 wpalMemoryCopy( &halNoaStartIndMsg.noaStartIndParams,
22079 pEventData->pEventData,
22080 sizeof(halNoaStartIndMsg.noaStartIndParams) );
22081
22082 /*Fill in the indication parameters*/
22083 wdiInd.wdiIndicationType = WDI_P2P_NOA_START_IND;
22084
22085 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.status
22086 = halNoaStartIndMsg.noaStartIndParams.status;
22087
22088 wdiInd.wdiIndicationData.wdiP2pNoaStartInfo.bssIdx
22089 = halNoaStartIndMsg.noaStartIndParams.bssIdx;
22090
22091 /*Notify UMAC*/
22092 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22093
22094 return WDI_STATUS_SUCCESS;
22095}/*WDI_ProcessNoaAttrInd*/
22096
22097/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022098*@brief Process Noa Attr Indication function (called when
22099 an indication of this kind is being received over the
22100 bus from HAL)
22101
22102 @param pWDICtx: pointer to the WLAN DAL context
22103 pEventData: pointer to the event information structure
22104
22105 @see
22106 @return Result of the function call
22107*/
22108WDI_Status
22109WDI_ProcessP2pNoaAttrInd
22110(
22111 WDI_ControlBlockType* pWDICtx,
22112 WDI_EventInfoType* pEventData
22113)
22114{
22115 WDI_LowLevelIndType wdiInd;
22116 tNoaAttrIndMsg halNoaAttrIndMsg;
22117 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22118
22119 /*-------------------------------------------------------------------------
22120 Sanity check
22121 -------------------------------------------------------------------------*/
22122 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22123 ( NULL == pEventData->pEventData ))
22124 {
22125 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022126 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022127 WDI_ASSERT( 0 );
22128 return WDI_STATUS_E_FAILURE;
22129 }
22130
22131 /*-------------------------------------------------------------------------
22132 Extract indication and send it to UMAC
22133 -------------------------------------------------------------------------*/
22134 wpalMemoryCopy( &halNoaAttrIndMsg.noaAttrIndParams,
22135 pEventData->pEventData,
22136 sizeof(halNoaAttrIndMsg.noaAttrIndParams) );
22137
22138 /*Fill in the indication parameters*/
22139 wdiInd.wdiIndicationType = WDI_P2P_NOA_ATTR_IND;
Jeff Johnsone7245742012-09-05 17:12:55 -070022140
Jeff Johnson295189b2012-06-20 16:38:30 -070022141 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.status
22142 = halNoaAttrIndMsg.noaAttrIndParams.status;
Jeff Johnsone7245742012-09-05 17:12:55 -070022143
Jeff Johnson295189b2012-06-20 16:38:30 -070022144 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucIndex
22145 = halNoaAttrIndMsg.noaAttrIndParams.index;
22146 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.ucOppPsFlag
22147 = halNoaAttrIndMsg.noaAttrIndParams.oppPsFlag;
22148 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usCtWin
22149 = halNoaAttrIndMsg.noaAttrIndParams.ctWin;
Jeff Johnsone7245742012-09-05 17:12:55 -070022150
Jeff Johnson295189b2012-06-20 16:38:30 -070022151 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa1IntervalCnt
22152 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1IntervalCnt;
22153 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Duration
22154 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Duration;
22155 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1Interval
22156 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1Interval;
22157 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa1StartTime
22158 = halNoaAttrIndMsg.noaAttrIndParams.uNoa1StartTime;
Jeff Johnsone7245742012-09-05 17:12:55 -070022159
Jeff Johnson295189b2012-06-20 16:38:30 -070022160 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.usNoa2IntervalCnt
22161 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2IntervalCnt;
22162 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Duration
22163 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Duration;
22164 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2Interval
22165 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2Interval;
22166 wdiInd.wdiIndicationData.wdiP2pNoaAttrInfo.uslNoa2StartTime
22167 = halNoaAttrIndMsg.noaAttrIndParams.uNoa2StartTime;
22168
ltimariub77f24b2013-01-24 18:54:33 -080022169 if ( pWDICtx->wdiLowLevelIndCB )
22170 {
22171 /*Notify UMAC*/
22172 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22173 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022174
22175 return WDI_STATUS_SUCCESS;
22176}/*WDI_ProcessNoaAttrInd*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022177
22178/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022179 @brief Process Tx PER Hit Indication function (called when
Jeff Johnson295189b2012-06-20 16:38:30 -070022180 an indication of this kind is being received over the
22181 bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070022182
22183 @param pWDICtx: pointer to the WLAN DAL context
22184 pEventData: pointer to the event information structure
22185
Jeff Johnson295189b2012-06-20 16:38:30 -070022186 @see
22187 @return Result of the function call
22188*/
22189WDI_Status
22190WDI_ProcessTxPerHitInd
Jeff Johnsone7245742012-09-05 17:12:55 -070022191(
Jeff Johnson295189b2012-06-20 16:38:30 -070022192 WDI_ControlBlockType* pWDICtx,
22193 WDI_EventInfoType* pEventData
22194)
22195{
22196 WDI_LowLevelIndType wdiInd;
22197 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070022198
Jeff Johnson295189b2012-06-20 16:38:30 -070022199 /*-------------------------------------------------------------------------
22200 Extract indication and send it to UMAC
22201 -------------------------------------------------------------------------*/
22202 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022203 wdiInd.wdiIndicationType = WDI_TX_PER_HIT_IND;
22204
ltimariub77f24b2013-01-24 18:54:33 -080022205 if ( pWDICtx->wdiLowLevelIndCB )
22206 {
22207 /*Notify UMAC*/
22208 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
22209 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022210
Jeff Johnsone7245742012-09-05 17:12:55 -070022211 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022212}/*WDI_ProcessTxPerHitInd*/
22213
Jeff Johnson295189b2012-06-20 16:38:30 -070022214/**
Yue Mab9c86f42013-08-14 15:59:08 -070022215 @brief Process Periodic Tx Pattern Fw Indication function
22216
22217 @param pWDICtx: pointer to the WLAN DAL context
22218 pEventData: pointer to the event information structure
22219
22220 @see
22221 @return Result of the function call
22222*/
22223WDI_Status
22224WDI_ProcessPeriodicTxPtrnFwInd
22225(
22226 WDI_ControlBlockType* pWDICtx,
22227 WDI_EventInfoType* pEventData
22228)
22229{
22230 WDI_LowLevelIndType wdiInd;
22231
22232 /*-------------------------------------------------------------------------
22233 Sanity check
22234 -------------------------------------------------------------------------*/
22235 if ((NULL == pWDICtx) || (NULL == pEventData) ||
22236 (NULL == pEventData->pEventData))
22237 {
22238 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
22239 "%s: Invalid parameters", __func__);
22240 WDI_ASSERT(0);
22241 return WDI_STATUS_E_FAILURE;
22242 }
22243
22244 /*-------------------------------------------------------------------------
22245 Extract indication and send it to UMAC
22246 -------------------------------------------------------------------------*/
22247 wpalMemoryCopy(&(wdiInd.wdiIndicationData.wdiPeriodicTxPtrnFwInd),
22248 (tHalPeriodicTxPtrnFwInd *)pEventData->pEventData,
22249 sizeof(tHalPeriodicTxPtrnFwInd));
22250
22251 if (pWDICtx->wdiLowLevelIndCB)
22252 {
22253 /*Notify UMAC*/
22254 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
22255 }
22256
22257 return WDI_STATUS_SUCCESS;
22258}
22259
22260/**
Jeff Johnson295189b2012-06-20 16:38:30 -070022261 @brief WDI_ProcessFTMCommandReq
22262 Process FTM Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022263
22264 @param pWDICtx: pointer to the WLAN DAL context
22265 pEventData: pointer to the event information structure
22266
Jeff Johnson295189b2012-06-20 16:38:30 -070022267 @see
22268 @return Result of the function call
22269*/
22270WDI_Status
22271WDI_ProcessFTMCommandReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022272(
Jeff Johnson295189b2012-06-20 16:38:30 -070022273 WDI_ControlBlockType* pWDICtx,
22274 WDI_EventInfoType* pEventData
22275)
22276{
22277 WDI_FTMCommandReqType *ftmCommandReq = NULL;
22278 wpt_uint8 *ftmCommandBuffer = NULL;
22279 wpt_uint16 dataOffset;
22280 wpt_uint16 bufferSize;
22281 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022282 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022283 -------------------------------------------------------------------------*/
22284 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22285 ( NULL == pEventData->pEventData))
22286
22287 {
22288 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022289 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022290 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022291 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022292 }
22293
22294 ftmCommandReq = (WDI_FTMCommandReqType *)pEventData->pEventData;
22295
22296 /* Get MSG Buffer */
22297 WDI_GetMessageBuffer(pWDICtx,
22298 WDI_FTM_CMD_REQ,
22299 ftmCommandReq->bodyLength,
22300 &ftmCommandBuffer,
22301 &dataOffset,
22302 &bufferSize);
22303
22304 wpalMemoryCopy(ftmCommandBuffer + dataOffset,
22305 ftmCommandReq->FTMCommandBody,
22306 ftmCommandReq->bodyLength);
22307
22308 /* Send MSG */
22309 return WDI_SendMsg(pWDICtx,
22310 ftmCommandBuffer,
22311 bufferSize,
22312 pEventData->pCBfnc,
22313 pEventData->pUserData,
22314 WDI_FTM_CMD_RESP);
22315}
22316
22317/**
22318 @brief WDI_ProcessFTMCommandRsp
22319 Process FTM Command Response from HAL, simply route to HDD FTM
Jeff Johnsone7245742012-09-05 17:12:55 -070022320
22321 @param pWDICtx: pointer to the WLAN DAL context
22322 pEventData: pointer to the event information structure
22323
Jeff Johnson295189b2012-06-20 16:38:30 -070022324 @see
22325 @return Result of the function call
22326*/
22327WDI_Status
22328WDI_ProcessFTMCommandRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022329(
Jeff Johnson295189b2012-06-20 16:38:30 -070022330 WDI_ControlBlockType* pWDICtx,
22331 WDI_EventInfoType* pEventData
22332)
22333{
22334 WDI_FTMCommandRspCb ftmCMDRspCb;
22335 tProcessPttRspParams *ftmCMDRspData = NULL;
22336 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22337
22338 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022339 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022340 -------------------------------------------------------------------------*/
22341 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22342 ( NULL == pEventData->pEventData))
22343 {
22344 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022345 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022346 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022347 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022348 }
22349
22350 ftmCMDRspCb = (WDI_FTMCommandRspCb)pWDICtx->pfncRspCB;
22351
22352 ftmCMDRspData = (tProcessPttRspParams *)pEventData->pEventData;
22353
Jeff Johnsone7245742012-09-05 17:12:55 -070022354 wpalMemoryCopy((void *)pWDICtx->ucFTMCommandRspBuffer,
22355 (void *)&ftmCMDRspData->pttMsgBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022356 ftmCMDRspData->pttMsgBuffer.msgBodyLength);
22357
22358 /*Notify UMAC*/
22359 ftmCMDRspCb((void *)pWDICtx->ucFTMCommandRspBuffer, pWDICtx->pRspCBUserData);
22360
Jeff Johnsone7245742012-09-05 17:12:55 -070022361 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022362}
Jeff Johnson295189b2012-06-20 16:38:30 -070022363/**
22364 @brief WDI_ProcessHalDumpCmdReq
22365 Process hal dump Command, simply route to HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070022366
22367 @param pWDICtx: pointer to the WLAN DAL context
22368 pEventData: pointer to the event information structure
22369
Jeff Johnson295189b2012-06-20 16:38:30 -070022370 @see
22371 @return Result of the function call
22372*/
22373WDI_Status
22374WDI_ProcessHALDumpCmdReq
Jeff Johnsone7245742012-09-05 17:12:55 -070022375(
Jeff Johnson295189b2012-06-20 16:38:30 -070022376 WDI_ControlBlockType* pWDICtx,
22377 WDI_EventInfoType* pEventData
22378)
22379{
22380 WDI_HALDumpCmdReqParamsType* pwdiHALDumpCmdParams = NULL;
22381 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb = NULL;
22382 wpt_uint16 usDataOffset = 0;
22383 wpt_uint16 usSendSize = 0;
22384 tHalDumpCmdReqMsg halDumpCmdReqMsg;
Jeff Johnsone7245742012-09-05 17:12:55 -070022385 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070022386
22387 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022388 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022389 -------------------------------------------------------------------------*/
22390 if (( NULL == pEventData ) ||
22391 ( NULL == pEventData->pEventData) ||
22392 ( NULL == pEventData->pCBfnc ))
22393 {
22394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022395 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022396 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022397 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022398 }
22399
22400 pwdiHALDumpCmdParams = (WDI_HALDumpCmdReqParamsType*)pEventData->pEventData;
22401 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pEventData->pCBfnc;
22402
22403 /* Copying the HAL DUMP Command Information HAL Structure*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022404 halDumpCmdReqMsg.dumpCmdReqParams.argument1 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022405 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.command;
Jeff Johnsone7245742012-09-05 17:12:55 -070022406 halDumpCmdReqMsg.dumpCmdReqParams.argument2 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022407 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022408 halDumpCmdReqMsg.dumpCmdReqParams.argument3 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022409 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument2;
Jeff Johnsone7245742012-09-05 17:12:55 -070022410 halDumpCmdReqMsg.dumpCmdReqParams.argument4 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022411 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument3;
Jeff Johnsone7245742012-09-05 17:12:55 -070022412 halDumpCmdReqMsg.dumpCmdReqParams.argument5 =
Jeff Johnson295189b2012-06-20 16:38:30 -070022413 pwdiHALDumpCmdParams->wdiHALDumpCmdInfoType.argument4;
Jeff Johnsone7245742012-09-05 17:12:55 -070022414
Jeff Johnson295189b2012-06-20 16:38:30 -070022415 /*-----------------------------------------------------------------------
22416 Get message buffer
22417 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022418 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_HAL_DUMP_CMD_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070022419 sizeof(halDumpCmdReqMsg.dumpCmdReqParams),
22420 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070022421 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070022422 (usDataOffset + sizeof(halDumpCmdReqMsg.dumpCmdReqParams) )))
22423 {
22424 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022425 "Unable to get send buffer in HAL Dump Command req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022426 pEventData, pwdiHALDumpCmdParams, wdiHALDumpCmdRspCb);
22427 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022428 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022429 }
22430
Jeff Johnsone7245742012-09-05 17:12:55 -070022431 wpalMemoryCopy( pSendBuffer+usDataOffset,
22432 &halDumpCmdReqMsg.dumpCmdReqParams,
22433 sizeof(halDumpCmdReqMsg.dumpCmdReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070022434
22435 pWDICtx->wdiReqStatusCB = pwdiHALDumpCmdParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070022436 pWDICtx->pReqStatusUserData = pwdiHALDumpCmdParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022437
22438 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022439 Send Start Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022440 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022441 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
22442 wdiHALDumpCmdRspCb, pEventData->pUserData,
22443 WDI_HAL_DUMP_CMD_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070022444}
22445
22446/**
22447 @brief WDI_ProcessHalDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022448 Process hal Dump Command Response from HAL, simply route to HDD
22449
22450 @param pWDICtx: pointer to the WLAN DAL context
22451 pEventData: pointer to the event information structure
22452
Jeff Johnson295189b2012-06-20 16:38:30 -070022453 @see
22454 @return Result of the function call
22455*/
22456WDI_Status
22457WDI_ProcessHALDumpCmdRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070022458(
Jeff Johnson295189b2012-06-20 16:38:30 -070022459 WDI_ControlBlockType* pWDICtx,
22460 WDI_EventInfoType* pEventData
22461)
22462{
22463 WDI_HALDumpCmdRspCb wdiHALDumpCmdRspCb;
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022464 tHalDumpCmdRspParams halDumpCmdRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070022465 WDI_HALDumpCmdRspParamsType wdiHALDumpCmdRsp;
22466
22467 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022468 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022469 -------------------------------------------------------------------------*/
22470 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
22471 ( NULL == pEventData->pEventData))
22472 {
22473 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022474 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022475 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022476 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022477 }
22478
Jeff Johnsone7245742012-09-05 17:12:55 -070022479 wdiHALDumpCmdRspCb = (WDI_HALDumpCmdRspCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070022480
22481 /*Initialize the WDI Response structure */
22482 wdiHALDumpCmdRsp.usBufferLen = 0;
22483 wdiHALDumpCmdRsp.pBuffer = NULL;
22484
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022485 wpalMemoryCopy( &halDumpCmdRspParams,
22486 pEventData->pEventData,
22487 sizeof(tHalDumpCmdRspParams));
Jeff Johnsone7245742012-09-05 17:12:55 -070022488
22489 wdiHALDumpCmdRsp.wdiStatus =
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022490 WDI_HAL_2_WDI_STATUS(halDumpCmdRspParams.status);
Jeff Johnson295189b2012-06-20 16:38:30 -070022491
22492 if (( wdiHALDumpCmdRsp.wdiStatus == WDI_STATUS_SUCCESS) &&
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022493 (halDumpCmdRspParams.rspLength != 0))
Jeff Johnson295189b2012-06-20 16:38:30 -070022494 {
22495 /* Copy the response data */
Gopichand Nakkalafab3fae2013-01-07 15:01:01 -080022496 wdiHALDumpCmdRsp.usBufferLen = halDumpCmdRspParams.rspLength;
22497 wdiHALDumpCmdRsp.pBuffer = wpalMemoryAllocate(halDumpCmdRspParams.rspLength);
22498
22499 wpalMemoryCopy( wdiHALDumpCmdRsp.pBuffer,
22500 &halDumpCmdRspParams.rspBuffer,
Gopichand Nakkala089c2582013-04-04 15:40:10 +053022501 halDumpCmdRspParams.rspLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070022502 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022503
Jeff Johnson295189b2012-06-20 16:38:30 -070022504 /*Notify UMAC*/
22505 wdiHALDumpCmdRspCb(&wdiHALDumpCmdRsp, pWDICtx->pRspCBUserData);
22506
22507 if(wdiHALDumpCmdRsp.pBuffer != NULL)
22508 {
22509 /* Free the allocated buffer */
22510 wpalMemoryFree(wdiHALDumpCmdRsp.pBuffer);
22511 }
22512 return WDI_STATUS_SUCCESS;
22513}
22514
22515/*==========================================================================
22516 CONTRL TRANSPORT INTERACTION
Jeff Johnsone7245742012-09-05 17:12:55 -070022517
Jeff Johnson295189b2012-06-20 16:38:30 -070022518 Callback function registered with the control transport - for receiving
Jeff Johnsone7245742012-09-05 17:12:55 -070022519 notifications and packets
Jeff Johnson295189b2012-06-20 16:38:30 -070022520==========================================================================*/
22521/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022522 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022523 when it wishes to send up a notification like the ones
22524 mentioned above.
Jeff Johnsone7245742012-09-05 17:12:55 -070022525
Jeff Johnson295189b2012-06-20 16:38:30 -070022526 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022527
22528 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022529 wctsEvent: the event being notified
Jeff Johnsone7245742012-09-05 17:12:55 -070022530 wctsNotifyCBData: the callback data of the user
22531
Jeff Johnson295189b2012-06-20 16:38:30 -070022532 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022533
22534 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022535*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022536void
Jeff Johnson295189b2012-06-20 16:38:30 -070022537WDI_NotifyMsgCTSCB
22538(
Jeff Johnsone7245742012-09-05 17:12:55 -070022539 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022540 WCTS_NotifyEventType wctsEvent,
22541 void* wctsNotifyCBData
22542)
22543{
Jeff Johnsone7245742012-09-05 17:12:55 -070022544 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsNotifyCBData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022545 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22546
22547 if (NULL == pWDICtx )
22548 {
22549 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022550 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022551 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022552 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022553 }
22554
22555 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22556 {
22557 /* callback presumably occurred after close */
22558 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022559 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022560 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022561 }
22562
22563 if ( WCTS_EVENT_OPEN == wctsEvent )
22564 {
22565 /*Flag must be set atomically as it is checked from incoming request
22566 functions*/
22567 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022568 pWDICtx->bCTOpened = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022569
22570 /*Nothing to do - so try to dequeue any pending request that may have
22571 occurred while we were trying to establish this*/
22572 WDI_DequeuePendingReq(pWDICtx);
Jeff Johnsone7245742012-09-05 17:12:55 -070022573 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070022574 }
Jeff Johnsone7245742012-09-05 17:12:55 -070022575 else if ( WCTS_EVENT_CLOSE == wctsEvent )
Jeff Johnson295189b2012-06-20 16:38:30 -070022576 {
22577 /*Flag must be set atomically as it is checked from incoming request
22578 functions*/
22579 wpalMutexAcquire(&pWDICtx->wptMutex);
Jeff Johnsone7245742012-09-05 17:12:55 -070022580 pWDICtx->bCTOpened = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022581
22582 /*No other request will be processed from now on - fail all*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022583 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070022584 wpalMutexRelease(&pWDICtx->wptMutex);
22585
22586 /*Notify that the Control Channel is closed */
22587 wpalEventSet(&pWDICtx->wctsActionEvent);
22588 }
22589
22590}/*WDI_NotifyMsgCTSCB*/
22591
22592
22593/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022594 @brief This callback is invoked by the control transport
Jeff Johnson295189b2012-06-20 16:38:30 -070022595 when it wishes to send up a packet received over the
22596 bus.
Jeff Johnsone7245742012-09-05 17:12:55 -070022597
Jeff Johnson295189b2012-06-20 16:38:30 -070022598 @param
Jeff Johnsone7245742012-09-05 17:12:55 -070022599
22600 wctsHandle: handle to the control transport service
Jeff Johnson295189b2012-06-20 16:38:30 -070022601 pMsg: the packet
22602 uLen: the packet length
Jeff Johnsone7245742012-09-05 17:12:55 -070022603 wctsRxMsgCBData: the callback data of the user
22604
Jeff Johnson295189b2012-06-20 16:38:30 -070022605 @see WCTS_OpenTransport
Jeff Johnsone7245742012-09-05 17:12:55 -070022606
22607 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070022608*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022609void
22610WDI_RXMsgCTSCB
Jeff Johnson295189b2012-06-20 16:38:30 -070022611(
Jeff Johnsone7245742012-09-05 17:12:55 -070022612 WCTS_HandleType wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022613 void* pMsg,
22614 wpt_uint32 uLen,
22615 void* wctsRxMsgCBData
22616)
22617{
Jeff Johnsone7245742012-09-05 17:12:55 -070022618 tHalMsgHeader *pHalMsgHeader;
22619 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022620 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)wctsRxMsgCBData;
22621 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22622
22623 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022624 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070022625 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022626 if ((NULL == pWDICtx ) || ( NULL == pMsg ) ||
Jeff Johnson295189b2012-06-20 16:38:30 -070022627 ( uLen < sizeof(tHalMsgHeader)))
22628 {
22629 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022630 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070022631 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022632 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022633 }
22634
22635 if (WDI_CONTROL_BLOCK_MAGIC != pWDICtx->magic)
22636 {
22637 /* callback presumably occurred after close */
22638 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070022639 "%s: Invalid control block", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070022640 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022641 }
22642
Jeff Johnsone7245742012-09-05 17:12:55 -070022643 /*The RX Callback is expected to be serialized in the proper control thread
Jeff Johnson295189b2012-06-20 16:38:30 -070022644 context - so no serialization is necessary here
22645 ! - revisit this assumption */
22646
22647 pHalMsgHeader = (tHalMsgHeader *)pMsg;
22648
22649 if ( uLen != pHalMsgHeader->msgLen )
22650 {
22651 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22652 "Invalid packet received from HAL - catastrophic failure");
Jeff Johnsone7245742012-09-05 17:12:55 -070022653 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_INVALID_RSP_FMT);
Katya Nigamf02ad012014-05-05 16:12:49 +053022654 wpalWlanReload();
22655
Jeff Johnsone7245742012-09-05 17:12:55 -070022656 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070022657 }
22658
22659 wdiEventData.wdiResponse = HAL_2_WDI_RSP_TYPE( pHalMsgHeader->msgType );
22660
22661 /*The message itself starts after the header*/
22662 wdiEventData.pEventData = (wpt_uint8*)pMsg + sizeof(tHalMsgHeader);
22663 wdiEventData.uEventDataSize = pHalMsgHeader->msgLen - sizeof(tHalMsgHeader);
22664 wdiEventData.pCBfnc = gWDICb.pfncRspCB;
22665 wdiEventData.pUserData = gWDICb.pRspCBUserData;
22666
22667
22668 if ( wdiEventData.wdiResponse == pWDICtx->wdiExpectedResponse )
22669 {
22670 /*Stop the timer as the response was received */
22671 /*!UT - check for potential race conditions between stop and response */
22672 wpalTimerStop(&pWDICtx->wptResponseTimer);
22673 }
22674 /* Check if we receive a response message which is not expected */
22675 else if ( wdiEventData.wdiResponse < WDI_HAL_IND_MIN )
22676 {
22677 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22678 "Received response %s (%d) when expecting %s (%d) - catastrophic failure",
22679 WDI_getRespMsgString(wdiEventData.wdiResponse),
Jeff Johnsone7245742012-09-05 17:12:55 -070022680 wdiEventData.wdiResponse,
Jeff Johnson295189b2012-06-20 16:38:30 -070022681 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22682 pWDICtx->wdiExpectedResponse);
Sameer Thalappil4bb20cb2013-11-15 14:50:51 -080022683
22684 if (gWDICb.bEnableSSR == false)
22685 {
22686 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22687 "SSR is not enabled on WDI timeout");
22688 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
22689 return;
22690 }
22691 wpalWcnssResetIntr();
22692 /* if this timer fires, it means Riva did not receive the FIQ */
22693 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
22694
Jeff Johnson295189b2012-06-20 16:38:30 -070022695 return;
22696 }
22697
22698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
22699 "Rx smth from HAL: %d", wdiEventData.wdiResponse);
22700
22701 /*Post response event to the state machine*/
22702 WDI_PostMainEvent(pWDICtx, WDI_RESPONSE_EVENT, &wdiEventData);
22703
22704}/*WDI_RXMsgCTSCB*/
22705
22706
22707/*========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070022708 Internal Helper Routines
Jeff Johnson295189b2012-06-20 16:38:30 -070022709========================================================================*/
22710
22711/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022712 @brief WDI_CleanCB - internal helper routine used to clean the
Jeff Johnson295189b2012-06-20 16:38:30 -070022713 WDI Main Control Block
Jeff Johnsone7245742012-09-05 17:12:55 -070022714
Jeff Johnson295189b2012-06-20 16:38:30 -070022715 @param pWDICtx - pointer to the control block
22716
22717 @return Result of the function call
22718*/
22719WPT_INLINE WDI_Status
22720WDI_CleanCB
22721(
22722 WDI_ControlBlockType* pWDICtx
22723)
22724{
22725 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22726
22727 /*Clean the WDI Control Block*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022728 wpalMemoryZero( pWDICtx, sizeof(*pWDICtx));
Jeff Johnson295189b2012-06-20 16:38:30 -070022729
Jeff Johnsone7245742012-09-05 17:12:55 -070022730 pWDICtx->uGlobalState = WDI_MAX_ST;
Jeff Johnson295189b2012-06-20 16:38:30 -070022731 pWDICtx->ucMaxBssids = WDI_MAX_SUPPORTED_BSS;
22732 pWDICtx->ucMaxStations = WDI_MAX_SUPPORTED_STAS;
22733
22734 WDI_ResetAssocSessions( pWDICtx );
22735
22736 return WDI_STATUS_SUCCESS;
22737}/*WDI_CleanCB*/
22738
22739
22740/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022741 @brief Process request helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070022742
Jeff Johnsone7245742012-09-05 17:12:55 -070022743
22744 @param pWDICtx: pointer to the WLAN DAL context
22745 pEventData: pointer to the event information structure
22746
Jeff Johnson295189b2012-06-20 16:38:30 -070022747 @see
22748 @return Result of the function call
22749*/
22750WPT_INLINE WDI_Status
22751WDI_ProcessRequest
22752(
22753 WDI_ControlBlockType* pWDICtx,
22754 WDI_EventInfoType* pEventData
22755)
22756{
22757 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22758
Jeff Johnsone7245742012-09-05 17:12:55 -070022759 /*!! Skip sanity check as this is called from the FSM functionss which
Jeff Johnson295189b2012-06-20 16:38:30 -070022760 already checked these pointers*/
22761
22762 if (( pEventData->wdiRequest < WDI_MAX_UMAC_IND ) &&
22763 ( NULL != pfnReqProcTbl[pEventData->wdiRequest] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070022764 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022765 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080022766 "Calling request processing function for req %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070022767 WDI_getReqMsgString(pEventData->wdiRequest),
22768 pEventData->wdiRequest, pfnReqProcTbl[pEventData->wdiRequest]);
22769 return pfnReqProcTbl[pEventData->wdiRequest](pWDICtx, pEventData);
22770 }
22771 else
22772 {
22773 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070022774 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070022775 pEventData->wdiRequest);
22776 return WDI_STATUS_E_NOT_IMPLEMENT;
22777 }
22778}/*WDI_ProcessRequest*/
22779
22780
22781/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022782 @brief Get message helper function - it allocates memory for a
Jeff Johnson295189b2012-06-20 16:38:30 -070022783 message that is to be sent to HAL accross the bus and
Jeff Johnsone7245742012-09-05 17:12:55 -070022784 prefixes it with a send message header
22785
22786 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022787 wdiReqType: type of the request being sent
22788 uBufferLen: message buffer len
22789 pMsgBuffer: resulting allocated buffer
22790 pusDataOffset: offset in the buffer where the caller
22791 can start copying its message data
22792 puBufferSize: the resulting buffer size (offset+buff
22793 len)
Jeff Johnsone7245742012-09-05 17:12:55 -070022794
Jeff Johnson295189b2012-06-20 16:38:30 -070022795 @see
22796 @return Result of the function call
22797*/
22798WDI_Status
22799WDI_GetMessageBuffer
Jeff Johnsone7245742012-09-05 17:12:55 -070022800(
22801 WDI_ControlBlockType* pWDICtx,
22802 WDI_RequestEnumType wdiReqType,
Jeff Johnson295189b2012-06-20 16:38:30 -070022803 wpt_uint16 usBufferLen,
Jeff Johnsone7245742012-09-05 17:12:55 -070022804 wpt_uint8** pMsgBuffer,
22805 wpt_uint16* pusDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070022806 wpt_uint16* pusBufferSize
22807)
22808{
22809 tHalMsgHeader halMsgHeader;
22810 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
22811
Jeff Johnsone7245742012-09-05 17:12:55 -070022812 /*!! No sanity check here as we trust the called - ! check this assumption
Jeff Johnson295189b2012-06-20 16:38:30 -070022813 again*/
22814
22815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022816 Try to allocate message buffer from PAL
Jeff Johnson295189b2012-06-20 16:38:30 -070022817 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022818 *pusBufferSize = sizeof(halMsgHeader) + usBufferLen;
Jeff Johnson295189b2012-06-20 16:38:30 -070022819 *pMsgBuffer = (wpt_uint8*)wpalMemoryAllocate(*pusBufferSize);
22820 if ( NULL == *pMsgBuffer )
22821 {
22822 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
22823 "Unable to allocate message buffer for req %s (%d)",
22824 WDI_getReqMsgString(wdiReqType),
Jeff Johnsone7245742012-09-05 17:12:55 -070022825 wdiReqType);
Jeff Johnson295189b2012-06-20 16:38:30 -070022826 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070022827 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022828 }
22829
22830 /*-------------------------------------------------------------------------
22831 Fill in the message header
22832 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022833 halMsgHeader.msgType = WDI_2_HAL_REQ_TYPE(wdiReqType);
22834 /* Fill msgVersion */
22835#ifdef WLAN_FEATURE_11AC
22836 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022837 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION1;
Jeff Johnsone7245742012-09-05 17:12:55 -070022838 else
22839#endif
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070022840 halMsgHeader.msgVersion = WLAN_HAL_MSG_VERSION0;
Jeff Johnson295189b2012-06-20 16:38:30 -070022841
Jeff Johnsone7245742012-09-05 17:12:55 -070022842 halMsgHeader.msgLen = sizeof(halMsgHeader) + usBufferLen;
22843 *pusDataOffset = sizeof(halMsgHeader);
Kapil Guptab3a981b2016-06-26 13:36:51 +053022844
Jeff Johnsone7245742012-09-05 17:12:55 -070022845 wpalMemoryCopy(*pMsgBuffer, &halMsgHeader, sizeof(halMsgHeader));
22846
22847 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070022848}/*WDI_GetMessageBuffer*/
22849
22850
22851/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022852 @brief Send message helper function - sends a message over the
Jeff Johnson295189b2012-06-20 16:38:30 -070022853 bus using the control tranport and saves some info in
Jeff Johnsone7245742012-09-05 17:12:55 -070022854 the CB
22855
22856 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022857 pSendBuffer: buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022858
Jeff Johnson295189b2012-06-20 16:38:30 -070022859 usSendSize size of the buffer to be sent
22860 pRspCb: response callback - save in the WDI
22861 CB
22862 pUserData: user data associated with the
22863 callback
22864 wdiExpectedResponse: the code of the response that is
22865 expected to be rx-ed for this request
Jeff Johnsone7245742012-09-05 17:12:55 -070022866
Jeff Johnson295189b2012-06-20 16:38:30 -070022867 @see
22868 @return Result of the function call
22869*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022870WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022871WDI_SendMsg
Jeff Johnsone7245742012-09-05 17:12:55 -070022872(
22873 WDI_ControlBlockType* pWDICtx,
22874 wpt_uint8* pSendBuffer,
22875 wpt_uint32 usSendSize,
22876 void* pRspCb,
Jeff Johnson295189b2012-06-20 16:38:30 -070022877 void* pUserData,
22878 WDI_ResponseEnumType wdiExpectedResponse
22879)
22880{
Jeff Johnsond13512a2012-07-17 11:42:19 -070022881 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022882 wpt_uint32 ret;
Jeff Johnson295189b2012-06-20 16:38:30 -070022883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22884
22885 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022886 Save needed info in the CB
Jeff Johnson295189b2012-06-20 16:38:30 -070022887 ------------------------------------------------------------------------*/
22888 pWDICtx->pRspCBUserData = pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070022889 pWDICtx->pfncRspCB = pRspCb;
22890 pWDICtx->wdiExpectedResponse = wdiExpectedResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070022891
22892 /*-----------------------------------------------------------------------
22893 Call the CTS to send this message over - free message afterwards
22894 - notify transport failure
22895 Note: CTS is reponsible for freeing the message buffer.
22896 -----------------------------------------------------------------------*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022897 ret = WCTS_SendMessage(pWDICtx->wctsHandle, (void*)pSendBuffer, usSendSize);
22898 if ((eWLAN_PAL_STATUS_SUCCESS != ret) &&
22899 (eWLAN_PAL_STATUS_E_RESOURCES != ret))
Jeff Johnson295189b2012-06-20 16:38:30 -070022900 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Siddharth Bhalceddd5d2014-03-21 15:00:19 +053022902 "Failed to send message with expected response %s (%d)"
22903 " over the bus - catastrophic failure",
22904 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22905 pWDICtx->wdiExpectedResponse);
Jeff Johnson295189b2012-06-20 16:38:30 -070022906
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022907 wdiStatus = (ret == eWLAN_PAL_STATUS_E_FAILURE) ?
22908 WDI_STATUS_DEV_INTERNAL_FAILURE : WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070022909 }
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022910 else
22911 {
22912 /* even when message was placed in CTS deferred Q, we will treat it
22913 success but log this info
22914 */
22915 if (eWLAN_PAL_STATUS_E_RESOURCES == ret)
22916 {
22917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
22918 "WDI_SendMsg: message placed in CTS deferred Q, expected "
22919 "response %s (%d)",
22920 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
22921 pWDICtx->wdiExpectedResponse);
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022922 WDI_ASSERT(0);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022923 }
22924 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022925
Jeff Johnsond13512a2012-07-17 11:42:19 -070022926 /*Check if originator provided a request status callback*/
Jeff Johnson295189b2012-06-20 16:38:30 -070022927 if ( NULL != pWDICtx->wdiReqStatusCB )
22928 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022929 /*Inform originator whether request went through or not*/
22930 WDI_ReqStatusCb callback = pWDICtx->wdiReqStatusCB;
22931 void *callbackContext = pWDICtx->pReqStatusUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070022932 pWDICtx->wdiReqStatusCB = NULL;
22933 pWDICtx->pReqStatusUserData = NULL;
Jeff Johnsond13512a2012-07-17 11:42:19 -070022934 callback(wdiStatus, callbackContext);
22935
22936 /*For WDI requests which have registered a request callback,
22937 inform the WDA caller of the same via setting the return value
22938 (wdiStatus) to WDI_STATUS_PENDING. This makes sure that WDA doesnt
22939 end up repeating the functonality in the req callback for the
22940 WDI_STATUS_E_FAILURE case*/
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022941 if (wdiStatus != WDI_STATUS_SUCCESS)
22942 {
Jeff Johnsond13512a2012-07-17 11:42:19 -070022943 wdiStatus = WDI_STATUS_PENDING;
Mahesh A Saptasagar329813b2014-12-15 12:16:51 +053022944 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022945 }
22946
Jeff Johnsond13512a2012-07-17 11:42:19 -070022947 if ( wdiStatus == WDI_STATUS_SUCCESS )
22948 {
Jeff Johnson295189b2012-06-20 16:38:30 -070022949 /*Start timer for the expected response */
22950 wpalTimerStart(&pWDICtx->wptResponseTimer, WDI_RESPONSE_TIMEOUT);
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080022951
22952 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080022953 pWDICtx->uTimeStampRspTmrStart = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080022954 pWDICtx->uArchTimeStampRspTmrStart = wpalGetArchCounterTime();
Jeff Johnsond13512a2012-07-17 11:42:19 -070022955 }
22956 else
22957 {
Jeff Johnson902c9832012-12-10 14:28:09 -080022958 /*Inform upper stack layers that a transport fatal error occurred*/
Jeff Johnsond13512a2012-07-17 11:42:19 -070022959 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
22960 }
Jeff Johnson295189b2012-06-20 16:38:30 -070022961
Jeff Johnsond13512a2012-07-17 11:42:19 -070022962 return wdiStatus;
22963
Jeff Johnson295189b2012-06-20 16:38:30 -070022964}/*WDI_SendMsg*/
22965
22966
22967
22968/**
Jeff Johnsone7245742012-09-05 17:12:55 -070022969 @brief Send indication helper function - sends a message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022970 the bus using the control transport and saves some info
22971 in the CB
Jeff Johnsone7245742012-09-05 17:12:55 -070022972
22973 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070022974 pSendBuffer: buffer to be sent
22975 usSendSize: size of the buffer to be sent
Jeff Johnsone7245742012-09-05 17:12:55 -070022976
Jeff Johnson295189b2012-06-20 16:38:30 -070022977 @see
22978 @return Result of the function call
22979*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022980WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070022981WDI_SendIndication
Jeff Johnsone7245742012-09-05 17:12:55 -070022982(
22983 WDI_ControlBlockType* pWDICtx,
22984 wpt_uint8* pSendBuffer,
Jeff Johnson295189b2012-06-20 16:38:30 -070022985 wpt_uint32 usSendSize
22986)
22987{
22988 wpt_uint32 uStatus ;
22989 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
22990
22991 /*-----------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070022992 Call the CTS to send this message over
Jeff Johnson295189b2012-06-20 16:38:30 -070022993 Note: CTS is reponsible for freeing the message buffer.
22994 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070022995 uStatus = WCTS_SendMessage( pWDICtx->wctsHandle,
Jeff Johnson295189b2012-06-20 16:38:30 -070022996 (void*)pSendBuffer, usSendSize );
22997
22998 /*Inform Upper MAC about the outcome of the request*/
22999 if ( NULL != pWDICtx->wdiReqStatusCB )
23000 {
23001 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23002 "Send indication status : %d", uStatus);
23003
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023004 /* even if CTS placed indication into its deferred Q, we treat it
23005 * as success and let CTS drain its queue as per smd interrupt to CTS
23006 */
23007 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 -070023008 pWDICtx->pReqStatusUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070023009 }
23010
23011 /*If sending of the message failed - it is considered catastrophic and
23012 indicates an error with the device*/
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023013 if (( eWLAN_PAL_STATUS_SUCCESS != uStatus) &&
23014 ( eWLAN_PAL_STATUS_E_RESOURCES != uStatus))
23015
Jeff Johnson295189b2012-06-20 16:38:30 -070023016 {
23017 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023018 "Failed to send indication over the bus - catastrophic failure");
Jeff Johnson295189b2012-06-20 16:38:30 -070023019
23020 WDI_DetectedDeviceError( pWDICtx, WDI_ERR_TRANSPORT_FAILURE);
23021 return WDI_STATUS_E_FAILURE;
23022 }
23023
Jeff Johnsone7245742012-09-05 17:12:55 -070023024 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023025}/*WDI_SendIndication*/
23026
23027
23028/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023029 @brief WDI_DetectedDeviceError - called internally by DAL when
23030 it has detected a failure in the device
23031
23032 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023033 usErrorCode: error code detected by WDI or received
23034 from HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070023035
Jeff Johnson295189b2012-06-20 16:38:30 -070023036 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023037 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023038*/
23039void
23040WDI_DetectedDeviceError
23041(
23042 WDI_ControlBlockType* pWDICtx,
23043 wpt_uint16 usErrorCode
23044)
23045{
23046 WDI_LowLevelIndType wdiInd;
23047 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23048
23049 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23050 "Device Error detected code: %d - transitioning to stopped state",
23051 usErrorCode);
23052
Katya Nigamf02ad012014-05-05 16:12:49 +053023053 pWDICtx->DeviceErrorReason = VOS_RETURN_ADDRESS;
23054
Jeff Johnson295189b2012-06-20 16:38:30 -070023055 wpalMutexAcquire(&pWDICtx->wptMutex);
23056
23057 WDI_STATableStop(pWDICtx);
23058
23059 WDI_ResetAssocSessions(pWDICtx);
23060
23061 /*Set the expected state transition to stopped - because the device
23062 experienced a failure*/
23063 pWDICtx->ucExpectedStateTransition = WDI_STOPPED_ST;
23064
23065 /*Transition to stopped to fail all incomming requests from this point on*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023066 WDI_STATE_TRANSITION( pWDICtx, WDI_STOPPED_ST);
Jeff Johnson295189b2012-06-20 16:38:30 -070023067
Jeff Johnsone7245742012-09-05 17:12:55 -070023068 WDI_ClearPendingRequests(pWDICtx);
Jeff Johnson295189b2012-06-20 16:38:30 -070023069
23070 /*TO DO: - there should be an attempt to reset the device here*/
23071
23072 wpalMutexRelease(&pWDICtx->wptMutex);
23073
23074 /*------------------------------------------------------------------------
23075 Notify UMAC if a handler is registered
23076 ------------------------------------------------------------------------*/
23077 if (pWDICtx->wdiLowLevelIndCB)
23078 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023079 wdiInd.wdiIndicationType = WDI_FATAL_ERROR_IND;
23080 wdiInd.wdiIndicationData.usErrorCode = usErrorCode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023081
23082 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData);
23083 }
23084}/*WDI_DetectedDeviceError*/
23085
23086/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023087 @brief This callback is invoked by the wpt when a timer that
Jeff Johnson295189b2012-06-20 16:38:30 -070023088 we started on send message has expire - this should
23089 never happen - it means device is stuck and cannot
Jeff Johnsone7245742012-09-05 17:12:55 -070023090 reply - trigger catastrophic failure
23091 @param
23092
Jeff Johnson295189b2012-06-20 16:38:30 -070023093 pUserData: the callback data of the user (ptr to WDI CB)
Jeff Johnsone7245742012-09-05 17:12:55 -070023094
23095 @see
23096 @return None
Jeff Johnson295189b2012-06-20 16:38:30 -070023097*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023098void
Jeff Johnson295189b2012-06-20 16:38:30 -070023099WDI_ResponseTimerCB
23100(
23101 void *pUserData
23102)
23103{
23104 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
23105 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23106
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023107 if (NULL == pWDICtx)
Jeff Johnson295189b2012-06-20 16:38:30 -070023108 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023109 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023110 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023111 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023112 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023113 }
23114
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023115 /*cache current timestamp for debugging */
Gopichand Nakkala3c5b0632012-12-23 08:30:59 -080023116 pWDICtx->uTimeStampRspTmrExp = wpalGetSystemTime();
Arif Hussain6c8947a2013-11-27 13:57:14 -080023117 pWDICtx->uArchTimeStampRspTmrExp = wpalGetArchCounterTime();
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023118
23119 /* If response timer is running at this time that means this timer
23120 * event is not for the last request but rather last-to-last request and
23121 * this timer event has come after we recevied respone for last-to-last
23122 * message
23123 */
23124 if (VOS_TIMER_STATE_RUNNING == wpalTimerGetCurStatus(&pWDICtx->wptResponseTimer))
23125 {
23126 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23127 "WDI_ResponseTimerCB: timer in running state on timer event, "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023128 "ignore tmr event, timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023129 pWDICtx->uTimeStampRspTmrStart, pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023130 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23131 "uArchTimeStampTmrStart: %llu seconds, "
23132 "uArchTimeStampTmrExp: %llu seconds",
23133 pWDICtx->uArchTimeStampRspTmrStart,
23134 pWDICtx->uArchTimeStampRspTmrExp);
23135
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023136 return;
23137 }
23138
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023139 if (WDI_MAX_RESP != pWDICtx->wdiExpectedResponse)
Jeff Johnson295189b2012-06-20 16:38:30 -070023140 {
23141
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023142 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnson295189b2012-06-20 16:38:30 -070023143 "Timeout occurred while waiting for %s (%d) message from device "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023144 " - catastrophic failure, timeStampTmrStart: %u, timeStampTmrExp: %u",
Jeff Johnson295189b2012-06-20 16:38:30 -070023145 WDI_getRespMsgString(pWDICtx->wdiExpectedResponse),
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023146 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23147 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023148 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23149 "uArchTimeStampTmrStart: %llu seconds, "
23150 "uArchTimeStampTmrExp: %llu seconds",
23151 pWDICtx->uArchTimeStampRspTmrStart,
23152 pWDICtx->uArchTimeStampRspTmrExp);
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023153
23154 /* WDI timeout means Riva is not responding or SMD communication to Riva
23155 * is not happening. The only possible way to recover from this error
23156 * is to initiate SSR from APPS.
23157 * There is also an option to re-enable wifi, which will eventually
23158 * trigger SSR
23159 */
23160 if (gWDICb.bEnableSSR == false)
23161 {
23162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23163 "SSR is not enabled on WDI timeout");
23164 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23165 return;
23166 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023167#ifndef WDI_RE_ENABLE_WIFI_ON_WDI_TIMEOUT
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023168 wpalWcnssResetIntr();
Siddharth Bhal4f6694f2015-02-27 17:24:21 +053023169 if(wpalIslogPInProgress())
Katya Nigam921bf202014-02-26 14:52:24 +053023170 {
Pradeep Kumar Goudagunta22d8e4d2014-07-17 15:03:51 +053023171 if(wpalIsSsrPanicOnFailure())
23172 wpalDevicePanic();
Siddharth Bhalfb2cec92014-11-13 16:22:11 +053023173 } else {
23174 /* if this timer fires, it means Riva did not receive the FIQ */
23175 wpalTimerStart(&pWDICtx->ssrTimer, WDI_SSR_TIMEOUT);
Katya Nigam921bf202014-02-26 14:52:24 +053023176 }
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023177#else
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023178 WDI_DetectedDeviceError(pWDICtx, WDI_ERR_BASIC_OP_FAILURE);
23179 wpalWlanReload();
Madan Mohan Koyyalamudia2fc6412012-10-21 12:06:12 -070023180#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070023181 }
23182 else
23183 {
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070023184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023185 "Timeout occurred but not waiting for any response %d "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023186 "timeStampTmrStart: %u, timeStampTmrExp: %u",
Gopichand Nakkalaa5e3ede2012-12-21 15:28:36 -080023187 pWDICtx->wdiExpectedResponse, pWDICtx->uTimeStampRspTmrStart,
23188 pWDICtx->uTimeStampRspTmrExp);
Arif Hussain6c8947a2013-11-27 13:57:14 -080023189 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
23190 "uArchTimeStampTmrStart: %llu seconds, "
23191 "uArchTimeStampTmrExp: %llu seconds",
23192 pWDICtx->uArchTimeStampRspTmrStart,
23193 pWDICtx->uArchTimeStampRspTmrExp);
23194
Jeff Johnson295189b2012-06-20 16:38:30 -070023195 }
23196
23197 return;
23198
23199}/*WDI_ResponseTimerCB*/
23200
23201
23202/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023203 @brief Process response helper function
Jeff Johnson295189b2012-06-20 16:38:30 -070023204
Jeff Johnsone7245742012-09-05 17:12:55 -070023205
23206 @param pWDICtx: pointer to the WLAN DAL context
23207 pEventData: pointer to the event information structure
23208
Jeff Johnson295189b2012-06-20 16:38:30 -070023209 @see
23210 @return Result of the function call
23211*/
23212WPT_INLINE WDI_Status
23213WDI_ProcessResponse
23214(
23215 WDI_ControlBlockType* pWDICtx,
23216 WDI_EventInfoType* pEventData
23217)
23218{
23219 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23220
Jeff Johnsone7245742012-09-05 17:12:55 -070023221 /* Skip sanity check as this is called from the FSM functions which
Jeff Johnson295189b2012-06-20 16:38:30 -070023222 already checked these pointers
23223 ! - revisit this assumption */
23224 if (( pEventData->wdiResponse < WDI_MAX_RESP ) &&
23225 ( NULL != pfnRspProcTbl[pEventData->wdiResponse] ))
Jeff Johnsone7245742012-09-05 17:12:55 -070023226 {
Jeff Johnson295189b2012-06-20 16:38:30 -070023227 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080023228 "Calling response processing function for resp %s (%d) %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070023229 WDI_getRespMsgString(pEventData->wdiResponse),
23230 pEventData->wdiResponse, pfnRspProcTbl[pEventData->wdiResponse]);
23231 return pfnRspProcTbl[pEventData->wdiResponse](pWDICtx, pEventData);
23232 }
23233 else
23234 {
23235 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023236 "Operation %d is not yet implemented ",
Jeff Johnson295189b2012-06-20 16:38:30 -070023237 pEventData->wdiResponse);
23238 return WDI_STATUS_E_NOT_IMPLEMENT;
23239 }
23240}/*WDI_ProcessResponse*/
23241
23242
23243/*=========================================================================
Jeff Johnsone7245742012-09-05 17:12:55 -070023244 QUEUE SUPPORT UTILITY FUNCTIONS
Jeff Johnson295189b2012-06-20 16:38:30 -070023245=========================================================================*/
23246
23247/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023248 @brief Utility function used by the DAL Core to help queue a
23249 request that cannot be processed right away.
23250 @param
23251
Jeff Johnson295189b2012-06-20 16:38:30 -070023252 pWDICtx: - pointer to the WDI control block
23253 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023254 queued
23255
23256 @see
23257 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023258*/
23259WDI_Status
23260WDI_QueuePendingReq
23261(
23262 WDI_ControlBlockType* pWDICtx,
23263 WDI_EventInfoType* pEventData
23264)
23265{
Jeff Johnsone7245742012-09-05 17:12:55 -070023266 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023267 WDI_EventInfoType* pEventDataQueue = wpalMemoryAllocate(sizeof(*pEventData));
Jeff Johnsone7245742012-09-05 17:12:55 -070023268 void* pEventInfo = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023269 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23270
23271 if ( NULL == pEventDataQueue )
23272 {
23273 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023274 "Cannot allocate memory for queueing");
Jeff Johnson295189b2012-06-20 16:38:30 -070023275 WDI_ASSERT(0);
23276 return WDI_STATUS_MEM_FAILURE;
23277 }
23278
23279 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23280 pEventDataQueue->pUserData = pEventData->pUserData;
23281 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23282 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023283 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023284
23285 if( pEventData->uEventDataSize != 0 && pEventData->pEventData != NULL )
23286 {
23287 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
Jeff Johnsone7245742012-09-05 17:12:55 -070023288
Jeff Johnson295189b2012-06-20 16:38:30 -070023289 if ( NULL == pEventInfo )
23290 {
23291 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023292 "Cannot allocate memory for queueing event data info");
Jeff Johnson295189b2012-06-20 16:38:30 -070023293 WDI_ASSERT(0);
23294 wpalMemoryFree(pEventDataQueue);
23295 return WDI_STATUS_MEM_FAILURE;
23296 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023297
Jeff Johnson295189b2012-06-20 16:38:30 -070023298 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23299
23300 }
23301 pEventDataQueue->pEventData = pEventInfo;
23302
23303 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023304 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023305
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023306 if (eWLAN_PAL_STATUS_E_FAILURE ==
23307 wpal_list_insert_back(&(pWDICtx->wptPendingQueue), pNode))
23308 {
23309 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23310 "pEventDataQueue wpal_list_insert_back failed");
23311 WDI_ASSERT(0);
23312 wpalMemoryFree(pEventDataQueue);
23313 wpalMemoryFree(pEventInfo);
23314 return WDI_STATUS_MEM_FAILURE;
23315 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023316
23317 return WDI_STATUS_SUCCESS;
23318}/*WDI_QueuePendingReq*/
23319
23320/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023321 @brief Callback function for serializing queued message
Jeff Johnson295189b2012-06-20 16:38:30 -070023322 processing in the control context
Jeff Johnsone7245742012-09-05 17:12:55 -070023323 @param
23324
23325 pMsg - pointer to the message
23326
23327 @see
23328 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023329*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023330void
Jeff Johnson295189b2012-06-20 16:38:30 -070023331WDI_PALCtrlMsgCB
23332(
23333 wpt_msg *pMsg
23334)
23335{
23336 WDI_EventInfoType* pEventData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023337 WDI_ControlBlockType* pWDICtx = NULL;
23338 WDI_Status wdiStatus;
23339 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023340 void* pUserData;
23341 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23342
23343 if (( NULL == pMsg )||
23344 ( NULL == (pEventData = (WDI_EventInfoType*)pMsg->ptr)) ||
23345 ( NULL == (pWDICtx = (WDI_ControlBlockType*)pMsg->pContext )))
23346 {
23347 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023348 "Invalid message received on serialize ctrl context API");
Jeff Johnson295189b2012-06-20 16:38:30 -070023349 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023350 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070023351 }
23352
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023353 /*Access to the global state must be locked */
23354 wpalMutexAcquire(&pWDICtx->wptMutex);
23355
Jeff Johnson295189b2012-06-20 16:38:30 -070023356 /*Transition back to the state that we had before serialization
23357 - serialization transitions us to BUSY to stop any incomming requests
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023358 */
Jeff Johnsone7245742012-09-05 17:12:55 -070023359 WDI_STATE_TRANSITION( pWDICtx, pMsg->val);
Abhishek Singh5e67fb72015-07-16 15:10:53 +053023360 wpalMutexRelease(&pWDICtx->wptMutex);
Jeff Johnson295189b2012-06-20 16:38:30 -070023361
23362 /*-----------------------------------------------------------------------
23363 Check to see what type of event we are serializing
Jeff Johnsone7245742012-09-05 17:12:55 -070023364 - responses are never expected to come through here
Jeff Johnson295189b2012-06-20 16:38:30 -070023365 -----------------------------------------------------------------------*/
23366 switch ( pEventData->wdiRequest )
23367 {
23368
Jeff Johnsone7245742012-09-05 17:12:55 -070023369 case WDI_STOP_REQ:
Jeff Johnson295189b2012-06-20 16:38:30 -070023370 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_STOP_EVENT, pEventData);
23371 break;
23372
Jeff Johnson295189b2012-06-20 16:38:30 -070023373 case WDI_NV_DOWNLOAD_REQ:
23374 // When WDI State is WDI_STARTED_ST, send WDI request message with event type WDI_REQUEST_EVENT.
23375 // In this case, because this request is called from response process, we could call WDI_ProcessRequest() directly.
23376 if (pWDICtx->uGlobalState == WDI_STARTED_ST)
23377 {
23378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023379 "%s: WDI_NV_DOWNLOAD_REQ called in WDI_STARTED_ST - send with WDI_REQUEST_EVENT", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023380 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23381 }
23382 else
23383 {
23384 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_START_EVENT, pEventData);
23385 }
23386
23387 break;
23388
23389 default:
23390 wdiStatus = WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, pEventData);
23391 break;
23392 }/*switch ( pEventData->wdiRequest )*/
23393
Hanumantha Reddy Pothula8b854292015-09-23 10:14:12 +053023394 if (!(WDI_STATUS_SUCCESS == wdiStatus || WDI_STATUS_PENDING == wdiStatus
Gupta, Kapil7c34b322015-09-30 13:12:35 +053023395 || WDI_STATUS_SUCCESS_SYNC == wdiStatus))
Jeff Johnson295189b2012-06-20 16:38:30 -070023396 {
23397 WDI_ExtractRequestCBFromEvent(pEventData, &pfnReqStatusCB, &pUserData);
23398
23399 if ( NULL != pfnReqStatusCB )
23400 {
23401 /*Fail the request*/
23402 pfnReqStatusCB( wdiStatus, pUserData);
23403 }
23404 }
23405
23406 /* Free data - that was allocated when queueing*/
23407 if( pEventData != NULL )
23408 {
23409 if( pEventData->pEventData != NULL )
23410 {
23411 wpalMemoryFree(pEventData->pEventData);
23412 }
23413 wpalMemoryFree(pEventData);
23414 }
23415
23416 if( pMsg != NULL )
23417 {
23418 wpalMemoryFree(pMsg);
23419 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023420
Jeff Johnson295189b2012-06-20 16:38:30 -070023421}/*WDI_PALCtrlMsgCB*/
23422
23423/**
23424 @brief Utility function used by the DAL Core to help dequeue
Jeff Johnsone7245742012-09-05 17:12:55 -070023425 and schedule for execution a pending request
23426 @param
23427
Jeff Johnson295189b2012-06-20 16:38:30 -070023428 pWDICtx: - pointer to the WDI control block
23429 pEventData: - pointer to the evnt info that needs to be
Jeff Johnsone7245742012-09-05 17:12:55 -070023430 queued
23431
23432 @see
23433 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023434*/
23435WDI_Status
23436WDI_DequeuePendingReq
23437(
23438 WDI_ControlBlockType* pWDICtx
23439)
23440{
Jeff Johnsone7245742012-09-05 17:12:55 -070023441 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023442 WDI_EventInfoType* pEventData;
Jeff Johnsone7245742012-09-05 17:12:55 -070023443 wpt_msg* palMsg;
Jeff Johnson295189b2012-06-20 16:38:30 -070023444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23445
Jeff Johnsone7245742012-09-05 17:12:55 -070023446 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023447
23448 if ( NULL == pNode )
23449 {
23450 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023451 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023452 return WDI_STATUS_SUCCESS;
23453 }
23454
23455 /*The node actually points to the 1st element inside the Event Data struct -
23456 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023457 pEventData = (WDI_EventInfoType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023458
23459 /*Serialize processing in the control thread
23460 !TO DO: - check to see if these are all the messages params that need
23461 to be filled in*/
23462 palMsg = wpalMemoryAllocate(sizeof(wpt_msg));
23463
23464 if ( NULL == palMsg )
23465 {
23466 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070023467 "WDI_DequeuePendingReq: Cannot allocate memory for palMsg.");
Jeff Johnson295189b2012-06-20 16:38:30 -070023468 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070023469 return WDI_STATUS_MEM_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023470 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023471 palMsg->pContext = pWDICtx;
Jeff Johnson295189b2012-06-20 16:38:30 -070023472 palMsg->callback = WDI_PALCtrlMsgCB;
23473 palMsg->ptr = pEventData;
23474
23475 /*Save the global state as we need it on the other side*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023476 palMsg->val = pWDICtx->uGlobalState;
Leo Chang0f24ca12013-12-17 13:35:00 -080023477 palMsg->type = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070023478
Jeff Johnson295189b2012-06-20 16:38:30 -070023479 /*Transition back to BUSY as we need to handle a queued request*/
23480 WDI_STATE_TRANSITION( pWDICtx, WDI_BUSY_ST);
Jeff Johnsone7245742012-09-05 17:12:55 -070023481
Jeff Johnson295189b2012-06-20 16:38:30 -070023482 wpalPostCtrlMsg(pWDICtx->pPALContext, palMsg);
23483
23484 return WDI_STATUS_PENDING;
23485}/*WDI_DequeuePendingReq*/
23486
23487
23488/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023489 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023490 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023491 away.- The assoc requests will be queued by BSSID
23492 @param
23493
Jeff Johnson295189b2012-06-20 16:38:30 -070023494 pWDICtx: - pointer to the WDI control block
23495 pEventData: pointer to the evnt info that needs to be queued
23496 macBSSID: bssid
Jeff Johnsone7245742012-09-05 17:12:55 -070023497
23498 @see
23499 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023500*/
23501WDI_Status
23502WDI_QueueNewAssocRequest
23503(
23504 WDI_ControlBlockType* pWDICtx,
23505 WDI_EventInfoType* pEventData,
23506 wpt_macAddr macBSSID
23507)
23508{
Jeff Johnsone7245742012-09-05 17:12:55 -070023509 wpt_uint8 i;
23510 WDI_BSSSessionType* pSession = NULL;
23511 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023512 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023513 void* pEventInfo;
23514 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023515 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnson295189b2012-06-20 16:38:30 -070023516
Jeff Johnsone7245742012-09-05 17:12:55 -070023517
23518 /*------------------------------------------------------------------------
23519 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023520 ------------------------------------------------------------------------*/
23521 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23522 {
23523 if ( eWLAN_PAL_FALSE == pWDICtx->aBSSSessions[i].bInUse )
23524 {
23525 /*Found an empty session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023526 pSession = &pWDICtx->aBSSSessions[i];
23527 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070023528 }
23529 }
23530
23531 if ( i >= WDI_MAX_BSS_SESSIONS )
23532 {
23533 /*Cannot find any empty sessions*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023534 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023535 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023536
Jeff Johnson295189b2012-06-20 16:38:30 -070023537 /*------------------------------------------------------------------------
23538 Fill in the BSSID for this session and set the usage flag
23539 ------------------------------------------------------------------------*/
23540 wpalMemoryCopy(pWDICtx->aBSSSessions[i].macBSSID, macBSSID, WDI_MAC_ADDR_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070023541 pWDICtx->aBSSSessions[i].bInUse = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023542
23543 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023544 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023545 ------------------------------------------------------------------------*/
23546 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23547 if ( NULL == pEventDataQueue )
23548 {
23549 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023550 "%s: Cannot allocate memory for queue node", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023551 WDI_ASSERT(0);
23552 return WDI_STATUS_MEM_FAILURE;
23553 }
23554
23555 pSessionIdElement = (WDI_NextSessionIdType*)wpalMemoryAllocate(sizeof(WDI_NextSessionIdType));
23556 if ( NULL == pSessionIdElement )
23557 {
23558 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023559 "%s: Cannot allocate memory for session ID", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023560 WDI_ASSERT(0);
23561 wpalMemoryFree(pEventDataQueue);
23562 return WDI_STATUS_MEM_FAILURE;
23563 }
23564
23565 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23566 if ( NULL == pEventInfo )
23567 {
23568 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023569 "%s: Cannot allocate memory for event data info", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023570 WDI_ASSERT(0);
23571 wpalMemoryFree(pSessionIdElement);
23572 wpalMemoryFree(pEventDataQueue);
23573 return WDI_STATUS_MEM_FAILURE;
23574 }
23575
23576 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23577 pEventDataQueue->pUserData = pEventData->pUserData;
23578 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23579 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023580 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023581
23582 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23583 pEventDataQueue->pEventData = pEventInfo;
23584
23585 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023586 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023587
23588 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023589 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023590
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023591 if (eWLAN_PAL_STATUS_E_FAILURE ==
23592 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23593 {
23594 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23595 "%s: pEventDataQueue wpal_list_insert_back failed", __func__);
23596 WDI_ASSERT(0);
23597 wpalMemoryFree(pSessionIdElement);
23598 wpalMemoryFree(pEventDataQueue);
23599 wpalMemoryFree(pEventInfo);
23600 return WDI_STATUS_MEM_FAILURE;
23601 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023602
23603 /*We need to maintain a separate list that keeps track of the order in which
23604 the new assoc requests are being queued such that we can start processing
23605 them in the order that they had arrived*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023606 pSessionIdElement->ucIndex = i;
23607 pNode = (wpt_list_node*)pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023608
23609 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23610 "Queueing up new assoc session : %d ", pSessionIdElement->ucIndex);
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023611 if (eWLAN_PAL_STATUS_E_FAILURE ==
23612 wpal_list_insert_back(&pWDICtx->wptPendingAssocSessionIdQueue, pNode))
23613 {
23614 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23615 "%s: pSessionIdElement wpal_list_insert_back failed", __func__);
23616 WDI_ASSERT(0);
23617 wpalMemoryFree(pSessionIdElement);
23618 wpalMemoryFree(pEventDataQueue);
23619 wpalMemoryFree(pEventInfo);
23620 return WDI_STATUS_MEM_FAILURE;
23621 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023622
23623 /*Return pending as this is what the status of the request is since it has
23624 been queued*/
23625 return WDI_STATUS_PENDING;
23626}/*WDI_QueueNewAssocRequest*/
23627
23628/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023629 @brief Utility function used by the DAL Core to help queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023630 an association request that cannot be processed right
Jeff Johnsone7245742012-09-05 17:12:55 -070023631 away.- The assoc requests will be queued by BSSID
23632 @param
23633
Jeff Johnson295189b2012-06-20 16:38:30 -070023634 pWDICtx: - pointer to the WDI control block
23635 pSession: - session in which to queue
23636 pEventData: pointer to the event info that needs to be
23637 queued
Jeff Johnsone7245742012-09-05 17:12:55 -070023638
23639 @see
23640 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023641*/
23642WDI_Status
23643WDI_QueueAssocRequest
23644(
23645 WDI_ControlBlockType* pWDICtx,
23646 WDI_BSSSessionType* pSession,
23647 WDI_EventInfoType* pEventData
23648)
23649{
Jeff Johnsone7245742012-09-05 17:12:55 -070023650 wpt_list_node* pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023651 WDI_EventInfoType* pEventDataQueue;
Jeff Johnsone7245742012-09-05 17:12:55 -070023652 void* pEventInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070023653 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023654
23655 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023656 Sanity check
23657 ------------------------------------------------------------------------*/
23658 if (( NULL == pSession ) || ( NULL == pWDICtx ))
23659 {
23660 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023661 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023662
Jeff Johnsone7245742012-09-05 17:12:55 -070023663 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023664 }
23665
23666 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023667 Allocate memory for this and place it in the queue
Jeff Johnson295189b2012-06-20 16:38:30 -070023668 ------------------------------------------------------------------------*/
23669 pEventDataQueue = (WDI_EventInfoType*)wpalMemoryAllocate(sizeof(WDI_EventInfoType));
23670 if ( NULL == pEventDataQueue )
23671 {
23672 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023673 "%s: Cannot allocate memory for queueing", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023674 WDI_ASSERT(0);
23675 return WDI_STATUS_MEM_FAILURE;
23676 }
23677
23678 pEventInfo = wpalMemoryAllocate(pEventData->uEventDataSize);
23679 if ( NULL == pEventInfo )
23680 {
23681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23682 "%s: Cannot allocate memory for queueing event data info",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023683 __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023684 WDI_ASSERT(0);
23685 wpalMemoryFree(pEventDataQueue);
23686 return WDI_STATUS_MEM_FAILURE;
23687 }
23688
23689 pEventDataQueue->pCBfnc = pEventData->pCBfnc;
23690 pEventDataQueue->pUserData = pEventData->pUserData;
23691 pEventDataQueue->uEventDataSize = pEventData->uEventDataSize;
23692 pEventDataQueue->wdiRequest = pEventData->wdiRequest;
Jeff Johnsone7245742012-09-05 17:12:55 -070023693 pEventDataQueue->wdiResponse = pEventData->wdiResponse;
Jeff Johnson295189b2012-06-20 16:38:30 -070023694 pEventDataQueue->pEventData = pEventInfo;
23695
23696 wpalMemoryCopy(pEventInfo, pEventData->pEventData, pEventData->uEventDataSize);
23697
23698 /*Send wpt a pointer to the node (this is the 1st element in the event data)*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023699 pNode = (wpt_list_node*)pEventDataQueue;
Jeff Johnson295189b2012-06-20 16:38:30 -070023700
23701 /*This association is currently being queued*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023702 pSession->bAssocReqQueued = eWLAN_PAL_TRUE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023703
Pradeep Kumar Goudaguntaf5087fa2014-07-07 19:51:49 +053023704 if (eWLAN_PAL_STATUS_E_FAILURE ==
23705 wpal_list_insert_back(&(pSession->wptPendingQueue), pNode))
23706 {
23707 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
23708 "%s: Cannot allocate memory for queueing event data info",
23709 __func__);
23710 WDI_ASSERT(0);
23711 wpalMemoryFree(pEventDataQueue);
23712 wpalMemoryFree(pEventInfo);
23713 return WDI_STATUS_MEM_FAILURE;
23714 }
Jeff Johnson295189b2012-06-20 16:38:30 -070023715
23716 /*The result of this operation is pending because the request has been
23717 queued and it will be processed at a later moment in time */
23718 return WDI_STATUS_PENDING;
23719}/*WDI_QueueAssocRequest*/
23720
23721/**
23722 @brief Utility function used by the DAL Core to help dequeue
23723 an association request that was pending
23724 The request will be queued up in front of the main
23725 pending queue for imediate processing
Jeff Johnsone7245742012-09-05 17:12:55 -070023726 @param
23727
Jeff Johnson295189b2012-06-20 16:38:30 -070023728 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023729
23730
23731 @see
23732 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023733*/
23734WDI_Status
23735WDI_DequeueAssocRequest
23736(
23737 WDI_ControlBlockType* pWDICtx
23738)
23739{
Jeff Johnsone7245742012-09-05 17:12:55 -070023740 wpt_list_node* pNode = NULL;
23741 WDI_NextSessionIdType* pSessionIdElement;
Jeff Johnson295189b2012-06-20 16:38:30 -070023742 WDI_BSSSessionType* pSession;
23743 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
Jeff Johnsone7245742012-09-05 17:12:55 -070023744
23745 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070023746 Sanity check
23747 ------------------------------------------------------------------------*/
23748 if ( NULL == pWDICtx )
23749 {
23750 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023751 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070023752
Jeff Johnsone7245742012-09-05 17:12:55 -070023753 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023754 }
23755
23756 /*------------------------------------------------------------------------
23757 An association has been completed => a new association can occur
23758 Check to see if there are any pending associations ->
23759 If so , transfer all the pending requests into the busy queue for
23760 processing
23761 These requests have arrived prior to the requests in the busy queue
23762 (bc they needed to be processed in order to be placed in this queue)
23763 => they will be placed at the front of the busy queue
23764 ------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023765 wpal_list_remove_front(&(pWDICtx->wptPendingAssocSessionIdQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023766
23767 if ( NULL == pNode )
23768 {
23769 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsone7245742012-09-05 17:12:55 -070023770 "List is empty - return");
Jeff Johnson295189b2012-06-20 16:38:30 -070023771 return WDI_STATUS_SUCCESS;
23772 }
23773
23774 /*The node actually points to the 1st element inside the Session Id struct -
23775 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023776 pSessionIdElement = (WDI_NextSessionIdType*)pNode;
Jeff Johnson295189b2012-06-20 16:38:30 -070023777
23778 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
23779 "Dequeueing new assoc session : %d ", pSessionIdElement->ucIndex);
23780
23781 if ( pSessionIdElement->ucIndex < WDI_MAX_BSS_SESSIONS )
23782 {
23783 pSession = &pWDICtx->aBSSSessions[pSessionIdElement->ucIndex];
Jeff Johnsone7245742012-09-05 17:12:55 -070023784
Jeff Johnson295189b2012-06-20 16:38:30 -070023785 /*Transfer all the pending requests in this assoc queue to
Jeff Johnsone7245742012-09-05 17:12:55 -070023786 the front of the main waiting queue for subsequent execution*/
23787 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023788 while ( NULL != pNode )
23789 {
23790 /*Place it in front of the main pending list*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023791 wpal_list_insert_front( &(pWDICtx->wptPendingQueue), &pNode);
23792 wpal_list_remove_back(&(pSession->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023793 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023794 pSession->bAssocReqQueued = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023795 }
23796 else
23797 {
23798 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsone7245742012-09-05 17:12:55 -070023799 "Invalid session id queued up for assoc");
Jeff Johnson295189b2012-06-20 16:38:30 -070023800 WPAL_ASSERT(0);
23801 wpalMemoryFree(pSessionIdElement);
Jeff Johnsone7245742012-09-05 17:12:55 -070023802 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070023803 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023804
Jeff Johnson295189b2012-06-20 16:38:30 -070023805 /*Clean this up as it is no longer needed in order to prevent memory leak*/
23806 wpalMemoryFree(pSessionIdElement);
23807 return WDI_STATUS_SUCCESS;
23808}/*WDI_DequeueAssocRequest*/
23809
23810/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023811 @brief Utility function used by the DAL Core to clear any
Jeff Johnson295189b2012-06-20 16:38:30 -070023812 pending requests - all req cb will be called with
23813 failure and the queue will be emptied.
Jeff Johnsone7245742012-09-05 17:12:55 -070023814 @param
23815
Jeff Johnson295189b2012-06-20 16:38:30 -070023816 pWDICtx: - pointer to the WDI control block
Jeff Johnsone7245742012-09-05 17:12:55 -070023817
23818 @see
23819 @return Result of the operation
Jeff Johnson295189b2012-06-20 16:38:30 -070023820*/
23821WDI_Status
23822WDI_ClearPendingRequests
Jeff Johnsone7245742012-09-05 17:12:55 -070023823(
Jeff Johnson295189b2012-06-20 16:38:30 -070023824 WDI_ControlBlockType* pWDICtx
23825)
23826{
Jeff Johnsone7245742012-09-05 17:12:55 -070023827 wpt_list_node* pNode = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023828 WDI_EventInfoType* pEventDataQueue = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070023829 WDI_ReqStatusCb pfnReqStatusCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070023830 void* pUserData;
23831 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
23832
Jeff Johnsone7245742012-09-05 17:12:55 -070023833 wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode);
Jeff Johnson295189b2012-06-20 16:38:30 -070023834
23835 /*------------------------------------------------------------------------
23836 Go through all the requests and fail them - this will only be called
23837 when device is being stopped or an error was detected - either case the
Jeff Johnsone7245742012-09-05 17:12:55 -070023838 pending requests can no longer be sent down to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070023839 ------------------------------------------------------------------------*/
23840 while( pNode )
23841 {
23842 /*The node actually points to the 1st element inside the Event Data struct -
23843 just cast it back to the struct*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023844 pEventDataQueue = (WDI_EventInfoType*)pNode;
23845
Jeff Johnson295189b2012-06-20 16:38:30 -070023846 WDI_ExtractRequestCBFromEvent(pEventDataQueue, &pfnReqStatusCB, &pUserData);
23847 if ( NULL != pfnReqStatusCB )
23848 {
23849 /*Fail the request*/
23850 pfnReqStatusCB( WDI_STATUS_E_FAILURE, pUserData);
23851 }
23852 /* Free data - that was allocated when queueing */
23853 if ( pEventDataQueue->pEventData != NULL )
23854 {
23855 wpalMemoryFree(pEventDataQueue->pEventData);
23856 }
23857 wpalMemoryFree(pEventDataQueue);
23858
23859 if (wpal_list_remove_front(&(pWDICtx->wptPendingQueue), &pNode) != eWLAN_PAL_STATUS_SUCCESS)
23860 {
23861 break;
23862 }
Jeff Johnsone7245742012-09-05 17:12:55 -070023863 }
23864
Jeff Johnson295189b2012-06-20 16:38:30 -070023865 return WDI_STATUS_SUCCESS;
23866}/*WDI_ClearPendingRequests*/
23867
23868/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023869 @brief Helper routine used to init the BSS Sessions in the WDI control block
23870
23871
23872 @param pWDICtx: pointer to the WLAN DAL context
23873
Jeff Johnson295189b2012-06-20 16:38:30 -070023874 @see
23875*/
23876void
23877WDI_ResetAssocSessions
Jeff Johnsone7245742012-09-05 17:12:55 -070023878(
Jeff Johnson295189b2012-06-20 16:38:30 -070023879 WDI_ControlBlockType* pWDICtx
23880)
23881{
Jeff Johnsone7245742012-09-05 17:12:55 -070023882 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023883 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23884
23885 /*-------------------------------------------------------------------------
23886 No Sanity check
23887 -------------------------------------------------------------------------*/
23888 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23889 {
Jeff Johnsone7245742012-09-05 17:12:55 -070023890 wpalMemoryZero( &pWDICtx->aBSSSessions[i], sizeof(WDI_BSSSessionType) );
Jeff Johnson295189b2012-06-20 16:38:30 -070023891 pWDICtx->aBSSSessions[i].wdiAssocState = WDI_ASSOC_INIT_ST;
23892 pWDICtx->aBSSSessions[i].bcastStaIdx = WDI_STA_INVALID_IDX;
23893 pWDICtx->aBSSSessions[i].ucBSSIdx = WDI_BSS_INVALID_IDX;
23894 }
23895}/*WDI_ResetAssocSessions*/
23896
23897/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023898 @brief Helper routine used to find a session based on the BSSID
23899
23900
23901 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023902 macBSSID: BSSID of the session
Jeff Johnsone7245742012-09-05 17:12:55 -070023903 pSession: pointer to the session (if found)
23904
Jeff Johnson295189b2012-06-20 16:38:30 -070023905 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023906 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023907*/
23908wpt_uint8
23909WDI_FindAssocSession
Jeff Johnsone7245742012-09-05 17:12:55 -070023910(
Jeff Johnson295189b2012-06-20 16:38:30 -070023911 WDI_ControlBlockType* pWDICtx,
23912 wpt_macAddr macBSSID,
23913 WDI_BSSSessionType** ppSession
23914)
23915{
Jeff Johnsone7245742012-09-05 17:12:55 -070023916 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023917 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23918
23919 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023920 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023921 -------------------------------------------------------------------------*/
23922 if ( NULL == ppSession )
23923 {
23924 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023925 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023926 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023927 }
23928
Jeff Johnsone7245742012-09-05 17:12:55 -070023929 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023930
Jeff Johnsone7245742012-09-05 17:12:55 -070023931 /*------------------------------------------------------------------------
23932 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023933 ------------------------------------------------------------------------*/
23934 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23935 {
Madan Mohan Koyyalamudi35287862012-10-22 14:52:46 -070023936 if ( (pWDICtx->aBSSSessions[i].bInUse == eWLAN_PAL_TRUE) &&
23937 (eWLAN_PAL_TRUE ==
23938 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
23939 WDI_MAC_ADDR_LEN)) )
Jeff Johnson295189b2012-06-20 16:38:30 -070023940 {
23941 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023942 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023943 return i;
23944 }
23945 }
23946
Jeff Johnsone7245742012-09-05 17:12:55 -070023947 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023948}/*WDI_FindAssocSession*/
23949
23950/**
Jeff Johnsone7245742012-09-05 17:12:55 -070023951 @brief Helper routine used to find a session based on the BSSID
23952
23953
23954 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070023955 ucBSSIdx: BSS Index of the session
23956 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070023957
Jeff Johnson295189b2012-06-20 16:38:30 -070023958 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070023959 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070023960*/
23961wpt_uint8
23962WDI_FindAssocSessionByBSSIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070023963(
Jeff Johnson295189b2012-06-20 16:38:30 -070023964 WDI_ControlBlockType* pWDICtx,
23965 wpt_uint16 ucBSSIdx,
23966 WDI_BSSSessionType** ppSession
23967)
23968{
Jeff Johnsone7245742012-09-05 17:12:55 -070023969 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023970 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
23971
23972 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070023973 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070023974 -------------------------------------------------------------------------*/
23975 if ( NULL == ppSession )
23976 {
23977 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070023978 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070023979 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070023980 }
23981
Jeff Johnsone7245742012-09-05 17:12:55 -070023982 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070023983
Jeff Johnsone7245742012-09-05 17:12:55 -070023984 /*------------------------------------------------------------------------
23985 Search for a session that matches the BSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070023986 ------------------------------------------------------------------------*/
23987 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
23988 {
23989 if ( ucBSSIdx == pWDICtx->aBSSSessions[i].ucBSSIdx )
23990 {
23991 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070023992 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070023993 return i;
23994 }
23995 }
23996
Jeff Johnsone7245742012-09-05 17:12:55 -070023997 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070023998}/*WDI_FindAssocSessionByBSSIdx*/
23999
24000/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024001 @brief Helper routine used to find a session based on the BSSID
24002
24003
24004 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070024005 ucBSSIdx: BSS Index of the session
24006 ppSession: out pointer to the session (if found)
Jeff Johnsone7245742012-09-05 17:12:55 -070024007
Jeff Johnson295189b2012-06-20 16:38:30 -070024008 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024009 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024010*/
24011wpt_uint8
24012WDI_FindAssocSessionByIdx
Jeff Johnsone7245742012-09-05 17:12:55 -070024013(
Jeff Johnson295189b2012-06-20 16:38:30 -070024014 WDI_ControlBlockType* pWDICtx,
24015 wpt_uint16 usIdx,
24016 WDI_BSSSessionType** ppSession
24017)
24018{
24019 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24020
24021 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024022 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024023 -------------------------------------------------------------------------*/
24024 if ( NULL == ppSession || usIdx >= WDI_MAX_BSS_SESSIONS )
24025 {
24026 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024027 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024028 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024029 }
24030
24031 /*Found the session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024032 *ppSession = &pWDICtx->aBSSSessions[usIdx];
Jeff Johnson295189b2012-06-20 16:38:30 -070024033
24034 return usIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024035
Jeff Johnson295189b2012-06-20 16:38:30 -070024036}/*WDI_FindAssocSessionByBSSIdx*/
24037
24038/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024039 @brief Helper routine used to find an empty session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070024040 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070024041
24042
24043 @param pWDICtx: pointer to the WLAN DAL context
24044 pSession: pointer to the session (if found)
24045
Jeff Johnson295189b2012-06-20 16:38:30 -070024046 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024047 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024048*/
24049wpt_uint8
24050WDI_FindEmptySession
Jeff Johnsone7245742012-09-05 17:12:55 -070024051(
Jeff Johnson295189b2012-06-20 16:38:30 -070024052 WDI_ControlBlockType* pWDICtx,
24053 WDI_BSSSessionType** ppSession
24054)
24055{
Jeff Johnsone7245742012-09-05 17:12:55 -070024056 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024057 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24058 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024059 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024060 -------------------------------------------------------------------------*/
24061 if ( NULL == ppSession )
24062 {
24063 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024064 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024065 return WDI_MAX_BSS_SESSIONS;
Jeff Johnson295189b2012-06-20 16:38:30 -070024066 }
24067
Jeff Johnsone7245742012-09-05 17:12:55 -070024068 *ppSession = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070024069
Jeff Johnsone7245742012-09-05 17:12:55 -070024070 /*------------------------------------------------------------------------
24071 Search for a session that it is not in use
Jeff Johnson295189b2012-06-20 16:38:30 -070024072 ------------------------------------------------------------------------*/
24073 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24074 {
24075 if ( ! pWDICtx->aBSSSessions[i].bInUse )
24076 {
24077 /*Found a session*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024078 *ppSession = &pWDICtx->aBSSSessions[i];
Jeff Johnson295189b2012-06-20 16:38:30 -070024079 return i;
24080 }
24081 }
24082
Jeff Johnsone7245742012-09-05 17:12:55 -070024083 return i;
Jeff Johnson295189b2012-06-20 16:38:30 -070024084}/*WDI_FindEmptySession*/
24085
24086
24087/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024088 @brief Helper routine used to get the total count of active
Jeff Johnson295189b2012-06-20 16:38:30 -070024089 sessions
Jeff Johnsone7245742012-09-05 17:12:55 -070024090
24091
24092 @param pWDICtx: pointer to the WLAN DAL context
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024093 macBSSID: pointer to BSSID. If NULL, get all the session.
24094 If not NULL, count ActiveSession by excluding (TRUE) or including (FALSE) skipBSSID.
24095 skipBSSID: if TRUE, get all the sessions except matching to macBSSID. If FALSE, get all session.
24096 This argument is ignored if macBSSID is NULL.
Jeff Johnson295189b2012-06-20 16:38:30 -070024097 @see
24098 @return Number of sessions in use
24099*/
24100wpt_uint8
24101WDI_GetActiveSessionsCount
Jeff Johnsone7245742012-09-05 17:12:55 -070024102(
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024103 WDI_ControlBlockType* pWDICtx,
24104 wpt_macAddr macBSSID,
24105 wpt_boolean skipBSSID
Jeff Johnson295189b2012-06-20 16:38:30 -070024106)
24107{
Jeff Johnsone7245742012-09-05 17:12:55 -070024108 wpt_uint8 i, ucCount = 0;
Jeff Johnson295189b2012-06-20 16:38:30 -070024109 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024110
24111 /*------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070024112 Count all sessions in use
24113 ------------------------------------------------------------------------*/
24114 for ( i = 0; i < WDI_MAX_BSS_SESSIONS; i++ )
24115 {
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024116 if ( macBSSID && skipBSSID &&
24117 (eWLAN_PAL_TRUE ==
24118 wpalMemoryCompare(pWDICtx->aBSSSessions[i].macBSSID, macBSSID,
24119 WDI_MAC_ADDR_LEN)))
24120 {
24121 continue;
24122 }
24123 else if ( pWDICtx->aBSSSessions[i].bInUse )
24124 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024125 ucCount++;
Hoonki Lee9af07cf2013-04-24 01:21:58 -070024126 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024127 }
24128
Jeff Johnsone7245742012-09-05 17:12:55 -070024129 return ucCount;
Jeff Johnson295189b2012-06-20 16:38:30 -070024130}/*WDI_GetActiveSessionsCount*/
24131
24132/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024133 @brief Helper routine used to delete session in the WDI
Jeff Johnson295189b2012-06-20 16:38:30 -070024134 CB
Jeff Johnsone7245742012-09-05 17:12:55 -070024135
24136
24137 @param pWDICtx: pointer to the WLAN DAL context
24138 pSession: pointer to the session (if found)
24139
Jeff Johnson295189b2012-06-20 16:38:30 -070024140 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024141 @return Index of the session in the array
Jeff Johnson295189b2012-06-20 16:38:30 -070024142*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024143void
Jeff Johnson295189b2012-06-20 16:38:30 -070024144WDI_DeleteSession
Jeff Johnsone7245742012-09-05 17:12:55 -070024145(
Jeff Johnson295189b2012-06-20 16:38:30 -070024146 WDI_ControlBlockType* pWDICtx,
24147 WDI_BSSSessionType* ppSession
24148)
24149{
24150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070024151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070024152 -------------------------------------------------------------------------*/
24153 if ( NULL == ppSession )
24154 {
24155 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024156 "%s: Invalid parameters", __func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070024157 return ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024158 }
24159
Jeff Johnsone7245742012-09-05 17:12:55 -070024160 /*------------------------------------------------------------------------
24161 Reset the entries int session
Jeff Johnson295189b2012-06-20 16:38:30 -070024162 ------------------------------------------------------------------------*/
24163 wpal_list_destroy(&ppSession->wptPendingQueue);
24164 wpalMemoryZero(ppSession, sizeof(*ppSession));
Jeff Johnsone7245742012-09-05 17:12:55 -070024165 ppSession->wdiAssocState = WDI_ASSOC_INIT_ST;
24166 ppSession->bInUse = eWLAN_PAL_FALSE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024167 ppSession->wdiBssType = WDI_INFRASTRUCTURE_MODE;
24168 wpal_list_init(&ppSession->wptPendingQueue);
24169
24170}/*WDI_DeleteSession*/
24171
24172/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024173 @brief Utility function to add the broadcast STA to the the STA table.
Jeff Johnson295189b2012-06-20 16:38:30 -070024174 The bcast STA ID is assigned by HAL and must be valid.
Jeff Johnsone7245742012-09-05 17:12:55 -070024175 @param
24176
Jeff Johnson295189b2012-06-20 16:38:30 -070024177 WDI_AddStaParams: - pointer to the WDI Add STA params
24178 usBcastStaIdx: - Broadcast STA index passed by HAL
Jeff Johnsone7245742012-09-05 17:12:55 -070024179
24180 @see
24181 @return void
Jeff Johnson295189b2012-06-20 16:38:30 -070024182*/
24183void
24184WDI_AddBcastSTAtoSTATable
24185(
24186 WDI_ControlBlockType* pWDICtx,
24187 WDI_AddStaParams * staParams,
24188 wpt_uint16 usBcastStaIdx
24189)
24190{
24191 WDI_AddStaParams wdiAddSTAParam = {0};
24192 wpt_macAddr bcastMacAddr = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
24193 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
24194
24195 /*---------------------------------------------------------------------
24196 Sanity check
24197 ---------------------------------------------------------------------*/
24198 if ( NULL == staParams )
24199 {
24200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070024201 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070024202
Jeff Johnsone7245742012-09-05 17:12:55 -070024203 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024204 }
24205
24206 wdiAddSTAParam.bcastDpuIndex = staParams->bcastDpuIndex;
24207 wdiAddSTAParam.bcastDpuSignature = staParams->bcastDpuSignature;
24208 wdiAddSTAParam.bcastMgmtDpuIndex = staParams->bcastMgmtDpuIndex;
24209 wdiAddSTAParam.bcastMgmtDpuSignature = staParams->bcastMgmtDpuSignature;
24210 wdiAddSTAParam.dpuIndex = staParams->dpuIndex;
24211 wdiAddSTAParam.dpuSig = staParams->dpuSig;
24212 wpalMemoryCopy( wdiAddSTAParam.macBSSID, staParams->macBSSID,
24213 WDI_MAC_ADDR_LEN );
24214 wpalMemoryCopy( wdiAddSTAParam.staMacAddr, bcastMacAddr, WDI_MAC_ADDR_LEN );
24215 wdiAddSTAParam.ucBSSIdx = staParams->ucBSSIdx;
24216 wdiAddSTAParam.ucHTCapable = staParams->ucHTCapable;
24217 wdiAddSTAParam.ucRmfEnabled = staParams->ucRmfEnabled;
24218 wdiAddSTAParam.ucStaType = WDI_STA_ENTRY_BCAST;
24219 wdiAddSTAParam.ucWmmEnabled = staParams->ucWmmEnabled;
24220 wdiAddSTAParam.ucSTAIdx = usBcastStaIdx;
Jeff Johnsone7245742012-09-05 17:12:55 -070024221
Jeff Johnson295189b2012-06-20 16:38:30 -070024222 (void)WDI_STATableAddSta(pWDICtx,&wdiAddSTAParam);
24223}
24224
24225/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024226 @brief NV blob will be divided into fragments of size 4kb and
24227 Sent to HAL
24228
24229 @param pWDICtx: pointer to the WLAN DAL context
24230 pEventData: pointer to the event information structure
24231
Jeff Johnson295189b2012-06-20 16:38:30 -070024232 @see
24233 @return Result of the function call
24234 */
24235
24236WDI_Status WDI_SendNvBlobReq
Jeff Johnsone7245742012-09-05 17:12:55 -070024237(
Jeff Johnson295189b2012-06-20 16:38:30 -070024238 WDI_ControlBlockType* pWDICtx,
24239 WDI_EventInfoType* pEventData
24240)
24241{
24242
24243 tHalNvImgDownloadReqMsg halNvImgDownloadParam;
24244 wpt_uint8* pSendBuffer = NULL;
24245 wpt_uint16 usDataOffset = 0;
24246 wpt_uint16 usSendSize = 0;
24247 wpt_uint16 usCurrentFragmentSize =0;
24248 wpt_uint8* pSrcBuffer = NULL;
24249 WDI_NvDownloadReqParamsType* pwdiNvDownloadReqParams =NULL ;
24250 WDI_NvDownloadRspCb wdiNvDownloadRspCb;
24251
24252 wdiNvDownloadRspCb = (WDI_NvDownloadRspCb)pEventData->pCBfnc;
24253 WDI_ASSERT(NULL != wdiNvDownloadRspCb);
24254 pwdiNvDownloadReqParams = (WDI_NvDownloadReqParamsType*)pEventData->pEventData;
24255
Jeff Johnsone7245742012-09-05 17:12:55 -070024256 /* Sanity Check is done by the caller */
Jeff Johnson295189b2012-06-20 16:38:30 -070024257 pSrcBuffer =(wpt_uint8 *) pwdiNvDownloadReqParams->wdiBlobInfo.pBlobAddress;
24258
24259 /* Update the current Fragment Number */
24260 pWDICtx->wdiNvBlobInfo.usCurrentFragment += 1;
24261
24262 /*Update the HAL REQ structure */
24263 /*HAL maintaining the fragment count as 0,1,2...n where at WDI it is represented as 1,2,3.. n*/
24264 halNvImgDownloadParam.nvImageReqParams.fragNumber =
24265 pWDICtx->wdiNvBlobInfo.usCurrentFragment-1;
24266
24267 /* Divide the NV Image to size of 'FRAGMENT_SIZE' fragments and send it to HAL.
Jeff Johnsone7245742012-09-05 17:12:55 -070024268 If the size of the Image is less than 'FRAGMENT_SIZE' then in one iteration total
Jeff Johnson295189b2012-06-20 16:38:30 -070024269 image will be sent to HAL*/
24270
Jeff Johnsone7245742012-09-05 17:12:55 -070024271 if(pWDICtx->wdiNvBlobInfo.usTotalFragment
Jeff Johnson295189b2012-06-20 16:38:30 -070024272 == pWDICtx->wdiNvBlobInfo.usCurrentFragment)
Jeff Johnsone7245742012-09-05 17:12:55 -070024273 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024274 /* Taking care of boundry condition */
Jeff Johnsone7245742012-09-05 17:12:55 -070024275 if( !(usCurrentFragmentSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070024276 pwdiNvDownloadReqParams->wdiBlobInfo.uBlobSize%FRAGMENT_SIZE ))
24277 usCurrentFragmentSize = FRAGMENT_SIZE;
24278
24279 /*Update the HAL REQ structure */
24280 halNvImgDownloadParam.nvImageReqParams.isLastFragment = 1;
24281 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize= usCurrentFragmentSize;
24282
24283 }
24284 else
Jeff Johnsone7245742012-09-05 17:12:55 -070024285 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024286 usCurrentFragmentSize = FRAGMENT_SIZE;
24287
24288 /*Update the HAL REQ structure */
24289 halNvImgDownloadParam.nvImageReqParams.isLastFragment =0;
24290 halNvImgDownloadParam.nvImageReqParams.nvImgBufferSize = usCurrentFragmentSize;
24291 }
24292
24293 /*-----------------------------------------------------------------------
24294 Get message buffer
24295 -----------------------------------------------------------------------*/
24296 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,WDI_NV_DOWNLOAD_REQ,
24297 sizeof(halNvImgDownloadParam.nvImageReqParams)+ usCurrentFragmentSize,
24298 &pSendBuffer, &usDataOffset, &usSendSize))||
Jeff Johnsone7245742012-09-05 17:12:55 -070024299 ( usSendSize <
Jeff Johnson295189b2012-06-20 16:38:30 -070024300 (usDataOffset + sizeof(halNvImgDownloadParam.nvImageReqParams) + usCurrentFragmentSize )))
24301 {
24302 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080024303 "Unable to get send buffer in NV Download req %p %p ",
Jeff Johnson295189b2012-06-20 16:38:30 -070024304 pEventData, pwdiNvDownloadReqParams);
24305 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070024306 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024307 }
24308
24309 /* Copying the Hal NV download REQ structure */
Jeff Johnsone7245742012-09-05 17:12:55 -070024310 wpalMemoryCopy(pSendBuffer + usDataOffset ,
Jeff Johnson295189b2012-06-20 16:38:30 -070024311 &halNvImgDownloadParam.nvImageReqParams ,sizeof(tHalNvImgDownloadReqParams));
24312
24313 /* Appending the NV image fragment */
24314 wpalMemoryCopy(pSendBuffer + usDataOffset + sizeof(tHalNvImgDownloadReqParams),
24315 (void *)(pSrcBuffer + halNvImgDownloadParam.nvImageReqParams.fragNumber * FRAGMENT_SIZE),
24316 usCurrentFragmentSize);
24317
24318 pWDICtx->wdiReqStatusCB = pwdiNvDownloadReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070024319 pWDICtx->pReqStatusUserData = pwdiNvDownloadReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070024320
Jeff Johnsone7245742012-09-05 17:12:55 -070024321 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
24322 wdiNvDownloadRspCb, pEventData->pUserData,
Jeff Johnson295189b2012-06-20 16:38:30 -070024323 WDI_NV_DOWNLOAD_RESP);
24324
24325}
Jeff Johnsone7245742012-09-05 17:12:55 -070024326/*============================================================================
24327 Helper inline functions for
Jeff Johnson295189b2012-06-20 16:38:30 -070024328 ============================================================================*/
24329/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024330 @brief Helper routine used to find a session based on the BSSID
24331 @param pContext: pointer to the WLAN DAL context
24332 @param pDPContext: pointer to the Datapath context
24333
Jeff Johnson295189b2012-06-20 16:38:30 -070024334 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024335 @return
Jeff Johnson295189b2012-06-20 16:38:30 -070024336*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024337WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024338WDI_DS_AssignDatapathContext (void *pContext, void *pDPContext)
24339{
24340 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24341
24342 pCB->pDPContext = pDPContext;
24343 return;
24344}
24345
24346/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024347 @brief Helper routine used to find a session based on the BSSID
24348
24349
24350 @param pContext: pointer to the WLAN DAL context
24351
Jeff Johnson295189b2012-06-20 16:38:30 -070024352 @see
24353 @return pointer to Datapath context
24354*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024355WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024356WDI_DS_GetDatapathContext (void *pContext)
24357{
24358 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24359 return pCB->pDPContext;
24360}
24361/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024362 @brief Helper routine used to find a session based on the BSSID
24363
24364
24365 @param pContext: pointer to the WLAN DAL context
24366 @param pDTDriverContext: pointer to the Transport Driver context
24367
Jeff Johnson295189b2012-06-20 16:38:30 -070024368 @see
24369 @return void
24370*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024371WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070024372WDT_AssignTransportDriverContext (void *pContext, void *pDTDriverContext)
24373{
24374 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
24375
24376 pCB->pDTDriverContext = pDTDriverContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024377 return;
Jeff Johnson295189b2012-06-20 16:38:30 -070024378}
24379
24380/**
Jeff Johnsone7245742012-09-05 17:12:55 -070024381 @brief Helper routine used to find a session based on the BSSID
24382
24383
24384 @param pWDICtx: pointer to the WLAN DAL context
24385
Jeff Johnson295189b2012-06-20 16:38:30 -070024386 @see
Jeff Johnsone7245742012-09-05 17:12:55 -070024387 @return pointer to datapath context
Jeff Johnson295189b2012-06-20 16:38:30 -070024388*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024389WPT_INLINE void *
Jeff Johnson295189b2012-06-20 16:38:30 -070024390WDT_GetTransportDriverContext (void *pContext)
24391{
24392 WDI_ControlBlockType *pCB = (WDI_ControlBlockType *)pContext;
Jeff Johnsone7245742012-09-05 17:12:55 -070024393 return(pCB->pDTDriverContext);
Jeff Johnson295189b2012-06-20 16:38:30 -070024394}
24395
Jeff Johnsone7245742012-09-05 17:12:55 -070024396/*============================================================================
Jeff Johnson295189b2012-06-20 16:38:30 -070024397 Helper inline converters
24398 ============================================================================*/
24399/*Convert WDI driver type into HAL driver type*/
24400WPT_STATIC WPT_INLINE WDI_Status
24401WDI_HAL_2_WDI_STATUS
24402(
24403 eHalStatus halStatus
24404)
24405{
Jeff Johnsone7245742012-09-05 17:12:55 -070024406 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024407 the chances of getting inlined*/
24408 switch( halStatus )
24409 {
24410 case eHAL_STATUS_SUCCESS:
24411 case eHAL_STATUS_ADD_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24412 case eHAL_STATUS_DEL_STA_SELF_IGNORED_REF_COUNT_NOT_ZERO:
24413 return WDI_STATUS_SUCCESS;
24414 case eHAL_STATUS_FAILURE:
24415 return WDI_STATUS_E_FAILURE;
24416 case eHAL_STATUS_FAILED_ALLOC:
Jeff Johnsone7245742012-09-05 17:12:55 -070024417 return WDI_STATUS_MEM_FAILURE;
24418 /*The rest of the HAL error codes must be kept hidden from the UMAC as
Jeff Johnson295189b2012-06-20 16:38:30 -070024419 they refer to specific internal modules of our device*/
Jeff Johnsone7245742012-09-05 17:12:55 -070024420 default:
24421 return WDI_STATUS_DEV_INTERNAL_FAILURE;
24422 }
Jeff Johnson295189b2012-06-20 16:38:30 -070024423
Jeff Johnsone7245742012-09-05 17:12:55 -070024424 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070024425}/*WDI_HAL_2_WDI_STATUS*/
24426
24427/*Convert WDI request type into HAL request type*/
24428WPT_STATIC WPT_INLINE tHalHostMsgType
24429WDI_2_HAL_REQ_TYPE
24430(
24431 WDI_RequestEnumType wdiReqType
24432)
24433{
Jeff Johnsone7245742012-09-05 17:12:55 -070024434 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024435 the chances of getting inlined*/
24436 switch( wdiReqType )
Jeff Johnsone7245742012-09-05 17:12:55 -070024437 {
Jeff Johnson295189b2012-06-20 16:38:30 -070024438 case WDI_START_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024439 return WLAN_HAL_START_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024440 case WDI_STOP_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024441 return WLAN_HAL_STOP_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024442 case WDI_INIT_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024443 return WLAN_HAL_INIT_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024444 case WDI_START_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024445 return WLAN_HAL_START_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024446 case WDI_END_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024447 return WLAN_HAL_END_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024448 case WDI_FINISH_SCAN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024449 return WLAN_HAL_FINISH_SCAN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024450 case WDI_JOIN_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024451 return WLAN_HAL_JOIN_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024452 case WDI_CONFIG_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024453 return WLAN_HAL_CONFIG_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024454 case WDI_DEL_BSS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024455 return WLAN_HAL_DELETE_BSS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024456 case WDI_POST_ASSOC_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024457 return WLAN_HAL_POST_ASSOC_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024458 case WDI_DEL_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024459 return WLAN_HAL_DELETE_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024460 case WDI_SET_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024461 return WLAN_HAL_SET_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024462 case WDI_RMV_BSS_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024463 return WLAN_HAL_RMV_BSSKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024464 case WDI_SET_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024465 return WLAN_HAL_SET_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024466 case WDI_RMV_STA_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024467 return WLAN_HAL_RMV_STAKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024468 case WDI_SET_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024469 return WLAN_HAL_SET_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024470 case WDI_RMV_STA_BCAST_KEY_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024471 //Some conflict in the old code - check this: return WLAN_HAL_RMV_BCASTKEY_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024472 return WLAN_HAL_RMV_STAKEY_REQ;
24473 case WDI_ADD_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024474 return WLAN_HAL_ADD_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024475 case WDI_DEL_TS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024476 return WLAN_HAL_DEL_TS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024477 case WDI_UPD_EDCA_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024478 return WLAN_HAL_UPD_EDCA_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024479 case WDI_ADD_BA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024480 return WLAN_HAL_ADD_BA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024481 case WDI_DEL_BA_REQ:
24482 return WLAN_HAL_DEL_BA_REQ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024483#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024484 case WDI_TSM_STATS_REQ:
24485 return WLAN_HAL_TSM_STATS_REQ;
24486#endif
24487 case WDI_CH_SWITCH_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024488 return WLAN_HAL_CH_SWITCH_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024489 case WDI_CONFIG_STA_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024490 return WLAN_HAL_CONFIG_STA_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024491 case WDI_SET_LINK_ST_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024492 return WLAN_HAL_SET_LINK_ST_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024493 case WDI_GET_STATS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024494 return WLAN_HAL_GET_STATS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024495 case WDI_UPDATE_CFG_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024496 return WLAN_HAL_UPDATE_CFG_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024497 case WDI_ADD_BA_SESSION_REQ:
24498 return WLAN_HAL_ADD_BA_SESSION_REQ;
24499 case WDI_TRIGGER_BA_REQ:
24500 return WLAN_HAL_TRIGGER_BA_REQ;
24501 case WDI_UPD_BCON_PRMS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024502 return WLAN_HAL_UPDATE_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024503 case WDI_SND_BCON_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024504 return WLAN_HAL_SEND_BEACON_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024505 case WDI_UPD_PROBE_RSP_TEMPLATE_REQ:
24506 return WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_REQ;
24507 case WDI_SET_MAX_TX_POWER_REQ:
24508 return WLAN_HAL_SET_MAX_TX_POWER_REQ;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024509 case WDI_SET_MAX_TX_POWER_PER_BAND_REQ:
24510 return WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_REQ;
schang86c22c42013-03-13 18:41:24 -070024511 case WDI_SET_TX_POWER_REQ:
24512 return WLAN_HAL_SET_TX_POWER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024513 case WDI_P2P_GO_NOTICE_OF_ABSENCE_REQ:
24514 return WLAN_HAL_SET_P2P_GONOA_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024515#ifdef FEATURE_WLAN_TDLS
24516 case WDI_TDLS_LINK_ESTABLISH_REQ:
24517 return WLAN_HAL_TDLS_LINK_ESTABLISHED_REQ;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024518 case WDI_TDLS_CHAN_SWITCH_REQ:
24519 return WLAN_HAL_TDLS_CHAN_SWITCH_REQ;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024520#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024521 case WDI_ENTER_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024522 return WLAN_HAL_ENTER_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024523 case WDI_EXIT_IMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024524 return WLAN_HAL_EXIT_IMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024525 case WDI_ENTER_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024526 return WLAN_HAL_ENTER_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024527 case WDI_EXIT_BMPS_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024528 return WLAN_HAL_EXIT_BMPS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024529 case WDI_ENTER_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024530 return WLAN_HAL_ENTER_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024531 case WDI_EXIT_UAPSD_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024532 return WLAN_HAL_EXIT_UAPSD_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024533 case WDI_SET_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024534 return WLAN_HAL_SET_UAPSD_AC_PARAMS_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024535 case WDI_UPDATE_UAPSD_PARAM_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024536 return WLAN_HAL_UPDATE_UAPSD_PARAM_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024537 case WDI_CONFIGURE_RXP_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024538 return WLAN_HAL_CONFIGURE_RXP_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024539 case WDI_SET_BEACON_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024540 return WLAN_HAL_ADD_BCN_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024541 case WDI_REM_BEACON_FILTER_REQ:
24542 return WLAN_HAL_REM_BCN_FILTER_REQ;
24543 case WDI_SET_RSSI_THRESHOLDS_REQ:
24544 return WLAN_HAL_SET_RSSI_THRESH_REQ;
24545 case WDI_HOST_OFFLOAD_REQ:
24546 return WLAN_HAL_HOST_OFFLOAD_REQ;
24547 case WDI_WOWL_ADD_BC_PTRN_REQ:
24548 return WLAN_HAL_ADD_WOWL_BCAST_PTRN;
24549 case WDI_WOWL_DEL_BC_PTRN_REQ:
24550 return WLAN_HAL_DEL_WOWL_BCAST_PTRN;
24551 case WDI_WOWL_ENTER_REQ:
24552 return WLAN_HAL_ENTER_WOWL_REQ;
24553 case WDI_WOWL_EXIT_REQ:
24554 return WLAN_HAL_EXIT_WOWL_REQ;
24555 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
24556 return WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ;
24557 case WDI_NV_DOWNLOAD_REQ:
24558 return WLAN_HAL_DOWNLOAD_NV_REQ;
24559 case WDI_FLUSH_AC_REQ:
24560 return WLAN_HAL_TL_HAL_FLUSH_AC_REQ;
24561 case WDI_BTAMP_EVENT_REQ:
24562 return WLAN_HAL_SIGNAL_BTAMP_EVENT_REQ;
24563#ifdef WLAN_FEATURE_VOWIFI_11R
24564 case WDI_AGGR_ADD_TS_REQ:
24565 return WLAN_HAL_AGGR_ADD_TS_REQ;
24566#endif /* WLAN_FEATURE_VOWIFI_11R */
Jeff Johnson295189b2012-06-20 16:38:30 -070024567 case WDI_FTM_CMD_REQ:
24568 return WLAN_HAL_PROCESS_PTT_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024569 case WDI_ADD_STA_SELF_REQ:
24570 return WLAN_HAL_ADD_STA_SELF_REQ;
24571 case WDI_DEL_STA_SELF_REQ:
24572 return WLAN_HAL_DEL_STA_SELF_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070024573#ifdef FEATURE_OEM_DATA_SUPPORT
24574 case WDI_START_OEM_DATA_REQ:
24575 return WLAN_HAL_START_OEM_DATA_REQ;
24576#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024577 case WDI_HOST_RESUME_REQ:
24578 return WLAN_HAL_HOST_RESUME_REQ;
24579 case WDI_HOST_SUSPEND_IND:
24580 return WLAN_HAL_HOST_SUSPEND_IND;
Madan Mohan Koyyalamudi01cba042013-01-10 21:56:05 -080024581 case WDI_TRAFFIC_STATS_IND:
24582 return WLAN_HAL_CLASS_B_STATS_IND;
Chet Lanctot186b5732013-03-18 10:26:30 -070024583#ifdef WLAN_FEATURE_11W
24584 case WDI_EXCLUDE_UNENCRYPTED_IND:
24585 return WLAN_HAL_EXCLUDE_UNENCRYPTED_IND;
24586#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024587 case WDI_KEEP_ALIVE_REQ:
24588 return WLAN_HAL_KEEP_ALIVE_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024589#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024590 case WDI_ROAM_SCAN_OFFLOAD_REQ:
24591 return WLAN_ROAM_SCAN_OFFLOAD_REQ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024592#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024593#ifdef FEATURE_WLAN_SCAN_PNO
24594 case WDI_SET_PREF_NETWORK_REQ:
24595 return WLAN_HAL_SET_PREF_NETWORK_REQ;
24596 case WDI_SET_RSSI_FILTER_REQ:
24597 return WLAN_HAL_SET_RSSI_FILTER_REQ;
24598 case WDI_UPDATE_SCAN_PARAMS_REQ:
24599 return WLAN_HAL_UPDATE_SCAN_PARAM_REQ;
24600#endif // FEATURE_WLAN_SCAN_PNO
24601 case WDI_SET_TX_PER_TRACKING_REQ:
24602 return WLAN_HAL_SET_TX_PER_TRACKING_REQ;
24603#ifdef WLAN_FEATURE_PACKET_FILTERING
24604 case WDI_8023_MULTICAST_LIST_REQ:
24605 return WLAN_HAL_8023_MULTICAST_LIST_REQ;
24606 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
Jeff Johnsone7245742012-09-05 17:12:55 -070024607 return WLAN_HAL_SET_PACKET_FILTER_REQ;
Jeff Johnson295189b2012-06-20 16:38:30 -070024608 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
24609 return WLAN_HAL_PACKET_FILTER_MATCH_COUNT_REQ;
24610 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
24611 return WLAN_HAL_CLEAR_PACKET_FILTER_REQ;
24612#endif // WLAN_FEATURE_PACKET_FILTERING
24613 case WDI_HAL_DUMP_CMD_REQ:
24614 return WLAN_HAL_DUMP_COMMAND_REQ;
24615#ifdef WLAN_FEATURE_GTK_OFFLOAD
24616 case WDI_GTK_OFFLOAD_REQ:
24617 return WLAN_HAL_GTK_OFFLOAD_REQ;
24618 case WDI_GTK_OFFLOAD_GETINFO_REQ:
24619 return WLAN_HAL_GTK_OFFLOAD_GETINFO_REQ;
24620#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24621
24622 case WDI_INIT_SCAN_CON_REQ:
24623 return WLAN_HAL_INIT_SCAN_CON_REQ;
24624 case WDI_SET_POWER_PARAMS_REQ:
24625 return WLAN_HAL_SET_POWER_PARAMS_REQ;
24626 case WDI_SET_TM_LEVEL_REQ:
24627 return WLAN_HAL_SET_THERMAL_MITIGATION_REQ;
24628 case WDI_FEATURE_CAPS_EXCHANGE_REQ:
24629 return WLAN_HAL_FEATURE_CAPS_EXCHANGE_REQ;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024630#ifdef WLAN_FEATURE_11AC
24631 case WDI_UPDATE_VHT_OP_MODE_REQ:
24632 return WLAN_HAL_UPDATE_VHT_OP_MODE_REQ;
24633#endif
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024634 case WDI_GET_ROAM_RSSI_REQ:
24635 return WLAN_HAL_GET_ROAM_RSSI_REQ;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053024636 case WDI_DHCP_START_IND:
24637 return WLAN_HAL_DHCP_START_IND;
24638 case WDI_DHCP_STOP_IND:
24639 return WLAN_HAL_DHCP_STOP_IND;
Leo Chang9056f462013-08-01 19:21:11 -070024640#ifdef FEATURE_WLAN_LPHB
24641 case WDI_LPHB_CFG_REQ:
24642 return WLAN_HAL_LPHB_CFG_REQ;
24643#endif /* FEATURE_WLAN_LPHB */
Yue Mab9c86f42013-08-14 15:59:08 -070024644 case WDI_ADD_PERIODIC_TX_PATTERN_IND:
24645 return WLAN_HAL_ADD_PERIODIC_TX_PTRN_IND;
24646 case WDI_DEL_PERIODIC_TX_PATTERN_IND:
24647 return WLAN_HAL_DEL_PERIODIC_TX_PTRN_IND;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053024648#ifdef WLAN_FEATURE_RMC
24649 case WDI_RMC_RULER_REQ:
24650 return WLAN_HAL_RMC_RULER_REQ;
24651 case WDI_RMC_UPDATE_IND:
24652 return WLAN_HAL_RMC_UPDATE_IND;
24653 case WDI_HAL_IBSS_PEER_INFO_REQ:
24654 return WLAN_HAL_GET_IBSS_PEER_INFO_REQ;
24655#endif /* WLAN_FEATURE_RMC */
24656 case WDI_RATE_UPDATE_IND:
24657 return WLAN_HAL_RATE_UPDATE_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070024658
Rajeev79dbe4c2013-10-05 11:03:42 +053024659#ifdef FEATURE_WLAN_BATCH_SCAN
24660 case WDI_SET_BATCH_SCAN_REQ:
24661 return WLAN_HAL_BATCHSCAN_SET_REQ;
24662 case WDI_STOP_BATCH_SCAN_IND:
24663 return WLAN_HAL_BATCHSCAN_STOP_IND;
24664 case WDI_TRIGGER_BATCH_SCAN_RESULT_IND:
24665 return WLAN_HAL_BATCHSCAN_TRIGGER_RESULT_IND;
24666#endif
Abhishek Singh7cd040e2016-01-07 10:51:04 +053024667
24668#ifdef WLAN_FEATURE_RMC
24669 case WDI_TX_FAIL_MONITOR_IND:
24670 return WLAN_HAL_TX_FAIL_MONITOR_IND;
24671#endif
24672
Sandeep Puligillac3450eb2014-03-06 18:10:57 +053024673 case WDI_START_HT40_OBSS_SCAN_IND:
24674 return WLAN_HAL_START_HT40_OBSS_SCAN_IND;
24675 case WDI_STOP_HT40_OBSS_SCAN_IND:
24676 return WLAN_HAL_STOP_HT40_OBSS_SCAN_IND;
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080024677 case WDI_UPDATE_CHAN_REQ:
24678 return WLAN_HAL_UPDATE_CHANNEL_LIST_REQ;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080024679 case WDI_CH_SWITCH_REQ_V1:
24680 return WLAN_HAL_CH_SWITCH_V1_REQ;
c_hpothu92367912014-05-01 15:18:17 +053024681 case WDI_GET_BCN_MISS_RATE_REQ:
24682 return WLAN_HAL_GET_BCN_MISS_RATE_REQ;
Sunil Duttbd736ed2014-05-26 21:19:41 +053024683
24684#ifdef WLAN_FEATURE_LINK_LAYER_STATS
24685 case WDI_LL_STATS_SET_REQ:
24686 return WLAN_HAL_LL_SET_STATS_REQ;
24687 case WDI_LL_STATS_GET_REQ:
24688 return WLAN_HAL_LL_GET_STATS_REQ;
24689 case WDI_LL_STATS_CLEAR_REQ:
24690 return WLAN_HAL_LL_CLEAR_STATS_REQ;
24691#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053024692#ifdef WLAN_FEATURE_EXTSCAN
24693 case WDI_EXTSCAN_START_REQ:
24694 return WLAN_HAL_EXT_SCAN_START_REQ;
24695 case WDI_EXTSCAN_STOP_REQ:
24696 return WLAN_HAL_EXT_SCAN_STOP_REQ;
24697 case WDI_EXTSCAN_GET_CACHED_RESULTS_REQ:
24698 return WLAN_HAL_EXT_SCAN_GET_SCAN_REQ;
24699 case WDI_EXTSCAN_GET_CAPABILITIES_REQ:
24700 return WLAN_HAL_EXT_SCAN_GET_CAP_REQ;
24701 case WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ:
24702 return WLAN_HAL_BSSID_HOTLIST_SET_REQ;
24703 case WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ:
24704 return WLAN_HAL_BSSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053024705 case WDI_EXTSCAN_SET_SSID_HOTLIST_REQ:
24706 return WLAN_HAL_SSID_HOTLIST_SET_REQ;
24707 case WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ:
24708 return WLAN_HAL_SSID_HOTLIST_RESET_REQ;
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053024709 case WDI_HIGH_PRIORITY_DATA_INFO_IND:
24710 return WLAN_HAL_HIGH_PRIORITY_DATA_INFO_REQ;
Dino Mycle41bdc942014-06-10 11:30:24 +053024711#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053024712 case WDI_SPOOF_MAC_ADDR_REQ:
24713 return WLAN_HAL_MAC_SPOOFED_SCAN_REQ;
Abhishek Singh85b74712014-10-08 11:38:19 +053024714 case WDI_GET_FW_STATS_REQ:
24715 return WLAN_HAL_FW_STATS_REQ;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053024716 case WDI_ENCRYPT_MSG_REQ:
24717 return WLAN_HAL_ENCRYPT_DATA_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024718 case WDI_FW_LOGGING_INIT_REQ:
24719 return WLAN_HAL_FW_LOGGING_INIT_REQ;
Siddharth Bhal64246172015-02-27 01:04:37 +053024720 case WDI_GET_FRAME_LOG_REQ:
24721 return WLAN_HAL_GET_FRAME_LOG_REQ;
Srinivas Dasari32a79262015-02-19 13:04:49 +053024722 case WDI_NAN_REQUEST:
24723 return WLAN_HAL_NAN_REQ;
Abhishek Singh41988ba2015-05-25 19:42:29 +053024724 case WDI_SET_RTS_CTS_HTVHT_IND:
24725 return WLAN_HAL_SET_RTS_CTS_HTVHT_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053024726 case WDI_MON_START_REQ:
24727 return WLAN_HAL_ENABLE_MONITOR_MODE_REQ;
24728 case WDI_MON_STOP_REQ:
24729 return WLAN_HAL_DISABLE_MONITOR_MODE_REQ;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053024730 case WDI_FW_LOGGING_DXE_DONE_IND:
24731 return WLAN_HAL_FW_LOGGING_DXE_DONE_IND;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053024732 case WDI_FATAL_EVENT_LOGGING_REQ:
24733 return WLAN_HAL_FATAL_EVENT_LOGGING_REQ;
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053024734 case WDI_SEND_FREQ_RANGE_CONTROL_IND:
24735 return WLAN_HAL_SEND_FREQ_RANGE_CONTROL_IND;
c_manjeecfd1efb2015-09-25 19:32:34 +053024736 case WDI_FWR_MEM_DUMP_REQ:
24737 return WLAN_HAL_FW_MEMORY_DUMP_REQ;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053024738 case WDI_START_RSSI_MONITOR_REQ:
24739 return WLAN_HAL_START_RSSI_MONITORING_REQ;
24740 case WDI_STOP_RSSI_MONITOR_REQ:
24741 return WLAN_HAL_STOP_RSSI_MONITORING_REQ;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053024742 case WDI_WIFI_CONFIG_SET_REQ:
24743 return WLAN_HAL_WIFI_CONFIG_SET_PARAMS_REQ;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053024744 case WDI_START_OEM_DATA_REQ_IND_NEW:
24745 return WLAN_HAL_START_OEM_DATA_REQ_IND_NEW;
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053024746 case WDI_ANTENNA_DIVERSITY_SELECTION_REQ:
24747 return WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_REQ;
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053024748 case WDI_MODIFY_ROAM_PARAMS_IND:
24749 return WLAN_HAL_MODIFY_ROAM_PARAMS_IND;
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053024750 case WDI_SET_ALLOWED_ACTION_FRAMES_IND:
24751 return WLAN_HAL_SET_ALLOWED_ACTION_FRAMES_IND;
Kapil Guptab3a981b2016-06-26 13:36:51 +053024752#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
24753 case WDI_PER_ROAM_SCAN_OFFLOAD_REQ:
24754 return WLAN_HAL_SET_PER_ROAM_CONFIG_REQ;
24755 case WDI_PER_ROAM_SCAN_TRIGGER_REQ:
24756 return WLAN_HAL_PER_ROAM_SCAN_TRIGGER_REQ;
24757#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024758 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070024759 return WLAN_HAL_MSG_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070024760 }
Jeff Johnsone7245742012-09-05 17:12:55 -070024761
Jeff Johnson295189b2012-06-20 16:38:30 -070024762}/*WDI_2_HAL_REQ_TYPE*/
24763
24764/*Convert WDI response type into HAL response type*/
24765WPT_STATIC WPT_INLINE WDI_ResponseEnumType
24766HAL_2_WDI_RSP_TYPE
24767(
24768 tHalHostMsgType halMsg
24769)
24770{
Jeff Johnsone7245742012-09-05 17:12:55 -070024771 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070024772 the chances of getting inlined*/
24773 switch( halMsg )
24774 {
24775 case WLAN_HAL_START_RSP:
24776 return WDI_START_RESP;
24777 case WLAN_HAL_STOP_RSP:
24778 return WDI_STOP_RESP;
24779 case WLAN_HAL_INIT_SCAN_RSP:
24780 return WDI_INIT_SCAN_RESP;
24781 case WLAN_HAL_START_SCAN_RSP:
24782 return WDI_START_SCAN_RESP;
24783 case WLAN_HAL_END_SCAN_RSP:
24784 return WDI_END_SCAN_RESP;
24785 case WLAN_HAL_FINISH_SCAN_RSP:
24786 return WDI_FINISH_SCAN_RESP;
24787 case WLAN_HAL_CONFIG_STA_RSP:
24788 return WDI_CONFIG_STA_RESP;
24789 case WLAN_HAL_DELETE_STA_RSP:
24790 return WDI_DEL_STA_RESP;
24791 case WLAN_HAL_CONFIG_BSS_RSP:
24792 return WDI_CONFIG_BSS_RESP;
24793 case WLAN_HAL_DELETE_BSS_RSP:
24794 return WDI_DEL_BSS_RESP;
24795 case WLAN_HAL_JOIN_RSP:
24796 return WDI_JOIN_RESP;
24797 case WLAN_HAL_POST_ASSOC_RSP:
24798 return WDI_POST_ASSOC_RESP;
24799 case WLAN_HAL_SET_BSSKEY_RSP:
24800 return WDI_SET_BSS_KEY_RESP;
24801 case WLAN_HAL_SET_STAKEY_RSP:
24802 return WDI_SET_STA_KEY_RESP;
24803 case WLAN_HAL_RMV_BSSKEY_RSP:
24804 return WDI_RMV_BSS_KEY_RESP;
24805 case WLAN_HAL_RMV_STAKEY_RSP:
24806 return WDI_RMV_STA_KEY_RESP;
24807 case WLAN_HAL_SET_BCASTKEY_RSP:
24808 return WDI_SET_STA_BCAST_KEY_RESP;
24809 //Some conflict in the old code - check this: case WLAN_HAL_RMV_BCASTKEY_RSP:
24810 // return WDI_RMV_STA_BCAST_KEY_RESP;
24811 case WLAN_HAL_ADD_TS_RSP:
24812 return WDI_ADD_TS_RESP;
24813 case WLAN_HAL_DEL_TS_RSP:
24814 return WDI_DEL_TS_RESP;
24815 case WLAN_HAL_UPD_EDCA_PARAMS_RSP:
24816 return WDI_UPD_EDCA_PRMS_RESP;
24817 case WLAN_HAL_ADD_BA_RSP:
24818 return WDI_ADD_BA_RESP;
24819 case WLAN_HAL_DEL_BA_RSP:
24820 return WDI_DEL_BA_RESP;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024821#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070024822 case WLAN_HAL_TSM_STATS_RSP:
24823 return WDI_TSM_STATS_RESP;
24824#endif
24825 case WLAN_HAL_CH_SWITCH_RSP:
24826 return WDI_CH_SWITCH_RESP;
24827 case WLAN_HAL_SET_LINK_ST_RSP:
24828 return WDI_SET_LINK_ST_RESP;
24829 case WLAN_HAL_GET_STATS_RSP:
24830 return WDI_GET_STATS_RESP;
24831 case WLAN_HAL_UPDATE_CFG_RSP:
24832 return WDI_UPDATE_CFG_RESP;
24833 case WLAN_HAL_ADD_BA_SESSION_RSP:
24834 return WDI_ADD_BA_SESSION_RESP;
24835 case WLAN_HAL_TRIGGER_BA_RSP:
24836 return WDI_TRIGGER_BA_RESP;
24837 case WLAN_HAL_UPDATE_BEACON_RSP:
24838 return WDI_UPD_BCON_PRMS_RESP;
24839 case WLAN_HAL_SEND_BEACON_RSP:
24840 return WDI_SND_BCON_RESP;
24841 case WLAN_HAL_UPDATE_PROBE_RSP_TEMPLATE_RSP:
24842 return WDI_UPD_PROBE_RSP_TEMPLATE_RESP;
24843 /*Indications*/
24844 case WLAN_HAL_RSSI_NOTIFICATION_IND:
24845 return WDI_HAL_RSSI_NOTIFICATION_IND;
24846 case WLAN_HAL_MISSED_BEACON_IND:
24847 return WDI_HAL_MISSED_BEACON_IND;
24848 case WLAN_HAL_UNKNOWN_ADDR2_FRAME_RX_IND:
24849 return WDI_HAL_UNKNOWN_ADDR2_FRAME_RX_IND;
24850 case WLAN_HAL_MIC_FAILURE_IND:
24851 return WDI_HAL_MIC_FAILURE_IND;
24852 case WLAN_HAL_FATAL_ERROR_IND:
24853 return WDI_HAL_FATAL_ERROR_IND;
24854 case WLAN_HAL_DELETE_STA_CONTEXT_IND:
24855 return WDI_HAL_DEL_STA_IND;
24856 case WLAN_HAL_COEX_IND:
24857 return WDI_HAL_COEX_IND;
24858 case WLAN_HAL_OTA_TX_COMPL_IND:
24859 return WDI_HAL_TX_COMPLETE_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024860 case WLAN_HAL_P2P_NOA_ATTR_IND:
24861 return WDI_HAL_P2P_NOA_ATTR_IND;
Viral Modid86bde22012-12-10 13:09:21 -080024862 case WLAN_HAL_P2P_NOA_START_IND:
24863 return WDI_HAL_P2P_NOA_START_IND;
Abhishek Singh66c16762014-08-14 19:13:19 +053024864 case WLAN_HAL_DEL_BA_IND:
24865 return WDI_HAL_DEL_BA_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070024866 case WLAN_HAL_TX_PER_HIT_IND:
24867 return WDI_HAL_TX_PER_HIT_IND;
24868 case WLAN_HAL_SET_MAX_TX_POWER_RSP:
24869 return WDI_SET_MAX_TX_POWER_RESP;
Arif Hussaina5ebce02013-08-09 15:09:58 -070024870 case WLAN_HAL_SET_MAX_TX_POWER_PER_BAND_RSP:
24871 return WDI_SET_MAX_TX_POWER_PER_BAND_RSP;
schang86c22c42013-03-13 18:41:24 -070024872 case WLAN_HAL_SET_TX_POWER_RSP:
24873 return WDI_SET_TX_POWER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024874 case WLAN_HAL_SET_P2P_GONOA_RSP:
24875 return WDI_P2P_GO_NOTICE_OF_ABSENCE_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024876#ifdef FEATURE_WLAN_TDLS
24877 case WLAN_HAL_TDLS_LINK_ESTABLISHED_RSP:
24878 return WDI_TDLS_LINK_ESTABLISH_REQ_RESP;
Atul Mittalc0f739f2014-07-31 13:47:47 +053024879 case WLAN_HAL_TDLS_CHAN_SWITCH_RSP:
24880 return WDI_TDLS_CHAN_SWITCH_REQ_RESP;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +053024881 case WLAN_HAL_TDLS_IND:
24882 return WDI_HAL_TDLS_IND;
24883#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024884 case WLAN_HAL_ENTER_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024885 return WDI_ENTER_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024886 case WLAN_HAL_EXIT_IMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024887 return WDI_EXIT_IMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024888 case WLAN_HAL_ENTER_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024889 return WDI_ENTER_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024890 case WLAN_HAL_EXIT_BMPS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024891 return WDI_EXIT_BMPS_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024892 case WLAN_HAL_ENTER_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024893 return WDI_ENTER_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024894 case WLAN_HAL_EXIT_UAPSD_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024895 return WDI_EXIT_UAPSD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024896 case WLAN_HAL_SET_UAPSD_AC_PARAMS_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024897 return WDI_SET_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024898 case WLAN_HAL_UPDATE_UAPSD_PARAM_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024899 return WDI_UPDATE_UAPSD_PARAM_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024900 case WLAN_HAL_CONFIGURE_RXP_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024901 return WDI_CONFIGURE_RXP_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024902 case WLAN_HAL_ADD_BCN_FILTER_RSP:
24903 return WDI_SET_BEACON_FILTER_RESP;
24904 case WLAN_HAL_REM_BCN_FILTER_RSP:
24905 return WDI_REM_BEACON_FILTER_RESP;
24906 case WLAN_HAL_SET_RSSI_THRESH_RSP:
24907 return WDI_SET_RSSI_THRESHOLDS_RESP;
24908 case WLAN_HAL_HOST_OFFLOAD_RSP:
24909 return WDI_HOST_OFFLOAD_RESP;
24910 case WLAN_HAL_ADD_WOWL_BCAST_PTRN_RSP:
24911 return WDI_WOWL_ADD_BC_PTRN_RESP;
24912 case WLAN_HAL_DEL_WOWL_BCAST_PTRN_RSP:
24913 return WDI_WOWL_DEL_BC_PTRN_RESP;
24914 case WLAN_HAL_ENTER_WOWL_RSP:
24915 return WDI_WOWL_ENTER_RESP;
24916 case WLAN_HAL_EXIT_WOWL_RSP:
24917 return WDI_WOWL_EXIT_RESP;
24918 case WLAN_HAL_CONFIGURE_APPS_CPU_WAKEUP_STATE_RSP:
24919 return WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_RESP;
24920 case WLAN_HAL_DOWNLOAD_NV_RSP:
24921 return WDI_NV_DOWNLOAD_RESP;
24922 case WLAN_HAL_TL_HAL_FLUSH_AC_RSP:
24923 return WDI_FLUSH_AC_RESP;
24924 case WLAN_HAL_SIGNAL_BTAMP_EVENT_RSP:
24925 return WDI_BTAMP_EVENT_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024926 case WLAN_HAL_PROCESS_PTT_RSP:
24927 return WDI_FTM_CMD_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024928 case WLAN_HAL_ADD_STA_SELF_RSP:
24929 return WDI_ADD_STA_SELF_RESP;
24930case WLAN_HAL_DEL_STA_SELF_RSP:
24931 return WDI_DEL_STA_SELF_RESP;
Jeff Johnsone7245742012-09-05 17:12:55 -070024932#ifdef FEATURE_OEM_DATA_SUPPORT
24933 case WLAN_HAL_START_OEM_DATA_RSP:
24934 return WDI_START_OEM_DATA_RESP;
24935#endif /* FEATURE_OEM_DATA_SUPPORT */
Jeff Johnson295189b2012-06-20 16:38:30 -070024936 case WLAN_HAL_HOST_RESUME_RSP:
24937 return WDI_HOST_RESUME_RESP;
24938 case WLAN_HAL_KEEP_ALIVE_RSP:
24939 return WDI_KEEP_ALIVE_RESP;
24940#ifdef FEATURE_WLAN_SCAN_PNO
24941 case WLAN_HAL_SET_PREF_NETWORK_RSP:
24942 return WDI_SET_PREF_NETWORK_RESP;
24943 case WLAN_HAL_SET_RSSI_FILTER_RSP:
Jeff Johnsone7245742012-09-05 17:12:55 -070024944 return WDI_SET_RSSI_FILTER_RESP;
Jeff Johnson295189b2012-06-20 16:38:30 -070024945 case WLAN_HAL_UPDATE_SCAN_PARAM_RSP:
24946 return WDI_UPDATE_SCAN_PARAMS_RESP;
24947 case WLAN_HAL_PREF_NETW_FOUND_IND:
24948 return WDI_HAL_PREF_NETWORK_FOUND_IND;
24949#endif // FEATURE_WLAN_SCAN_PNO
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024950#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070024951 case WLAN_ROAM_SCAN_OFFLOAD_RSP:
24952 return WDI_ROAM_SCAN_OFFLOAD_RESP;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070024953#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070024954 case WLAN_HAL_SET_TX_PER_TRACKING_RSP:
24955 return WDI_SET_TX_PER_TRACKING_RESP;
24956#ifdef WLAN_FEATURE_PACKET_FILTERING
24957 case WLAN_HAL_8023_MULTICAST_LIST_RSP:
24958 return WDI_8023_MULTICAST_LIST_RESP;
24959 case WLAN_HAL_SET_PACKET_FILTER_RSP:
24960 return WDI_RECEIVE_FILTER_SET_FILTER_RESP;
24961 case WLAN_HAL_PACKET_FILTER_MATCH_COUNT_RSP:
24962 return WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP;
24963 case WLAN_HAL_CLEAR_PACKET_FILTER_RSP:
24964 return WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP;
24965#endif // WLAN_FEATURE_PACKET_FILTERING
24966
24967 case WLAN_HAL_DUMP_COMMAND_RSP:
24968 return WDI_HAL_DUMP_CMD_RESP;
24969 case WLAN_HAL_SET_POWER_PARAMS_RSP:
24970 return WDI_SET_POWER_PARAMS_RESP;
24971#ifdef WLAN_FEATURE_VOWIFI_11R
24972 case WLAN_HAL_AGGR_ADD_TS_RSP:
24973 return WDI_AGGR_ADD_TS_RESP;
24974#endif
24975
24976#ifdef WLAN_FEATURE_GTK_OFFLOAD
24977 case WLAN_HAL_GTK_OFFLOAD_RSP:
24978 return WDI_GTK_OFFLOAD_RESP;
24979 case WLAN_HAL_GTK_OFFLOAD_GETINFO_RSP:
24980 return WDI_GTK_OFFLOAD_GETINFO_RESP;
24981#endif /* WLAN_FEATURE_GTK_OFFLOAD */
24982#ifdef WLAN_WAKEUP_EVENTS
24983 case WLAN_HAL_WAKE_REASON_IND:
24984 return WDI_HAL_WAKE_REASON_IND;
24985#endif // WLAN_WAKEUP_EVENTS
24986
24987 case WLAN_HAL_SET_THERMAL_MITIGATION_RSP:
24988 return WDI_SET_TM_LEVEL_RESP;
24989 case WLAN_HAL_FEATURE_CAPS_EXCHANGE_RSP:
24990 return WDI_FEATURE_CAPS_EXCHANGE_RESP;
Mohit Khanna4a70d262012-09-11 16:30:12 -070024991#ifdef WLAN_FEATURE_11AC
24992 case WLAN_HAL_UPDATE_VHT_OP_MODE_RSP:
24993 return WDI_UPDATE_VHT_OP_MODE_RESP;
24994#endif
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080024995#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080024996 case WLAN_HAL_GET_ROAM_RSSI_RSP:
24997 return WDI_GET_ROAM_RSSI_RESP;
24998#endif
Ravi Joshid2ca7c42013-07-23 08:37:49 -070024999
Leo Chang9056f462013-08-01 19:21:11 -070025000#ifdef FEATURE_WLAN_LPHB
25001 case WLAN_HAL_LPHB_IND:
Leo Changd9df8aa2013-09-26 13:32:26 -070025002 return WDI_HAL_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070025003 case WLAN_HAL_LPHB_CFG_RSP:
25004 return WDI_LPHB_CFG_RESP;
25005#endif /* FEATURE_WLAN_LPHB */
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025006
25007 case WLAN_HAL_IBSS_PEER_INACTIVITY_IND:
25008 return WDI_HAL_IBSS_PEER_INACTIVITY_IND;
Yue Mab9c86f42013-08-14 15:59:08 -070025009 case WLAN_HAL_PERIODIC_TX_PTRN_FW_IND:
25010 return WDI_HAL_PERIODIC_TX_PTRN_FW_IND;
Ravi Joshid2ca7c42013-07-23 08:37:49 -070025011
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025012#ifdef WLAN_FEATURE_RMC
25013 case WLAN_HAL_RMC_RULER_RSP:
25014 return WDI_RMC_RULER_RESP;
25015 case WLAN_HAL_RMC_UPDATE_IND:
25016 return WDI_RMC_UPDATE_IND_TO_HOST;
25017 case WLAN_HAL_GET_IBSS_PEER_INFO_RSP:
25018 return WDI_HAL_IBSS_PEER_INFO_RSP;
25019#endif /* WLAN_FEATURE_RMC */
25020
Rajeev79dbe4c2013-10-05 11:03:42 +053025021#ifdef FEATURE_WLAN_BATCH_SCAN
25022 case WLAN_HAL_BATCHSCAN_SET_RSP:
25023 return WDI_SET_BATCH_SCAN_RESP;
25024 case WLAN_HAL_BATCHSCAN_RESULT_IND:
25025 return WDI_BATCHSCAN_RESULT_IND;
25026#endif // FEATURE_WLAN_BATCH_SCAN
25027
Abhishek Singh7cd040e2016-01-07 10:51:04 +053025028#ifdef WLAN_FEATURE_RMC
25029 case WLAN_HAL_TX_FAIL_IND:
25030 return WDI_HAL_TX_FAIL_IND;
25031#endif /* WLAN_FEATURE_RMC */
25032
Leo Chang0b0e45a2013-12-15 15:18:55 -080025033#ifdef FEATURE_WLAN_CH_AVOID
25034 case WLAN_HAL_AVOID_FREQ_RANGE_IND:
25035 return WDI_HAL_CH_AVOID_IND;
25036#endif /* FEATURE_WLAN_CH_AVOID */
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080025037 case WLAN_HAL_UPDATE_CHANNEL_LIST_RSP:
25038 return WDI_UPDATE_CHAN_RESP;
c_hpothu86041002014-04-14 19:06:51 +053025039 case WLAN_HAL_PRINT_REG_INFO_IND:
25040 return WDI_PRINT_REG_INFO_IND;
Abhishek Singhbe7f93d2014-06-04 10:47:11 +053025041 case WLAN_HAL_CH_SWITCH_V1_RSP:
25042 return WDI_CH_SWITCH_RESP_V1;
c_hpothu92367912014-05-01 15:18:17 +053025043 case WLAN_HAL_GET_BCN_MISS_RATE_RSP:
25044 return WDI_GET_BCN_MISS_RATE_RSP;
Sunil Duttbd736ed2014-05-26 21:19:41 +053025045#ifdef WLAN_FEATURE_LINK_LAYER_STATS
25046 case WLAN_HAL_LL_SET_STATS_RSP:
25047 return WDI_LL_STATS_SET_RSP;
25048 case WLAN_HAL_LL_GET_STATS_RSP:
25049 return WDI_LL_STATS_GET_RSP;
25050 case WLAN_HAL_LL_CLEAR_STATS_RSP:
25051 return WDI_LL_STATS_CLEAR_RSP;
25052 case WLAN_HAL_LL_NOTIFY_STATS:
25053 return WDI_HAL_LL_STATS_RESULTS_IND;
25054#endif
Dino Mycle41bdc942014-06-10 11:30:24 +053025055#ifdef WLAN_FEATURE_EXTSCAN
25056 case WLAN_HAL_EXT_SCAN_START_RSP:
25057 return WDI_EXTSCAN_START_RSP;
25058 case WLAN_HAL_EXT_SCAN_STOP_RSP:
25059 return WDI_EXTSCAN_STOP_RSP;
25060 case WLAN_HAL_EXT_SCAN_GET_CAP_RSP:
25061 return WDI_EXTSCAN_GET_CAPABILITIES_RSP;
25062 case WLAN_HAL_EXT_SCAN_GET_SCAN_RSP:
25063 return WDI_EXTSCAN_GET_CACHED_RESULTS_RSP;
25064 case WLAN_HAL_BSSID_HOTLIST_SET_RSP:
25065 return WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP;
25066 case WLAN_HAL_BSSID_HOTLIST_RESET_RSP:
25067 return WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053025068 case WLAN_HAL_SSID_HOTLIST_SET_RSP:
25069 return WDI_EXTSCAN_SET_HOTLIST_SSID_RSP;
25070 case WLAN_HAL_SSID_HOTLIST_RESET_RSP:
25071 return WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP;
Dino Mycle41bdc942014-06-10 11:30:24 +053025072 case WLAN_HAL_EXT_SCAN_PROGRESS_IND:
25073 return WDI_HAL_EXTSCAN_PROGRESS_IND;
25074 case WLAN_HAL_EXT_SCAN_RESULT_AVAILABLE_IND:
25075 return WDI_HAL_EXTSCAN_SCAN_AVAILABLE_IND;
25076 case WLAN_HAL_EXT_SCAN_RESULT_IND:
25077 return WDI_HAL_EXTSCAN_RESULT_IND;
25078 case WLAN_HAL_BSSID_HOTLIST_RESULT_IND:
25079 return WDI_HAL_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053025080 case WLAN_HAL_SSID_HOTLIST_RESULT_IND:
25081 return WDI_HAL_EXTSCAN_SSID_HOTLIST_RESULT_IND;
Dino Mycle41bdc942014-06-10 11:30:24 +053025082#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053025083 case WLAN_HAL_MAC_SPOOFED_SCAN_RSP:
25084 return WDI_SPOOF_MAC_ADDR_RSP;
Abhishek Singh85b74712014-10-08 11:38:19 +053025085 case WLAN_HAL_FW_STATS_RSP:
25086 return WDI_GET_FW_STATS_RSP;
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053025087 case WLAN_HAL_ENCRYPT_DATA_RSP:
25088 return WDI_ENCRYPT_MSG_RSP;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053025089 case WLAN_HAL_FW_LOGGING_INIT_RSP:
25090 return WDI_FW_LOGGING_INIT_RSP;
Siddharth Bhal64246172015-02-27 01:04:37 +053025091 case WLAN_HAL_GET_FRAME_LOG_RSP:
25092 return WDI_GET_FRAME_LOG_RSP;
Srinivas Dasari32a79262015-02-19 13:04:49 +053025093 case WLAN_HAL_NAN_RSP:
25094 return WDI_NAN_RESPONSE;
25095 case WLAN_HAL_NAN_EVT:
25096 return WDI_HAL_NAN_EVENT;
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053025097 case WLAN_HAL_LOST_LINK_PARAMETERS_IND:
25098 return WDI_HAL_LOST_LINK_PARAMS_IND;
Katya Nigamf0511f62015-05-05 16:40:57 +053025099 case WLAN_HAL_ENABLE_MONITOR_MODE_RSP:
25100 return WDI_MON_START_RSP;
25101 case WLAN_HAL_DISABLE_MONITOR_MODE_RSP:
25102 return WDI_MON_STOP_RSP;
Sachin Ahuja715aafc2015-07-21 23:35:10 +053025103 case WLAN_HAL_FATAL_EVENT_LOGGING_RSP:
25104 return WDI_FATAL_EVENT_LOGGING_RSP;
c_manjeecfd1efb2015-09-25 19:32:34 +053025105 case WLAN_HAL_FW_MEMORY_DUMP_RSP:
25106 return WDI_FWR_MEM_DUMP_RSP;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053025107 case WLAN_HAL_START_RSSI_MONITORING_RSP:
25108 return WDI_START_RSSI_MONITOR_RSP;
25109 case WLAN_HAL_STOP_RSSI_MONITORING_RSP:
25110 return WDI_STOP_RSSI_MONITOR_RSP;
25111 case WLAN_HAL_RSSI_MONITORING_IND:
25112 return WDI_HAL_RSSI_BREACHED_IND;
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053025113 case WLAN_HAL_WIFI_CONFIG_SET_PARAMS_RSP:
25114 return WDI_WIFI_CONFIG_SET_RSP;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053025115#ifdef FEATURE_OEM_DATA_SUPPORT
25116 case WLAN_HAL_START_OEM_DATA_RSP_IND_NEW:
25117 return WDI_HAL_START_OEM_DATA_RSP_IND_NEW;
25118#endif /* FEATURE_OEM_DATA_SUPPORT */
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053025119 case WLAN_HAL_ANTENNA_DIVERSITY_SELECTION_RSP:
25120 return WDI_ANTENNA_DIVERSITY_SELECTION_RSP;
Kapil Guptab3a981b2016-06-26 13:36:51 +053025121#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
25122 case WLAN_HAL_SET_PER_ROAM_CONFIG_RSP:
25123 return WDI_PER_ROAM_SCAN_OFFLOAD_RSP;
25124 case WLAN_HAL_PER_ROAM_SCAN_TRIGGER_RSP:
25125 return WDI_PER_ROAM_SCAN_TRIGGER_RSP;
25126#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025127 default:
Jeff Johnsone7245742012-09-05 17:12:55 -070025128 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025129 }
25130
25131}/*HAL_2_WDI_RSP_TYPE*/
25132
25133
25134/*Convert WDI driver type into HAL driver type*/
25135WPT_STATIC WPT_INLINE tDriverType
25136WDI_2_HAL_DRV_TYPE
25137(
25138 WDI_DriverType wdiDriverType
25139)
25140{
Jeff Johnsone7245742012-09-05 17:12:55 -070025141 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025142 the chances of getting inlined*/
25143 switch( wdiDriverType )
25144 {
25145 case WDI_DRIVER_TYPE_PRODUCTION:
25146 return eDRIVER_TYPE_PRODUCTION;
25147 case WDI_DRIVER_TYPE_MFG:
25148 return eDRIVER_TYPE_MFG;
25149 case WDI_DRIVER_TYPE_DVT:
25150 return eDRIVER_TYPE_DVT;
25151 }
25152
Jeff Johnsone7245742012-09-05 17:12:55 -070025153 return eDRIVER_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025154}/*WDI_2_HAL_DRV_TYPE*/
25155
25156
25157/*Convert WDI stop reason into HAL stop reason*/
25158WPT_STATIC WPT_INLINE tHalStopType
25159WDI_2_HAL_STOP_REASON
25160(
25161 WDI_StopType wdiDriverType
25162)
25163{
Jeff Johnsone7245742012-09-05 17:12:55 -070025164 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025165 the chances of getting inlined*/
25166 switch( wdiDriverType )
25167 {
25168 case WDI_STOP_TYPE_SYS_RESET:
25169 return HAL_STOP_TYPE_SYS_RESET;
Yue Mad8cac142013-03-28 11:33:46 -070025170 case WDI_STOP_TYPE_SYS_DEEP_SLEEP:
25171 return HAL_STOP_TYPE_SYS_DEEP_SLEEP;
Jeff Johnson295189b2012-06-20 16:38:30 -070025172 case WDI_STOP_TYPE_RF_KILL:
25173 return HAL_STOP_TYPE_RF_KILL;
25174 }
25175
Jeff Johnsone7245742012-09-05 17:12:55 -070025176 return HAL_STOP_TYPE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025177}/*WDI_2_HAL_STOP_REASON*/
25178
25179
25180/*Convert WDI scan mode type into HAL scan mode type*/
25181WPT_STATIC WPT_INLINE eHalSysMode
25182WDI_2_HAL_SCAN_MODE
25183(
25184 WDI_ScanMode wdiScanMode
25185)
25186{
Jeff Johnsone7245742012-09-05 17:12:55 -070025187 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025188 the chances of getting inlined*/
25189 switch( wdiScanMode )
25190 {
25191 case WDI_SCAN_MODE_NORMAL:
25192 return eHAL_SYS_MODE_NORMAL;
25193 case WDI_SCAN_MODE_LEARN:
25194 return eHAL_SYS_MODE_LEARN;
25195 case WDI_SCAN_MODE_SCAN:
25196 return eHAL_SYS_MODE_SCAN;
25197 case WDI_SCAN_MODE_PROMISC:
25198 return eHAL_SYS_MODE_PROMISC;
25199 case WDI_SCAN_MODE_SUSPEND_LINK:
25200 return eHAL_SYS_MODE_SUSPEND_LINK;
Madan Mohan Koyyalamudi9b876782012-10-11 16:22:51 -070025201 case WDI_SCAN_MODE_ROAM_SCAN:
25202 return eHAL_SYS_MODE_ROAM_SCAN;
25203 case WDI_SCAN_MODE_ROAM_SUSPEND_LINK:
25204 return eHAL_SYS_MODE_ROAM_SUSPEND_LINK;
Jeff Johnson295189b2012-06-20 16:38:30 -070025205 }
25206
Jeff Johnsone7245742012-09-05 17:12:55 -070025207 return eHAL_SYS_MODE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025208}/*WDI_2_HAL_SCAN_MODE*/
25209
25210/*Convert WDI sec ch offset into HAL sec ch offset type*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025211WPT_STATIC WPT_INLINE ePhyChanBondState
Jeff Johnson295189b2012-06-20 16:38:30 -070025212WDI_2_HAL_SEC_CH_OFFSET
25213(
25214 WDI_HTSecondaryChannelOffset wdiSecChOffset
25215)
25216{
Jeff Johnsone7245742012-09-05 17:12:55 -070025217 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025218 the chances of getting inlined*/
25219 switch( wdiSecChOffset )
25220 {
25221 case WDI_SECONDARY_CHANNEL_OFFSET_NONE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025222 return PHY_SINGLE_CHANNEL_CENTERED;
Jeff Johnson295189b2012-06-20 16:38:30 -070025223 case WDI_SECONDARY_CHANNEL_OFFSET_UP:
Jeff Johnsone7245742012-09-05 17:12:55 -070025224 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
Jeff Johnson295189b2012-06-20 16:38:30 -070025225 case WDI_SECONDARY_CHANNEL_OFFSET_DOWN:
Jeff Johnsone7245742012-09-05 17:12:55 -070025226 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
25227#ifdef WLAN_FEATURE_11AC
25228 case WDI_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25229 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25230 case WDI_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25231 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25232 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25233 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25234 case WDI_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25235 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25236 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25237 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25238 case WDI_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25239 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25240 case WDI_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25241 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25242#endif
25243 default:
25244 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025245 }
25246
Jeff Johnsone7245742012-09-05 17:12:55 -070025247 return PHY_CHANNEL_BONDING_STATE_MAX;
Jeff Johnson295189b2012-06-20 16:38:30 -070025248}/*WDI_2_HAL_SEC_CH_OFFSET*/
25249
25250/*Convert WDI BSS type into HAL BSS type*/
25251WPT_STATIC WPT_INLINE tSirBssType
25252WDI_2_HAL_BSS_TYPE
25253(
25254 WDI_BssType wdiBSSType
25255)
25256{
Jeff Johnsone7245742012-09-05 17:12:55 -070025257 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025258 the chances of getting inlined*/
25259 switch( wdiBSSType )
25260 {
25261 case WDI_INFRASTRUCTURE_MODE:
25262 return eSIR_INFRASTRUCTURE_MODE;
25263 case WDI_INFRA_AP_MODE:
25264 return eSIR_INFRA_AP_MODE;
25265 case WDI_IBSS_MODE:
25266 return eSIR_IBSS_MODE;
25267 case WDI_BTAMP_STA_MODE:
25268 return eSIR_BTAMP_STA_MODE;
25269 case WDI_BTAMP_AP_MODE:
Jeff Johnsone7245742012-09-05 17:12:55 -070025270 return eSIR_BTAMP_AP_MODE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025271 case WDI_BSS_AUTO_MODE:
25272 return eSIR_AUTO_MODE;
25273 }
25274
Jeff Johnsone7245742012-09-05 17:12:55 -070025275 return eSIR_DONOT_USE_BSS_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025276}/*WDI_2_HAL_BSS_TYPE*/
25277
25278/*Convert WDI NW type into HAL NW type*/
25279WPT_STATIC WPT_INLINE tSirNwType
25280WDI_2_HAL_NW_TYPE
25281(
25282 WDI_NwType wdiNWType
25283)
25284{
Jeff Johnsone7245742012-09-05 17:12:55 -070025285 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025286 the chances of getting inlined*/
25287 switch( wdiNWType )
25288 {
25289 case WDI_11A_NW_TYPE:
25290 return eSIR_11A_NW_TYPE;
25291 case WDI_11B_NW_TYPE:
25292 return eSIR_11B_NW_TYPE;
25293 case WDI_11G_NW_TYPE:
25294 return eSIR_11G_NW_TYPE;
25295 case WDI_11N_NW_TYPE:
25296 return eSIR_11N_NW_TYPE;
25297 }
25298
Jeff Johnsone7245742012-09-05 17:12:55 -070025299 return eSIR_DONOT_USE_NW_TYPE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025300}/*WDI_2_HAL_NW_TYPE*/
25301
25302/*Convert WDI chanel bonding type into HAL cb type*/
25303WPT_STATIC WPT_INLINE ePhyChanBondState
25304WDI_2_HAL_CB_STATE
25305(
25306 WDI_PhyChanBondState wdiCbState
25307)
25308{
Jeff Johnsone7245742012-09-05 17:12:55 -070025309 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025310 the chances of getting inlined*/
25311 switch ( wdiCbState )
25312 {
25313 case WDI_PHY_SINGLE_CHANNEL_CENTERED:
25314 return PHY_SINGLE_CHANNEL_CENTERED;
25315 case WDI_PHY_DOUBLE_CHANNEL_LOW_PRIMARY:
25316 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
25317 case WDI_PHY_DOUBLE_CHANNEL_CENTERED:
25318 return PHY_DOUBLE_CHANNEL_CENTERED;
25319 case WDI_PHY_DOUBLE_CHANNEL_HIGH_PRIMARY:
25320 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
Jeff Johnsone7245742012-09-05 17:12:55 -070025321#ifdef WLAN_FEATURE_11AC
25322 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED:
25323 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_CENTERED;
25324 case WDI_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED:
25325 return PHY_QUADRUPLE_CHANNEL_20MHZ_CENTERED_40MHZ_CENTERED;
25326 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED:
25327 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_CENTERED;
25328 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW:
25329 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
25330 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW:
25331 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
25332 case WDI_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH:
25333 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
25334 case WDI_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH:
25335 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
25336#endif
25337 case WDI_MAX_CB_STATE:
25338 default:
25339 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025340 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025341
Jeff Johnson295189b2012-06-20 16:38:30 -070025342 return PHY_CHANNEL_BONDING_STATE_MAX;
25343}/*WDI_2_HAL_CB_STATE*/
25344
25345/*Convert WDI chanel bonding type into HAL cb type*/
25346WPT_STATIC WPT_INLINE tSirMacHTOperatingMode
25347WDI_2_HAL_HT_OPER_MODE
25348(
25349 WDI_HTOperatingMode wdiHTOperMode
25350)
25351{
Jeff Johnsone7245742012-09-05 17:12:55 -070025352 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025353 the chances of getting inlined*/
25354 switch ( wdiHTOperMode )
25355 {
25356 case WDI_HT_OP_MODE_PURE:
25357 return eSIR_HT_OP_MODE_PURE;
25358 case WDI_HT_OP_MODE_OVERLAP_LEGACY:
25359 return eSIR_HT_OP_MODE_OVERLAP_LEGACY;
25360 case WDI_HT_OP_MODE_NO_LEGACY_20MHZ_HT:
25361 return eSIR_HT_OP_MODE_NO_LEGACY_20MHZ_HT;
25362 case WDI_HT_OP_MODE_MIXED:
25363 return eSIR_HT_OP_MODE_MIXED;
25364 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025365
Jeff Johnson295189b2012-06-20 16:38:30 -070025366 return eSIR_HT_OP_MODE_MAX;
25367}/*WDI_2_HAL_HT_OPER_MODE*/
25368
25369/*Convert WDI mimo PS type into HAL mimo PS type*/
25370WPT_STATIC WPT_INLINE tSirMacHTMIMOPowerSaveState
25371WDI_2_HAL_MIMO_PS
25372(
25373 WDI_HTMIMOPowerSaveState wdiHTOperMode
25374)
25375{
Jeff Johnsone7245742012-09-05 17:12:55 -070025376 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025377 the chances of getting inlined*/
25378 switch ( wdiHTOperMode )
25379 {
25380 case WDI_HT_MIMO_PS_STATIC:
25381 return eSIR_HT_MIMO_PS_STATIC;
25382 case WDI_HT_MIMO_PS_DYNAMIC:
25383 return eSIR_HT_MIMO_PS_DYNAMIC;
25384 case WDI_HT_MIMO_PS_NA:
25385 return eSIR_HT_MIMO_PS_NA;
25386 case WDI_HT_MIMO_PS_NO_LIMIT:
25387 return eSIR_HT_MIMO_PS_NO_LIMIT;
25388 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025389
Jeff Johnson295189b2012-06-20 16:38:30 -070025390 return eSIR_HT_MIMO_PS_MAX;
25391}/*WDI_2_HAL_MIMO_PS*/
25392
25393/*Convert WDI ENC type into HAL ENC type*/
25394WPT_STATIC WPT_INLINE tAniEdType
25395WDI_2_HAL_ENC_TYPE
25396(
25397 WDI_EncryptType wdiEncType
25398)
25399{
Jeff Johnsone7245742012-09-05 17:12:55 -070025400 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025401 the chances of getting inlined*/
25402 switch ( wdiEncType )
25403 {
25404 case WDI_ENCR_NONE:
25405 return eSIR_ED_NONE;
25406
25407 case WDI_ENCR_WEP40:
25408 return eSIR_ED_WEP40;
25409
25410 case WDI_ENCR_WEP104:
25411 return eSIR_ED_WEP104;
25412
25413 case WDI_ENCR_TKIP:
25414 return eSIR_ED_TKIP;
25415
25416 case WDI_ENCR_CCMP:
25417 return eSIR_ED_CCMP;
25418
25419 case WDI_ENCR_AES_128_CMAC:
25420 return eSIR_ED_AES_128_CMAC;
25421#if defined(FEATURE_WLAN_WAPI)
25422 case WDI_ENCR_WPI:
25423 return eSIR_ED_WPI;
25424#endif
25425 default:
25426 return eSIR_ED_NOT_IMPLEMENTED;
25427 }
25428
25429}/*WDI_2_HAL_ENC_TYPE*/
25430
25431/*Convert WDI WEP type into HAL WEP type*/
25432WPT_STATIC WPT_INLINE tAniWepType
25433WDI_2_HAL_WEP_TYPE
25434(
25435 WDI_WepType wdiWEPType
25436)
25437{
Jeff Johnsone7245742012-09-05 17:12:55 -070025438 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025439 the chances of getting inlined*/
25440 switch ( wdiWEPType )
25441 {
25442 case WDI_WEP_STATIC:
25443 return eSIR_WEP_STATIC;
25444
25445 case WDI_WEP_DYNAMIC:
25446 return eSIR_WEP_DYNAMIC;
25447 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025448
Jeff Johnson295189b2012-06-20 16:38:30 -070025449 return eSIR_WEP_MAX;
25450}/*WDI_2_HAL_WEP_TYPE*/
25451
25452WPT_STATIC WPT_INLINE tSirLinkState
25453WDI_2_HAL_LINK_STATE
25454(
25455 WDI_LinkStateType wdiLinkState
25456)
25457{
Jeff Johnsone7245742012-09-05 17:12:55 -070025458 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025459 the chances of getting inlined*/
25460 switch ( wdiLinkState )
25461 {
25462 case WDI_LINK_IDLE_STATE:
25463 return eSIR_LINK_IDLE_STATE;
25464
25465 case WDI_LINK_PREASSOC_STATE:
25466 return eSIR_LINK_PREASSOC_STATE;
25467
25468 case WDI_LINK_POSTASSOC_STATE:
25469 return eSIR_LINK_POSTASSOC_STATE;
25470
25471 case WDI_LINK_AP_STATE:
25472 return eSIR_LINK_AP_STATE;
25473
25474 case WDI_LINK_IBSS_STATE:
25475 return eSIR_LINK_IBSS_STATE;
25476
25477 case WDI_LINK_BTAMP_PREASSOC_STATE:
25478 return eSIR_LINK_BTAMP_PREASSOC_STATE;
25479
25480 case WDI_LINK_BTAMP_POSTASSOC_STATE:
25481 return eSIR_LINK_BTAMP_POSTASSOC_STATE;
25482
25483 case WDI_LINK_BTAMP_AP_STATE:
25484 return eSIR_LINK_BTAMP_AP_STATE;
25485
25486 case WDI_LINK_BTAMP_STA_STATE:
25487 return eSIR_LINK_BTAMP_STA_STATE;
25488
25489 case WDI_LINK_LEARN_STATE:
25490 return eSIR_LINK_LEARN_STATE;
25491
25492 case WDI_LINK_SCAN_STATE:
25493 return eSIR_LINK_SCAN_STATE;
25494
25495 case WDI_LINK_FINISH_SCAN_STATE:
25496 return eSIR_LINK_FINISH_SCAN_STATE;
25497
25498 case WDI_LINK_INIT_CAL_STATE:
25499 return eSIR_LINK_INIT_CAL_STATE;
25500
25501 case WDI_LINK_FINISH_CAL_STATE:
25502 return eSIR_LINK_FINISH_CAL_STATE;
25503
Jeff Johnson295189b2012-06-20 16:38:30 -070025504 case WDI_LINK_LISTEN_STATE:
25505 return eSIR_LINK_LISTEN_STATE;
Jeff Johnson295189b2012-06-20 16:38:30 -070025506
Gopichand Nakkala924e4552013-05-08 19:18:14 +053025507 case WDI_LINK_SEND_ACTION_STATE:
25508 return eSIR_LINK_SEND_ACTION_STATE;
25509
Jeff Johnson295189b2012-06-20 16:38:30 -070025510 default:
25511 return eSIR_LINK_MAX;
Jeff Johnsone7245742012-09-05 17:12:55 -070025512 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025513}
25514
Jeff Johnsone7245742012-09-05 17:12:55 -070025515/*Translate a STA Context from WDI into HAL*/
25516WPT_STATIC WPT_INLINE
Jeff Johnson295189b2012-06-20 16:38:30 -070025517void
25518WDI_CopyWDIStaCtxToHALStaCtx
Jeff Johnsone7245742012-09-05 17:12:55 -070025519(
Jeff Johnson295189b2012-06-20 16:38:30 -070025520 tConfigStaParams* phalConfigSta,
25521 WDI_ConfigStaReqInfoType* pwdiConfigSta
25522)
25523{
25524 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070025525#ifdef WLAN_FEATURE_11AC
25526 /* Get the Version 1 Handler */
25527 tConfigStaParams_V1* phalConfigSta_V1 = NULL;
25528 if (WDI_getFwWlanFeatCaps(DOT11AC))
25529 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025530 phalConfigSta_V1 = (tConfigStaParams_V1*)phalConfigSta;
Jeff Johnsone7245742012-09-05 17:12:55 -070025531 }
25532#endif
25533 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025534 the chances of getting inlined*/
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025535
Jeff Johnsone7245742012-09-05 17:12:55 -070025536 wpalMemoryCopy(phalConfigSta->bssId,
25537 pwdiConfigSta->macBSSID, WDI_MAC_ADDR_LEN);
25538
25539 wpalMemoryCopy(phalConfigSta->staMac,
25540 pwdiConfigSta->macSTA, WDI_MAC_ADDR_LEN);
Jeff Johnson295189b2012-06-20 16:38:30 -070025541
25542 phalConfigSta->assocId = pwdiConfigSta->usAssocId;
25543 phalConfigSta->staType = pwdiConfigSta->wdiSTAType;
25544 phalConfigSta->shortPreambleSupported = pwdiConfigSta->ucShortPreambleSupported;
25545 phalConfigSta->listenInterval = pwdiConfigSta->usListenInterval;
25546 phalConfigSta->wmmEnabled = pwdiConfigSta->ucWMMEnabled;
25547 phalConfigSta->htCapable = pwdiConfigSta->ucHTCapable;
25548 phalConfigSta->txChannelWidthSet = pwdiConfigSta->ucTXChannelWidthSet;
25549 phalConfigSta->rifsMode = pwdiConfigSta->ucRIFSMode;
25550 phalConfigSta->lsigTxopProtection = pwdiConfigSta->ucLSIGTxopProtection;
25551 phalConfigSta->maxAmpduSize = pwdiConfigSta->ucMaxAmpduSize;
25552 phalConfigSta->maxAmpduDensity = pwdiConfigSta->ucMaxAmpduDensity;
25553 phalConfigSta->maxAmsduSize = pwdiConfigSta->ucMaxAmsduSize;
25554 phalConfigSta->fShortGI40Mhz = pwdiConfigSta->ucShortGI40Mhz;
25555 phalConfigSta->fShortGI20Mhz = pwdiConfigSta->ucShortGI20Mhz;
25556 phalConfigSta->rmfEnabled = pwdiConfigSta->ucRMFEnabled;
25557 phalConfigSta->action = pwdiConfigSta->wdiAction;
25558 phalConfigSta->uAPSD = pwdiConfigSta->ucAPSD;
25559 phalConfigSta->maxSPLen = pwdiConfigSta->ucMaxSPLen;
25560 phalConfigSta->greenFieldCapable = pwdiConfigSta->ucGreenFieldCapable;
25561 phalConfigSta->delayedBASupport = pwdiConfigSta->ucDelayedBASupport;
25562 phalConfigSta->us32MaxAmpduDuration = pwdiConfigSta->us32MaxAmpduDuratio;
25563 phalConfigSta->fDsssCckMode40Mhz = pwdiConfigSta->ucDsssCckMode40Mhz;
25564 phalConfigSta->encryptType = pwdiConfigSta->ucEncryptType;
Sushant Kaushik4fb4da72015-02-20 21:37:29 +053025565
Jeff Johnson295189b2012-06-20 16:38:30 -070025566 phalConfigSta->mimoPS = WDI_2_HAL_MIMO_PS(pwdiConfigSta->wdiMIMOPS);
25567
Jeff Johnsone7245742012-09-05 17:12:55 -070025568 phalConfigSta->supportedRates.opRateMode =
Jeff Johnson295189b2012-06-20 16:38:30 -070025569 pwdiConfigSta->wdiSupportedRates.opRateMode;
25570 for(i = 0; i < SIR_NUM_11B_RATES; i ++)
25571 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025572 phalConfigSta->supportedRates.llbRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025573 pwdiConfigSta->wdiSupportedRates.llbRates[i];
25574 }
25575 for(i = 0; i < SIR_NUM_11A_RATES; i ++)
25576 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025577 phalConfigSta->supportedRates.llaRates[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025578 pwdiConfigSta->wdiSupportedRates.llaRates[i];
25579 }
25580 for(i = 0; i < SIR_NUM_POLARIS_RATES; i ++)
25581 {
25582 phalConfigSta->supportedRates.aniLegacyRates[i] =
25583 pwdiConfigSta->wdiSupportedRates.aLegacyRates[i];
25584 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025585 phalConfigSta->supportedRates.aniEnhancedRateBitmap =
Jeff Johnson295189b2012-06-20 16:38:30 -070025586 pwdiConfigSta->wdiSupportedRates.uEnhancedRateBitmap;
25587 for(i = 0; i < SIR_MAC_MAX_SUPPORTED_MCS_SET; i ++)
25588 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025589 phalConfigSta->supportedRates.supportedMCSSet[i] =
Jeff Johnson295189b2012-06-20 16:38:30 -070025590 pwdiConfigSta->wdiSupportedRates.aSupportedMCSSet[i];
25591 }
25592 phalConfigSta->supportedRates.rxHighestDataRate =
25593 pwdiConfigSta->wdiSupportedRates.aRxHighestDataRate;
25594
Jeff Johnsone7245742012-09-05 17:12:55 -070025595#ifdef WLAN_FEATURE_11AC
25596 if(phalConfigSta_V1 != NULL)
25597 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025598 phalConfigSta_V1->supportedRates.vhtRxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtRxMCSMap;
25599 phalConfigSta_V1->supportedRates.vhtRxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtRxHighestDataRate;
25600 phalConfigSta_V1->supportedRates.vhtTxMCSMap = pwdiConfigSta->wdiSupportedRates.vhtTxMCSMap;
25601 phalConfigSta_V1->supportedRates.vhtTxHighestDataRate = pwdiConfigSta->wdiSupportedRates.vhtTxHighestDataRate;
Jeff Johnsone7245742012-09-05 17:12:55 -070025602 }
25603#endif
25604
Jeff Johnson295189b2012-06-20 16:38:30 -070025605 phalConfigSta->p2pCapableSta = pwdiConfigSta->ucP2pCapableSta ;
Jeff Johnson295189b2012-06-20 16:38:30 -070025606
Jeff Johnsone7245742012-09-05 17:12:55 -070025607#ifdef WLAN_FEATURE_11AC
25608 if(phalConfigSta_V1 != NULL)
25609 {
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025610 phalConfigSta_V1->vhtCapable = pwdiConfigSta->ucVhtCapableSta;
25611 phalConfigSta_V1->vhtTxChannelWidthSet = pwdiConfigSta->ucVhtTxChannelWidthSet;
Shailender Karmuchi08f87c22013-01-17 12:51:24 -080025612 phalConfigSta_V1->vhtTxBFEnabled = pwdiConfigSta->ucVhtTxBFEnabled;
Abhishek Singh6927fa02014-06-27 17:19:55 +053025613 phalConfigSta_V1->vhtTxMUBformeeCapable = pwdiConfigSta->vhtTxMUBformeeCapable;
Gopichand Nakkalab2d2c312013-01-04 11:41:02 -080025614 phalConfigSta_V1->htLdpcEnabled = pwdiConfigSta->ucHtLdpcEnabled;
25615 phalConfigSta_V1->vhtLdpcEnabled = pwdiConfigSta->ucVhtLdpcEnabled;
25616
Jeff Johnsone7245742012-09-05 17:12:55 -070025617 }
25618#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070025619}/*WDI_CopyWDIStaCtxToHALStaCtx*/;
Jeff Johnsone7245742012-09-05 17:12:55 -070025620
25621/*Translate a Rate set info from WDI into HAL*/
25622WPT_STATIC WPT_INLINE void
Jeff Johnson295189b2012-06-20 16:38:30 -070025623WDI_CopyWDIRateSetToHALRateSet
Jeff Johnsone7245742012-09-05 17:12:55 -070025624(
Jeff Johnson295189b2012-06-20 16:38:30 -070025625 tSirMacRateSet* pHalRateSet,
25626 WDI_RateSet* pwdiRateSet
25627)
25628{
Jeff Johnsone7245742012-09-05 17:12:55 -070025629 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070025630 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25631
25632 pHalRateSet->numRates = ( pwdiRateSet->ucNumRates <= SIR_MAC_RATESET_EID_MAX )?
25633 pwdiRateSet->ucNumRates:SIR_MAC_RATESET_EID_MAX;
25634
25635 for ( i = 0; i < pHalRateSet->numRates; i++ )
25636 {
25637 pHalRateSet->rate[i] = pwdiRateSet->aRates[i];
25638 }
Jeff Johnsone7245742012-09-05 17:12:55 -070025639
Jeff Johnson295189b2012-06-20 16:38:30 -070025640}/*WDI_CopyWDIRateSetToHALRateSet*/
25641
25642
25643/*Translate an EDCA Parameter Record from WDI into HAL*/
25644WPT_STATIC WPT_INLINE void
25645WDI_CopyWDIEDCAParamsToHALEDCAParams
Jeff Johnsone7245742012-09-05 17:12:55 -070025646(
Jeff Johnson295189b2012-06-20 16:38:30 -070025647 tSirMacEdcaParamRecord* phalEdcaParam,
25648 WDI_EdcaParamRecord* pWDIEdcaParam
25649)
25650{
Jeff Johnsone7245742012-09-05 17:12:55 -070025651 /*Lightweight function - no sanity checks and no unecessary code to increase
Jeff Johnson295189b2012-06-20 16:38:30 -070025652 the chances of getting inlined*/
25653
25654 phalEdcaParam->aci.rsvd = pWDIEdcaParam->wdiACI.rsvd;
25655 phalEdcaParam->aci.aci = pWDIEdcaParam->wdiACI.aci;
25656 phalEdcaParam->aci.acm = pWDIEdcaParam->wdiACI.acm;
25657 phalEdcaParam->aci.aifsn = pWDIEdcaParam->wdiACI.aifsn;
25658
25659 phalEdcaParam->cw.max = pWDIEdcaParam->wdiCW.max;
25660 phalEdcaParam->cw.min = pWDIEdcaParam->wdiCW.min;
25661 phalEdcaParam->txoplimit = pWDIEdcaParam->usTXOPLimit;
25662}/*WDI_CopyWDIEDCAParamsToHALEDCAParams*/
25663
25664
25665/*Copy a management frame header from WDI fmt into HAL fmt*/
25666WPT_STATIC WPT_INLINE void
25667WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr
25668(
25669 tSirMacMgmtHdr* pmacMgmtHdr,
25670 WDI_MacMgmtHdr* pwdiMacMgmtHdr
25671)
25672{
25673 pmacMgmtHdr->fc.protVer = pwdiMacMgmtHdr->fc.protVer;
25674 pmacMgmtHdr->fc.type = pwdiMacMgmtHdr->fc.type;
25675 pmacMgmtHdr->fc.subType = pwdiMacMgmtHdr->fc.subType;
25676 pmacMgmtHdr->fc.toDS = pwdiMacMgmtHdr->fc.toDS;
25677 pmacMgmtHdr->fc.fromDS = pwdiMacMgmtHdr->fc.fromDS;
25678 pmacMgmtHdr->fc.moreFrag = pwdiMacMgmtHdr->fc.moreFrag;
25679 pmacMgmtHdr->fc.retry = pwdiMacMgmtHdr->fc.retry;
25680 pmacMgmtHdr->fc.powerMgmt = pwdiMacMgmtHdr->fc.powerMgmt;
25681 pmacMgmtHdr->fc.moreData = pwdiMacMgmtHdr->fc.moreData;
25682 pmacMgmtHdr->fc.wep = pwdiMacMgmtHdr->fc.wep;
25683 pmacMgmtHdr->fc.order = pwdiMacMgmtHdr->fc.order;
25684
25685 pmacMgmtHdr->durationLo = pwdiMacMgmtHdr->durationLo;
25686 pmacMgmtHdr->durationHi = pwdiMacMgmtHdr->durationHi;
25687
Jeff Johnsone7245742012-09-05 17:12:55 -070025688 wpalMemoryCopy(pmacMgmtHdr->da,
Jeff Johnson295189b2012-06-20 16:38:30 -070025689 pwdiMacMgmtHdr->da, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025690 wpalMemoryCopy(pmacMgmtHdr->sa,
Jeff Johnson295189b2012-06-20 16:38:30 -070025691 pwdiMacMgmtHdr->sa, 6);
Jeff Johnsone7245742012-09-05 17:12:55 -070025692 wpalMemoryCopy(pmacMgmtHdr->bssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070025693 pwdiMacMgmtHdr->bssId, 6);
25694
25695 pmacMgmtHdr->seqControl.fragNum = pwdiMacMgmtHdr->seqControl.fragNum;
25696 pmacMgmtHdr->seqControl.seqNumLo = pwdiMacMgmtHdr->seqControl.seqNumLo;
25697 pmacMgmtHdr->seqControl.seqNumHi = pwdiMacMgmtHdr->seqControl.seqNumHi;
25698
25699}/*WDI_CopyWDIMgmFrameHdrToHALMgmFrameHdr*/
25700
25701
25702/*Copy config bss parameters from WDI fmt into HAL fmt*/
25703WPT_STATIC WPT_INLINE void
25704WDI_CopyWDIConfigBSSToHALConfigBSS
25705(
25706 tConfigBssParams* phalConfigBSS,
25707 WDI_ConfigBSSReqInfoType* pwdiConfigBSS
25708)
25709{
25710
25711 wpt_uint8 keyIndex = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070025712#ifdef WLAN_FEATURE_11AC
25713 /* Get the Version 1 Handler */
25714 tConfigBssParams_V1* phalConfigBSS_V1 = NULL;
25715 if (WDI_getFwWlanFeatCaps(DOT11AC))
Madan Mohan Koyyalamudi1bed5982012-10-22 14:38:06 -070025716 phalConfigBSS_V1 = (tConfigBssParams_V1*)phalConfigBSS;
Jeff Johnsone7245742012-09-05 17:12:55 -070025717#endif
25718
Jeff Johnson295189b2012-06-20 16:38:30 -070025719 wpalMemoryCopy( phalConfigBSS->bssId,
25720 pwdiConfigBSS->macBSSID,
25721 WDI_MAC_ADDR_LEN);
25722
25723#ifdef HAL_SELF_STA_PER_BSS
25724 wpalMemoryCopy( phalConfigBSS->selfMacAddr,
25725 pwdiConfigBSS->macSelfAddr,
25726 WDI_MAC_ADDR_LEN);
25727#endif
25728
25729 phalConfigBSS->bssType = WDI_2_HAL_BSS_TYPE(pwdiConfigBSS->wdiBSSType);
25730
25731 phalConfigBSS->operMode = pwdiConfigBSS->ucOperMode;
25732 phalConfigBSS->nwType = WDI_2_HAL_NW_TYPE(pwdiConfigBSS->wdiNWType);
25733
Jeff Johnsone7245742012-09-05 17:12:55 -070025734 phalConfigBSS->shortSlotTimeSupported =
Jeff Johnson295189b2012-06-20 16:38:30 -070025735 pwdiConfigBSS->ucShortSlotTimeSupported;
25736 phalConfigBSS->llaCoexist = pwdiConfigBSS->ucllaCoexist;
25737 phalConfigBSS->llbCoexist = pwdiConfigBSS->ucllbCoexist;
25738 phalConfigBSS->llgCoexist = pwdiConfigBSS->ucllgCoexist;
25739 phalConfigBSS->ht20Coexist = pwdiConfigBSS->ucHT20Coexist;
25740 phalConfigBSS->llnNonGFCoexist = pwdiConfigBSS->ucllnNonGFCoexist;
Jeff Johnsone7245742012-09-05 17:12:55 -070025741 phalConfigBSS->fLsigTXOPProtectionFullSupport =
Jeff Johnson295189b2012-06-20 16:38:30 -070025742 pwdiConfigBSS->ucTXOPProtectionFullSupport;
25743 phalConfigBSS->fRIFSMode = pwdiConfigBSS->ucRIFSMode;
25744 phalConfigBSS->beaconInterval = pwdiConfigBSS->usBeaconInterval;
25745 phalConfigBSS->dtimPeriod = pwdiConfigBSS->ucDTIMPeriod;
25746 phalConfigBSS->txChannelWidthSet = pwdiConfigBSS->ucTXChannelWidthSet;
25747 phalConfigBSS->currentOperChannel = pwdiConfigBSS->ucCurrentOperChannel;
25748 phalConfigBSS->currentExtChannel = pwdiConfigBSS->ucCurrentExtChannel;
25749 phalConfigBSS->action = pwdiConfigBSS->wdiAction;
25750 phalConfigBSS->htCapable = pwdiConfigBSS->ucHTCapable;
25751 phalConfigBSS->obssProtEnabled = pwdiConfigBSS->ucObssProtEnabled;
25752 phalConfigBSS->rmfEnabled = pwdiConfigBSS->ucRMFEnabled;
25753
Jeff Johnsone7245742012-09-05 17:12:55 -070025754 phalConfigBSS->htOperMode =
25755 WDI_2_HAL_HT_OPER_MODE(pwdiConfigBSS->wdiHTOperMod);
Jeff Johnson295189b2012-06-20 16:38:30 -070025756
25757 phalConfigBSS->dualCTSProtection = pwdiConfigBSS->ucDualCTSProtection;
25758 phalConfigBSS->ucMaxProbeRespRetryLimit = pwdiConfigBSS->ucMaxProbeRespRetryLimit;
25759 phalConfigBSS->bHiddenSSIDEn = pwdiConfigBSS->bHiddenSSIDEn;
Rajeev Kumar Sirasanagandlaade0a332016-06-29 16:52:15 +053025760
25761 if (vos_is_probe_rsp_offload_enabled())
25762 phalConfigBSS->bProxyProbeRespEn = 1;
25763 else
25764 phalConfigBSS->bProxyProbeRespEn = pwdiConfigBSS->bProxyProbeRespEn;
Jeff Johnson295189b2012-06-20 16:38:30 -070025765
25766#ifdef WLAN_FEATURE_VOWIFI
25767 phalConfigBSS->maxTxPower = pwdiConfigBSS->cMaxTxPower;
25768#endif
25769
25770 /*! Used 32 as magic number because that is how the ssid is declared inside the
25771 hal header - hal needs a macro for it */
Jeff Johnsone7245742012-09-05 17:12:55 -070025772 phalConfigBSS->ssId.length =
Jeff Johnson295189b2012-06-20 16:38:30 -070025773 (pwdiConfigBSS->wdiSSID.ucLength <= 32)?
25774 pwdiConfigBSS->wdiSSID.ucLength : 32;
25775 wpalMemoryCopy(phalConfigBSS->ssId.ssId,
Jeff Johnsone7245742012-09-05 17:12:55 -070025776 pwdiConfigBSS->wdiSSID.sSSID,
25777 phalConfigBSS->ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070025778
25779 WDI_CopyWDIStaCtxToHALStaCtx( &phalConfigBSS->staContext,
25780 &pwdiConfigBSS->wdiSTAContext);
Jeff Johnsone7245742012-09-05 17:12:55 -070025781
Jeff Johnson295189b2012-06-20 16:38:30 -070025782 WDI_CopyWDIRateSetToHALRateSet( &phalConfigBSS->rateSet,
25783 &pwdiConfigBSS->wdiRateSet);
25784
25785 phalConfigBSS->edcaParamsValid = pwdiConfigBSS->ucEDCAParamsValid;
25786
25787 if(phalConfigBSS->edcaParamsValid)
25788 {
25789 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbe,
25790 &pwdiConfigBSS->wdiBEEDCAParams);
25791 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acbk,
25792 &pwdiConfigBSS->wdiBKEDCAParams);
25793 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvi,
25794 &pwdiConfigBSS->wdiVIEDCAParams);
25795 WDI_CopyWDIEDCAParamsToHALEDCAParams( &phalConfigBSS->acvo,
25796 &pwdiConfigBSS->wdiVOEDCAParams);
25797 }
25798
Jeff Johnsone7245742012-09-05 17:12:55 -070025799 phalConfigBSS->halPersona = pwdiConfigBSS->ucPersona;
Jeff Johnson295189b2012-06-20 16:38:30 -070025800
25801 phalConfigBSS->bSpectrumMgtEnable = pwdiConfigBSS->bSpectrumMgtEn;
25802
25803#ifdef WLAN_FEATURE_VOWIFI_11R
25804
Jeff Johnsone7245742012-09-05 17:12:55 -070025805 phalConfigBSS->extSetStaKeyParamValid =
Jeff Johnson295189b2012-06-20 16:38:30 -070025806 pwdiConfigBSS->bExtSetStaKeyParamValid;
Jeff Johnsone7245742012-09-05 17:12:55 -070025807
Jeff Johnson295189b2012-06-20 16:38:30 -070025808 if( phalConfigBSS->extSetStaKeyParamValid )
25809 {
25810 /*-----------------------------------------------------------------------
25811 Copy the STA Key parameters into the HAL message
25812 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070025813 phalConfigBSS->extSetStaKeyParam.encType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025814 WDI_2_HAL_ENC_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiEncType);
25815
Jeff Johnsone7245742012-09-05 17:12:55 -070025816 phalConfigBSS->extSetStaKeyParam.wepType =
Jeff Johnson295189b2012-06-20 16:38:30 -070025817 WDI_2_HAL_WEP_TYPE (pwdiConfigBSS->wdiExtSetKeyParam.wdiWEPType );
25818
25819 phalConfigBSS->extSetStaKeyParam.staIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucSTAIdx;
25820
25821 phalConfigBSS->extSetStaKeyParam.defWEPIdx = pwdiConfigBSS->wdiExtSetKeyParam.ucDefWEPIdx;
25822
25823 phalConfigBSS->extSetStaKeyParam.singleTidRc = pwdiConfigBSS->wdiExtSetKeyParam.ucSingleTidRc;
25824
Jeff Johnson295189b2012-06-20 16:38:30 -070025825 for(keyIndex = 0; keyIndex < pwdiConfigBSS->wdiExtSetKeyParam.ucNumKeys ;
25826 keyIndex++)
25827 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025828 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyId =
Jeff Johnson295189b2012-06-20 16:38:30 -070025829 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyId;
25830 phalConfigBSS->extSetStaKeyParam.key[keyIndex].unicast =
25831 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].unicast;
25832 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyDirection =
25833 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyDirection;
25834 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyRsc,
Jeff Johnsone7245742012-09-05 17:12:55 -070025835 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyRsc,
Jeff Johnson295189b2012-06-20 16:38:30 -070025836 WDI_MAX_KEY_RSC_LEN);
Jeff Johnsone7245742012-09-05 17:12:55 -070025837 phalConfigBSS->extSetStaKeyParam.key[keyIndex].paeRole =
Jeff Johnson295189b2012-06-20 16:38:30 -070025838 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].paeRole;
Jeff Johnsone7245742012-09-05 17:12:55 -070025839 phalConfigBSS->extSetStaKeyParam.key[keyIndex].keyLength =
Jeff Johnson295189b2012-06-20 16:38:30 -070025840 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].keyLength;
25841 wpalMemoryCopy(phalConfigBSS->extSetStaKeyParam.key[keyIndex].key,
Jeff Johnsone7245742012-09-05 17:12:55 -070025842 pwdiConfigBSS->wdiExtSetKeyParam.wdiKey[keyIndex].key,
Jeff Johnson295189b2012-06-20 16:38:30 -070025843 WDI_MAX_KEY_LENGTH);
25844 }
Jeff Johnson295189b2012-06-20 16:38:30 -070025845 }
25846 else/* phalConfigBSS->extSetStaKeyParamValid is not set */
25847 {
Jeff Johnsone7245742012-09-05 17:12:55 -070025848 wpalMemoryZero( &phalConfigBSS->extSetStaKeyParam,
Jeff Johnson295189b2012-06-20 16:38:30 -070025849 sizeof(phalConfigBSS->extSetStaKeyParam) );
25850 }
25851
25852#endif /*WLAN_FEATURE_VOWIFI_11R*/
25853
Jeff Johnsone7245742012-09-05 17:12:55 -070025854#ifdef WLAN_FEATURE_11AC
25855 if(phalConfigBSS_V1 != NULL)
25856 {
25857 phalConfigBSS_V1->vhtCapable = pwdiConfigBSS->ucVhtCapableSta;
25858 phalConfigBSS_V1->vhtTxChannelWidthSet = pwdiConfigBSS->ucVhtTxChannelWidthSet;
25859 }
25860#endif
25861
Jeff Johnson295189b2012-06-20 16:38:30 -070025862}/*WDI_CopyWDIConfigBSSToHALConfigBSS*/
25863
25864
Jeff Johnsone7245742012-09-05 17:12:55 -070025865/*Extract the request CB function and user data from a request structure
Jeff Johnson295189b2012-06-20 16:38:30 -070025866 pointed to by user data */
25867WPT_STATIC WPT_INLINE void
25868WDI_ExtractRequestCBFromEvent
25869(
25870 WDI_EventInfoType* pEvent,
Jeff Johnsone7245742012-09-05 17:12:55 -070025871 WDI_ReqStatusCb* ppfnReqCB,
Jeff Johnson295189b2012-06-20 16:38:30 -070025872 void** ppUserData
25873)
25874{
25875 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
25876 switch ( pEvent->wdiRequest )
25877 {
25878 case WDI_START_REQ:
25879 *ppfnReqCB = ((WDI_StartReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25880 *ppUserData = ((WDI_StartReqParamsType*)pEvent->pEventData)->pUserData;
25881 break;
25882 case WDI_STOP_REQ:
25883 *ppfnReqCB = ((WDI_StopReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25884 *ppUserData = ((WDI_StopReqParamsType*)pEvent->pEventData)->pUserData;
25885 break;
25886 case WDI_INIT_SCAN_REQ:
25887 *ppfnReqCB = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25888 *ppUserData = ((WDI_InitScanReqParamsType*)pEvent->pEventData)->pUserData;
25889 break;
25890 case WDI_START_SCAN_REQ:
25891 *ppfnReqCB = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25892 *ppUserData = ((WDI_StartScanReqParamsType*)pEvent->pEventData)->pUserData;
25893 break;
25894 case WDI_END_SCAN_REQ:
25895 *ppfnReqCB = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25896 *ppUserData = ((WDI_EndScanReqParamsType*)pEvent->pEventData)->pUserData;
25897 break;
25898 case WDI_FINISH_SCAN_REQ:
25899 *ppfnReqCB = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25900 *ppUserData = ((WDI_FinishScanReqParamsType*)pEvent->pEventData)->pUserData;
25901 break;
25902 case WDI_JOIN_REQ:
25903 *ppfnReqCB = ((WDI_JoinReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25904 *ppUserData = ((WDI_JoinReqParamsType*)pEvent->pEventData)->pUserData;
25905 break;
25906 case WDI_CONFIG_BSS_REQ:
25907 *ppfnReqCB = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25908 *ppUserData = ((WDI_ConfigBSSReqParamsType*)pEvent->pEventData)->pUserData;
25909 break;
25910 case WDI_DEL_BSS_REQ:
25911 *ppfnReqCB = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25912 *ppUserData = ((WDI_DelBSSReqParamsType*)pEvent->pEventData)->pUserData;
25913 break;
25914 case WDI_POST_ASSOC_REQ:
25915 *ppfnReqCB = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25916 *ppUserData = ((WDI_PostAssocReqParamsType*)pEvent->pEventData)->pUserData;
25917 break;
25918 case WDI_DEL_STA_REQ:
25919 *ppfnReqCB = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25920 *ppUserData = ((WDI_DelSTAReqParamsType*)pEvent->pEventData)->pUserData;
25921 break;
Abhishek Singhf1221ab2015-08-04 16:38:39 +053025922
25923 case WDI_ADD_STA_SELF_REQ:
25924 *ppfnReqCB = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25925 *ppUserData = ((WDI_AddSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25926 break;
25927
Jeff Johnson295189b2012-06-20 16:38:30 -070025928 case WDI_DEL_STA_SELF_REQ:
25929 *ppfnReqCB = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25930 *ppUserData = ((WDI_DelSTASelfReqParamsType*)pEvent->pEventData)->pUserData;
25931 break;
25932
25933 case WDI_SET_BSS_KEY_REQ:
25934 *ppfnReqCB = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25935 *ppUserData = ((WDI_SetBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25936 break;
25937 case WDI_RMV_BSS_KEY_REQ:
25938 *ppfnReqCB = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25939 *ppUserData = ((WDI_RemoveBSSKeyReqParamsType*)pEvent->pEventData)->pUserData;
25940 break;
25941 case WDI_SET_STA_KEY_REQ:
25942 *ppfnReqCB = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25943 *ppUserData = ((WDI_SetSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25944 break;
25945 case WDI_RMV_STA_KEY_REQ:
25946 *ppfnReqCB = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25947 *ppUserData = ((WDI_RemoveSTAKeyReqParamsType*)pEvent->pEventData)->pUserData;
25948 break;
25949 case WDI_ADD_TS_REQ:
25950 *ppfnReqCB = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25951 *ppUserData = ((WDI_AddTSReqParamsType*)pEvent->pEventData)->pUserData;
25952 break;
25953 case WDI_DEL_TS_REQ:
25954 *ppfnReqCB = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25955 *ppUserData = ((WDI_DelTSReqParamsType*)pEvent->pEventData)->pUserData;
25956 break;
25957 case WDI_UPD_EDCA_PRMS_REQ:
25958 *ppfnReqCB = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25959 *ppUserData = ((WDI_UpdateEDCAParamsType*)pEvent->pEventData)->pUserData;
25960 break;
25961 case WDI_ADD_BA_SESSION_REQ:
25962 *ppfnReqCB = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25963 *ppUserData = ((WDI_AddBASessionReqParamsType*)pEvent->pEventData)->pUserData;
25964 break;
25965 case WDI_DEL_BA_REQ:
25966 *ppfnReqCB = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25967 *ppUserData = ((WDI_DelBAReqParamsType*)pEvent->pEventData)->pUserData;
25968 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025969#ifdef FEATURE_WLAN_ESE
Jeff Johnson295189b2012-06-20 16:38:30 -070025970 case WDI_TSM_STATS_REQ:
25971 *ppfnReqCB = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25972 *ppUserData = ((WDI_TSMStatsReqParamsType*)pEvent->pEventData)->pUserData;
25973 break;
25974#endif
25975 case WDI_CH_SWITCH_REQ:
25976 *ppfnReqCB = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25977 *ppUserData = ((WDI_SwitchChReqParamsType*)pEvent->pEventData)->pUserData;
25978 break;
Kalikinkar dhara1e83b772014-02-06 12:59:22 -080025979 case WDI_CH_SWITCH_REQ_V1:
25980 *ppfnReqCB = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->wdiReqStatusCB;
25981 *ppUserData = ((WDI_SwitchChReqParamsType_V1*)pEvent->pEventData)->pUserData;
25982 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070025983 case WDI_CONFIG_STA_REQ:
25984 *ppfnReqCB = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25985 *ppUserData = ((WDI_ConfigSTAReqParamsType*)pEvent->pEventData)->pUserData;
25986 break;
25987 case WDI_SET_LINK_ST_REQ:
25988 *ppfnReqCB = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25989 *ppUserData = ((WDI_SetLinkReqParamsType*)pEvent->pEventData)->pUserData;
25990 break;
25991 case WDI_GET_STATS_REQ:
25992 *ppfnReqCB = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25993 *ppUserData = ((WDI_GetStatsReqParamsType*)pEvent->pEventData)->pUserData;
25994 break;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080025995#if defined WLAN_FEATURE_VOWIFI_11R || defined FEATURE_WLAN_ESE || defined(FEATURE_WLAN_LFR)
Srinivas Girigowdad34cedb2013-01-25 13:33:11 -080025996 case WDI_GET_ROAM_RSSI_REQ:
25997 *ppfnReqCB = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
25998 *ppUserData = ((WDI_GetRoamRssiReqParamsType*)pEvent->pEventData)->pUserData;
25999 break;
26000#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026001 case WDI_UPDATE_CFG_REQ:
26002 *ppfnReqCB = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26003 *ppUserData = ((WDI_UpdateCfgReqParamsType*)pEvent->pEventData)->pUserData;
26004 break;
26005 case WDI_ADD_BA_REQ:
26006 *ppfnReqCB = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26007 *ppUserData = ((WDI_AddBAReqParamsType*)pEvent->pEventData)->pUserData;
26008 break;
26009 case WDI_TRIGGER_BA_REQ:
26010 *ppfnReqCB = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26011 *ppUserData = ((WDI_TriggerBAReqParamsType*)pEvent->pEventData)->pUserData;
26012 break;
26013 case WDI_UPD_BCON_PRMS_REQ:
26014 *ppfnReqCB = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26015 *ppUserData = ((WDI_UpdateBeaconParamsType*)pEvent->pEventData)->pUserData;
26016 break;
26017 case WDI_SND_BCON_REQ:
26018 *ppfnReqCB = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26019 *ppUserData = ((WDI_SendBeaconParamsType*)pEvent->pEventData)->pUserData;
26020 break;
26021 case WDI_ENTER_BMPS_REQ:
26022 *ppfnReqCB = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26023 *ppUserData = ((WDI_EnterBmpsReqParamsType*)pEvent->pEventData)->pUserData;
26024 break;
26025 case WDI_EXIT_BMPS_REQ:
26026 *ppfnReqCB = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26027 *ppUserData = ((WDI_ExitBmpsReqParamsType*)pEvent->pEventData)->pUserData;
26028 break;
Mihir Shetea4306052014-03-25 00:02:54 +053026029 case WDI_ENTER_IMPS_REQ:
26030 *ppfnReqCB = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26031 *ppUserData = ((WDI_EnterImpsReqParamsType*)pEvent->pEventData)->pUserData;
26032 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026033 case WDI_ENTER_UAPSD_REQ:
26034 *ppfnReqCB = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26035 *ppUserData = ((WDI_EnterUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26036 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026037 case WDI_EXIT_UAPSD_REQ:
26038 *ppfnReqCB = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26039 *ppUserData = ((WDI_ExitUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26040 break;
26041 case WDI_SET_UAPSD_PARAM_REQ:
26042 *ppfnReqCB = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26043 *ppUserData = ((WDI_SetUapsdAcParamsReqParamsType*)pEvent->pEventData)->pUserData;
26044 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026045 case WDI_UPDATE_UAPSD_PARAM_REQ:
26046 *ppfnReqCB = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26047 *ppUserData = ((WDI_UpdateUapsdReqParamsType*)pEvent->pEventData)->pUserData;
26048 break;
26049 case WDI_CONFIGURE_RXP_FILTER_REQ:
26050 *ppfnReqCB = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26051 *ppUserData = ((WDI_ConfigureRxpFilterReqParamsType*)pEvent->pEventData)->pUserData;
26052 break;
26053 case WDI_SET_BEACON_FILTER_REQ:
26054 *ppfnReqCB = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26055 *ppUserData = ((WDI_BeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
26056 break;
26057 case WDI_REM_BEACON_FILTER_REQ:
26058 *ppfnReqCB = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26059 *ppUserData = ((WDI_RemBeaconFilterReqParamsType*)pEvent->pEventData)->pUserData;
Jeff Johnsone7245742012-09-05 17:12:55 -070026060 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026061 case WDI_SET_RSSI_THRESHOLDS_REQ:
26062 *ppfnReqCB = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26063 *ppUserData = ((WDI_SetRSSIThresholdsReqParamsType*)pEvent->pEventData)->pUserData;
26064 break;
26065 case WDI_HOST_OFFLOAD_REQ:
26066 *ppfnReqCB = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26067 *ppUserData = ((WDI_HostOffloadReqParamsType*)pEvent->pEventData)->pUserData;
26068 break;
26069 case WDI_WOWL_ADD_BC_PTRN_REQ:
26070 *ppfnReqCB = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26071 *ppUserData = ((WDI_WowlAddBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
26072 break;
26073 case WDI_WOWL_DEL_BC_PTRN_REQ:
26074 *ppfnReqCB = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26075 *ppUserData = ((WDI_WowlDelBcPtrnReqParamsType*)pEvent->pEventData)->pUserData;
26076 break;
26077 case WDI_WOWL_ENTER_REQ:
26078 *ppfnReqCB = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26079 *ppUserData = ((WDI_WowlEnterReqParamsType*)pEvent->pEventData)->pUserData;
26080 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026081 case WDI_WOWL_EXIT_REQ:
26082 *ppfnReqCB = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26083 *ppUserData = ((WDI_WowlExitReqParamsType*)pEvent->pEventData)->pUserData;
26084 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026085 case WDI_CONFIGURE_APPS_CPU_WAKEUP_STATE_REQ:
26086 *ppfnReqCB = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26087 *ppUserData = ((WDI_ConfigureAppsCpuWakeupStateReqParamsType*)pEvent->pEventData)->pUserData;
26088 break;
26089 case WDI_FLUSH_AC_REQ:
26090 *ppfnReqCB = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26091 *ppUserData = ((WDI_FlushAcReqParamsType*)pEvent->pEventData)->pUserData;
26092 break;
26093 case WDI_BTAMP_EVENT_REQ:
26094 *ppfnReqCB = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26095 *ppUserData = ((WDI_BtAmpEventParamsType*)pEvent->pEventData)->pUserData;
26096 break;
26097 case WDI_KEEP_ALIVE_REQ:
26098 *ppfnReqCB = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26099 *ppUserData = ((WDI_KeepAliveReqParamsType*)pEvent->pEventData)->pUserData;
26100 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026101#if defined FEATURE_WLAN_SCAN_PNO
26102 case WDI_SET_PREF_NETWORK_REQ:
26103 *ppfnReqCB = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26104 *ppUserData = ((WDI_PNOScanReqParamsType*)pEvent->pEventData)->pUserData;
26105 break;
26106 case WDI_SET_RSSI_FILTER_REQ:
26107 *ppfnReqCB = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26108 *ppUserData = ((WDI_SetRssiFilterReqParamsType*)pEvent->pEventData)->pUserData;
26109 break;
26110 case WDI_UPDATE_SCAN_PARAMS_REQ:
26111 *ppfnReqCB = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->wdiReqStatusCB;
26112 *ppUserData = ((WDI_UpdateScanParamsInfoType*)pEvent->pEventData)->pUserData;
26113 break;
26114#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070026115 case WDI_SET_TX_PER_TRACKING_REQ:
26116 *ppfnReqCB = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26117 *ppUserData = ((WDI_SetTxPerTrackingReqParamsType*)pEvent->pEventData)->pUserData;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026118 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026119#if defined WLAN_FEATURE_PACKET_FILTERING
26120 case WDI_8023_MULTICAST_LIST_REQ:
26121 *ppfnReqCB = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26122 *ppUserData = ((WDI_RcvFltPktSetMcListReqParamsType*)pEvent->pEventData)->pUserData;
26123 break;
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026124 case WDI_RECEIVE_FILTER_SET_FILTER_REQ:
26125 *ppfnReqCB = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26126 *ppUserData = ((WDI_SetRcvPktFilterReqParamsType*)pEvent->pEventData)->pUserData;
26127 break;
26128 case WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ:
26129 *ppfnReqCB = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26130 *ppUserData = ((WDI_RcvFltPktMatchCntReqParamsType*)pEvent->pEventData)->pUserData;
26131 break;
26132 case WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ:
26133 *ppfnReqCB = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26134 *ppUserData = ((WDI_RcvFltPktClearReqParamsType*)pEvent->pEventData)->pUserData;
26135 break;
Yue Ma7f44bbe2013-04-12 11:47:39 -070026136#endif
26137 case WDI_SET_POWER_PARAMS_REQ:
26138 *ppfnReqCB = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->wdiReqStatusCB;
26139 *ppUserData = ((WDI_SetPowerParamsReqParamsType*)pEvent->pEventData)->pUserData;
26140 break;
26141#if defined WLAN_FEATURE_GTK_OFFLOAD
26142 case WDI_GTK_OFFLOAD_REQ:
26143 *ppfnReqCB = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
26144 *ppUserData = ((WDI_GtkOffloadReqMsg*)pEvent->pEventData)->pUserData;
26145 break;
26146 case WDI_GTK_OFFLOAD_GETINFO_REQ:
26147 *ppfnReqCB = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->wdiReqStatusCB;
26148 *ppUserData = ((WDI_GtkOffloadGetInfoReqMsg*)pEvent->pEventData)->pUserData;
26149 break;
26150#endif
Tushnim Bhattacharyya4858ab62013-03-08 10:15:42 -080026151
Jeff Johnson295189b2012-06-20 16:38:30 -070026152 default:
26153 *ppfnReqCB = NULL;
26154 *ppUserData = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026155 break;
Jeff Johnson295189b2012-06-20 16:38:30 -070026156 }
26157}/*WDI_ExtractRequestCBFromEvent*/
26158
26159
26160/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026161 @brief WDI_IsHwFrameTxTranslationCapable checks to see if HW
Jeff Johnson295189b2012-06-20 16:38:30 -070026162 frame xtl is enabled for a particular STA.
26163
26164 WDI_PostAssocReq must have been called.
26165
Jeff Johnsone7245742012-09-05 17:12:55 -070026166 @param uSTAIdx: STA index
26167
Jeff Johnson295189b2012-06-20 16:38:30 -070026168 @see WDI_PostAssocReq
26169 @return Result of the function call
26170*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026171wpt_boolean
Jeff Johnson295189b2012-06-20 16:38:30 -070026172WDI_IsHwFrameTxTranslationCapable
26173(
26174 wpt_uint8 uSTAIdx
26175)
26176{
Jeff Johnsone7245742012-09-05 17:12:55 -070026177 /*!! FIX ME - this must eventually be per station - for now just feedback
Jeff Johnson295189b2012-06-20 16:38:30 -070026178 uma value*/
26179 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026180 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026181 ------------------------------------------------------------------------*/
26182 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26183 {
26184 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26185 "WDI API call before module is initialized - Fail request");
26186
Jeff Johnsone7245742012-09-05 17:12:55 -070026187 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026188 }
26189
Gopichand Nakkala976e3252013-01-03 15:45:56 -080026190#ifdef WLAN_SOFTAP_VSTA_FEATURE
26191 if (IS_VSTA_IDX(uSTAIdx))
26192 {
26193 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26194 "STA %d is a Virtual STA, "
26195 "HW frame translation disabled", uSTAIdx);
26196 return eWLAN_PAL_FALSE;
26197 }
26198#endif
Jeff Johnsone7245742012-09-05 17:12:55 -070026199
Jeff Johnson295189b2012-06-20 16:38:30 -070026200 return gWDICb.bFrameTransEnabled;
26201}/*WDI_IsHwFrameTxTranslationCapable*/
26202
Katya Nigam6201c3e2014-05-27 17:51:42 +053026203
26204/**
26205 @brief WDI_IsSelfSTA - check if staid is self sta index
26206
26207
26208 @param pWDICtx: pointer to the WLAN DAL context
26209 ucSTAIdx: station index
26210
26211 @return Result of the function call
26212*/
26213wpt_boolean WDI_IsSelfSTA( void* pWDICtx, wpt_uint8 ucSTAIdx )
26214{
26215 wpt_uint8 ucSTAType;
26216
26217 if( WDI_STATableGetStaType( (WDI_ControlBlockType*)pWDICtx,
26218 ucSTAIdx,&ucSTAType) == WDI_STATUS_SUCCESS)
26219 {
26220 if( ucSTAType == WDI_STA_ENTRY_SELF )
26221 return eWLAN_PAL_TRUE;
26222 }
26223
26224 return eWLAN_PAL_FALSE;
26225}
26226
26227
26228
Jeff Johnson295189b2012-06-20 16:38:30 -070026229#ifdef FEATURE_WLAN_SCAN_PNO
26230/**
26231 @brief WDI_SetPreferredNetworkList
26232
Jeff Johnsone7245742012-09-05 17:12:55 -070026233 @param pwdiPNOScanReqParams: the Set PNO as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026234 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026235
Jeff Johnson295189b2012-06-20 16:38:30 -070026236 wdiPNOScanCb: callback for passing back the response
26237 of the Set PNO operation received from the
26238 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026239
Jeff Johnson295189b2012-06-20 16:38:30 -070026240 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026241 callback
26242
Jeff Johnson295189b2012-06-20 16:38:30 -070026243 @return Result of the function call
26244*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026245WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026246WDI_SetPreferredNetworkReq
26247(
26248 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26249 WDI_PNOScanCb wdiPNOScanCb,
26250 void* pUserData
26251)
26252{
26253 WDI_EventInfoType wdiEventData = {{0}};
26254 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26255
26256 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026257 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026258 ------------------------------------------------------------------------*/
26259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26260 {
26261 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26262 "WDI API call before module is initialized - Fail request");
26263
Jeff Johnsone7245742012-09-05 17:12:55 -070026264 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026265 }
26266
26267 /*------------------------------------------------------------------------
26268 Fill in Event data and post to the Main FSM
26269 ------------------------------------------------------------------------*/
26270 wdiEventData.wdiRequest = WDI_SET_PREF_NETWORK_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026271 wdiEventData.pEventData = pwdiPNOScanReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026272 wdiEventData.uEventDataSize = sizeof(*pwdiPNOScanReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026273 wdiEventData.pCBfnc = wdiPNOScanCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026274 wdiEventData.pUserData = pUserData;
26275
26276 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26277}
26278
26279
26280/**
26281 @brief WDI_SetRssiFilterReq
26282
Jeff Johnsone7245742012-09-05 17:12:55 -070026283 @param pwdiRssiFilterReqParams: the Set RSSI Filter as
Jeff Johnson295189b2012-06-20 16:38:30 -070026284 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026285
Jeff Johnson295189b2012-06-20 16:38:30 -070026286 wdiRssiFilterCb: callback for passing back the response
26287 of the Set RSSI Filter operation received from the
26288 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026289
Jeff Johnson295189b2012-06-20 16:38:30 -070026290 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026291 callback
26292
Jeff Johnson295189b2012-06-20 16:38:30 -070026293 @return Result of the function call
26294*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026295WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026296WDI_SetRssiFilterReq
26297(
26298 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams,
26299 WDI_RssiFilterCb wdiRssiFilterCb,
26300 void* pUserData
26301)
26302{
26303 WDI_EventInfoType wdiEventData = {{0}};
26304 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26305
26306 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026307 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026308 ------------------------------------------------------------------------*/
26309 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26310 {
26311 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26312 "WDI API call before module is initialized - Fail request");
26313
Jeff Johnsone7245742012-09-05 17:12:55 -070026314 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026315 }
26316
26317 /*------------------------------------------------------------------------
26318 Fill in Event data and post to the Main FSM
26319 ------------------------------------------------------------------------*/
26320 wdiEventData.wdiRequest = WDI_SET_RSSI_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026321 wdiEventData.pEventData = pwdiRssiFilterReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026322 wdiEventData.uEventDataSize = sizeof(*pwdiRssiFilterReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070026323 wdiEventData.pCBfnc = wdiRssiFilterCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026324 wdiEventData.pUserData = pUserData;
26325
26326 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26327}/*WDI_SetRssiFilterReq*/
26328
26329/**
26330 @brief WDI_UpdateScanParamsReq
26331
Jeff Johnsone7245742012-09-05 17:12:55 -070026332 @param pwdiUpdateScanParamsInfoType: the Update Scan Params as specified
Jeff Johnson295189b2012-06-20 16:38:30 -070026333 by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070026334
Jeff Johnson295189b2012-06-20 16:38:30 -070026335 wdiUpdateScanParamsCb: callback for passing back the response
26336 of the Set PNO operation received from the
26337 device
Jeff Johnsone7245742012-09-05 17:12:55 -070026338
Jeff Johnson295189b2012-06-20 16:38:30 -070026339 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070026340 callback
26341
Jeff Johnson295189b2012-06-20 16:38:30 -070026342 @return Result of the function call
26343*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026344WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070026345WDI_UpdateScanParamsReq
26346(
26347 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParamsInfoType,
26348 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb,
26349 void* pUserData
26350)
26351{
26352 WDI_EventInfoType wdiEventData = {{0}};
26353 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26354
26355 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026356 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070026357 ------------------------------------------------------------------------*/
26358 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26359 {
26360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26361 "WDI API call before module is initialized - Fail request");
26362
Jeff Johnsone7245742012-09-05 17:12:55 -070026363 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070026364 }
26365
26366 /*------------------------------------------------------------------------
26367 Fill in Event data and post to the Main FSM
26368 ------------------------------------------------------------------------*/
26369 wdiEventData.wdiRequest = WDI_UPDATE_SCAN_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070026370 wdiEventData.pEventData = pwdiUpdateScanParamsInfoType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026371 wdiEventData.uEventDataSize = sizeof(*pwdiUpdateScanParamsInfoType);
Jeff Johnsone7245742012-09-05 17:12:55 -070026372 wdiEventData.pCBfnc = wdiUpdateScanParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070026373 wdiEventData.pUserData = pUserData;
26374
26375 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26376}
26377
26378/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026379 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026380 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026381
26382 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026383 pwdiPNOScanReqParams: pointer to the info received
26384 from upper layers
26385 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026386 and its size
26387
Jeff Johnson295189b2012-06-20 16:38:30 -070026388 @return Result of the function call
26389*/
26390
26391WDI_Status
26392WDI_PackPreferredNetworkList
26393(
26394 WDI_ControlBlockType* pWDICtx,
26395 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26396 wpt_uint8** ppSendBuffer,
26397 wpt_uint16* pSize
26398)
26399{
Jeff Johnsone7245742012-09-05 17:12:55 -070026400 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026401 wpt_uint16 usDataOffset = 0;
26402 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026403 tpPrefNetwListParams pPrefNetwListParams = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026404 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026405 /*-----------------------------------------------------------------------
26406 Get message buffer
26407 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026408 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026409 sizeof(tPrefNetwListParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070026410 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026411 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParams) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026412 {
26413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026414 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026415 pwdiPNOScanReqParams);
26416 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026417 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026418 }
26419
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026420 pPrefNetwListParams = (tpPrefNetwListParams)(pSendBuffer + usDataOffset);
26421
Jeff Johnson295189b2012-06-20 16:38:30 -070026422 /*-------------------------------------------------------------------------
26423 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26424 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026425 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026426 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026427 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026428 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26429
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026430 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026431 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026432 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026433 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026434 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26435
26436 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026437 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026438 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26439 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26440 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26441
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026442 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026443 {
26444 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026445 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026446 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26447
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026448 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026449 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026450 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026451
26452 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026453 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026454 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026455
26456 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026457 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026458 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026459
Jeff Johnsone7245742012-09-05 17:12:55 -070026460 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026461 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026462 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Madan Mohan Koyyalamudia208d102012-10-15 15:18:18 -070026463 (pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount <
26464 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
26465 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount :
26466 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
Jeff Johnson295189b2012-06-20 16:38:30 -070026467
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026468 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026469 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026470 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026471
26472 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026473 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026474 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26475
26476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026477 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026478 pPrefNetwListParams->aNetworks[i].ssId.length,
26479 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026480 }
26481
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026482 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026483 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026484 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26485 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26486 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26487
26488 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsone7245742012-09-05 17:12:55 -070026489 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026490 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026491 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26492 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26493
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026494 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026495 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026496 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026497 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026498 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026499 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26500 }
26501
26502 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026503 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026504 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26505 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26506 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026507 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026508
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026509 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026510 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026511 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026512
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026513 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026514 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26515 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26516 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026517 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026518
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026519 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026520 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026521 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026522
26523 /*Set the output values*/
26524 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026525 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026526
26527 return WDI_STATUS_SUCCESS;
26528}/*WDI_PackPreferredNetworkList*/
26529
26530/**
Jeff Johnsone7245742012-09-05 17:12:55 -070026531 @brief Helper function to pack Set Preferred Network List
Jeff Johnson295189b2012-06-20 16:38:30 -070026532 Request parameters
Jeff Johnsone7245742012-09-05 17:12:55 -070026533
26534 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnson295189b2012-06-20 16:38:30 -070026535 pwdiPNOScanReqParams: pointer to the info received
26536 from upper layers
26537 ppSendBuffer, pSize - out pointers of the packed buffer
Jeff Johnsone7245742012-09-05 17:12:55 -070026538 and its size
26539
Jeff Johnson295189b2012-06-20 16:38:30 -070026540 @return Result of the function call
26541*/
26542
26543WDI_Status
26544WDI_PackPreferredNetworkListNew
26545(
26546 WDI_ControlBlockType* pWDICtx,
26547 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams,
26548 wpt_uint8** ppSendBuffer,
26549 wpt_uint16* pSize
26550)
26551{
Jeff Johnsone7245742012-09-05 17:12:55 -070026552 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026553 wpt_uint16 usDataOffset = 0;
26554 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026555 tpPrefNetwListParamsNew pPrefNetwListParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070026556 wpt_uint8 i;
Jeff Johnson295189b2012-06-20 16:38:30 -070026557
26558 /*-----------------------------------------------------------------------
26559 Get message buffer
26560 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026561 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_PREF_NETWORK_REQ,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026562 sizeof(tPrefNetwListParamsNew),
Jeff Johnson295189b2012-06-20 16:38:30 -070026563 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026564 ( usSendSize < (usDataOffset + sizeof(tPrefNetwListParamsNew) )))
Jeff Johnson295189b2012-06-20 16:38:30 -070026565 {
26566 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026567 "Unable to get send buffer in Set PNO req %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026568 pwdiPNOScanReqParams);
26569 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026570 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026571 }
26572
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026573 pPrefNetwListParams = (tpPrefNetwListParamsNew)(pSendBuffer + usDataOffset);
26574
Jeff Johnson295189b2012-06-20 16:38:30 -070026575 /*-------------------------------------------------------------------------
26576 Fill prefNetwListParams from pwdiPNOScanReqParams->wdiPNOScanInfo
26577 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026578 pPrefNetwListParams->enable =
Jeff Johnson295189b2012-06-20 16:38:30 -070026579 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026580 pPrefNetwListParams->modePNO =
Jeff Johnson295189b2012-06-20 16:38:30 -070026581 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO;
26582
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026583 pPrefNetwListParams->ucNetworksCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026584 (pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026585 WLAN_HAL_PNO_MAX_SUPP_NETWORKS)?
Jeff Johnsone7245742012-09-05 17:12:55 -070026586 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount :
Jeff Johnson295189b2012-06-20 16:38:30 -070026587 WLAN_HAL_PNO_MAX_SUPP_NETWORKS;
26588
26589 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026590 "WDI SET PNO: Enable %d, Mode %d, Netw Count %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070026591 pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable,
26592 pwdiPNOScanReqParams->wdiPNOScanInfo.wdiModePNO,
26593 pwdiPNOScanReqParams->wdiPNOScanInfo.ucNetworksCount);
26594
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026595 for ( i = 0; i < pPrefNetwListParams->ucNetworksCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026596 {
26597 /*SSID of the BSS*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026598 pPrefNetwListParams->aNetworks[i].ssId.length
Jeff Johnson295189b2012-06-20 16:38:30 -070026599 = pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.ucLength;
26600
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026601 wpalMemoryCopy( pPrefNetwListParams->aNetworks[i].ssId.ssId,
Jeff Johnson295189b2012-06-20 16:38:30 -070026602 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ssId.sSSID,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026603 pPrefNetwListParams->aNetworks[i].ssId.length);
Jeff Johnson295189b2012-06-20 16:38:30 -070026604
26605 /*Authentication type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026606 pPrefNetwListParams->aNetworks[i].authentication =
Jeff Johnsone7245742012-09-05 17:12:55 -070026607 (tAuthType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiAuth;
Jeff Johnson295189b2012-06-20 16:38:30 -070026608
26609 /*Encryption type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026610 pPrefNetwListParams->aNetworks[i].encryption =
Jeff Johnsone7245742012-09-05 17:12:55 -070026611 (tEdType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiEncryption;
Jeff Johnson295189b2012-06-20 16:38:30 -070026612
26613 /*SSID bcast type for the network*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026614 pPrefNetwListParams->aNetworks[i].bcastNetworkType =
Jeff Johnsone7245742012-09-05 17:12:55 -070026615 (tSSIDBcastType)pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].wdiBcastNetworkType;
Jeff Johnson295189b2012-06-20 16:38:30 -070026616
Jeff Johnsone7245742012-09-05 17:12:55 -070026617 /*Indicate the channel on which the Network can be found
Jeff Johnson295189b2012-06-20 16:38:30 -070026618 0 - if all channels */
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026619 pPrefNetwListParams->aNetworks[i].ucChannelCount =
Jeff Johnson295189b2012-06-20 16:38:30 -070026620 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].ucChannelCount;
26621
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026622 wpalMemoryCopy(pPrefNetwListParams->aNetworks[i].aChannels,
Jeff Johnson295189b2012-06-20 16:38:30 -070026623 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].aChannels,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026624 pPrefNetwListParams->aNetworks[i].ucChannelCount);
Jeff Johnson295189b2012-06-20 16:38:30 -070026625
26626 /*Indicates the RSSI threshold for the network to be considered*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026627 pPrefNetwListParams->aNetworks[i].rssiThreshold =
Jeff Johnson295189b2012-06-20 16:38:30 -070026628 pwdiPNOScanReqParams->wdiPNOScanInfo.aNetworks[i].rssiThreshold;
26629
26630 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026631 "WDI SET PNO: SSID %d %s",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026632 pPrefNetwListParams->aNetworks[i].ssId.length,
26633 pPrefNetwListParams->aNetworks[i].ssId.ssId);
Jeff Johnson295189b2012-06-20 16:38:30 -070026634 }
26635
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026636 pPrefNetwListParams->scanTimers.ucScanTimersCount =
Jeff Johnsone7245742012-09-05 17:12:55 -070026637 (pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount <
Jeff Johnson295189b2012-06-20 16:38:30 -070026638 WLAN_HAL_PNO_MAX_SCAN_TIMERS)?
26639 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.ucScanTimersCount :
26640 WLAN_HAL_PNO_MAX_SCAN_TIMERS;
26641
26642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070026643 "WDI SET PNO: Scan timers count %d 24G P %d 5G Probe %d",
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026644 pPrefNetwListParams->scanTimers.ucScanTimersCount,
Jeff Johnson295189b2012-06-20 16:38:30 -070026645 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize,
26646 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize);
26647
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026648 for ( i = 0; i < pPrefNetwListParams->scanTimers.ucScanTimersCount; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070026649 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026650 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerValue =
Jeff Johnson295189b2012-06-20 16:38:30 -070026651 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerValue;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026652 pPrefNetwListParams->scanTimers.aTimerValues[i].uTimerRepeat =
Jeff Johnson295189b2012-06-20 16:38:30 -070026653 pwdiPNOScanReqParams->wdiPNOScanInfo.scanTimers.aTimerValues[i].uTimerRepeat;
26654 }
26655
26656 /*Copy the probe template*/
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026657 pPrefNetwListParams->us24GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026658 (pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize<
26659 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26660 pwdiPNOScanReqParams->wdiPNOScanInfo.us24GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026661 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026662
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026663 wpalMemoryCopy(pPrefNetwListParams->a24GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026664 pwdiPNOScanReqParams->wdiPNOScanInfo.a24GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026665 pPrefNetwListParams->us24GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026666
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026667 pPrefNetwListParams->us5GProbeSize =
Jeff Johnson295189b2012-06-20 16:38:30 -070026668 (pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize <
26669 WLAN_HAL_PNO_MAX_PROBE_SIZE)?
26670 pwdiPNOScanReqParams->wdiPNOScanInfo.us5GProbeSize:
Jeff Johnsone7245742012-09-05 17:12:55 -070026671 WLAN_HAL_PNO_MAX_PROBE_SIZE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026672
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026673 wpalMemoryCopy(pPrefNetwListParams->a5GProbeTemplate,
Jeff Johnsone7245742012-09-05 17:12:55 -070026674 pwdiPNOScanReqParams->wdiPNOScanInfo.a5GProbeTemplate,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070026675 pPrefNetwListParams->us5GProbeSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070026676
Jeff Johnson295189b2012-06-20 16:38:30 -070026677
26678 /*Set the output values*/
26679 *ppSendBuffer = pSendBuffer;
Jeff Johnsone7245742012-09-05 17:12:55 -070026680 *pSize = usSendSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070026681
26682 return WDI_STATUS_SUCCESS;
26683}/*WDI_PackPreferredNetworkListNew*/
26684
26685/**
26686 @brief Process Set Preferred Network List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026687
26688 @param pWDICtx: pointer to the WLAN DAL context
26689 pEventData: pointer to the event information structure
26690
Jeff Johnson295189b2012-06-20 16:38:30 -070026691 @return Result of the function call
26692*/
26693WDI_Status
26694WDI_ProcessSetPreferredNetworkReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026695(
Jeff Johnson295189b2012-06-20 16:38:30 -070026696 WDI_ControlBlockType* pWDICtx,
26697 WDI_EventInfoType* pEventData
26698)
26699{
26700 WDI_PNOScanReqParamsType* pwdiPNOScanReqParams = NULL;
26701 WDI_PNOScanCb wdiPNOScanCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026702 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026703 wpt_uint16 usSendSize = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070026704 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026705
26706 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026707 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026708 -------------------------------------------------------------------------*/
26709 if (( NULL == pEventData ) ||
26710 ( NULL == (pwdiPNOScanReqParams = (WDI_PNOScanReqParamsType*)pEventData->pEventData)) ||
26711 ( NULL == (wdiPNOScanCb = (WDI_PNOScanCb)pEventData->pCBfnc)))
26712 {
26713 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026714 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026715 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026716 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026717 }
26718
Mahesh A Saptasagar3604e792014-04-23 20:47:26 +053026719 /*----------------------------------------------------------------------
26720 Avoid Enable PNO during any active session or an ongoing session
26721 ----------------------------------------------------------------------*/
26722 if ( (pwdiPNOScanReqParams->wdiPNOScanInfo.bEnable &&
26723 WDI_GetActiveSessionsCount(pWDICtx, NULL, eWLAN_PAL_FALSE)) )
26724 {
26725 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26726 "%s:(Active/Ongoing Session) - Fail request", __func__);
26727
26728 return WDI_STATUS_E_FAILURE;
26729 }
26730
Jeff Johnson295189b2012-06-20 16:38:30 -070026731 /*-------------------------------------------------------------------------
26732 Pack the PNO request structure based on version
26733 -------------------------------------------------------------------------*/
26734 if ( pWDICtx->wdiPNOVersion > 0 )
26735 {
26736 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026737 "%s: PNO new version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026738 pWDICtx->wdiPNOVersion);
26739
26740 wdiStatus = WDI_PackPreferredNetworkListNew( pWDICtx, pwdiPNOScanReqParams,
26741 &pSendBuffer, &usSendSize);
26742 }
26743 else
26744 {
26745 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026746 "%s: PNO old version %d ", __func__,
Jeff Johnson295189b2012-06-20 16:38:30 -070026747 pWDICtx->wdiPNOVersion);
26748
26749 wdiStatus = WDI_PackPreferredNetworkList( pWDICtx, pwdiPNOScanReqParams,
26750 &pSendBuffer, &usSendSize);
26751 }
26752
26753 if (( WDI_STATUS_SUCCESS != wdiStatus )||
26754 ( NULL == pSendBuffer )||( 0 == usSendSize ))
26755 {
26756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026757 "%s: failed to pack request parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026758 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026759 return wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070026760 }
26761
26762 pWDICtx->wdiReqStatusCB = pwdiPNOScanReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026763 pWDICtx->pReqStatusUserData = pwdiPNOScanReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026764
26765 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026766 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026767 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026768 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26769 wdiPNOScanCb, pEventData->pUserData, WDI_SET_PREF_NETWORK_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026770}
26771
26772/**
26773 @brief Process Set RSSI Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070026774
26775 @param pWDICtx: pointer to the WLAN DAL context
26776 pEventData: pointer to the event information structure
26777
Jeff Johnson295189b2012-06-20 16:38:30 -070026778 @see
26779 @return Result of the function call
26780*/
26781WDI_Status
26782WDI_ProcessSetRssiFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070026783(
Jeff Johnson295189b2012-06-20 16:38:30 -070026784 WDI_ControlBlockType* pWDICtx,
26785 WDI_EventInfoType* pEventData
26786)
26787{
26788 WDI_SetRssiFilterReqParamsType* pwdiRssiFilterReqParams = NULL;
26789 WDI_RssiFilterCb wdiRssiFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070026790 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070026791 wpt_uint16 usDataOffset = 0;
26792 wpt_uint16 usSendSize = 0;
26793 wpt_uint8 ucRssiThreshold;
26794
26795 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026796 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070026797 -------------------------------------------------------------------------*/
26798 if (( NULL == pEventData ) ||
26799 ( NULL == (pwdiRssiFilterReqParams = (WDI_SetRssiFilterReqParamsType*)pEventData->pEventData)) ||
26800 ( NULL == (wdiRssiFilterCb = (WDI_RssiFilterCb)pEventData->pCBfnc)))
26801 {
26802 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070026803 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070026804 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026805 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026806 }
26807
26808 /*-----------------------------------------------------------------------
26809 Get message buffer
26810 -----------------------------------------------------------------------*/
Hanumantha Reddy Pothula1e687da2015-03-31 13:44:31 +053026811 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_RSSI_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070026812 sizeof(ucRssiThreshold),
26813 &pSendBuffer, &usDataOffset, &usSendSize))||
26814 ( usSendSize < (usDataOffset + sizeof(ucRssiThreshold) )))
26815 {
26816 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080026817 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070026818 pEventData, pwdiRssiFilterReqParams, wdiRssiFilterCb);
26819 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070026820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070026821 }
26822
26823 ucRssiThreshold = pwdiRssiFilterReqParams->rssiThreshold;
26824
Jeff Johnsone7245742012-09-05 17:12:55 -070026825 wpalMemoryCopy( pSendBuffer+usDataOffset,
26826 &ucRssiThreshold,
26827 sizeof(ucRssiThreshold));
Jeff Johnson295189b2012-06-20 16:38:30 -070026828
26829 pWDICtx->wdiReqStatusCB = pwdiRssiFilterReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070026830 pWDICtx->pReqStatusUserData = pwdiRssiFilterReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070026831
26832 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070026833 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070026834 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070026835 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
26836 wdiRssiFilterCb, pEventData->pUserData, WDI_SET_RSSI_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070026837}
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026838#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
26839/**
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026840 @brief WDI_RoamScanOffloadReq
Jeff Johnson295189b2012-06-20 16:38:30 -070026841
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026842 @param pwdiRoamScanOffloadReqParams: the LookupReq as specified
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026843 by the Device Interface
26844
26845 wdiRoamOffloadScancb: callback for passing back the response
26846 of the Roam Candidate Lookup Req operation received from the
26847 device
26848
26849 pUserData: user data will be passed back with the
26850 callback
26851 @return Result of the function call
26852*/
26853WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026854WDI_RoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026855(
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026856 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026857 WDI_RoamOffloadScanCb wdiRoamOffloadScancb,
26858 void* pUserData
26859)
26860{
26861 WDI_EventInfoType wdiEventData = {{0}};
26862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
26863
26864 /*------------------------------------------------------------------------
26865 Sanity Check
26866 ------------------------------------------------------------------------*/
26867 if ( eWLAN_PAL_FALSE == gWDIInitialized )
26868 {
26869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26870 "WDI API call before module is initialized - Fail request");
26871
26872 return WDI_STATUS_E_NOT_ALLOWED;
26873 }
26874
26875 /*------------------------------------------------------------------------
26876 Fill in Event data and post to the Main FSM
26877 ------------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026878 wdiEventData.wdiRequest = WDI_ROAM_SCAN_OFFLOAD_REQ;
26879 wdiEventData.pEventData = pwdiRoamScanOffloadReqParams;
26880 wdiEventData.uEventDataSize = sizeof(*pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026881 wdiEventData.pCBfnc = wdiRoamOffloadScancb;
26882 wdiEventData.pUserData = pUserData;
26883
26884 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26885}
26886
Kapil Guptab3a981b2016-06-26 13:36:51 +053026887WDI_Status
26888WDI_PERRoamScanOffloadReq(WDI_PERRoamOffloadScanInfo
26889 *pwdiPERRoamScanOffloadReqParams,
26890 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb,
26891 void *pUserData)
26892{
26893 WDI_EventInfoType wdiEventData = {{0}};
26894
26895 if (eWLAN_PAL_FALSE == gWDIInitialized) {
26896 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26897 "WDI API call before module is initialized - Fail request");
26898
26899 return WDI_STATUS_E_NOT_ALLOWED;
26900 }
26901
26902 wdiEventData.wdiRequest = WDI_PER_ROAM_SCAN_OFFLOAD_REQ;
26903 wdiEventData.pEventData = pwdiPERRoamScanOffloadReqParams;
26904 wdiEventData.uEventDataSize = sizeof(*pwdiPERRoamScanOffloadReqParams);
26905 wdiEventData.pCBfnc = wdiPERRoamOffloadScancb;
26906 wdiEventData.pUserData = pUserData;
26907
26908 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26909}
26910
26911WDI_Status
26912WDI_PERRoamScanTriggerReq(WDI_PERRoamTriggerScanInfo
26913 *pwdiPERRoamScanTriggerReqParams,
26914 WDI_PERRoamTriggerScanCb wdiPERRoamTriggerScancb,
26915 void *pUserData)
26916{
26917 WDI_EventInfoType wdiEventData = {{0}};
26918 if (eWLAN_PAL_FALSE == gWDIInitialized) {
26919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
26920 "WDI API call before module is initialized - Fail request");
26921
26922 return WDI_STATUS_E_NOT_ALLOWED;
26923 }
26924
26925 wdiEventData.wdiRequest = WDI_PER_ROAM_SCAN_TRIGGER_REQ;
26926 wdiEventData.pEventData = pwdiPERRoamScanTriggerReqParams;
26927 wdiEventData.uEventDataSize = sizeof(*pwdiPERRoamScanTriggerReqParams);
26928 wdiEventData.pCBfnc = wdiPERRoamTriggerScancb;
26929 wdiEventData.pUserData = pUserData;
26930
26931 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
26932}
26933
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026934void
26935WDI_wdiEdTypeEncToEdTypeEnc(tEdType *EdType, WDI_EdType wdiEdType)
26936{
26937 switch (wdiEdType)
26938 {
26939 case WDI_ED_NONE:
26940 *EdType = eED_NONE;
26941 break;
26942 case WDI_ED_WEP40:
26943 case WDI_ED_WEP104:
26944 *EdType = eED_WEP;
26945 break;
26946 case WDI_ED_TKIP:
26947 *EdType = eED_TKIP;
26948 break;
26949 case WDI_ED_CCMP:
26950#ifdef WLAN_FEATURE_11W
26951 case WDI_ED_AES_128_CMAC:
26952#endif
26953 *EdType = eED_CCMP;
26954 break;
26955#ifdef FEATURE_WLAN_WAPI
26956 case WDI_ED_WPI:
26957 *EdType = eED_WPI;
26958 break;
26959#endif
26960 case WDI_ED_ANY:
26961 *EdType = eED_ANY;
26962 break;
26963
26964 default:
26965 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
26966 "%s: Unknown Encryption Type", __func__);
26967 break;
26968 }
26969}
26970
26971/**
26972 @brief Helper function to pack Start Roam Candidate Lookup
26973 Request parameters
26974
26975 @param pWDICtx: pointer to the WLAN DAL context
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026976 pwdiRoamScanOffloadReqParams: pointer to the info received
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026977 from upper layers
26978 ppSendBuffer, pSize - out pointers of the packed buffer
26979 and its size
26980
26981 @return Result of the function call
26982*/
26983
26984WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026985WDI_PackRoamScanOffloadParams
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026986(
26987 WDI_ControlBlockType* pWDICtx,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070026988 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070026989 wpt_uint8** ppSendBuffer,
26990 wpt_uint16* pSize
26991)
26992{
26993 wpt_uint8* pSendBuffer = NULL;
26994 wpt_uint16 usDataOffset = 0;
26995 wpt_uint16 usSendSize = 0;
26996 tpRoamCandidateListParams pRoamCandidateListParams = NULL;
26997 wpt_uint8 i;
26998 /*-----------------------------------------------------------------------
26999 Get message buffer
27000 -----------------------------------------------------------------------*/
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027001 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_ROAM_SCAN_OFFLOAD_REQ,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027002 sizeof(tRoamCandidateListParams),
27003 &pSendBuffer, &usDataOffset, &usSendSize))||
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070027004 ( usSendSize < (usDataOffset + sizeof(tRoamCandidateListParams) )))
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027005 {
27006 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027007 "Unable to get send buffer in Start Roam Candidate Lookup Req %p",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027008 pwdiRoamScanOffloadReqParams);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027009 WDI_ASSERT(0);
27010 return WDI_STATUS_E_FAILURE;
27011 }
27012 pRoamCandidateListParams = (tpRoamCandidateListParams)(pSendBuffer + usDataOffset);
Varun Reddy Yeturu83952072013-06-03 11:31:52 -070027013 wpalMemoryZero(pRoamCandidateListParams, sizeof(tRoamCandidateListParams));
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027014 pRoamCandidateListParams->RoamScanOffloadEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamScanOffloadEnabled;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027015 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.currAPbssid,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027016 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.currAPbssid,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027017 HAL_MAC_ADDR_LEN);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027018 pRoamCandidateListParams->ConnectedNetwork.authentication = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.authentication;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027019 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.encryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027020 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.encryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027021 WDI_wdiEdTypeEncToEdTypeEnc(&pRoamCandidateListParams->ConnectedNetwork.mcencryption,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027022 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.mcencryption);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027023
27024 pRoamCandidateListParams->ConnectedNetwork.ssId.length
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027025 = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.ucLength;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027026 wpalMemoryCopy( pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027027 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ssId.sSSID,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027028 pRoamCandidateListParams->ConnectedNetwork.ssId.length);
27029 wpalMemoryCopy(pRoamCandidateListParams->ConnectedNetwork.ChannelCache,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027030 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCache,
27031 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount );
27032 pRoamCandidateListParams->ConnectedNetwork.ChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ConnectedNetwork.ChannelCount;
27033 pRoamCandidateListParams->ChannelCacheType = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ChannelCacheType ;
27034 pRoamCandidateListParams->LookupThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.LookupThreshold;
Varun Reddy Yeturu6c5e25c2014-01-09 21:55:37 -080027035 pRoamCandidateListParams->RxSensitivityThreshold = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RxSensitivityThreshold;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027036 pRoamCandidateListParams->RoamRssiDiff = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.RoamRssiDiff ;
Sameer Thalappil4ae66ec2013-11-05 14:17:35 -080027037 pRoamCandidateListParams->MAWCEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MAWCEnabled ;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027038 pRoamCandidateListParams->Command = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.Command ;
27039 pRoamCandidateListParams->StartScanReason = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.StartScanReason ;
27040 pRoamCandidateListParams->NeighborScanTimerPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanTimerPeriod ;
27041 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborRoamScanRefreshPeriod ;
27042 pRoamCandidateListParams->NeighborScanChannelMinTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMinTime ;
27043 pRoamCandidateListParams->NeighborScanChannelMaxTime = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.NeighborScanChannelMaxTime ;
27044 pRoamCandidateListParams->EmptyRefreshScanPeriod = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.EmptyRefreshScanPeriod ;
Varun Reddy Yeturu5d5e2c62014-02-27 13:31:29 -080027045 pRoamCandidateListParams->IsESEEnabled = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.IsESEEnabled ;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027046 wpalMemoryCopy(pRoamCandidateListParams->ValidChannelList,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027047 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelList,
27048 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount);
27049 pRoamCandidateListParams->ValidChannelCount = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.ValidChannelCount;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027050
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027051 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,
27052 "Values are ssid = %s, RoamOffloadScan=%d,Command=%d,"
27053 "StartScanReason=%d,NeighborScanTimerPeriod=%d,"
27054 "NeighborRoamScanRefreshPeriod=%d,NeighborScanChannelMinTime=%d,"
27055 "NeighborScanChannelMaxTime = %d,EmptyRefreshScanPeriod=%d,"
27056 "mdiePresent=%d,MDID=%d, auth=%d, uce=%d, mce=%d, nProbes=%d,"
Arif Hussain9a5d5382013-11-17 22:05:35 -080027057 "HomeAwayTime=%d",
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027058 pRoamCandidateListParams->ConnectedNetwork.ssId.ssId,
27059 pRoamCandidateListParams->RoamScanOffloadEnabled,
27060 pRoamCandidateListParams->Command,
27061 pRoamCandidateListParams->StartScanReason,
27062 pRoamCandidateListParams->NeighborScanTimerPeriod,
27063 pRoamCandidateListParams->NeighborRoamScanRefreshPeriod,
27064 pRoamCandidateListParams->NeighborScanChannelMinTime,
27065 pRoamCandidateListParams->NeighborScanChannelMaxTime,
27066 pRoamCandidateListParams->EmptyRefreshScanPeriod,
27067 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent,
27068 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain,
27069 pRoamCandidateListParams->ConnectedNetwork.authentication,
27070 pRoamCandidateListParams->ConnectedNetwork.encryption,
27071 pRoamCandidateListParams->ConnectedNetwork.mcencryption,
27072 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes,
27073 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027074 pRoamCandidateListParams->us24GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027075 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027076 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027077 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us24GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027078 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
27079 wpalMemoryCopy(pRoamCandidateListParams->a24GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027080 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a24GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027081 pRoamCandidateListParams->us24GProbeSize);
27082 pRoamCandidateListParams->us5GProbeSize =
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027083 (pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize<
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027084 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE)?
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027085 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.us5GProbeSize:
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027086 WLAN_HAL_ROAM_SCAN_MAX_PROBE_SIZE;
27087 wpalMemoryCopy(pRoamCandidateListParams->a5GProbeTemplate,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027088 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.a5GProbeTemplate,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027089 pRoamCandidateListParams->us5GProbeSize);
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027090 pRoamCandidateListParams->MDID.mdiePresent = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mdiePresent;
27091 pRoamCandidateListParams->MDID.mobilityDomain = pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.MDID.mobilityDomain;
27092 pRoamCandidateListParams->nProbes =
27093 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.nProbes;
27094 pRoamCandidateListParams->HomeAwayTime =
27095 pwdiRoamScanOffloadReqParams->wdiRoamOffloadScanInfo.HomeAwayTime;
27096 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"Valid Channel List");
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027097 for (i=0; i<pRoamCandidateListParams->ValidChannelCount ; i++)
27098 {
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027099 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO_HIGH,"%d", pRoamCandidateListParams->ValidChannelList[i]);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027100 }
27101
27102
27103 /*Set the output values*/
27104 *ppSendBuffer = pSendBuffer;
27105 *pSize = usSendSize;
27106 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027107}/*WDI_PackRoamScanOffloadParams*/
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027108
27109/**
27110 @brief Process Start Roam Candidate Lookup Request function
27111
27112 @param pWDICtx: pointer to the WLAN DAL context
27113 pEventData: pointer to the event information structure
27114
27115 @return Result of the function call
27116*/
27117WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027118WDI_ProcessRoamScanOffloadReq
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027119(
27120 WDI_ControlBlockType* pWDICtx,
27121 WDI_EventInfoType* pEventData
27122)
27123{
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027124 WDI_RoamScanOffloadReqParamsType* pwdiRoamScanOffloadReqParams = NULL;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027125 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
27126 wpt_uint8* pSendBuffer = NULL;
27127 wpt_uint16 usSendSize = 0;
27128 WDI_Status wdiStatus;
27129 /*-------------------------------------------------------------------------
27130 Sanity check
27131 -------------------------------------------------------------------------*/
27132 if (( NULL == pEventData ) ||
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027133 ( NULL == (pwdiRoamScanOffloadReqParams = (WDI_RoamScanOffloadReqParamsType*)pEventData->pEventData)) ||
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027134 ( NULL == (wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pEventData->pCBfnc)))
27135 {
27136 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27137 "%s: Invalid parameters", __func__);
27138 WDI_ASSERT(0);
27139 return WDI_STATUS_E_FAILURE;
27140 }
27141
27142 /*-------------------------------------------------------------------------
27143 Pack the Start Roam Candidate Lookup request structure based on version
27144 -------------------------------------------------------------------------*/
27145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27146 "%s: Packing Roam Candidate Lookup request ", __func__);
27147
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027148 wdiStatus = WDI_PackRoamScanOffloadParams( pWDICtx, pwdiRoamScanOffloadReqParams,
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027149 &pSendBuffer, &usSendSize);
27150
27151 if (( WDI_STATUS_SUCCESS != wdiStatus )||
27152 ( NULL == pSendBuffer )||( 0 == usSendSize ))
27153 {
27154 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27155 "%s: failed to pack request parameters", __func__);
27156 WDI_ASSERT(0);
27157 return wdiStatus;
27158 }
27159
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027160 pWDICtx->wdiReqStatusCB = pwdiRoamScanOffloadReqParams->wdiReqStatusCB;
27161 pWDICtx->pReqStatusUserData = pwdiRoamScanOffloadReqParams->pUserData;
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027162
27163 /*-------------------------------------------------------------------------
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027164 Send WDI_ROAM_SCAN_OFFLOAD_REQ to HAL
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027165 -------------------------------------------------------------------------*/
27166 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027167 wdiRoamOffloadScancb, pEventData->pUserData, WDI_ROAM_SCAN_OFFLOAD_RESP);
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027168}
27169
Kapil Guptab3a981b2016-06-26 13:36:51 +053027170
27171WDI_Status
27172WDI_ProcessPERRoamScanOffloadReq(WDI_ControlBlockType *pWDICtx,
27173 WDI_EventInfoType *pEventData)
27174{
27175 wpt_uint16 usSendSize = 0;
27176 wpt_uint16 usDataOffset = 0;
27177 wpt_uint8 *pSendBuffer = NULL;
27178 WDI_PERRoamOffloadScanInfo *wdiPERRoamOffloadReq = NULL;
27179 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb = NULL;
27180 tSetPerRoamConfigReq halPERRoamConfigReq;
27181
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027182 if (!pEventData) {
27183 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27184 "%s: *pEventdata is null", __func__);
27185 WDI_ASSERT(0);
27186 return WDI_STATUS_E_FAILURE;
27187 }
27188
Kapil Guptab3a981b2016-06-26 13:36:51 +053027189 wdiPERRoamOffloadReq = (WDI_PERRoamOffloadScanInfo *)pEventData->pEventData;
27190 wdiPERRoamOffloadScancb = (WDI_PERRoamOffloadScanCb)pEventData->pCBfnc;
27191
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027192 if (!wdiPERRoamOffloadReq || !wdiPERRoamOffloadScancb) {
Kapil Guptab3a981b2016-06-26 13:36:51 +053027193 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27194 "%s: Invalid parameters", __func__);
27195 WDI_ASSERT(0);
27196 return WDI_STATUS_E_FAILURE;
27197 }
27198
27199 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27200 WDI_PER_ROAM_SCAN_OFFLOAD_REQ,
27201 sizeof(halPERRoamConfigReq.perRoamConfigParams),
27202 &pSendBuffer, &usDataOffset, &usSendSize))||
27203 (usSendSize < (usDataOffset +
27204 sizeof(halPERRoamConfigReq.perRoamConfigParams)))) {
27205 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27206 "Unable to get send buffer halPERRoamConfigReq Req");
27207 WDI_ASSERT(0);
27208 return WDI_STATUS_E_FAILURE;
27209 }
27210
27211 halPERRoamConfigReq.perRoamConfigParams.request_id =
27212 wdiPERRoamOffloadReq->requestId;
27213 halPERRoamConfigReq.perRoamConfigParams.waitPeriodForNextPERScan =
27214 wdiPERRoamOffloadReq->waitPeriodForNextPERScan;
27215 halPERRoamConfigReq.perRoamConfigParams.rateUpThreshold =
27216 wdiPERRoamOffloadReq->rateUpThreshold;
27217 halPERRoamConfigReq.perRoamConfigParams.rateDownThreshold =
27218 wdiPERRoamOffloadReq->rateDownThreshold;
27219 halPERRoamConfigReq.perRoamConfigParams.isPERRoamCCAEnabled =
27220 wdiPERRoamOffloadReq->isPERRoamCCAEnabled;
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027221 halPERRoamConfigReq.perRoamConfigParams.PERRoamFullScanThreshold =
27222 wdiPERRoamOffloadReq->PERRoamFullScanThreshold;
Kapil Guptab3a981b2016-06-26 13:36:51 +053027223 halPERRoamConfigReq.perRoamConfigParams.PERroamTriggerPercent =
27224 wdiPERRoamOffloadReq->PERroamTriggerPercent;
27225 halPERRoamConfigReq.perRoamConfigParams.PERtimerThreshold =
27226 wdiPERRoamOffloadReq->PERtimerThreshold;
27227
27228 halPERRoamConfigReq.perRoamConfigParams.reserved = 0;
27229
27230 wpalMemoryCopy(pSendBuffer+usDataOffset,
27231 &halPERRoamConfigReq.perRoamConfigParams,
27232 sizeof(halPERRoamConfigReq.perRoamConfigParams));
27233
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027234 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27235 "waitPeriodForNextPERScan=%d rateUpThreshold=%d rateDownThreshold=%d isPERRoamCCAEnabled=%d",
Kapil Guptab3a981b2016-06-26 13:36:51 +053027236 halPERRoamConfigReq.perRoamConfigParams.waitPeriodForNextPERScan,
27237 halPERRoamConfigReq.perRoamConfigParams.rateUpThreshold,
27238 halPERRoamConfigReq.perRoamConfigParams.rateDownThreshold,
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027239 halPERRoamConfigReq.perRoamConfigParams.isPERRoamCCAEnabled);
27240 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27241 "PERtimerThreshold=%d PERroamTriggerPercent =%d PERRoamFullScanThreshold %d",
Kapil Guptab3a981b2016-06-26 13:36:51 +053027242 halPERRoamConfigReq.perRoamConfigParams.PERtimerThreshold,
Kapil Gupta89a8a0e2016-08-25 14:11:17 +053027243 halPERRoamConfigReq.perRoamConfigParams.PERroamTriggerPercent,
27244 halPERRoamConfigReq.perRoamConfigParams.PERRoamFullScanThreshold);
27245
Kapil Guptab3a981b2016-06-26 13:36:51 +053027246 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27247 wdiPERRoamOffloadScancb, pEventData->pUserData,
27248 WDI_PER_ROAM_SCAN_OFFLOAD_RSP);
27249}
27250
27251WDI_Status
27252WDI_ProcessPERRoamScanTriggerReq(WDI_ControlBlockType *pWDICtx,
27253 WDI_EventInfoType *pEventData)
27254{
27255 wpt_uint16 usSendSize = 0;
27256 wpt_uint16 usDataOffset = 0;
27257 wpt_uint8 *pSendBuffer = NULL;
27258 WDI_PERRoamTriggerScanCb wdiPERRoamTriggerScancb = NULL;
27259 WDI_PERRoamTriggerScanInfo *wdiPERRoamTriggerReq;
27260 tStartRoamScanReq halPERRoamTriggerReq;
27261
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027262 if (!pEventData) {
27263 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27264 "%s: pEventdata is null", __func__);
27265 WDI_ASSERT(0);
27266 return WDI_STATUS_E_FAILURE;
27267 }
27268
Kapil Guptab3a981b2016-06-26 13:36:51 +053027269 wdiPERRoamTriggerReq = (WDI_PERRoamTriggerScanInfo *) pEventData->pEventData;
27270 wdiPERRoamTriggerScancb = (WDI_PERRoamTriggerScanCb)pEventData->pCBfnc;
27271
Sen, Devendra6940d0c2016-09-07 12:42:46 +053027272 if (!wdiPERRoamTriggerReq || !wdiPERRoamTriggerScancb) {
Kapil Guptab3a981b2016-06-26 13:36:51 +053027273 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27274 "%s: Invalid parameters", __func__);
27275 WDI_ASSERT(0);
27276 return WDI_STATUS_E_FAILURE;
27277 }
27278
27279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
27280 WDI_PER_ROAM_SCAN_TRIGGER_REQ,
27281 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams),
27282 &pSendBuffer, &usDataOffset, &usSendSize))||
27283 (usSendSize < (usDataOffset +
27284 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams)))) {
27285 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
27286 "Unable to get send buffer in GetFrameLog Req");
27287 WDI_ASSERT(0);
27288 return WDI_STATUS_E_FAILURE;
27289 }
27290
27291 halPERRoamTriggerReq.startRoamScanTriggerParams.roamScanReq =
27292 wdiPERRoamTriggerReq->roamScanReq;
27293
27294 wpalMemoryCopy(pSendBuffer+usDataOffset,
27295 &halPERRoamTriggerReq.startRoamScanTriggerParams,
27296 sizeof(halPERRoamTriggerReq.startRoamScanTriggerParams));
27297
27298 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27299 wdiPERRoamTriggerScancb, pEventData->pUserData,
27300 WDI_PER_ROAM_SCAN_TRIGGER_RSP);
27301}
27302
27303
27304
27305
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027306/**
27307 @brief Process Start Roam Candidate Lookup Rsp function (called when a
27308 response is being received over the bus from HAL)
27309
27310 @param pWDICtx: pointer to the WLAN DAL context
27311 pEventData: pointer to the event information structure
27312
27313 @see
27314 @return Result of the function call
27315*/
27316WDI_Status
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027317WDI_ProcessRoamScanOffloadRsp
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027318(
27319 WDI_ControlBlockType* pWDICtx,
27320 WDI_EventInfoType* pEventData
27321)
27322{
27323 WDI_Status wdiStatus;
27324 eHalStatus halStatus;
27325 WDI_RoamOffloadScanCb wdiRoamOffloadScancb = NULL;
27326
27327 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27328
27329 /*-------------------------------------------------------------------------
27330 Sanity check
27331 -------------------------------------------------------------------------*/
27332 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27333 ( NULL == pEventData->pEventData ))
27334 {
27335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27336 "%s: Invalid parameters", __func__);
27337 WDI_ASSERT(0);
27338 return WDI_STATUS_E_FAILURE;
27339 }
27340
27341 wdiRoamOffloadScancb = (WDI_RoamOffloadScanCb)pWDICtx->pfncRspCB;
27342
27343 /*-------------------------------------------------------------------------
27344 Extract response and send it to UMAC
27345 -------------------------------------------------------------------------*/
27346 halStatus = *((eHalStatus*)pEventData->pEventData);
27347 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27348
27349 /*Notify UMAC*/
27350 wdiRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
27351
27352 return WDI_STATUS_SUCCESS;
Varun Reddy Yeturu920df212013-05-22 08:07:23 -070027353}/* WDI_ProcessRoamScanOffloadRsp */
Kapil Guptab3a981b2016-06-26 13:36:51 +053027354
27355WDI_Status
27356WDI_ProcessPERRoamScanOffloadRsp(WDI_ControlBlockType *pWDICtx,
27357 WDI_EventInfoType *pEventData)
27358{
27359 WDI_Status wdiStatus;
27360 eHalStatus halStatus;
27361 WDI_PERRoamOffloadScanCb wdiPERRoamOffloadScancb = NULL;
27362
27363 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27364 (NULL == pEventData->pEventData)) {
27365 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27366 "%s: Invalid parameters", __func__);
27367 WDI_ASSERT(0);
27368 return WDI_STATUS_E_FAILURE;
27369 }
27370
27371 wdiPERRoamOffloadScancb = (WDI_PERRoamOffloadScanCb)pWDICtx->pfncRspCB;
27372
27373 halStatus = *((eHalStatus*)pEventData->pEventData);
27374 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27375
27376 /*Notify UMAC*/
27377 wdiPERRoamOffloadScancb(wdiStatus, pWDICtx->pRspCBUserData);
27378
27379 return WDI_STATUS_SUCCESS;
27380}/* WDI_ProcessPERRoamScanOffloadRsp */
27381
27382WDI_Status
27383WDI_ProcessPERRoamScanTriggerRsp
27384(
27385 WDI_ControlBlockType* pWDICtx,
27386 WDI_EventInfoType* pEventData
27387)
27388{
27389 WDI_Status wdiStatus;
27390 eHalStatus halStatus;
27391 WDI_PERRoamOffloadScanCb wdiPERRoamTriggerScancb = NULL;
27392
27393 if ((NULL == pWDICtx) || (NULL == pEventData) ||
27394 (NULL == pEventData->pEventData)) {
27395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27396 "%s: Invalid parameters", __func__);
27397 WDI_ASSERT(0);
27398 return WDI_STATUS_E_FAILURE;
27399 }
27400
27401 wdiPERRoamTriggerScancb = (WDI_PERRoamTriggerScanCb)pWDICtx->pfncRspCB;
27402
27403 halStatus = *((eHalStatus*)pEventData->pEventData);
27404 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
27405
27406 /* Notify UMAC */
27407 wdiPERRoamTriggerScancb(wdiStatus, pWDICtx->pRspCBUserData);
27408
27409 return WDI_STATUS_SUCCESS;
27410}/* WDI_ProcessPERRoamScanTriggerRsp */
Varun Reddy Yeturud0a3f252013-04-15 21:58:13 -070027411#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070027412
27413/**
27414 @brief Process Update Scan Params function
Jeff Johnsone7245742012-09-05 17:12:55 -070027415
27416 @param pWDICtx: pointer to the WLAN DAL context
27417 pEventData: pointer to the event information structure
27418
Jeff Johnson295189b2012-06-20 16:38:30 -070027419 @see
27420 @return Result of the function call
27421*/
27422WDI_Status
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027423WDI_PackUpdateScanParamsReq
27424(
27425 WDI_ControlBlockType* pWDICtx,
27426 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27427 wpt_uint8** ppSendBuffer,
27428 wpt_uint16* pSize
27429)
27430{
27431 wpt_uint8* pSendBuffer = NULL;
27432 wpt_uint16 usDataOffset = 0;
27433 wpt_uint16 usSendSize = 0;
27434 tUpdateScanParams updateScanParams = {0};
27435
27436
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027437 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027438 "Begin WDI Update Scan Parameters Old Style Params");
27439 /*-----------------------------------------------------------------------
27440 Get message buffer
27441 -----------------------------------------------------------------------*/
27442 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27443 sizeof(updateScanParams),
27444 &pSendBuffer, &usDataOffset, &usSendSize))||
27445 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27446 {
27447 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027448 "Unable to get send buffer in Update Scan Params req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027449 pwdiUpdateScanParams);
27450 WDI_ASSERT(0);
27451 return WDI_STATUS_E_FAILURE;
27452 }
27453
27454 //
27455 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27456 //
27457
27458 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27459 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27460
27461 updateScanParams.ucChannelCount =
27462 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27463 WLAN_HAL_PNO_MAX_NETW_CHANNELS)?
27464 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27465 WLAN_HAL_PNO_MAX_NETW_CHANNELS;
27466
27467 wpalMemoryCopy( updateScanParams.aChannels,
27468 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27469 updateScanParams.ucChannelCount);
27470
27471
27472 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27473 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27474 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27475 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27476 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27477
27478 wpalMemoryCopy( pSendBuffer+usDataOffset,
27479 &updateScanParams,
27480 sizeof(updateScanParams));
27481
27482 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27483 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27484
Varun Reddy Yeturuf68abd62013-02-11 14:05:06 -080027485 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027486 "End Update Scan Parameters Old Style");
27487
27488 /*Set the output values*/
27489 *ppSendBuffer = pSendBuffer;
27490 *pSize = usSendSize;
27491
27492 return WDI_STATUS_SUCCESS;
27493}
27494
27495/**
27496 @brief Process Update Scan Params function
27497
27498 @param pWDICtx: pointer to the WLAN DAL context
27499 pEventData: pointer to the event information structure
27500
27501 @see
27502 @return Result of the function call
27503*/
27504WDI_Status
27505WDI_PackUpdateScanParamsReqEx
27506(
27507 WDI_ControlBlockType* pWDICtx,
27508 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams,
27509 wpt_uint8** ppSendBuffer,
27510 wpt_uint16* pSize
27511)
27512{
27513 wpt_uint8* pSendBuffer = NULL;
27514 wpt_uint16 usDataOffset = 0;
27515 wpt_uint16 usSendSize = 0;
27516 tUpdateScanParamsEx updateScanParams = {0};
27517
27518
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027519 /*-----------------------------------------------------------------------
27520 Get message buffer
27521 -----------------------------------------------------------------------*/
27522 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_SCAN_PARAMS_REQ,
27523 sizeof(updateScanParams),
27524 &pSendBuffer, &usDataOffset, &usSendSize))||
27525 ( usSendSize < (usDataOffset + sizeof(updateScanParams) )))
27526 {
27527 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027528 "Unable to get send buffer in Update Scan Params Ex req %p",
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027529 pwdiUpdateScanParams);
27530 WDI_ASSERT(0);
27531 return WDI_STATUS_E_FAILURE;
27532 }
27533
27534 //
27535 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27536 //
27537
27538 updateScanParams.b11dEnabled = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dEnabled;
27539 updateScanParams.b11dResolved = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.b11dResolved;
27540
27541 updateScanParams.ucChannelCount =
27542 (pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount <
27543 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX)?
27544 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.ucChannelCount :
27545 WLAN_HAL_PNO_MAX_NETW_CHANNELS_EX;
27546
27547 wpalMemoryCopy( updateScanParams.aChannels,
27548 pwdiUpdateScanParams->wdiUpdateScanParamsInfo.aChannels,
27549 updateScanParams.ucChannelCount);
27550
27551
27552 updateScanParams.usActiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMinChTime;
27553 updateScanParams.usActiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usActiveMaxChTime;
27554 updateScanParams.usPassiveMinChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMinChTime;
27555 updateScanParams.usPassiveMaxChTime = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.usPassiveMaxChTime;
27556 updateScanParams.cbState = pwdiUpdateScanParams->wdiUpdateScanParamsInfo.cbState;
27557
27558 wpalMemoryCopy( pSendBuffer+usDataOffset,
27559 &updateScanParams,
27560 sizeof(updateScanParams));
27561
27562 pWDICtx->wdiReqStatusCB = pwdiUpdateScanParams->wdiReqStatusCB;
27563 pWDICtx->pReqStatusUserData = pwdiUpdateScanParams->pUserData;
27564
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027565 /*Set the output values*/
27566 *ppSendBuffer = pSendBuffer;
27567 *pSize = usSendSize;
27568
27569 return WDI_STATUS_SUCCESS;
27570}
27571
27572/**
27573 @brief Process Update Scan Params function
27574
27575 @param pWDICtx: pointer to the WLAN DAL context
27576 pEventData: pointer to the event information structure
27577
27578 @see
27579 @return Result of the function call
27580*/
27581WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027582WDI_ProcessUpdateScanParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070027583(
Jeff Johnson295189b2012-06-20 16:38:30 -070027584 WDI_ControlBlockType* pWDICtx,
27585 WDI_EventInfoType* pEventData
27586)
27587{
27588 WDI_UpdateScanParamsInfoType* pwdiUpdateScanParams = NULL;
27589 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027590 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070027591 wpt_uint16 usSendSize = 0;
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027592 WDI_Status wdiStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027593
27594 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027595 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027596 -------------------------------------------------------------------------*/
27597 if (( NULL == pEventData ) ||
27598 ( NULL == (pwdiUpdateScanParams = (WDI_UpdateScanParamsInfoType*)pEventData->pEventData)) ||
27599 ( NULL == (wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pEventData->pCBfnc)))
27600 {
27601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027602 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027603 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027604 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027605 }
27606
27607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
27608 "Begin WDI Update Scan Parameters");
Jeff Johnson295189b2012-06-20 16:38:30 -070027609
27610 //
27611 // Fill updateScanParams from pwdiUpdateScanParams->wdiUpdateScanParamsInfo
27612 //
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027613 if ( pWDICtx->wlanVersion.revision < 1 )
27614 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027615 wdiStatus = WDI_PackUpdateScanParamsReq( pWDICtx, pwdiUpdateScanParams,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027616 &pSendBuffer, &usSendSize);
27617 }
27618 else
27619 {
Pullela Naga Venkata Sai Ravaliab91c6b2012-12-27 17:31:42 -080027620 wdiStatus = WDI_PackUpdateScanParamsReqEx( pWDICtx, pwdiUpdateScanParams,
27621 &pSendBuffer, &usSendSize);
27622 }
27623
27624 if(WDI_STATUS_SUCCESS != wdiStatus)
27625 {
27626 //memory allocation failed
27627 return WDI_STATUS_E_FAILURE;
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027628 }
Jeff Johnson295189b2012-06-20 16:38:30 -070027629
Jeff Johnson295189b2012-06-20 16:38:30 -070027630 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027631 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070027632 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Pratik Bhalgatd4404592012-11-22 17:49:14 +053027634 wdiUpdateScanParamsCb, pEventData->pUserData,
27635 WDI_UPDATE_SCAN_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070027636}
27637
27638/**
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027639 @brief Process Update Channel Params function
27640
27641 @param pWDICtx: pointer to the WLAN DAL context
27642 pEventData: pointer to the event information structure
27643
27644 @see
27645 @return Result of the function call
27646*/
27647WDI_Status
27648WDI_ProcessUpdateChannelParamsReq
27649(
27650 WDI_ControlBlockType* pWDICtx,
27651 WDI_EventInfoType* pEventData
27652)
27653{
27654 WDI_UpdateChReqParamsType *pwdiUpdateChanListParams = NULL;
27655 WDI_UpdateChannelRspCb wdiUpdateChanParamsCb = NULL;
27656 wpt_uint8* pSendBuffer = NULL;
27657 wpt_uint16 usDataOffset = 0;
27658 wpt_uint16 usSendSize = 0;
27659 tUpdateChannelReqType *updateChannelParams;
27660 wpt_uint32 usUpdateChanParamSize;
27661 wpt_uint8 num_channels = 0;
27662
27663 /*-------------------------------------------------------------------------
27664 Sanity check
27665 -------------------------------------------------------------------------*/
27666 if (( NULL == pEventData ) ||
27667 ( NULL == (pwdiUpdateChanListParams = (WDI_UpdateChReqParamsType*)pEventData->pEventData)) ||
27668 ( NULL == (wdiUpdateChanParamsCb = (WDI_UpdateChannelRspCb)pEventData->pCBfnc)))
27669 {
27670 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27671 "%s: Invalid parameters", __func__);
27672 WDI_ASSERT(0);
27673 return WDI_STATUS_E_FAILURE;
27674 }
27675 num_channels = pwdiUpdateChanListParams->wdiUpdateChanParams.numchan;
Abhishek Singhf644b272014-08-21 02:59:39 +053027676 usUpdateChanParamSize = sizeof(tUpdateChannelReqType);
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080027677
27678 /*-----------------------------------------------------------------------
27679 Get message buffer
27680 -----------------------------------------------------------------------*/
27681 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
27682 WDI_UPDATE_CHAN_REQ, usUpdateChanParamSize,
27683 &pSendBuffer, &usDataOffset, &usSendSize))||
27684 ( usSendSize < (usDataOffset + usUpdateChanParamSize)))
27685 {
27686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
27687 "Unable to get send buffer in Update Channel Params req %p",
27688 pwdiUpdateChanListParams);
27689 WDI_ASSERT(0);
27690 return WDI_STATUS_E_FAILURE;
27691 }
27692 updateChannelParams = (tUpdateChannelReqType *)(pSendBuffer + usDataOffset);
27693
27694 updateChannelParams->numChan = num_channels;
27695 wpalMemoryCopy(&updateChannelParams->chanParam,
27696 pwdiUpdateChanListParams->wdiUpdateChanParams.pchanParam,
27697 sizeof(WDI_UpdateChannelReqinfoType) * num_channels);
27698
27699 pWDICtx->wdiReqStatusCB = pwdiUpdateChanListParams->wdiReqStatusCB;
27700 pWDICtx->pReqStatusUserData = pwdiUpdateChanListParams->pUserData;
27701
27702 /*-------------------------------------------------------------------------
27703 Send Update channel request to fw
27704 -------------------------------------------------------------------------*/
27705 return WDI_SendMsg(pWDICtx, pSendBuffer, usSendSize,
27706 wdiUpdateChanParamsCb, pEventData->pUserData,
27707 WDI_UPDATE_CHAN_RESP);
27708}
27709
27710/**
Jeff Johnson295189b2012-06-20 16:38:30 -070027711 @brief Process Preferred Network Found Indication function
Jeff Johnsone7245742012-09-05 17:12:55 -070027712
27713 @param pWDICtx: pointer to the WLAN DAL context
27714 pEventData: pointer to the event information structure
27715
Jeff Johnson295189b2012-06-20 16:38:30 -070027716 @see
27717 @return Result of the function call
27718*/
27719WDI_Status
27720WDI_ProcessPrefNetworkFoundInd
Jeff Johnsone7245742012-09-05 17:12:55 -070027721(
Jeff Johnson295189b2012-06-20 16:38:30 -070027722 WDI_ControlBlockType* pWDICtx,
27723 WDI_EventInfoType* pEventData
27724)
27725{
Srikant Kuppa066904f2013-05-07 13:56:02 -070027726 WDI_LowLevelIndType wdiInd;
27727 tpPrefNetwFoundParams pNetwFoundParams;
27728 wpt_uint32 msgsize;
Jeff Johnson295189b2012-06-20 16:38:30 -070027729
27730
27731 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027732 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027733 -------------------------------------------------------------------------*/
27734 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27735 ( NULL == pEventData->pEventData ))
27736 {
27737 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027738 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027739 WDI_ASSERT( 0 );
Jeff Johnsone7245742012-09-05 17:12:55 -070027740 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027741 }
27742
27743 /*-------------------------------------------------------------------------
27744 Extract indication and send it to UMAC
27745 -------------------------------------------------------------------------*/
Srikant Kuppa066904f2013-05-07 13:56:02 -070027746 pNetwFoundParams = (tpPrefNetwFoundParams)(pEventData->pEventData);
27747
27748 msgsize = sizeof(tPrefNetwFoundParams) + pNetwFoundParams->frameLength;
27749 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData =
27750 (wpt_uint8 *)wpalMemoryAllocate(msgsize);
27751
27752 if (NULL == wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData)
27753 {
27754 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27755 "%s: fail to allocate memory", __func__);
27756 return WDI_STATUS_MEM_FAILURE;
27757 }
27758
27759 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength =
27760 (pNetwFoundParams->ssId.length < 32 )?
27761 pNetwFoundParams->ssId.length : 32;
27762 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
27763 pNetwFoundParams->ssId.ssId,
27764 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength);
27765 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi = pNetwFoundParams->rssi;
27766 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.frameLength =
27767 pNetwFoundParams->frameLength;
27768 wpalMemoryCopy( wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.pData,
27769 (wpt_uint8 *)pEventData->pEventData + sizeof(tPrefNetwFoundParams),
27770 pNetwFoundParams->frameLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070027771
27772 /*Fill in the indication parameters*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027773 wdiInd.wdiIndicationType = WDI_PREF_NETWORK_FOUND_IND;
Jeff Johnson295189b2012-06-20 16:38:30 -070027774
Jeff Johnson295189b2012-06-20 16:38:30 -070027775 // DEBUG
27776 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Sushant Kaushik1b645382014-10-13 16:39:36 +053027777 "[PNO WDI] PREF_NETWORK_FOUND_IND Type (%d) data (SSID=%.*s, LENGTH=%u, RSSI=%u)",
Jeff Johnson295189b2012-06-20 16:38:30 -070027778 wdiInd.wdiIndicationType,
Wilson Yang56002a22013-08-28 17:55:56 -070027779 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027780 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.sSSID,
Wilson Yang56002a22013-08-28 17:55:56 -070027781 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.ssId.ucLength,
Jeff Johnson295189b2012-06-20 16:38:30 -070027782 wdiInd.wdiIndicationData.wdiPrefNetworkFoundInd.rssi );
27783
ltimariub77f24b2013-01-24 18:54:33 -080027784 if ( pWDICtx->wdiLowLevelIndCB )
27785 {
27786 /*Notify UMAC*/
27787 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
27788 }
Jeff Johnsone7245742012-09-05 17:12:55 -070027789
27790 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027791}
27792
27793/**
27794 @brief Process PNO Rsp function (called when a
27795 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027796
27797 @param pWDICtx: pointer to the WLAN DAL context
27798 pEventData: pointer to the event information structure
27799
Jeff Johnson295189b2012-06-20 16:38:30 -070027800 @see
27801 @return Result of the function call
27802*/
27803WDI_Status
27804WDI_ProcessSetPreferredNetworkRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027805(
Jeff Johnson295189b2012-06-20 16:38:30 -070027806 WDI_ControlBlockType* pWDICtx,
27807 WDI_EventInfoType* pEventData
27808)
27809{
27810 WDI_Status wdiStatus;
27811 eHalStatus halStatus;
27812 WDI_PNOScanCb wdiPNOScanCb = NULL;
27813 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27814
27815 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027816 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027817 -------------------------------------------------------------------------*/
27818 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27819 ( NULL == pEventData->pEventData ))
27820 {
27821 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027822 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027823 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027824 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027825 }
27826
27827
Jeff Johnsone7245742012-09-05 17:12:55 -070027828 wdiPNOScanCb = (WDI_PNOScanCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027829
27830 /*-------------------------------------------------------------------------
27831 Extract response and send it to UMAC
27832 -------------------------------------------------------------------------*/
27833 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027834 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027835
27836 /*Notify UMAC*/
27837 wdiPNOScanCb(wdiStatus, pWDICtx->pRspCBUserData);
27838
Jeff Johnsone7245742012-09-05 17:12:55 -070027839 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027840}/*WDI_ProcessSetPreferredNetworkRsp*/
27841
27842/**
27843 @brief Process RSSI Filter Rsp function (called when a
27844 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027845
27846 @param pWDICtx: pointer to the WLAN DAL context
27847 pEventData: pointer to the event information structure
27848
Jeff Johnson295189b2012-06-20 16:38:30 -070027849 @see
27850 @return Result of the function call
27851*/
27852WDI_Status
27853WDI_ProcessSetRssiFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027854(
Jeff Johnson295189b2012-06-20 16:38:30 -070027855 WDI_ControlBlockType* pWDICtx,
27856 WDI_EventInfoType* pEventData
27857)
27858{
27859 WDI_Status wdiStatus;
27860 eHalStatus halStatus;
27861 WDI_RssiFilterCb wdiRssiFilterCb;
27862 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27863
27864 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027865 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027866 -------------------------------------------------------------------------*/
27867 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27868 ( NULL == pEventData->pEventData ))
27869 {
27870 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027871 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027872 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027873 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027874 }
27875
Jeff Johnsone7245742012-09-05 17:12:55 -070027876 wdiRssiFilterCb = (WDI_RssiFilterCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027877
27878 /*-------------------------------------------------------------------------
27879 Extract response and send it to UMAC
27880 -------------------------------------------------------------------------*/
27881 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070027882 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027883
27884 /*Notify UMAC*/
27885 wdiRssiFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
27886
Jeff Johnsone7245742012-09-05 17:12:55 -070027887 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027888}/*WDI_ProcessSetRssiFilterRsp*/
27889
27890/**
27891 @brief Process Update Scan Params Rsp function (called when a
27892 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070027893
27894 @param pWDICtx: pointer to the WLAN DAL context
27895 pEventData: pointer to the event information structure
27896
Jeff Johnson295189b2012-06-20 16:38:30 -070027897 @see
27898 @return Result of the function call
27899*/
27900WDI_Status
27901WDI_ProcessUpdateScanParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070027902(
Jeff Johnson295189b2012-06-20 16:38:30 -070027903 WDI_ControlBlockType* pWDICtx,
27904 WDI_EventInfoType* pEventData
27905)
27906{
27907 WDI_Status wdiStatus;
Jeff Johnsone7245742012-09-05 17:12:55 -070027908 tUpdateScanParamsResp halUpdScanParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070027909 WDI_UpdateScanParamsCb wdiUpdateScanParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070027910 wpt_uint32 uStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070027911 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27912
27913 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027914 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070027915 -------------------------------------------------------------------------*/
27916 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
27917 ( NULL == pEventData->pEventData ))
27918 {
27919 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027920 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027921 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070027922 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070027923 }
27924
27925 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080027926 "%s: Process UPD scan params ptr : %p",
27927 __func__, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070027928
Jeff Johnsone7245742012-09-05 17:12:55 -070027929 wdiUpdateScanParamsCb = (WDI_UpdateScanParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070027930
27931 /*-------------------------------------------------------------------------
27932 Extract response and send it to UMAC
27933 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027934 wpalMemoryCopy( (void *)&halUpdScanParams.status,
27935 pEventData->pEventData,
Jeff Johnson295189b2012-06-20 16:38:30 -070027936 sizeof(halUpdScanParams.status));
27937
27938 uStatus = halUpdScanParams.status;
27939
27940 /*Extract PNO version - 1st bit of the status */
Jeff Johnsone7245742012-09-05 17:12:55 -070027941 pWDICtx->wdiPNOVersion = (uStatus & WDI_PNO_VERSION_MASK)? 1:0;
Jeff Johnson295189b2012-06-20 16:38:30 -070027942
27943 /*Remove version bit*/
Jeff Johnsone7245742012-09-05 17:12:55 -070027944 uStatus = uStatus & ( ~(WDI_PNO_VERSION_MASK));
Jeff Johnson295189b2012-06-20 16:38:30 -070027945
Jeff Johnsone7245742012-09-05 17:12:55 -070027946 wdiStatus = WDI_HAL_2_WDI_STATUS(uStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070027947
27948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070027949 "UPD Scan Parameters rsp with status: %d",
Jeff Johnson295189b2012-06-20 16:38:30 -070027950 halUpdScanParams.status);
27951
27952 /*Notify UMAC*/
27953 wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
27954
Jeff Johnsone7245742012-09-05 17:12:55 -070027955 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070027956}
27957#endif // FEATURE_WLAN_SCAN_PNO
27958
27959#ifdef WLAN_FEATURE_PACKET_FILTERING
Jeff Johnsone7245742012-09-05 17:12:55 -070027960WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027961WDI_8023MulticastListReq
27962(
27963 WDI_RcvFltPktSetMcListReqParamsType* pwdiRcvFltPktSetMcListReqInfo,
27964 WDI_8023MulticastListCb wdi8023MulticastListCallback,
27965 void* pUserData
27966)
27967{
27968 WDI_EventInfoType wdiEventData;
27969 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
27970
27971 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070027972 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070027973
27974 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070027975 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070027976 ------------------------------------------------------------------------*/
27977 if ( eWLAN_PAL_FALSE == gWDIInitialized )
27978 {
27979 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
27980 "WDI API call before module is initialized - Fail request");
27981
Jeff Johnsone7245742012-09-05 17:12:55 -070027982 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070027983 }
27984
27985 /*------------------------------------------------------------------------
27986 Fill in Event data and post to the Main FSM
27987 ------------------------------------------------------------------------*/
27988 wdiEventData.wdiRequest = WDI_8023_MULTICAST_LIST_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070027989 wdiEventData.pEventData = pwdiRcvFltPktSetMcListReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070027990 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktSetMcListReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070027991 wdiEventData.pCBfnc = wdi8023MulticastListCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070027992 wdiEventData.pUserData = pUserData;
27993
27994 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
27995}
27996
Jeff Johnsone7245742012-09-05 17:12:55 -070027997WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070027998WDI_ReceiveFilterSetFilterReq
27999(
28000 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo,
28001 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCallback,
28002 void* pUserData
28003)
28004{
28005 WDI_EventInfoType wdiEventData;
28006 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28007
28008 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028009 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028010
28011 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028012 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028013 ------------------------------------------------------------------------*/
28014 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28015 {
28016 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28017 "WDI API call before module is initialized - Fail request");
28018
Jeff Johnsone7245742012-09-05 17:12:55 -070028019 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028020 }
28021
28022 /*------------------------------------------------------------------------
28023 Fill in Event data and post to the Main FSM
28024 ------------------------------------------------------------------------*/
28025 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_SET_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028026 wdiEventData.pEventData = pwdiSetRcvPktFilterReqInfo;
28027 wdiEventData.uEventDataSize = sizeof(*pwdiSetRcvPktFilterReqInfo) +
Yue Ma13cf95c2013-03-18 18:05:27 -070028028 (pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
28029 * sizeof(WDI_RcvPktFilterFieldParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070028030 wdiEventData.pCBfnc = wdiReceiveFilterSetFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028031 wdiEventData.pUserData = pUserData;
28032
28033
28034 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28035}
28036
Jeff Johnsone7245742012-09-05 17:12:55 -070028037WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028038WDI_FilterMatchCountReq
28039(
28040 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqInfo,
28041 WDI_FilterMatchCountCb wdiFilterMatchCountCallback,
28042 void* pUserData
28043)
28044{
28045 WDI_EventInfoType wdiEventData;
28046 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28047
28048 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028049 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028050
28051 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028052 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028053 ------------------------------------------------------------------------*/
28054 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28055 {
28056 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28057 "WDI API call before module is initialized - Fail request");
28058
Jeff Johnsone7245742012-09-05 17:12:55 -070028059 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028060 }
28061
28062 /*------------------------------------------------------------------------
28063 Fill in Event data and post to the Main FSM
28064 ------------------------------------------------------------------------*/
28065 wdiEventData.wdiRequest = WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028066 wdiEventData.pEventData = pwdiRcvFltPktMatchCntReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028067 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktMatchCntReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028068 wdiEventData.pCBfnc = wdiFilterMatchCountCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028069 wdiEventData.pUserData = pUserData;
28070
28071
28072 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28073}
28074
Jeff Johnsone7245742012-09-05 17:12:55 -070028075WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070028076WDI_ReceiveFilterClearFilterReq
28077(
28078 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqInfo,
28079 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCallback,
28080 void* pUserData
28081)
28082{
28083 WDI_EventInfoType wdiEventData;
28084 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28085
28086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028087 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028088
28089 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028090 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070028091 ------------------------------------------------------------------------*/
28092 if ( eWLAN_PAL_FALSE == gWDIInitialized )
28093 {
28094 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28095 "WDI API call before module is initialized - Fail request");
28096
Jeff Johnsone7245742012-09-05 17:12:55 -070028097 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070028098 }
28099
28100 /*------------------------------------------------------------------------
28101 Fill in Event data and post to the Main FSM
28102 ------------------------------------------------------------------------*/
28103 wdiEventData.wdiRequest = WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070028104 wdiEventData.pEventData = pwdiRcvFltPktClearReqInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028105 wdiEventData.uEventDataSize = sizeof(*pwdiRcvFltPktClearReqInfo);
Jeff Johnsone7245742012-09-05 17:12:55 -070028106 wdiEventData.pCBfnc = wdiReceiveFilterClearFilterCallback;
Jeff Johnson295189b2012-06-20 16:38:30 -070028107 wdiEventData.pUserData = pUserData;
28108
28109
28110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
28111}
28112
28113/**
28114 @brief Process 8023 Multicast List Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028115
28116 @param pWDICtx: pointer to the WLAN DAL context
28117 pEventData: pointer to the event information structure
28118
Jeff Johnson295189b2012-06-20 16:38:30 -070028119 @see
28120 @return Result of the function call
28121*/
28122WDI_Status
28123WDI_Process8023MulticastListReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028124(
Jeff Johnson295189b2012-06-20 16:38:30 -070028125 WDI_ControlBlockType* pWDICtx,
28126 WDI_EventInfoType* pEventData
28127)
28128{
28129 WDI_RcvFltPktSetMcListReqParamsType* pwdiFltPktSetMcListReqParamsType = NULL;
28130 WDI_8023MulticastListCb wdi8023MulticastListCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028131 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028132 wpt_uint16 usDataOffset = 0;
28133 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028134 tpHalRcvFltMcAddrListType pRcvFltMcAddrListType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028135 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070028136 wpt_uint8 ucCurrentBSSSesIdx = 0;
28137 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028138
28139 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028140 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028141
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028142 pRcvFltMcAddrListType = wpalMemoryAllocate(sizeof(tHalRcvFltMcAddrListType)) ;
28143 if( NULL == pRcvFltMcAddrListType )
28144 {
28145 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28146 "Failed to alloc in WDI_Process8023MulticastListReq");
28147 return WDI_STATUS_E_FAILURE;
28148 }
28149
Jeff Johnson295189b2012-06-20 16:38:30 -070028150 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028151 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028152 -------------------------------------------------------------------------*/
28153 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028154 ( NULL == (pwdiFltPktSetMcListReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028155 (WDI_RcvFltPktSetMcListReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028156 ( NULL == (wdi8023MulticastListCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028157 (WDI_8023MulticastListCb)pEventData->pCBfnc)))
28158 {
28159 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028160 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028161 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028162 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028163 return WDI_STATUS_E_FAILURE;
28164 }
28165
28166 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28167 pwdiFltPktSetMcListReqParamsType->mcAddrList.bssId,
28168 &pBSSSes);
28169 if ( NULL == pBSSSes )
28170 {
28171 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028172 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028173 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnsone7245742012-09-05 17:12:55 -070028174 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028175 }
28176
28177 /*-----------------------------------------------------------------------
28178 Get message buffer
28179 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028180 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28181 WDI_8023_MULTICAST_LIST_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028182 sizeof(tHalRcvFltMcAddrListType),
28183 &pSendBuffer, &usDataOffset, &usSendSize))||
28184 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltMcAddrListType))))
28185 {
28186 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28187 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028188 "WDI_Process8023MulticastListReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028189 pEventData, pwdiFltPktSetMcListReqParamsType,
28190 wdi8023MulticastListCb);
Yue Mad8cac142013-03-28 11:33:46 -070028191 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028192 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028193 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028194 }
28195
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028196 pRcvFltMcAddrListType->cMulticastAddr =
Jeff Johnsone7245742012-09-05 17:12:55 -070028197 pwdiFltPktSetMcListReqParamsType->mcAddrList.ulMulticastAddrCnt;
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028198 for( i = 0; i < pRcvFltMcAddrListType->cMulticastAddr; i++ )
Jeff Johnson295189b2012-06-20 16:38:30 -070028199 {
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028200 wpalMemoryCopy(pRcvFltMcAddrListType->multicastAddr[i],
Jeff Johnson295189b2012-06-20 16:38:30 -070028201 pwdiFltPktSetMcListReqParamsType->mcAddrList.multicastAddr[i],
28202 sizeof(tSirMacAddr));
28203 }
28204
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028205 pRcvFltMcAddrListType->bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070028206 wpalMemoryCopy( pSendBuffer+usDataOffset,
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028207 pRcvFltMcAddrListType,
28208 sizeof(tHalRcvFltMcAddrListType));
Jeff Johnson295189b2012-06-20 16:38:30 -070028209
28210 pWDICtx->wdiReqStatusCB = pwdiFltPktSetMcListReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028211 pWDICtx->pReqStatusUserData = pwdiFltPktSetMcListReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028212
28213
Madan Mohan Koyyalamudicfb9f4d2012-10-21 12:35:08 -070028214 wpalMemoryFree(pRcvFltMcAddrListType);
Jeff Johnson295189b2012-06-20 16:38:30 -070028215 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028216 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028217 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028218 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028219 wdi8023MulticastListCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028220 WDI_8023_MULTICAST_LIST_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028221}
28222
28223/**
28224 @brief Process Receive Filter Set Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028225
28226 @param pWDICtx: pointer to the WLAN DAL context
28227 pEventData: pointer to the event information structure
28228
Jeff Johnson295189b2012-06-20 16:38:30 -070028229 @see
28230 @return Result of the function call
28231*/
28232WDI_Status
28233WDI_ProcessReceiveFilterSetFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028234(
Jeff Johnson295189b2012-06-20 16:38:30 -070028235 WDI_ControlBlockType* pWDICtx,
28236 WDI_EventInfoType* pEventData
28237)
28238{
28239 WDI_SetRcvPktFilterReqParamsType* pwdiSetRcvPktFilterReqInfo = NULL;
28240 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028241 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028242 wpt_uint16 usDataOffset = 0;
28243 wpt_uint16 usSendSize = 0;
28244 wpt_uint32 usRcvPktFilterCfgSize;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028245 tHalRcvPktFilterCfgType *pRcvPktFilterCfg = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028246 wpt_uint8 i;
Jeff Johnsone7245742012-09-05 17:12:55 -070028247 wpt_uint8 ucCurrentBSSSesIdx = 0;
28248 WDI_BSSSessionType* pBSSSes = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028249 tHalSessionizedRcvPktFilterCfgType *pSessRcvPktFilterCfg = NULL;
28250 wpt_uint32 usSessRcvPktFilterCfgSize;
Jeff Johnson295189b2012-06-20 16:38:30 -070028251
28252 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028253 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028254
28255 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028256 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028257 -------------------------------------------------------------------------*/
28258 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028259 ( NULL == (pwdiSetRcvPktFilterReqInfo =
Jeff Johnson295189b2012-06-20 16:38:30 -070028260 (WDI_SetRcvPktFilterReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028261 ( NULL == (wdiReceiveFilterSetFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028262 (WDI_ReceiveFilterSetFilterCb)pEventData->pCBfnc)))
28263 {
28264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028265 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028266 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028267 return WDI_STATUS_E_FAILURE;
28268 }
28269
28270 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28271 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.bssId,
28272 &pBSSSes);
28273 if ( NULL == pBSSSes )
28274 {
28275 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028276 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028277 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028278 }
28279
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028280 if( WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION) )
28281 {
Jeff Johnson295189b2012-06-20 16:38:30 -070028282
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028283 usSessRcvPktFilterCfgSize = sizeof(tHalSessionizedRcvPktFilterCfgType) +
28284 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
28285 * sizeof(tHalSessionizedRcvPktFilterCfgType));
28286
28287 pSessRcvPktFilterCfg = (tHalSessionizedRcvPktFilterCfgType *)wpalMemoryAllocate(
28288 usSessRcvPktFilterCfgSize);
28289
28290 if(NULL == pSessRcvPktFilterCfg)
28291 {
28292 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28293 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028294 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028295 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028296 WDI_ASSERT(0);
28297 return WDI_STATUS_E_FAILURE;
28298 }
28299
28300 wpalMemoryZero(pSessRcvPktFilterCfg, usSessRcvPktFilterCfgSize);
28301
28302 /*-----------------------------------------------------------------------
28303 Get message buffer
28304 -----------------------------------------------------------------------*/
28305
28306 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
28307 usSessRcvPktFilterCfgSize,
28308 &pSendBuffer, &usDataOffset, &usSendSize))||
28309 ( usSendSize < (usDataOffset + usSessRcvPktFilterCfgSize)))
28310 {
28311 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28312 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028313 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028314 pEventData, pwdiSetRcvPktFilterReqInfo,
28315 wdiReceiveFilterSetFilterCb);
28316 WDI_ASSERT(0);
28317 wpalMemoryFree(pSessRcvPktFilterCfg);
28318 return WDI_STATUS_E_FAILURE;
28319 }
28320
28321 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028322 "UsData Off %d UsSend %d cfg %p",usDataOffset,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028323 usSendSize,pSessRcvPktFilterCfg);
28324
28325 pSessRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
28326 pSessRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
28327 pSessRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
28328 pSessRcvPktFilterCfg->coleasceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
28329
28330 pSessRcvPktFilterCfg->bssIdx = pBSSSes->ucBSSIdx;
28331
28332 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28333 "Out: FID %d FT %d",pSessRcvPktFilterCfg->filterId,
28334 pSessRcvPktFilterCfg->filterType);
28335 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
28336 "NParams %d CT %d",pSessRcvPktFilterCfg->numParams,
28337 pSessRcvPktFilterCfg->coleasceTime);
28338
28339 for ( i = 0; i < pSessRcvPktFilterCfg->numParams; i++ )
28340 {
28341 pSessRcvPktFilterCfg->paramsData[i].protocolLayer =
28342 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
28343 pSessRcvPktFilterCfg->paramsData[i].cmpFlag =
28344 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28345 pSessRcvPktFilterCfg->paramsData[i].dataOffset =
28346 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28347 pSessRcvPktFilterCfg->paramsData[i].dataLength =
28348 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
28349
28350 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].compareData,
28351 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28352 8);
28353 wpalMemoryCopy(&pSessRcvPktFilterCfg->paramsData[i].dataMask,
28354 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28355 8);
28356
28357 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028358 "Out:Proto %d Comp Flag %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028359 pSessRcvPktFilterCfg->paramsData[i].protocolLayer,
28360 pSessRcvPktFilterCfg->paramsData[i].cmpFlag);
28361
28362 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028363 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028364 pSessRcvPktFilterCfg->paramsData[i].dataOffset,
28365 pSessRcvPktFilterCfg->paramsData[i].dataLength);
28366
28367 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028368 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028369 pSessRcvPktFilterCfg->paramsData[i].compareData[0],
28370 pSessRcvPktFilterCfg->paramsData[i].compareData[1],
28371 pSessRcvPktFilterCfg->paramsData[i].compareData[2],
28372 pSessRcvPktFilterCfg->paramsData[i].compareData[3],
28373 pSessRcvPktFilterCfg->paramsData[i].compareData[4],
28374 pSessRcvPktFilterCfg->paramsData[i].compareData[5]);
28375
28376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028377 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028378 pSessRcvPktFilterCfg->paramsData[i].dataMask[0],
28379 pSessRcvPktFilterCfg->paramsData[i].dataMask[1],
28380 pSessRcvPktFilterCfg->paramsData[i].dataMask[2],
28381 pSessRcvPktFilterCfg->paramsData[i].dataMask[3],
28382 pSessRcvPktFilterCfg->paramsData[i].dataMask[4],
28383 pSessRcvPktFilterCfg->paramsData[i].dataMask[5]);
28384 }
28385
28386 wpalMemoryCopy( pSendBuffer+usDataOffset,
28387 pSessRcvPktFilterCfg,
28388 usSessRcvPktFilterCfgSize);
28389
28390
28391 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28392 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
28393
28394 wpalMemoryFree(pSessRcvPktFilterCfg);
28395
28396 }
28397 /*If SLM_SESSIONIZATION is not supported then do this */
28398 else
28399 {
28400 usRcvPktFilterCfgSize = sizeof(tHalRcvPktFilterCfgType) +
28401 ((pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams - 1)
28402 * sizeof(tHalRcvPktFilterParams));
28403
28404 pRcvPktFilterCfg = (tHalRcvPktFilterCfgType *)wpalMemoryAllocate(
Jeff Johnson295189b2012-06-20 16:38:30 -070028405 usRcvPktFilterCfgSize);
28406
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028407 if(NULL == pRcvPktFilterCfg)
28408 {
28409 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28410 "%s: Failed to allocate memory for "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028411 "tHalRcvPktFilterCfgType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028412 __func__, pWDICtx, pEventData, pEventData->pEventData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028413 WDI_ASSERT(0);
28414 return WDI_STATUS_E_FAILURE;
28415 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028416
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028417 wpalMemoryZero(pRcvPktFilterCfg, usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028418
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028419 /*-----------------------------------------------------------------------
28420 Get message buffer
28421 -----------------------------------------------------------------------*/
28422 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_RECEIVE_FILTER_SET_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028423 usRcvPktFilterCfgSize,
28424 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028425 ( usSendSize < (usDataOffset + usRcvPktFilterCfgSize)))
28426 {
28427 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnson295189b2012-06-20 16:38:30 -070028428 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028429 "WDI_ProcessReceiveFilterSetFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028430 pEventData, pwdiSetRcvPktFilterReqInfo,
28431 wdiReceiveFilterSetFilterCb);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028432 WDI_ASSERT(0);
28433 wpalMemoryFree(pRcvPktFilterCfg);
28434 return WDI_STATUS_E_FAILURE;
28435 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028436
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028437 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028438 "UsData Off %d UsSend %d cfg %d",usDataOffset,
Jeff Johnson295189b2012-06-20 16:38:30 -070028439 usSendSize,usRcvPktFilterCfgSize);
28440
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028441 pRcvPktFilterCfg->filterId = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterId;
28442 pRcvPktFilterCfg->filterType = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.filterType;
28443 pRcvPktFilterCfg->numParams = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.numFieldParams;
28444 pRcvPktFilterCfg->coalesceTime = pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.coalesceTime;
Jeff Johnson295189b2012-06-20 16:38:30 -070028445
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028446 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnsone7245742012-09-05 17:12:55 -070028447 "Out: FID %d FT %d",pRcvPktFilterCfg->filterId,
Jeff Johnson295189b2012-06-20 16:38:30 -070028448 pRcvPktFilterCfg->filterType);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028449 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Jeff Johnson295189b2012-06-20 16:38:30 -070028450 "NParams %d CT %d",pRcvPktFilterCfg->numParams,
Jeff Johnsone7245742012-09-05 17:12:55 -070028451 pRcvPktFilterCfg->coalesceTime);
Jeff Johnson295189b2012-06-20 16:38:30 -070028452
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028453 for ( i = 0; i < pRcvPktFilterCfg->numParams; i++ )
28454 {
28455 pRcvPktFilterCfg->paramsData[i].protocolLayer =
28456 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].protocolLayer;
28457 pRcvPktFilterCfg->paramsData[i].cmpFlag =
28458 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].cmpFlag;
28459 pRcvPktFilterCfg->paramsData[i].dataOffset =
28460 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataOffset;
28461 pRcvPktFilterCfg->paramsData[i].dataLength =
28462 pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataLength;
Jeff Johnson295189b2012-06-20 16:38:30 -070028463
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028464 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].compareData,
Jeff Johnson295189b2012-06-20 16:38:30 -070028465 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].compareData,
28466 8);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028467 wpalMemoryCopy(&pRcvPktFilterCfg->paramsData[i].dataMask,
Jeff Johnson295189b2012-06-20 16:38:30 -070028468 &pwdiSetRcvPktFilterReqInfo->wdiPktFilterCfg.paramsData[i].dataMask,
28469 8);
28470
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028472 "Out:Proto %d Comp Flag %d",
Jeff Johnsone7245742012-09-05 17:12:55 -070028473 pRcvPktFilterCfg->paramsData[i].protocolLayer,
Jeff Johnson295189b2012-06-20 16:38:30 -070028474 pRcvPktFilterCfg->paramsData[i].cmpFlag);
28475
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028476 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028477 "Data Offset %d Data Len %d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028478 pRcvPktFilterCfg->paramsData[i].dataOffset,
28479 pRcvPktFilterCfg->paramsData[i].dataLength);
Jeff Johnson295189b2012-06-20 16:38:30 -070028480
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028481 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028482 "CData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028483 pRcvPktFilterCfg->paramsData[i].compareData[0],
28484 pRcvPktFilterCfg->paramsData[i].compareData[1],
28485 pRcvPktFilterCfg->paramsData[i].compareData[2],
28486 pRcvPktFilterCfg->paramsData[i].compareData[3],
28487 pRcvPktFilterCfg->paramsData[i].compareData[4],
28488 pRcvPktFilterCfg->paramsData[i].compareData[5]);
Jeff Johnson295189b2012-06-20 16:38:30 -070028489
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028490 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080028491 "MData: %d:%d:%d:%d:%d:%d",
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028492 pRcvPktFilterCfg->paramsData[i].dataMask[0],
28493 pRcvPktFilterCfg->paramsData[i].dataMask[1],
28494 pRcvPktFilterCfg->paramsData[i].dataMask[2],
28495 pRcvPktFilterCfg->paramsData[i].dataMask[3],
28496 pRcvPktFilterCfg->paramsData[i].dataMask[4],
28497 pRcvPktFilterCfg->paramsData[i].dataMask[5]);
28498 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028499
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028500 wpalMemoryCopy( pSendBuffer+usDataOffset,
Jeff Johnsone7245742012-09-05 17:12:55 -070028501 pRcvPktFilterCfg,
28502 usRcvPktFilterCfgSize);
Jeff Johnson295189b2012-06-20 16:38:30 -070028503
28504
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028505 pWDICtx->wdiReqStatusCB = pwdiSetRcvPktFilterReqInfo->wdiReqStatusCB;
28506 pWDICtx->pReqStatusUserData = pwdiSetRcvPktFilterReqInfo->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028507
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028508 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028509 "%s",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028510 wpalMemoryFree(pRcvPktFilterCfg);
28511 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028512 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028513 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028514 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028515 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028516 wdiReceiveFilterSetFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028517 WDI_RECEIVE_FILTER_SET_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028518}
28519
28520/**
28521 @brief Process Packet Filter Match Count Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028522
28523 @param pWDICtx: pointer to the WLAN DAL context
28524 pEventData: pointer to the event information structure
28525
Jeff Johnson295189b2012-06-20 16:38:30 -070028526 @see
28527 @return Result of the function call
28528*/
28529WDI_Status
28530WDI_ProcessFilterMatchCountReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028531(
Jeff Johnson295189b2012-06-20 16:38:30 -070028532 WDI_ControlBlockType* pWDICtx,
28533 WDI_EventInfoType* pEventData
28534)
28535{
28536 WDI_RcvFltPktMatchCntReqParamsType* pwdiRcvFltPktMatchCntReqParamsType =
28537 NULL;
28538 WDI_FilterMatchCountCb wdiFilterMatchCountCb =
28539 NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028540 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028541 wpt_uint16 usDataOffset = 0;
28542 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028543 tHalRcvFltPktMatchCntReqParams rcvFltPktMatchCntReqParam = {0};
28544 wpt_uint8 ucCurrentBSSSesIdx = 0;
28545 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028546
28547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028548 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028549
28550 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028551 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028552 -------------------------------------------------------------------------*/
28553 if (( NULL == pEventData ) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028554 ( NULL == (pwdiRcvFltPktMatchCntReqParamsType =
Jeff Johnson295189b2012-06-20 16:38:30 -070028555 (WDI_RcvFltPktMatchCntReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028556 ( NULL == (wdiFilterMatchCountCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028557 (WDI_FilterMatchCountCb)pEventData->pCBfnc)))
28558 {
28559 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028560 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028561 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028562 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028563 }
28564
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028565 ucCurrentBSSSesIdx = WDI_FindAssocSession( pWDICtx,
28566 pwdiRcvFltPktMatchCntReqParamsType->bssId,
28567 &pBSSSes);
28568 if ( NULL == pBSSSes )
28569 {
28570 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028571 " %s : Association for this BSSID does not exist",__func__);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028572 return WDI_STATUS_E_FAILURE;
28573 }
28574
Jeff Johnson295189b2012-06-20 16:38:30 -070028575 /*-----------------------------------------------------------------------
28576 Get message buffer
28577 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028578 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
28579 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028580 sizeof(tHalRcvFltPktMatchCntReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070028581 &pSendBuffer, &usDataOffset, &usSendSize))||
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028582 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktMatchCntReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070028583 {
28584 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28585 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028586 "WDI_ProcessFilterMatchCountReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028587 pEventData, pwdiRcvFltPktMatchCntReqParamsType,
28588 wdiFilterMatchCountCb);
28589 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028590 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028591 }
28592
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028593 rcvFltPktMatchCntReqParam.bssIdx = pBSSSes->ucBSSIdx;
28594 wpalMemoryCopy( pSendBuffer+usDataOffset,
28595 &rcvFltPktMatchCntReqParam,
28596 sizeof(rcvFltPktMatchCntReqParam));
28597
Jeff Johnson295189b2012-06-20 16:38:30 -070028598 //
28599 // Don't need to fill send buffer other than header
28600 //
28601 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktMatchCntReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028602 pWDICtx->pReqStatusUserData = pwdiRcvFltPktMatchCntReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028603
28604
28605 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028606 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028607 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028608 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
28609 wdiFilterMatchCountCb,
28610 pEventData->pUserData,
28611 WDI_PACKET_COALESCING_FILTER_MATCH_COUNT_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028612}
28613
28614/**
28615 @brief Process Receive Filter Clear Filter Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070028616
28617 @param pWDICtx: pointer to the WLAN DAL context
28618 pEventData: pointer to the event information structure
28619
Jeff Johnson295189b2012-06-20 16:38:30 -070028620 @see
28621 @return Result of the function call
28622*/
28623WDI_Status
28624WDI_ProcessReceiveFilterClearFilterReq
Jeff Johnsone7245742012-09-05 17:12:55 -070028625(
Jeff Johnson295189b2012-06-20 16:38:30 -070028626 WDI_ControlBlockType* pWDICtx,
28627 WDI_EventInfoType* pEventData
28628)
Jeff Johnsone7245742012-09-05 17:12:55 -070028629{
Jeff Johnson295189b2012-06-20 16:38:30 -070028630 WDI_RcvFltPktClearReqParamsType* pwdiRcvFltPktClearReqParamsType = NULL;
28631 WDI_ReceiveFilterClearFilterCb wdiRcvFltPktClearFilterCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070028632 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028633 wpt_uint16 usDataOffset = 0;
28634 wpt_uint16 usSendSize = 0;
28635 tHalRcvFltPktClearParam rcvFltPktClearParam;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028636 wpt_uint8 ucCurrentSessionId = 0;
Jeff Johnsone7245742012-09-05 17:12:55 -070028637 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070028638
28639 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028640 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028641
28642 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028643 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028644 -------------------------------------------------------------------------*/
28645 if (( NULL == pEventData ) ||
28646 ( NULL == (pwdiRcvFltPktClearReqParamsType =
28647 (WDI_RcvFltPktClearReqParamsType*)pEventData->pEventData)) ||
Jeff Johnsone7245742012-09-05 17:12:55 -070028648 ( NULL == (wdiRcvFltPktClearFilterCb =
Jeff Johnson295189b2012-06-20 16:38:30 -070028649 (WDI_ReceiveFilterClearFilterCb)pEventData->pCBfnc)))
28650 {
28651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028652 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028653 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028654 return WDI_STATUS_E_FAILURE;
28655 }
28656
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028657 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028658 pwdiRcvFltPktClearReqParamsType->filterClearParam.bssId,
28659 &pBSSSes);
28660 if ( NULL == pBSSSes )
28661 {
28662 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028663 " %s : Association for this BSSID does not exist",__func__);
Jeff Johnsone7245742012-09-05 17:12:55 -070028664 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028665 }
28666
28667 /*-----------------------------------------------------------------------
28668 Get message buffer
28669 -----------------------------------------------------------------------*/
28670 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Jeff Johnsone7245742012-09-05 17:12:55 -070028671 WDI_RECEIVE_FILTER_CLEAR_FILTER_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070028672 sizeof(tHalRcvFltPktClearParam),
28673 &pSendBuffer, &usDataOffset, &usSendSize))||
28674 ( usSendSize < (usDataOffset + sizeof(tHalRcvFltPktClearParam))))
28675 {
28676 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
28677 "Unable to get send buffer in "
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080028678 "WDI_ProcessReceiveFilterClearFilterReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070028679 pEventData, pwdiRcvFltPktClearReqParamsType,
28680 wdiRcvFltPktClearFilterCb);
28681 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028682 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028683 }
28684
28685
28686 rcvFltPktClearParam.status = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028687 filterClearParam.status;
Jeff Johnson295189b2012-06-20 16:38:30 -070028688 rcvFltPktClearParam.filterId = pwdiRcvFltPktClearReqParamsType->
Jeff Johnsone7245742012-09-05 17:12:55 -070028689 filterClearParam.filterId;
Jeff Johnson295189b2012-06-20 16:38:30 -070028690
Jeff Johnsone7245742012-09-05 17:12:55 -070028691 rcvFltPktClearParam.bssIdx = pBSSSes->ucBSSIdx;
28692 wpalMemoryCopy( pSendBuffer+usDataOffset,
28693 &rcvFltPktClearParam,
28694 sizeof(rcvFltPktClearParam));
Jeff Johnson295189b2012-06-20 16:38:30 -070028695
28696 pWDICtx->wdiReqStatusCB = pwdiRcvFltPktClearReqParamsType->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070028697 pWDICtx->pReqStatusUserData = pwdiRcvFltPktClearReqParamsType->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070028698
28699
28700 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028701 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070028702 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070028703 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Jeff Johnson295189b2012-06-20 16:38:30 -070028704 wdiRcvFltPktClearFilterCb, pEventData->pUserData,
Jeff Johnsone7245742012-09-05 17:12:55 -070028705 WDI_RECEIVE_FILTER_CLEAR_FILTER_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070028706}
28707
28708/**
28709 @brief Process 8023 Multicast List Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028710
28711 @param pWDICtx: pointer to the WLAN DAL context
28712 pEventData: pointer to the event information structure
28713
Jeff Johnson295189b2012-06-20 16:38:30 -070028714 @see
28715 @return Result of the function call
28716*/
28717WDI_Status
28718WDI_Process8023MulticastListRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028719(
Jeff Johnson295189b2012-06-20 16:38:30 -070028720 WDI_ControlBlockType* pWDICtx,
28721 WDI_EventInfoType* pEventData
28722)
28723{
Jeff Johnson295189b2012-06-20 16:38:30 -070028724 eHalStatus halStatus;
28725 WDI_8023MulticastListCb wdi8023MulticastListCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028726 tHalRcvFltPktSetMcListRspType halRcvFltPktSetMcListRsp;
28727 WDI_RcvFltPktSetMcListRspParamsType wdiRcvFltPktSetMcListRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028728 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28729
28730 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028731 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028732
28733 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028734 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028735 -------------------------------------------------------------------------*/
28736 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28737 ( NULL == pEventData->pEventData ))
28738 {
28739 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028740 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028741 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028742 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028743 }
28744
Jeff Johnsone7245742012-09-05 17:12:55 -070028745 wdi8023MulticastListCb = (WDI_8023MulticastListCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028746
28747 /*-------------------------------------------------------------------------
28748 Extract response and send it to UMAC
28749 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028750 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28751 {
28752 wpalMemoryCopy( &halRcvFltPktSetMcListRsp,
28753 pEventData->pEventData,
28754 sizeof(halRcvFltPktSetMcListRsp));
28755
28756 wdiRcvFltPktSetMcListRspInfo.wdiStatus =
28757 WDI_HAL_2_WDI_STATUS(halRcvFltPktSetMcListRsp.status);
28758 wdiRcvFltPktSetMcListRspInfo.bssIdx =
28759 halRcvFltPktSetMcListRsp.bssIdx;
28760 }
28761 else
28762 {
28763 halStatus = *((eHalStatus*)pEventData->pEventData);
28764 wdiRcvFltPktSetMcListRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28765 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028766
28767 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028768 wdi8023MulticastListCb(&wdiRcvFltPktSetMcListRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028769
Jeff Johnsone7245742012-09-05 17:12:55 -070028770 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028771}
28772
28773/**
28774 @brief Process Set Rsp function (called when a
28775 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070028776
28777 @param pWDICtx: pointer to the WLAN DAL context
28778 pEventData: pointer to the event information structure
28779
Jeff Johnson295189b2012-06-20 16:38:30 -070028780 @see
28781 @return Result of the function call
28782*/
28783WDI_Status
28784WDI_ProcessReceiveFilterSetFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028785(
Jeff Johnson295189b2012-06-20 16:38:30 -070028786 WDI_ControlBlockType* pWDICtx,
28787 WDI_EventInfoType* pEventData
28788)
28789{
Jeff Johnson295189b2012-06-20 16:38:30 -070028790 eHalStatus halStatus;
28791 WDI_ReceiveFilterSetFilterCb wdiReceiveFilterSetFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028792 tHalSetPktFilterRspParams halSetPktFilterRspParams;
28793 WDI_SetRcvPktFilterRspParamsType wdiSetRcvPktFilterRspInfo;
Jeff Johnson295189b2012-06-20 16:38:30 -070028794 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28795
28796 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028797 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028798
28799 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028800 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028801 -------------------------------------------------------------------------*/
28802 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28803 ( NULL == pEventData->pEventData ))
28804 {
28805 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028806 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028807 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028808 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028809 }
28810
28811 wdiReceiveFilterSetFilterCb = (WDI_ReceiveFilterSetFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028812 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028813
28814 /*-------------------------------------------------------------------------
28815 Extract response and send it to UMAC
28816 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028817 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28818 {
28819 wpalMemoryCopy( &halSetPktFilterRspParams,
28820 pEventData->pEventData,
28821 sizeof(halSetPktFilterRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070028822
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028823 wdiSetRcvPktFilterRspInfo.bssIdx = halSetPktFilterRspParams.bssIdx;
28824 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halSetPktFilterRspParams.status);
28825 }
28826 else
28827 {
28828 halStatus = *((eHalStatus*)pEventData->pEventData);
28829 wdiSetRcvPktFilterRspInfo.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28830 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028831 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028832 wdiReceiveFilterSetFilterCb(&wdiSetRcvPktFilterRspInfo, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028833
Jeff Johnsone7245742012-09-05 17:12:55 -070028834 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028835}
28836
28837/**
28838 @brief Process Packet Filter Match Count Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028839
28840 @param pWDICtx: pointer to the WLAN DAL context
28841 pEventData: pointer to the event information structure
28842
Jeff Johnson295189b2012-06-20 16:38:30 -070028843 @see
28844 @return Result of the function call
28845*/
28846WDI_Status
28847WDI_ProcessFilterMatchCountRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028848(
Jeff Johnson295189b2012-06-20 16:38:30 -070028849 WDI_ControlBlockType* pWDICtx,
28850 WDI_EventInfoType* pEventData
28851)
28852{
Jeff Johnson295189b2012-06-20 16:38:30 -070028853 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070028854 WDI_FilterMatchCountCb wdiFilterMatchCountCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028855 tHalRcvFltPktMatchRspParams halRcvFltrPktMatachRsp;
28856 WDI_RcvFltPktMatchCntRspParamsType wdiRcvFltPktMatchRspParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070028857
28858 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28859
28860 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028861 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028862
28863 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028864 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028865 -------------------------------------------------------------------------*/
28866 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28867 ( NULL == pEventData->pEventData ))
28868 {
28869 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028870 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028871 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028872 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028873 }
28874
Jeff Johnsone7245742012-09-05 17:12:55 -070028875 wdiFilterMatchCountCb = (WDI_FilterMatchCountCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028876
28877 /*-------------------------------------------------------------------------
28878 Extract response and send it to UMAC
28879 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028880 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28881 {
28882 wpalMemoryCopy( &halRcvFltrPktMatachRsp,
28883 pEventData->pEventData,
28884 sizeof(halRcvFltrPktMatachRsp));
28885
28886 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halRcvFltrPktMatachRsp.status);
28887 wdiRcvFltPktMatchRspParams.bssIdx = halRcvFltrPktMatachRsp.bssIdx;
28888 }
28889 else
28890 {
28891 halStatus = *((eHalStatus*)pEventData->pEventData);
28892 wdiRcvFltPktMatchRspParams.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28893 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028894
28895 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028896 wdiFilterMatchCountCb(&wdiRcvFltPktMatchRspParams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028897
Jeff Johnsone7245742012-09-05 17:12:55 -070028898 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028899}
28900
28901/**
28902 @brief Process Receive Filter Clear Filter Response function
Jeff Johnsone7245742012-09-05 17:12:55 -070028903
28904 @param pWDICtx: pointer to the WLAN DAL context
28905 pEventData: pointer to the event information structure
28906
Jeff Johnson295189b2012-06-20 16:38:30 -070028907 @see
28908 @return Result of the function call
28909*/
28910WDI_Status
28911WDI_ProcessReceiveFilterClearFilterRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028912(
Jeff Johnson295189b2012-06-20 16:38:30 -070028913 WDI_ControlBlockType* pWDICtx,
28914 WDI_EventInfoType* pEventData
28915)
28916{
Jeff Johnson295189b2012-06-20 16:38:30 -070028917 eHalStatus halStatus;
28918 WDI_ReceiveFilterClearFilterCb wdiReceiveFilterClearFilterCb;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028919 tHalRcvFltPktClearParam halRcvFltPktClearRspMsg;
28920 WDI_RcvFltPktClearRspParamsType wdiRcvFltPktClearRspParamsType;
Jeff Johnson295189b2012-06-20 16:38:30 -070028921 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
28922
28923 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028924 "%s",__func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028925
28926 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070028927 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070028928 -------------------------------------------------------------------------*/
28929 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
28930 ( NULL == pEventData->pEventData ))
28931 {
28932 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070028933 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070028934 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070028935 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070028936 }
28937
28938 wdiReceiveFilterClearFilterCb = (WDI_ReceiveFilterClearFilterCb)pWDICtx->
Jeff Johnsone7245742012-09-05 17:12:55 -070028939 pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070028940
28941 /*-------------------------------------------------------------------------
28942 Extract response and send it to UMAC
28943 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028944 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
28945 {
28946 wpalMemoryCopy( &halRcvFltPktClearRspMsg,
28947 pEventData->pEventData,
28948 sizeof(halRcvFltPktClearRspMsg));
28949
28950 wdiRcvFltPktClearRspParamsType.wdiStatus =
28951 WDI_HAL_2_WDI_STATUS(halRcvFltPktClearRspMsg.status);
28952 wdiRcvFltPktClearRspParamsType.bssIdx =
28953 halRcvFltPktClearRspMsg.bssIdx;
28954 }
28955 else
28956 {
28957 halStatus = *((eHalStatus*)pEventData->pEventData);
28958 wdiRcvFltPktClearRspParamsType.wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
28959 }
Jeff Johnson295189b2012-06-20 16:38:30 -070028960
28961 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070028962 wdiReceiveFilterClearFilterCb(&wdiRcvFltPktClearRspParamsType, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070028963
Jeff Johnsone7245742012-09-05 17:12:55 -070028964 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070028965}
28966#endif // WLAN_FEATURE_PACKET_FILTERING
28967
28968/**
28969 @brief Process Shutdown Rsp function
28970 There is no shutdown response comming from HAL
28971 - function just kept for simmetry
Jeff Johnsone7245742012-09-05 17:12:55 -070028972
Jeff Johnson295189b2012-06-20 16:38:30 -070028973 @param pWDICtx: pointer to the WLAN DAL context
Jeff Johnsone7245742012-09-05 17:12:55 -070028974 pEventData: pointer to the event information structure
Jeff Johnson295189b2012-06-20 16:38:30 -070028975
28976 @see
28977 @return Result of the function call
28978*/
28979WDI_Status
28980WDI_ProcessShutdownRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070028981(
Jeff Johnson295189b2012-06-20 16:38:30 -070028982 WDI_ControlBlockType* pWDICtx,
28983 WDI_EventInfoType* pEventData
28984)
28985{
28986 /*There is no shutdown response comming from HAL - function just kept for
28987 simmetry */
28988 WDI_ASSERT(0);
28989 return WDI_STATUS_SUCCESS;
28990}/*WDI_ProcessShutdownRsp*/
28991
28992/**
28993 @brief WDI_SetPowerParamsReq
28994
Jeff Johnsone7245742012-09-05 17:12:55 -070028995 @param pwdiPowerParamsReqParams: the Set Power Params as
Jeff Johnson295189b2012-06-20 16:38:30 -070028996 specified by the Device Interface
Jeff Johnsone7245742012-09-05 17:12:55 -070028997
Jeff Johnson295189b2012-06-20 16:38:30 -070028998 wdiPowerParamsCb: callback for passing back the response
28999 of the Set Power Params operation received from the
29000 device
Jeff Johnsone7245742012-09-05 17:12:55 -070029001
Jeff Johnson295189b2012-06-20 16:38:30 -070029002 pUserData: user data will be passed back with the
Jeff Johnsone7245742012-09-05 17:12:55 -070029003 callback
29004
Jeff Johnson295189b2012-06-20 16:38:30 -070029005 @return Result of the function call
29006*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029007WDI_Status
Jeff Johnson295189b2012-06-20 16:38:30 -070029008WDI_SetPowerParamsReq
29009(
29010 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams,
29011 WDI_SetPowerParamsCb wdiPowerParamsCb,
29012 void* pUserData
29013)
29014{
29015 WDI_EventInfoType wdiEventData;
29016 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29017
29018 /*------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029019 Sanity Check
Jeff Johnson295189b2012-06-20 16:38:30 -070029020 ------------------------------------------------------------------------*/
29021 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29022 {
29023 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29024 "WDI API call before module is initialized - Fail request");
29025
Jeff Johnsone7245742012-09-05 17:12:55 -070029026 return WDI_STATUS_E_NOT_ALLOWED;
Jeff Johnson295189b2012-06-20 16:38:30 -070029027 }
29028
29029 /*------------------------------------------------------------------------
29030 Fill in Event data and post to the Main FSM
29031 ------------------------------------------------------------------------*/
29032 wdiEventData.wdiRequest = WDI_SET_POWER_PARAMS_REQ;
Jeff Johnsone7245742012-09-05 17:12:55 -070029033 wdiEventData.pEventData = pwdiPowerParamsReqParams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029034 wdiEventData.uEventDataSize = sizeof(*pwdiPowerParamsReqParams);
Jeff Johnsone7245742012-09-05 17:12:55 -070029035 wdiEventData.pCBfnc = wdiPowerParamsCb;
Jeff Johnson295189b2012-06-20 16:38:30 -070029036 wdiEventData.pUserData = pUserData;
29037
29038 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29039}/*WDI_SetPowerParamsReq*/
29040
29041/**
29042 @brief Process Set Power Params Request function
Jeff Johnsone7245742012-09-05 17:12:55 -070029043
29044 @param pWDICtx: pointer to the WLAN DAL context
29045 pEventData: pointer to the event information structure
29046
Jeff Johnson295189b2012-06-20 16:38:30 -070029047 @see
29048 @return Result of the function call
29049*/
29050WDI_Status
29051WDI_ProcessSetPowerParamsReq
Jeff Johnsone7245742012-09-05 17:12:55 -070029052(
Jeff Johnson295189b2012-06-20 16:38:30 -070029053 WDI_ControlBlockType* pWDICtx,
29054 WDI_EventInfoType* pEventData
29055)
29056{
29057 WDI_SetPowerParamsReqParamsType* pwdiPowerParamsReqParams = NULL;
29058 WDI_SetPowerParamsCb wdiPowerParamsCb = NULL;
Jeff Johnsone7245742012-09-05 17:12:55 -070029059 wpt_uint8* pSendBuffer = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029060 wpt_uint16 usDataOffset = 0;
29061 wpt_uint16 usSendSize = 0;
29062 tSetPowerParamsType powerParams;
29063
29064 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029065 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029066 -------------------------------------------------------------------------*/
29067 if (( NULL == pEventData ) ||
29068 ( NULL == (pwdiPowerParamsReqParams = (WDI_SetPowerParamsReqParamsType*)pEventData->pEventData)) ||
29069 ( NULL == (wdiPowerParamsCb = (WDI_SetPowerParamsCb)pEventData->pCBfnc)))
29070 {
29071 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029072 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029073 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029074 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029075 }
29076
29077 /*-----------------------------------------------------------------------
29078 Get message buffer
29079 -----------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029080 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_POWER_PARAMS_REQ,
Jeff Johnson295189b2012-06-20 16:38:30 -070029081 sizeof(powerParams),
29082 &pSendBuffer, &usDataOffset, &usSendSize))||
29083 ( usSendSize < (usDataOffset + sizeof(powerParams) )))
29084 {
29085 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029086 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029087 pEventData, pwdiPowerParamsReqParams, wdiPowerParamsCb);
29088 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029089 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029090 }
29091
29092 /* Ignore DTIM */
Jeff Johnsone7245742012-09-05 17:12:55 -070029093 powerParams.uIgnoreDTIM =
Jeff Johnson295189b2012-06-20 16:38:30 -070029094 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uIgnoreDTIM;
29095
29096 /*DTIM Period*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029097 powerParams.uDTIMPeriod =
Jeff Johnson295189b2012-06-20 16:38:30 -070029098 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uDTIMPeriod;
29099
29100 /* Listen Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070029101 powerParams.uListenInterval=
Jeff Johnson295189b2012-06-20 16:38:30 -070029102 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uListenInterval;
29103
29104 /* Broadcast Multicas Filter */
Jeff Johnsone7245742012-09-05 17:12:55 -070029105 powerParams.uBcastMcastFilter =
Jeff Johnson295189b2012-06-20 16:38:30 -070029106 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBcastMcastFilter;
29107
29108 /* Beacon Early Termination */
Jeff Johnsone7245742012-09-05 17:12:55 -070029109 powerParams.uEnableBET =
Jeff Johnson295189b2012-06-20 16:38:30 -070029110 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uEnableBET;
29111
29112 /* Beacon Early Termination Interval */
Jeff Johnsone7245742012-09-05 17:12:55 -070029113 powerParams.uBETInterval =
29114 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uBETInterval;
Jeff Johnson295189b2012-06-20 16:38:30 -070029115
Yue Mac24062f2013-05-13 17:01:29 -070029116 /* MAX LI for modulated DTIM */
29117 powerParams.uMaxLIModulatedDTIM =
29118 pwdiPowerParamsReqParams->wdiSetPowerParamsInfo.uMaxLIModulatedDTIM;
Jeff Johnsone7245742012-09-05 17:12:55 -070029119
29120 wpalMemoryCopy( pSendBuffer+usDataOffset,
29121 &powerParams,
29122 sizeof(powerParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029123
29124 pWDICtx->wdiReqStatusCB = pwdiPowerParamsReqParams->wdiReqStatusCB;
Jeff Johnsone7245742012-09-05 17:12:55 -070029125 pWDICtx->pReqStatusUserData = pwdiPowerParamsReqParams->pUserData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029126
29127 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029128 Send Get STA Request to HAL
Jeff Johnson295189b2012-06-20 16:38:30 -070029129 -------------------------------------------------------------------------*/
Jeff Johnsone7245742012-09-05 17:12:55 -070029130 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29131 wdiPowerParamsCb, pEventData->pUserData, WDI_SET_POWER_PARAMS_RESP);
Jeff Johnson295189b2012-06-20 16:38:30 -070029132}
29133
29134/**
29135 @brief Process Power Params Rsp function (called when a
29136 response is being received over the bus from HAL)
Jeff Johnsone7245742012-09-05 17:12:55 -070029137
29138 @param pWDICtx: pointer to the WLAN DAL context
29139 pEventData: pointer to the event information structure
29140
Jeff Johnson295189b2012-06-20 16:38:30 -070029141 @see
29142 @return Result of the function call
29143*/
29144WDI_Status
29145WDI_ProcessSetPowerParamsRsp
Jeff Johnsone7245742012-09-05 17:12:55 -070029146(
Jeff Johnson295189b2012-06-20 16:38:30 -070029147 WDI_ControlBlockType* pWDICtx,
29148 WDI_EventInfoType* pEventData
29149)
29150{
29151 WDI_Status wdiStatus;
29152 eHalStatus halStatus;
29153 WDI_SetPowerParamsCb wdiPowerParamsCb;
29154 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29155
29156 /*-------------------------------------------------------------------------
Jeff Johnsone7245742012-09-05 17:12:55 -070029157 Sanity check
Jeff Johnson295189b2012-06-20 16:38:30 -070029158 -------------------------------------------------------------------------*/
29159 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29160 ( NULL == pEventData->pEventData ))
29161 {
29162 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029163 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029164 WDI_ASSERT(0);
Jeff Johnsone7245742012-09-05 17:12:55 -070029165 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029166 }
29167
Jeff Johnsone7245742012-09-05 17:12:55 -070029168 wdiPowerParamsCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
Jeff Johnson295189b2012-06-20 16:38:30 -070029169
29170 /*-------------------------------------------------------------------------
29171 Extract response and send it to UMAC
29172 -------------------------------------------------------------------------*/
29173 halStatus = *((eHalStatus*)pEventData->pEventData);
Jeff Johnsone7245742012-09-05 17:12:55 -070029174 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
Jeff Johnson295189b2012-06-20 16:38:30 -070029175
29176 /*Notify UMAC*/
29177 wdiPowerParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29178
Jeff Johnsone7245742012-09-05 17:12:55 -070029179 return WDI_STATUS_SUCCESS;
Jeff Johnson295189b2012-06-20 16:38:30 -070029180}/*WDI_ProcessSetPowerParamsRsp*/
29181
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029182/**
29183 @brief WDI_dhcpStartInd
29184 Host will send an event to the FW when DHCP is initiated
29185
29186 @param
29187 WDI_DHCPInd: DHCP Indication
29188 @see
29189 @return Result of the function call
29190*/
29191WDI_Status
29192WDI_dhcpStartInd
29193(
29194 WDI_DHCPInd *wdiDHCPInd
29195)
29196{
29197 WDI_EventInfoType wdiEventData;
29198
29199 /*------------------------------------------------------------------------
29200 Sanity Check
29201 ------------------------------------------------------------------------*/
29202 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29203 {
29204 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29205 "WDI API call before module is initialized - Fail request");
29206
29207 return WDI_STATUS_E_NOT_ALLOWED;
29208 }
29209
29210 wdiEventData.wdiRequest = WDI_DHCP_START_IND;
29211 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053029212 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029213 wdiEventData.pCBfnc = NULL;
29214 wdiEventData.pUserData = NULL;
29215
29216 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29217}
29218
29219
29220/**
29221 @brief WDI_dhcpStopInd
29222 Host will send an event to the FW when DHCP is completed
29223
29224 @param
29225 WDI_DHCPInd: DHCP Indication
29226 @see
29227 @return Result of the function call
29228*/
29229WDI_Status
29230WDI_dhcpStopInd
29231(
29232 WDI_DHCPInd *wdiDHCPInd
29233)
29234{
29235 WDI_EventInfoType wdiEventData;
29236
29237 /*------------------------------------------------------------------------
29238 Sanity Check
29239 ------------------------------------------------------------------------*/
29240 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29241 {
29242 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29243 "WDI API call before module is initialized - Fail request");
29244
29245 return WDI_STATUS_E_NOT_ALLOWED;
29246 }
29247
29248 wdiEventData.wdiRequest = WDI_DHCP_STOP_IND;
29249 wdiEventData.pEventData = wdiDHCPInd;
c_hpothu0b0cab72014-02-13 21:52:40 +053029250 wdiEventData.uEventDataSize = sizeof(WDI_DHCPInd);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029251 wdiEventData.pCBfnc = NULL;
29252 wdiEventData.pUserData = NULL;
29253
29254 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29255}
29256
Abhishek Singh7cd040e2016-01-07 10:51:04 +053029257#ifdef WLAN_FEATURE_RMC
29258/**
29259 @brief WDI_TXFailMonitorInd
29260 Host will send an event to the FW to start TX Fail Monitor
29261
29262 @param
29263 WDI_TXFailMonitorInd
29264 @see
29265 @return Result of the function call
29266*/
29267WDI_Status
29268WDI_TXFailMonitorStartStopInd
29269(
29270 WDI_TXFailMonitorInd *wdiTXFailMonitorInd
29271)
29272{
29273 WDI_EventInfoType wdiEventData;
29274
29275 /*------------------------------------------------------------------------
29276 Sanity Check
29277 ------------------------------------------------------------------------*/
29278 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29279 {
29280 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29281 "WDI API call before module is initialized - Fail request");
29282
29283 return WDI_STATUS_E_NOT_ALLOWED;
29284 }
29285
29286 wdiEventData.wdiRequest = WDI_TX_FAIL_MONITOR_IND;
29287 wdiEventData.pEventData = wdiTXFailMonitorInd;
29288 wdiEventData.uEventDataSize = sizeof(wdiTXFailMonitorInd);
29289 wdiEventData.pCBfnc = NULL;
29290 wdiEventData.pUserData = NULL;
29291
29292 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29293}
29294#endif /* WLAN_FEATURE_RMC */
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029295
29296/**
29297 @brief Process DHCP Start Indication message and post it to HAL
29298
29299 @param pWDICtx: pointer to the WLAN DAL context
29300 pEventData: pointer to the event information structure
29301
29302 @see
29303 @return Result of the function call
29304*/
29305WDI_Status
29306WDI_ProcessDHCPStartInd
29307(
29308 WDI_ControlBlockType* pWDICtx,
29309 WDI_EventInfoType* pEventData
29310)
29311{
29312 wpt_uint8* pSendBuffer = NULL;
29313 wpt_uint16 usDataOffset = 0;
29314 wpt_uint16 usSendSize = 0;
29315 wpt_uint16 usLen = 0;
29316 WDI_DHCPInd* pwdiDHCPInd = NULL;
29317 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053029318 WDI_Status wdiStatus;
29319
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029320
29321 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29322
29323 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29324 "%s", __func__);
29325
29326 /*-------------------------------------------------------------------------
29327 Sanity check
29328 -------------------------------------------------------------------------*/
29329 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29330 {
29331 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29332 "%s: Invalid parameters", __func__);
29333 WDI_ASSERT(0);
29334 return WDI_STATUS_E_FAILURE;
29335 }
29336 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
29337 /*-----------------------------------------------------------------------
29338 Get message buffer
29339 -----------------------------------------------------------------------*/
29340
29341 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29342 WDI_DHCP_START_IND,
29343 sizeof(tDHCPInfo),
29344 &pSendBuffer, &usDataOffset, &usSendSize))||
29345 ( usSendSize < (usDataOffset + usLen )))
29346 {
29347 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29348 "Unable to get send buffer in DHCP Start req %p ",
29349 pEventData);
29350 WDI_ASSERT(0);
29351 return WDI_STATUS_E_FAILURE;
29352 }
29353
Sandeep Puligillaee789512014-02-13 19:14:52 +053029354 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029355 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
29356 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
29357 WDI_MAC_ADDR_LEN);
29358
29359 pWDICtx->pReqStatusUserData = NULL;
29360 pWDICtx->pfncRspCB = NULL;
29361
29362 /*-------------------------------------------------------------------------
29363 Send DHCP Start Indication to HAL
29364 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053029365 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29366 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029367}/*WDI_ProcessDHCPStartInd*/
29368
29369/**
29370 @brief Process DHCP Stop indication message and post it to HAL
29371
29372 @param pWDICtx: pointer to the WLAN DAL context
29373 pEventData: pointer to the event information structure
29374
29375 @see
29376 @return Result of the function call
29377*/
29378WDI_Status
29379WDI_ProcessDHCPStopInd
29380(
29381 WDI_ControlBlockType* pWDICtx,
29382 WDI_EventInfoType* pEventData
29383)
29384{
29385 wpt_uint8* pSendBuffer = NULL;
29386 wpt_uint16 usDataOffset = 0;
29387 wpt_uint16 usSendSize = 0;
29388 wpt_uint16 usLen = 0;
29389 WDI_DHCPInd* pwdiDHCPInd = NULL;
29390 tDHCPInfo* pDHCPInfo;
Sandeep Puligillaee789512014-02-13 19:14:52 +053029391 WDI_Status wdiStatus;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029392
29393 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29394
29395 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29396 "%s", __func__);
29397
29398 /*-------------------------------------------------------------------------
29399 Sanity check
29400 -------------------------------------------------------------------------*/
29401
29402 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29403 {
29404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29405 "%s: Invalid parameters", __func__);
29406 WDI_ASSERT(0);
29407 return WDI_STATUS_E_FAILURE;
29408 }
29409 pwdiDHCPInd = (WDI_DHCPInd*)pEventData->pEventData;
29410 /*-----------------------------------------------------------------------
29411 Get message buffer
29412 -----------------------------------------------------------------------*/
29413
29414 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29415 WDI_DHCP_STOP_IND,
29416 sizeof(tDHCPInfo),
29417 &pSendBuffer, &usDataOffset, &usSendSize))||
29418 ( usSendSize < (usDataOffset + usLen )))
29419 {
29420 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29421 "Unable to get send buffer in DHCP Start req %p ",
29422 pEventData);
29423 WDI_ASSERT(0);
29424 return WDI_STATUS_E_FAILURE;
29425 }
29426
Sandeep Puligillaee789512014-02-13 19:14:52 +053029427 pDHCPInfo = (tDHCPInfo*)(pSendBuffer+usDataOffset);
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029428 pDHCPInfo->device_mode = pwdiDHCPInd->device_mode;
29429 wpalMemoryCopy(pDHCPInfo->macAddr, pwdiDHCPInd->macAddr,
29430 WDI_MAC_ADDR_LEN);
29431
29432 pWDICtx->pReqStatusUserData = NULL;
29433 pWDICtx->pfncRspCB = NULL;
29434 /*-------------------------------------------------------------------------
29435 Send DHCP Stop indication to HAL
29436 -------------------------------------------------------------------------*/
Sandeep Puligillaee789512014-02-13 19:14:52 +053029437 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29438 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029439
29440}/*WDI_ProcessDHCPStopInd*/
29441
Abhishek Singh7cd040e2016-01-07 10:51:04 +053029442#ifdef WLAN_FEATURE_RMC
29443/**
29444 @brief Process TX Fail monitor indication
29445
29446 @param pWDICtx: pointer to the WLAN DAL context
29447 pEventData: pointer to the event information structure
29448
29449 @see
29450 @return Result of the function call
29451*/
29452WDI_Status
29453WDI_ProcessTXFailMonitor
29454(
29455 WDI_ControlBlockType* pWDICtx,
29456 WDI_EventInfoType* pEventData
29457)
29458{
29459 wpt_uint8* pSendBuffer = NULL;
29460 wpt_uint16 usDataOffset = 0;
29461 wpt_uint16 usSendSize = 0;
29462 wpt_uint16 usLen = 0;
29463 WDI_TXFailMonitorInd* pwdiTxFailMonitorInd = NULL;
29464 tTXFailMonitorInfo* pTXFailMonitorInfo;
29465 WDI_Status wdiStatus;
29466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29467
29468 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
29469 "%s", __func__);
29470
29471 /*-------------------------------------------------------------------------
29472 Sanity check
29473 -------------------------------------------------------------------------*/
29474
29475 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
29476 {
29477 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29478 "%s: Invalid parameters", __func__);
29479 WDI_ASSERT(0);
29480 return WDI_STATUS_E_FAILURE;
29481 }
29482 pwdiTxFailMonitorInd = (WDI_TXFailMonitorInd*)pEventData->pEventData;
29483 /*-----------------------------------------------------------------------
29484 Get message buffer
29485 -----------------------------------------------------------------------*/
29486
29487 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
29488 WDI_TX_FAIL_MONITOR_IND,
29489 sizeof(tDHCPInfo),
29490 &pSendBuffer, &usDataOffset, &usSendSize))||
29491 ( usSendSize < (usDataOffset + usLen )))
29492 {
29493 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
29494 "Unable to get send buffer in DHCP Start req %p ",
29495 pEventData);
29496 WDI_ASSERT(0);
29497 return WDI_STATUS_E_FAILURE;
29498 }
29499
29500 pTXFailMonitorInfo = (tTXFailMonitorInfo*)pSendBuffer+usDataOffset;
29501 pTXFailMonitorInfo->tx_fail_count = pwdiTxFailMonitorInd->tx_fail_count;
29502
29503 pWDICtx->pReqStatusUserData = pwdiTxFailMonitorInd->pUserData;
29504 pWDICtx->wdiReqStatusCB = pwdiTxFailMonitorInd->wdiReqStatusCB;
29505 /*-------------------------------------------------------------------------
29506 Send TX Fail Monitor start/stop indication to HAL
29507 -------------------------------------------------------------------------*/
29508 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
29509
29510 return (wdiStatus != WDI_STATUS_SUCCESS)?wdiStatus:WDI_STATUS_SUCCESS_SYNC;
29511}/*WDI_ProcessTXFailMonitor*/
29512#endif /* WLAN_FEATURE_RMC */
Sundaresan Ramachandran76e48e82013-07-15 13:07:17 +053029513
Jeff Johnson295189b2012-06-20 16:38:30 -070029514#ifdef WLAN_FEATURE_GTK_OFFLOAD
29515/**
29516 @brief WDI_GTKOffloadReq will be called when the upper MAC
29517 wants to set GTK Rekey Counter while in power save. Upon
29518 the call of this API the WLAN DAL will pack and send a
29519 HAL GTK offload request message to the lower RIVA
29520 sub-system if DAL is in state STARTED.
29521
29522 In state BUSY this request will be queued. Request won't
29523 be allowed in any other state.
29524
29525 WDI_PostAssocReq must have been called.
29526
29527 @param pwdiGtkOffloadParams: the GTK offload as specified
29528 by the Device Interface
29529
29530 wdiGtkOffloadCb: callback for passing back the response
29531 of the GTK offload operation received from the device
29532
29533 pUserData: user data will be passed back with the
29534 callback
29535
29536 @see WDI_PostAssocReq
29537 @return Result of the function call
29538*/
29539WDI_Status
29540WDI_GTKOffloadReq
29541(
29542 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg,
29543 WDI_GtkOffloadCb wdiGtkOffloadCb,
29544 void* pUserData
29545)
29546{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029547 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029548 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29549
29550 /*------------------------------------------------------------------------
29551 Sanity Check
29552 ------------------------------------------------------------------------*/
29553 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29554 {
29555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29556 "WDI API call before module is initialized - Fail request");
29557
29558 return WDI_STATUS_E_NOT_ALLOWED;
29559 }
29560
29561 /*------------------------------------------------------------------------
29562 Fill in Event data and post to the Main FSM
29563 ------------------------------------------------------------------------*/
29564 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_REQ;
29565 wdiEventData.pEventData = pwdiGtkOffloadReqMsg;
Madan Mohan Koyyalamudi4e31b132012-11-02 13:13:52 -070029566 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadReqMsg);
Jeff Johnson295189b2012-06-20 16:38:30 -070029567 wdiEventData.pCBfnc = wdiGtkOffloadCb;
29568 wdiEventData.pUserData = pUserData;
29569
29570 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29571}
29572
29573
29574/**
29575 @brief WDI_GTKOffloadGetInfoReq will be called when the upper
29576 MAC wants to get GTK Rekey Counter while in power save.
29577 Upon the call of this API the WLAN DAL will pack and
29578 send a HAL GTK offload request message to the lower RIVA
29579 sub-system if DAL is in state STARTED.
29580
29581 In state BUSY this request will be queued. Request won't
29582 be allowed in any other state.
29583
29584 WDI_PostAssocReq must have been called.
29585
29586 @param pwdiGtkOffloadGetInfoReqMsg: the GTK Offload
29587 Information Message as specified by the
29588 Device Interface
29589
29590 wdiGtkOffloadGetInfoCb: callback for passing back the
29591 response of the GTK offload operation received from the
29592 device
29593
29594 pUserData: user data will be passed back with the
29595 callback
29596
29597 @see WDI_PostAssocReq
29598 @return Result of the function call
29599*/
29600WDI_Status
29601WDI_GTKOffloadGetInfoReq
29602(
29603 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg,
29604 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb,
29605 void* pUserData
29606)
29607{
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029608 WDI_EventInfoType wdiEventData;
Jeff Johnson295189b2012-06-20 16:38:30 -070029609 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29610
29611 /*------------------------------------------------------------------------
29612 Sanity Check
29613 ------------------------------------------------------------------------*/
29614 if ( eWLAN_PAL_FALSE == gWDIInitialized )
29615 {
29616 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29617 "WDI API call before module is initialized - Fail request");
29618
29619 return WDI_STATUS_E_NOT_ALLOWED;
29620 }
29621
29622 /*------------------------------------------------------------------------
29623 Fill in Event data and post to the Main FSM
29624 ------------------------------------------------------------------------*/
29625 wdiEventData.wdiRequest = WDI_GTK_OFFLOAD_GETINFO_REQ;
29626 wdiEventData.pEventData = pwdiGtkOffloadGetInfoReqMsg;
29627 wdiEventData.uEventDataSize = sizeof(*pwdiGtkOffloadGetInfoReqMsg);
29628 wdiEventData.pCBfnc = wdiGtkOffloadGetInfoCb;
29629 wdiEventData.pUserData = pUserData;
29630
29631 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
29632}
29633
29634
29635/**
29636 @brief Process set GTK Offload Request function
29637
29638 @param pWDICtx: pointer to the WLAN DAL context
29639 pEventData: pointer to the event information structure
29640
29641 @see
29642 @return Result of the function call
29643*/
29644WDI_Status
29645WDI_ProcessGTKOffloadReq
29646(
29647 WDI_ControlBlockType* pWDICtx,
29648 WDI_EventInfoType* pEventData
29649)
29650{
29651 WDI_GtkOffloadReqMsg* pwdiGtkOffloadReqMsg = NULL;
29652 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
29653 wpt_uint8* pSendBuffer = NULL;
29654 wpt_uint16 usDataOffset = 0;
29655 wpt_uint16 usSendSize = 0;
29656 tHalGtkOffloadReqParams gtkOffloadReqParams = {0};
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029657 wpt_uint8 ucCurrentSessionId = 0;
29658 WDI_BSSSessionType* pBSSSes = NULL;
29659
Jeff Johnson295189b2012-06-20 16:38:30 -070029660 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
29661
29662 /*-------------------------------------------------------------------------
29663 Sanity check
29664 -------------------------------------------------------------------------*/
29665 if (( NULL == pEventData ) ||
29666 ( NULL == (pwdiGtkOffloadReqMsg = (WDI_GtkOffloadReqMsg*)pEventData->pEventData)) ||
29667 ( NULL == (wdiGtkOffloadCb = (WDI_GtkOffloadCb)pEventData->pCBfnc)))
29668 {
29669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029670 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029671 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029672 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029673 }
29674
29675 /*-----------------------------------------------------------------------
29676 Get message buffer
29677 -----------------------------------------------------------------------*/
29678 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_REQ,
29679 sizeof(gtkOffloadReqParams),
29680 &pSendBuffer, &usDataOffset, &usSendSize))||
29681 ( usSendSize < (usDataOffset + sizeof(gtkOffloadReqParams) )))
29682 {
29683 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029684 "Unable to get send buffer in GTK offload req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029685 pEventData, pwdiGtkOffloadReqMsg, wdiGtkOffloadCb);
29686 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029687 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029688 }
29689
29690 //
29691 // Fill gtkOffloadReqParams from pwdiGtkOffloadReqMsg->gtkOffloadReqParams
29692 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029693 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29694 pwdiGtkOffloadReqMsg->gtkOffloadReqParams.bssId,
29695 &pBSSSes);
29696 if ( NULL == pBSSSes )
29697 {
29698 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029699 " %s : Association for this BSSID does not exist", __func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029700 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029701 }
29702
29703 gtkOffloadReqParams.bssIdx = pBSSSes->ucBSSIdx;
29704
Jeff Johnson295189b2012-06-20 16:38:30 -070029705 gtkOffloadReqParams.ulFlags = pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ulFlags;
29706 // Copy KCK
29707 wpalMemoryCopy(&(gtkOffloadReqParams.aKCK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKCK[0]), 16);
29708 // Copy KEK
29709 wpalMemoryCopy(&(gtkOffloadReqParams.aKEK[0]), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.aKEK[0]), 16);
29710 // Copy KeyReplayCounter
29711 wpalMemoryCopy(&(gtkOffloadReqParams.ullKeyReplayCounter), &(pwdiGtkOffloadReqMsg->gtkOffloadReqParams.ullKeyReplayCounter), sizeof(v_U64_t));
29712
29713 wpalMemoryCopy( pSendBuffer+usDataOffset,
29714 &gtkOffloadReqParams,
29715 sizeof(gtkOffloadReqParams));
29716
29717 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadReqMsg->wdiReqStatusCB;
29718 pWDICtx->pReqStatusUserData = pwdiGtkOffloadReqMsg->pUserData;
29719
29720 /*-------------------------------------------------------------------------
29721 Send Get STA Request to HAL
29722 -------------------------------------------------------------------------*/
29723 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29724 wdiGtkOffloadCb, pEventData->pUserData, WDI_GTK_OFFLOAD_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029725
29726fail:
29727 // Release the message buffer so we don't leak
29728 wpalMemoryFree(pSendBuffer);
29729
29730failRequest:
29731 //WDA should have failure check to avoid the memory leak
29732 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029733}
29734
29735
29736/**
29737 @brief Process GTK Offload Get Information Request function
29738
29739 @param pWDICtx: pointer to the WLAN DAL context
29740 pEventData: pointer to the event information structure
29741
29742 @see
29743 @return Result of the function call
29744*/
29745WDI_Status
29746WDI_ProcessGTKOffloadGetInfoReq
29747(
29748 WDI_ControlBlockType* pWDICtx,
29749 WDI_EventInfoType* pEventData
29750)
29751{
29752 WDI_GtkOffloadGetInfoReqMsg* pwdiGtkOffloadGetInfoReqMsg = NULL;
29753 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
29754 wpt_uint8* pSendBuffer = NULL;
29755 wpt_uint16 usDataOffset = 0;
29756 wpt_uint16 usSendSize = 0;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029757 tHalGtkOffloadGetInfoReqParams halGtkOffloadGetInfoReqParams;
29758 wpt_uint8 ucCurrentSessionId = 0;
29759 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029760
29761 /*-------------------------------------------------------------------------
29762 Sanity check
29763 -------------------------------------------------------------------------*/
29764 if (( NULL == pEventData ) ||
29765 ( NULL == (pwdiGtkOffloadGetInfoReqMsg = (WDI_GtkOffloadGetInfoReqMsg*)pEventData->pEventData)) ||
29766 ( NULL == (wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pEventData->pCBfnc)))
29767 {
29768 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029769 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029770 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029771 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029772 }
29773
29774 /*-----------------------------------------------------------------------
29775 Get message buffer
29776 -----------------------------------------------------------------------*/
29777 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_GTK_OFFLOAD_GETINFO_REQ,
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029778 sizeof(halGtkOffloadGetInfoReqParams),
Jeff Johnson295189b2012-06-20 16:38:30 -070029779 &pSendBuffer, &usDataOffset, &usSendSize))||
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029780 ( usSendSize < ( usDataOffset + sizeof(halGtkOffloadGetInfoReqParams))))
Jeff Johnson295189b2012-06-20 16:38:30 -070029781 {
29782 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080029783 "Unable to get send buffer in WDI_ProcessGTKOffloadGetInfoReq() %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070029784 pEventData, pwdiGtkOffloadGetInfoReqMsg, wdiGtkOffloadGetInfoCb);
29785 WDI_ASSERT(0);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029786 goto failRequest;
Jeff Johnson295189b2012-06-20 16:38:30 -070029787 }
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029788 ucCurrentSessionId = WDI_FindAssocSession( pWDICtx,
29789 pwdiGtkOffloadGetInfoReqMsg->WDI_GtkOffloadGetInfoReqParams.bssId,
29790 &pBSSSes);
29791 if ( NULL == pBSSSes )
29792 {
29793 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029794 " %s : Association for this BSSID does not exist",__func__);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029795 goto fail;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029796 }
29797 halGtkOffloadGetInfoReqParams.bssIdx = pBSSSes->ucBSSIdx;
Jeff Johnson295189b2012-06-20 16:38:30 -070029798
29799 //
29800 // Don't need to fill send buffer other than header
29801 //
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029802 wpalMemoryCopy( pSendBuffer+usDataOffset,
29803 &halGtkOffloadGetInfoReqParams,
29804 sizeof(halGtkOffloadGetInfoReqParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029805
29806 pWDICtx->wdiReqStatusCB = pwdiGtkOffloadGetInfoReqMsg->wdiReqStatusCB;
29807 pWDICtx->pReqStatusUserData = pwdiGtkOffloadGetInfoReqMsg->pUserData;
29808
29809 /*-------------------------------------------------------------------------
29810 Send Get STA Request to HAL
29811 -------------------------------------------------------------------------*/
29812 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
29813 wdiGtkOffloadGetInfoCb, pEventData->pUserData, WDI_GTK_OFFLOAD_GETINFO_RESP);
Venkata Prathyusha Kuntupalli82a5af12013-02-12 11:23:46 -080029814fail:
29815 // Release the message buffer so we don't leak
29816 wpalMemoryFree(pSendBuffer);
29817
29818failRequest:
29819 //WDA should have failure check to avoid the memory leak
29820 return WDI_STATUS_E_FAILURE;
Jeff Johnson295189b2012-06-20 16:38:30 -070029821}
29822
29823/**
29824 @brief Process host offload Rsp function (called when a
29825 response is being received over the bus from HAL)
29826
29827 @param pWDICtx: pointer to the WLAN DAL context
29828 pEventData: pointer to the event information structure
29829
29830 @see
29831 @return Result of the function call
29832*/
29833WDI_Status
29834WDI_ProcessGtkOffloadRsp
29835(
29836 WDI_ControlBlockType* pWDICtx,
29837 WDI_EventInfoType* pEventData
29838)
29839{
Jeff Johnson295189b2012-06-20 16:38:30 -070029840 eHalStatus halStatus;
29841 WDI_GtkOffloadCb wdiGtkOffloadCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029842 tHalGtkOffloadRspParams halGtkOffloadRspParams;
29843 WDI_GtkOffloadRspParams wdiGtkOffloadRsparams;
Jeff Johnson295189b2012-06-20 16:38:30 -070029844
29845 /*-------------------------------------------------------------------------
29846 Sanity check
29847 -------------------------------------------------------------------------*/
29848 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29849 ( NULL == pEventData->pEventData))
29850 {
29851 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029852 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029853 WDI_ASSERT(0);
29854 return WDI_STATUS_E_FAILURE;
29855 }
29856
Wilson Yang00256342013-10-10 23:13:38 -070029857 wdiGtkOffloadCb = (WDI_GtkOffloadCb)pWDICtx->pfncRspCB;
29858
Jeff Johnson295189b2012-06-20 16:38:30 -070029859 /*-------------------------------------------------------------------------
29860 Extract response and send it to UMAC
29861 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029862 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29863 {
29864 wpalMemoryCopy( &halGtkOffloadRspParams,
29865 pEventData->pEventData,
29866 sizeof(halGtkOffloadRspParams));
29867
29868 wdiGtkOffloadRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029869 WDI_HAL_2_WDI_STATUS(halGtkOffloadRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029870 wdiGtkOffloadRsparams.bssIdx =
29871 halGtkOffloadRspParams.bssIdx;
29872 }
29873 else
29874 {
29875 halStatus = *((eHalStatus*)pEventData->pEventData);
29876 wdiGtkOffloadRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29877 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029878
29879 /*Notify UMAC*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029880 wdiGtkOffloadCb( &wdiGtkOffloadRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029881
29882 return WDI_STATUS_SUCCESS;
29883}
29884
29885/**
29886 @brief Process GTK Offload Get Information Response function
29887
29888 @param pWDICtx: pointer to the WLAN DAL context
29889 pEventData: pointer to the event information structure
29890
29891 @see
29892 @return Result of the function call
29893*/
29894WDI_Status
29895WDI_ProcessGTKOffloadGetInfoRsp
29896(
29897 WDI_ControlBlockType* pWDICtx,
29898 WDI_EventInfoType* pEventData
29899)
29900{
Jeff Johnson295189b2012-06-20 16:38:30 -070029901 eHalStatus halStatus;
Jeff Johnson295189b2012-06-20 16:38:30 -070029902 WDI_GtkOffloadGetInfoCb wdiGtkOffloadGetInfoCb = NULL;
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029903 tHalGtkOffloadGetInfoRspParams halGtkOffloadGetInfoRspParams;
29904 WDI_GtkOffloadGetInfoRspParams wdiGtkOffloadGetInfoRsparams;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029905 WDI_BSSSessionType* pBSSSes = NULL;
Jeff Johnson295189b2012-06-20 16:38:30 -070029906
Jeff Johnson295189b2012-06-20 16:38:30 -070029907
29908 /*-------------------------------------------------------------------------
29909 Sanity check
29910 -------------------------------------------------------------------------*/
29911 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29912 ( NULL == pEventData->pEventData ))
29913 {
29914 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029915 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029916 WDI_ASSERT(0);
29917 return WDI_STATUS_E_FAILURE;
29918 }
29919
Wilson Yang00256342013-10-10 23:13:38 -070029920 wdiGtkOffloadGetInfoCb = (WDI_GtkOffloadGetInfoCb)pWDICtx->pfncRspCB;
29921
29922 /*-------------------------------------------------------------------------
Jeff Johnson295189b2012-06-20 16:38:30 -070029923 Extract response and send it to UMAC
29924 -------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029925 if(WDI_getFwWlanFeatCaps(SLM_SESSIONIZATION))
29926 {
29927 wpalMemoryCopy( &halGtkOffloadGetInfoRspParams,
29928 pEventData->pEventData,
29929 sizeof(halGtkOffloadGetInfoRspParams));
Jeff Johnson295189b2012-06-20 16:38:30 -070029930
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029931 wdiGtkOffloadGetInfoRsparams.ulStatus =
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029932 WDI_HAL_2_WDI_STATUS(halGtkOffloadGetInfoRspParams.ulStatus);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029933 wdiGtkOffloadGetInfoRsparams.ullKeyReplayCounter =
29934 halGtkOffloadGetInfoRspParams.ullKeyReplayCounter;
29935 wdiGtkOffloadGetInfoRsparams.ulTotalRekeyCount =
29936 halGtkOffloadGetInfoRspParams.ulTotalRekeyCount;
29937 wdiGtkOffloadGetInfoRsparams.ulGTKRekeyCount =
29938 halGtkOffloadGetInfoRspParams.ulGTKRekeyCount;
29939 wdiGtkOffloadGetInfoRsparams.ulIGTKRekeyCount =
29940 halGtkOffloadGetInfoRspParams.ulIGTKRekeyCount;
Gopichand Nakkala870cbae2013-03-15 21:16:09 +053029941
29942 wpalMutexAcquire(&pWDICtx->wptMutex);
29943 WDI_FindAssocSessionByBSSIdx(pWDICtx, halGtkOffloadGetInfoRspParams.bssIdx,
29944 &pBSSSes);
29945
29946 if ( NULL == pBSSSes )
29947 {
29948 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
29949 "Association sequence for this BSS does not exist or "
29950 "association no longer in progress - mysterious HAL response");
29951 wpalMutexRelease(&pWDICtx->wptMutex);
29952 return WDI_STATUS_E_NOT_ALLOWED;
29953 }
29954
29955 wpalMemoryCopy(wdiGtkOffloadGetInfoRsparams.bssId, pBSSSes->macBSSID,
29956 sizeof (wpt_macAddr));
29957 wpalMutexRelease(&pWDICtx->wptMutex);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029958 }
29959 else
29960 {
29961 halStatus = *((eHalStatus*)pEventData->pEventData);
29962 wdiGtkOffloadGetInfoRsparams.ulStatus = WDI_HAL_2_WDI_STATUS(halStatus);
29963 }
Jeff Johnson295189b2012-06-20 16:38:30 -070029964 /*Notify UMAC*/
29965 //wdiUpdateScanParamsCb(wdiStatus, pWDICtx->pRspCBUserData);
29966 //wdiReceiveFilterClearFilterCb(wdiStatus, pWDICtx->pRspCBUserData);
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -070029967 wdiGtkOffloadGetInfoCb(&wdiGtkOffloadGetInfoRsparams, pWDICtx->pRspCBUserData);
Jeff Johnson295189b2012-06-20 16:38:30 -070029968
29969 return WDI_STATUS_SUCCESS;
29970}
29971#endif // WLAN_FEATURE_GTK_OFFLOAD
29972
29973#ifdef WLAN_WAKEUP_EVENTS
29974WDI_Status
29975WDI_ProcessWakeReasonInd
29976(
29977 WDI_ControlBlockType* pWDICtx,
29978 WDI_EventInfoType* pEventData
29979)
29980{
29981 WDI_LowLevelIndType *pWdiInd;
29982 tpWakeReasonParams pWakeReasonParams;
29983 wpt_uint32 allocSize = 0;
29984
29985 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029986 "+%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029987
29988 /*-------------------------------------------------------------------------
29989 Sanity check
29990 -------------------------------------------------------------------------*/
29991 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
29992 ( NULL == pEventData->pEventData ))
29993 {
29994 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070029995 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070029996 WDI_ASSERT( 0 );
29997 return WDI_STATUS_E_FAILURE;
29998 }
29999
30000 /*-------------------------------------------------------------------------
30001 Extract indication and send it to UMAC
30002 -------------------------------------------------------------------------*/
30003 pWakeReasonParams = (tpWakeReasonParams)(pEventData->pEventData);
30004
30005 allocSize = sizeof(WDI_LowLevelIndType) + (pWakeReasonParams->ulStoredDataLen - 1);
30006
30007 //Allocate memory for WDI_WakeReasonIndType structure
30008 pWdiInd = wpalMemoryAllocate(allocSize) ;
30009
30010 if(NULL == pWdiInd)
30011 {
30012 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030013 "%s: Failed to allocate memory for WDI_WakeReasonIndType: %p %p %p ",
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030014 __func__, pWDICtx, pEventData, pEventData->pEventData);
Jeff Johnson295189b2012-06-20 16:38:30 -070030015 WDI_ASSERT(0);
30016 return WDI_STATUS_E_FAILURE;
30017 }
30018
30019 wpalMemoryZero(pWdiInd, allocSize);
30020
30021 /* Fill in the indication parameters*/
30022 // Fill wdiInd.wdiIndicationData.wakeReasonInd structure from wakeReasonInd.wakeReasonParams
30023 pWdiInd->wdiIndicationType = WDI_WAKE_REASON_IND;
30024 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReason = pWakeReasonParams->ulReason;
30025 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulReasonArg = pWakeReasonParams->ulReasonArg;
30026 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulStoredDataLen = pWakeReasonParams->ulStoredDataLen;
30027 pWdiInd->wdiIndicationData.wdiWakeReasonInd.ulActualDataLen = pWakeReasonParams->ulActualDataLen;
30028 wpalMemoryCopy( (void *)&(pWdiInd->wdiIndicationData.wdiWakeReasonInd.aDataStart[0]),
30029 &(pWakeReasonParams->aDataStart[0]),
30030 pWakeReasonParams->ulStoredDataLen);
30031
ltimariub77f24b2013-01-24 18:54:33 -080030032
30033 if ( pWDICtx->wdiLowLevelIndCB )
30034 {
30035 /*Notify UMAC*/
30036 pWDICtx->wdiLowLevelIndCB( pWdiInd, pWDICtx->pIndUserData );
30037 }
Jeff Johnson295189b2012-06-20 16:38:30 -070030038
30039 //Free memory allocated for WDI_WakeReasonIndType structure
30040 wpalMemoryFree(pWdiInd);
30041
30042 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030043 "-%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030044
30045 return WDI_STATUS_SUCCESS;
30046}
30047#endif // WLAN_WAKEUP_EVENTS
30048
30049void WDI_GetWcnssCompiledApiVersion
30050(
30051 WDI_WlanVersionType *pWcnssApiVersion
30052)
30053{
30054 pWcnssApiVersion->major = WLAN_HAL_VER_MAJOR;
30055 pWcnssApiVersion->minor = WLAN_HAL_VER_MINOR;
30056 pWcnssApiVersion->version = WLAN_HAL_VER_VERSION;
30057 pWcnssApiVersion->revision = WLAN_HAL_VER_REVISION;
30058}
30059
30060/**
30061 @brief Process Set TM Level Rsp function (called when a
30062 response is being received over the bus from HAL)
30063
30064 @param pWDICtx: pointer to the WLAN DAL context
30065 pEventData: pointer to the event information structure
30066
30067 @see
30068 @return Result of the function call
30069*/
30070WDI_Status
30071WDI_ProcessSetTmLevelRsp
30072(
30073 WDI_ControlBlockType* pWDICtx,
30074 WDI_EventInfoType* pEventData
30075)
30076{
30077 WDI_Status wdiStatus;
30078 eHalStatus halStatus;
30079 WDI_SetTmLevelCb wdiSetTmLevelCb;
30080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30081
30082 /*-------------------------------------------------------------------------
30083 Sanity check
30084 -------------------------------------------------------------------------*/
30085 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30086 ( NULL == pEventData->pEventData ))
30087 {
30088 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030089 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030090 WDI_ASSERT(0);
30091 return WDI_STATUS_E_FAILURE;
30092 }
30093
30094 wdiSetTmLevelCb = (WDI_SetPowerParamsCb)pWDICtx->pfncRspCB;
30095
30096 /*-------------------------------------------------------------------------
30097 Extract response and send it to UMAC
30098 -------------------------------------------------------------------------*/
30099 halStatus = *((eHalStatus*)pEventData->pEventData);
30100 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30101
30102 /*Notify UMAC*/
30103 wdiSetTmLevelCb(wdiStatus, pWDICtx->pRspCBUserData);
30104
30105 return WDI_STATUS_SUCCESS;
30106}/*WDI_ProcessSetTmLevelRsp*/
30107
30108/**
30109 @brief Process Set Thermal Mitigation level Changed request
30110
30111 @param pWDICtx: pointer to the WLAN DAL context
30112 pEventData: pointer to the event information structure
30113
30114 @see
30115 @return Result of the function call
30116*/
30117WDI_Status
30118WDI_ProcessSetTmLevelReq
30119(
30120 WDI_ControlBlockType* pWDICtx,
30121 WDI_EventInfoType* pEventData
30122)
30123{
30124 WDI_SetTmLevelReqType *pwdiSetTmLevelReq = NULL;
30125 WDI_SetTmLevelCb wdiSetTmLevelCb = NULL;
30126 wpt_uint8* pSendBuffer = NULL;
30127 wpt_uint16 usDataOffset = 0;
30128 wpt_uint16 usSendSize = 0;
30129 tSetThermalMitgationType halTmMsg;
30130
30131 /*-------------------------------------------------------------------------
30132 Sanity check
30133 -------------------------------------------------------------------------*/
30134 if (( NULL == pEventData ) ||
30135 ( NULL == (pwdiSetTmLevelReq = (WDI_SetTmLevelReqType*)pEventData->pEventData)) ||
30136 ( NULL == (wdiSetTmLevelCb = (WDI_SetTmLevelCb)pEventData->pCBfnc)))
30137 {
30138 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030139 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030140 WDI_ASSERT(0);
30141 return WDI_STATUS_E_FAILURE;
30142 }
30143
30144 /*-----------------------------------------------------------------------
30145 Get message buffer
30146 -----------------------------------------------------------------------*/
30147 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_SET_TM_LEVEL_REQ,
30148 sizeof(halTmMsg),
30149 &pSendBuffer, &usDataOffset, &usSendSize))||
30150 ( usSendSize < (usDataOffset + sizeof(halTmMsg) )))
30151 {
30152 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030153 "Unable to get send buffer in Set PNO req %p %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070030154 pEventData, pwdiSetTmLevelReq, wdiSetTmLevelCb);
30155 WDI_ASSERT(0);
30156 return WDI_STATUS_E_FAILURE;
30157 }
30158
30159 halTmMsg.thermalMitMode = pwdiSetTmLevelReq->tmMode;
30160 halTmMsg.thermalMitLevel = pwdiSetTmLevelReq->tmLevel;
30161
30162 wpalMemoryCopy( pSendBuffer+usDataOffset,
30163 &halTmMsg,
30164 sizeof(halTmMsg));
30165
30166 pWDICtx->pReqStatusUserData = pwdiSetTmLevelReq->pUserData;
30167 pWDICtx->pfncRspCB = NULL;
30168 /*-------------------------------------------------------------------------
30169 Send Get STA Request to HAL
30170 -------------------------------------------------------------------------*/
30171 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30172 wdiSetTmLevelCb, pEventData->pUserData, WDI_SET_TM_LEVEL_RESP);
30173}
30174
30175/* Fill the value from the global features enabled array to the global capabilities
30176 * bitmap struct
30177 */
30178static void
30179FillAllFeatureCaps(tWlanFeatCaps *fCaps, placeHolderInCapBitmap *enabledFeat, wpt_int8 len)
30180{
30181 wpt_int8 i;
30182 for (i=0; i<len; i++)
30183 {
30184 setFeatCaps(fCaps, enabledFeat[i]);
30185 }
30186}
30187
30188/**
30189 @brief WDI_featureCapsExchangeReq
30190 Post feature capability bitmap exchange event.
30191 Host will send its own capability to FW in this req and
30192 expect FW to send its capability back as a bitmap in Response
30193
30194 @param
30195
30196 wdiFeatureCapsExchangeCb: callback called on getting the response.
30197 It is kept to mantain similarity between WDI reqs and if needed, can
30198 be used in future. Currently, It is set to NULL
30199
30200 pUserData: user data will be passed back with the
30201 callback
30202
30203 @see
30204 @return Result of the function call
30205*/
30206WDI_Status
30207WDI_featureCapsExchangeReq
30208(
30209 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb,
30210 void* pUserData
30211)
30212{
30213 WDI_EventInfoType wdiEventData;
30214 wpt_int32 fCapsStructSize;
30215
30216 /*------------------------------------------------------------------------
30217 Sanity Check
30218 ------------------------------------------------------------------------*/
30219 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30220 {
30221 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30222 "WDI API call before module is initialized - Fail request");
30223
30224 return WDI_STATUS_E_NOT_ALLOWED;
30225 }
30226
30227 /* Allocate memory separately for global variable carrying FW caps */
30228 fCapsStructSize = sizeof(tWlanFeatCaps);
30229 gpHostWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
30230 if ( NULL == gpHostWlanFeatCaps )
30231 {
30232 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030233 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070030234 WDI_ASSERT(0);
30235 return WDI_STATUS_MEM_FAILURE;
30236 }
30237
30238 wpalMemoryZero(gpHostWlanFeatCaps, fCapsStructSize);
30239
30240 /*------------------------------------------------------------------------
30241 Fill in Event data and post to the Main FSM
30242 ------------------------------------------------------------------------*/
30243 FillAllFeatureCaps(gpHostWlanFeatCaps, supportEnabledFeatures,
30244 (sizeof(supportEnabledFeatures)/sizeof(supportEnabledFeatures[0])));
Ratheesh S P36dbc932015-08-07 14:28:57 +053030245 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030246 "Host caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070030247 gpHostWlanFeatCaps->featCaps[0],
30248 gpHostWlanFeatCaps->featCaps[1],
30249 gpHostWlanFeatCaps->featCaps[2],
30250 gpHostWlanFeatCaps->featCaps[3]
30251 );
Ratheesh S P36dbc932015-08-07 14:28:57 +053030252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Host Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053030253 WDI_TraceHostFWCapabilities(gpHostWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070030254 wdiEventData.wdiRequest = WDI_FEATURE_CAPS_EXCHANGE_REQ;
30255 wdiEventData.pEventData = gpHostWlanFeatCaps;
30256 wdiEventData.uEventDataSize = fCapsStructSize;
30257 wdiEventData.pCBfnc = wdiFeatureCapsExchangeCb;
30258 wdiEventData.pUserData = pUserData;
30259
30260 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30261}
30262
30263/**
Yathish9f22e662012-12-10 14:21:35 -080030264 @brief Disable Active mode offload in Host
30265
30266 @param void
30267 @see
30268 @return void
30269*/
30270void
30271WDI_disableCapablityFeature(wpt_uint8 feature_index)
30272{
30273 supportEnabledFeatures[feature_index] = 0;
30274 return;
30275}
30276
30277/**
Jeff Johnson295189b2012-06-20 16:38:30 -070030278 @brief Process Host-FW Capability Exchange Request function
30279
30280 @param pWDICtx: pointer to the WLAN DAL context
30281 pEventData: pointer to the event information structure
30282
30283 @see
30284 @return Result of the function call
30285*/
30286WDI_Status
30287WDI_ProcessFeatureCapsExchangeReq
30288(
30289 WDI_ControlBlockType* pWDICtx,
30290 WDI_EventInfoType* pEventData
30291)
30292{
30293 wpt_uint8* pSendBuffer = NULL;
30294 wpt_uint16 usDataOffset = 0;
30295 wpt_uint16 usSendSize = 0;
30296 wpt_uint16 usLen = 0;
30297
30298 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30299
30300 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030301 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030302
30303 /*-------------------------------------------------------------------------
30304 Sanity check
30305 -------------------------------------------------------------------------*/
30306 /* Call back function is NULL since not required for cap exchange req */
30307 if (( NULL == pEventData ) ||
30308 ( NULL == (tWlanFeatCaps *)pEventData->pEventData))
30309 {
30310 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030311 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030312 WDI_ASSERT(0);
30313 return WDI_STATUS_E_FAILURE;
30314 }
30315
30316 /*-----------------------------------------------------------------------
30317 Get message buffer
30318 -----------------------------------------------------------------------*/
30319 usLen = sizeof(tWlanFeatCaps);
30320
30321 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
30322 WDI_FEATURE_CAPS_EXCHANGE_REQ,
30323 usLen,
30324 &pSendBuffer, &usDataOffset, &usSendSize))||
30325 ( usSendSize < (usDataOffset + usLen )))
30326 {
30327 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080030328 "Unable to get send buffer in feat caps exchange req %p %p",
Jeff Johnson295189b2012-06-20 16:38:30 -070030329 pEventData, (tWlanFeatCaps *)pEventData->pEventData);
30330 WDI_ASSERT(0);
30331 return WDI_STATUS_E_FAILURE;
30332 }
30333
30334 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030335 "Host Caps - %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070030336 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[0],
30337 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[1],
30338 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[2],
30339 ((tWlanFeatCaps *)pEventData->pEventData)->featCaps[3]
30340 );
30341
30342 /* Copy host caps after the offset in the send buffer */
30343 wpalMemoryCopy( pSendBuffer+usDataOffset,
30344 (tWlanFeatCaps *)pEventData->pEventData,
30345 usLen);
30346
30347 /*-------------------------------------------------------------------------
30348 Send Start Request to HAL
30349 -------------------------------------------------------------------------*/
30350 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30351 (WDI_StartRspCb)pEventData->pCBfnc,
30352 pEventData->pUserData, WDI_FEATURE_CAPS_EXCHANGE_RESP);
30353
30354}/*WDI_ProcessFeatureCapsExchangeReq*/
30355
30356/**
30357 @brief Process Host-FW Capability Exchange Response function
30358
30359 @param pWDICtx: pointer to the WLAN DAL context
30360 pEventData: pointer to the event information structure
30361
30362 @see
30363 @return Result of the function call
30364*/
30365WDI_Status
30366WDI_ProcessFeatureCapsExchangeRsp
30367(
30368 WDI_ControlBlockType* pWDICtx,
30369 WDI_EventInfoType* pEventData
30370)
30371{
30372 WDI_featureCapsExchangeCb wdiFeatureCapsExchangeCb;
30373 wpt_int32 fCapsStructSize;
30374 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30375
30376 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030377 "%s", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030378
30379 /*-------------------------------------------------------------------------
30380 Sanity check
30381 -------------------------------------------------------------------------*/
30382 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30383 ( NULL == pEventData->pEventData ))
30384 {
30385 /* It will go here when riva is old (doesn't understand this msg) and host is new */
30386 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030387 "%s: Invalid parameters", __func__);
Jeff Johnson295189b2012-06-20 16:38:30 -070030388 WDI_ASSERT(0);
30389 return WDI_STATUS_E_FAILURE;
30390 }
30391
30392 /* Allocate memory separately for global variable carrying FW caps */
30393 fCapsStructSize = sizeof(tWlanFeatCaps);
30394 gpFwWlanFeatCaps = wpalMemoryAllocate(fCapsStructSize);
30395 if ( NULL == gpFwWlanFeatCaps )
30396 {
30397 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030398 "Cannot allocate memory for host capability info");
Jeff Johnson295189b2012-06-20 16:38:30 -070030399 WDI_ASSERT(0);
30400 return WDI_STATUS_MEM_FAILURE;
30401 }
30402
30403 /*-------------------------------------------------------------------------
30404 Unpack HAL Response Message - the header was already extracted by the
30405 main Response Handling procedure
30406 -------------------------------------------------------------------------*/
30407 /*-------------------------------------------------------------------------
30408 Extract response and send it to UMAC
30409 -------------------------------------------------------------------------*/
30410
30411 wpalMemoryCopy(gpFwWlanFeatCaps,(tWlanFeatCaps *) pEventData -> pEventData,
30412 fCapsStructSize);
Ratheesh S P36dbc932015-08-07 14:28:57 +053030413 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030414 "FW caps %x %x %x %x",
Jeff Johnson295189b2012-06-20 16:38:30 -070030415 gpFwWlanFeatCaps->featCaps[0],
30416 gpFwWlanFeatCaps->featCaps[1],
30417 gpFwWlanFeatCaps->featCaps[2],
30418 gpFwWlanFeatCaps->featCaps[3]
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053030419 );
Mukul Sharmaf1bd9322015-10-20 16:03:42 +053030420
Ratheesh S P36dbc932015-08-07 14:28:57 +053030421 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO, "Firmware Capability");
Madan Mohan Koyyalamudif8d3b3f2013-07-30 19:10:54 +053030422 WDI_TraceHostFWCapabilities(gpFwWlanFeatCaps->featCaps);
Jeff Johnson295189b2012-06-20 16:38:30 -070030423 wdiFeatureCapsExchangeCb = (WDI_featureCapsExchangeCb) pWDICtx -> pfncRspCB;
30424
30425 /*Notify UMAC - there is no callback right now but can be used in future if reqd */
30426 if (wdiFeatureCapsExchangeCb != NULL)
30427 wdiFeatureCapsExchangeCb(NULL, NULL);
30428
30429 return WDI_STATUS_SUCCESS;
30430}
30431
Mohit Khanna4a70d262012-09-11 16:30:12 -070030432#ifdef WLAN_FEATURE_11AC
30433WDI_Status
30434WDI_ProcessUpdateVHTOpModeRsp
30435(
30436 WDI_ControlBlockType* pWDICtx,
30437 WDI_EventInfoType* pEventData
30438)
30439{
30440 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30441 WDI_Status wdiStatus;
30442 eHalStatus halStatus;
30443
30444 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30445
30446 /*-------------------------------------------------------------------------
30447 Sanity check
30448 -------------------------------------------------------------------------*/
30449 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
30450 ( NULL == pEventData->pEventData))
30451 {
30452 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030453 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030454 WDI_ASSERT(0);
30455 return WDI_STATUS_E_FAILURE;
30456 }
30457 wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc;
30458
30459 /*-------------------------------------------------------------------------
30460 Extract response and send it to UMAC
30461 -------------------------------------------------------------------------*/
30462 halStatus = *((eHalStatus*)pEventData->pEventData);
30463 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30464
30465 /*Notify UMAC*/
30466 wdiVHTOpModeCb( wdiStatus, pEventData->pUserData);
30467
30468 return WDI_STATUS_SUCCESS;
30469}
30470#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070030471/**
30472 @brief WDI_getHostWlanFeatCaps
30473 WDI API that returns whether the feature passed to it as enum value in
30474 "placeHolderInCapBitmap" is supported by Host or not. It uses WDI global
30475 variable storing host capability bitmap to find this. This can be used by
30476 other moduels to decide certain things like call different APIs based on
30477 whether a particular feature is supported.
30478
30479 @param
30480
30481 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap in wlan_hal_msg.h.
30482
30483 @see
30484 @return
30485 0 - if the feature is NOT supported in host
30486 any non-zero value - if the feature is SUPPORTED in host.
30487*/
30488wpt_uint8 WDI_getHostWlanFeatCaps(wpt_uint8 feat_enum_value)
30489{
30490 wpt_uint8 featSupported = 0;
30491 if (gpHostWlanFeatCaps != NULL)
30492 {
30493 getFeatCaps(gpHostWlanFeatCaps, feat_enum_value, featSupported);
30494 }
30495 else
30496 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030497 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070030498 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070030499 }
30500 return featSupported;
30501}
30502
30503/**
30504 @brief WDI_getFwWlanFeatCaps
30505 WDI API that returns whether the feature passed to it as enum value in
30506 "placeHolderInCapBitmap" is supported by FW or not. It uses WDI global
30507 variable storing host capability bitmap to find this. This can be used by
30508 other moduels to decide certain things like call different APIs based on
30509 whether a particular feature is supported.
30510
30511 @param
30512
30513 feat_enum_value: enum value for the feature as in placeHolderInCapBitmap
30514 in wlan_hal_msg.h.
30515
30516 @see
30517 @return
30518 0 - if the feature is NOT supported in FW
30519 any non-zero value - if the feature is SUPPORTED in FW.
30520*/
30521wpt_uint8 WDI_getFwWlanFeatCaps(wpt_uint8 feat_enum_value)
30522{
30523 wpt_uint8 featSupported = 0;
30524 if (gpFwWlanFeatCaps != NULL)
30525 {
30526 getFeatCaps(gpFwWlanFeatCaps, feat_enum_value, featSupported);
30527 }
30528 else
30529 {
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030530 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi8bdd3112012-09-24 13:55:14 -070030531 "Caps exchange feature NOT supported. Return NOT SUPPORTED for %u feature", feat_enum_value);
Jeff Johnson295189b2012-06-20 16:38:30 -070030532 }
30533 return featSupported;
30534}
Mohit Khanna4a70d262012-09-11 16:30:12 -070030535
Katya Nigamf0511f62015-05-05 16:40:57 +053030536wpt_uint8 WDI_selectCbMode( wpt_uint8 channel, wpt_uint8 ChannelBW )
30537{
30538 /* 5gHz Channel */
30539 if( channel >= 34 && channel <= 165 )
30540 {
30541 if( ChannelBW == 80 && WDI_getFwWlanFeatCaps(DOT11AC) )
30542 {
30543 if ( channel== 36 || channel == 52 || channel == 100 ||
30544 channel == 116 || channel == 149 )
30545 {
30546 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_LOW;
30547 }
30548 else if ( channel == 40 || channel == 56 || channel == 104 ||
30549 channel == 120 || channel == 153 )
30550 {
30551 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_LOW;
30552 }
30553 else if ( channel == 44 || channel == 60 || channel == 108 ||
30554 channel == 124 || channel == 157 )
30555 {
30556 return PHY_QUADRUPLE_CHANNEL_20MHZ_LOW_40MHZ_HIGH;
30557 }
30558 else if ( channel == 48 || channel == 64 || channel == 112 ||
30559 channel == 128 || channel == 144 || channel == 161 )
30560 {
30561 return PHY_QUADRUPLE_CHANNEL_20MHZ_HIGH_40MHZ_HIGH;
30562 }
30563 else if ( channel == 165 )
30564 {
30565 return PHY_SINGLE_CHANNEL_CENTERED;
30566 }
30567 }
30568
30569 else
30570 {
30571 if ( channel== 40 || channel == 48 || channel == 56 ||
30572 channel == 64 || channel == 104 || channel == 112 ||
30573 channel == 120 || channel == 128 || channel == 136 ||
30574 channel == 144 || channel == 153 || channel == 161 )
30575 {
30576 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30577 }
30578 else if ( channel== 36 || channel == 44 || channel == 52 ||
30579 channel == 60 || channel == 100 || channel == 108 ||
30580 channel == 116 || channel == 124 || channel == 132 ||
30581 channel == 140 || channel == 149 || channel == 157 )
30582 {
30583 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30584 }
30585 else if ( channel == 165 )
30586 {
30587 return PHY_SINGLE_CHANNEL_CENTERED;
30588 }
30589 }
30590 }
30591
30592 /* 2.4Ghz Channel */
30593 if( ChannelBW == 40 && WDI_getFwWlanFeatCaps(HT40_OBSS_SCAN) )
30594 {
30595 if (channel >= 1 && channel <= 7)
30596 return PHY_DOUBLE_CHANNEL_LOW_PRIMARY;
30597 else if (channel >= 8 && channel <= 13)
30598 return PHY_DOUBLE_CHANNEL_HIGH_PRIMARY;
30599 else if (channel ==14)
30600 return PHY_SINGLE_CHANNEL_CENTERED;
30601 }
30602 return PHY_SINGLE_CHANNEL_CENTERED;
30603}
30604
Mohit Khanna4a70d262012-09-11 16:30:12 -070030605#ifdef WLAN_FEATURE_11AC
30606WDI_Status
30607WDI_ProcessUpdateVHTOpModeReq
30608(
30609 WDI_ControlBlockType* pWDICtx,
30610 WDI_EventInfoType* pEventData
30611)
30612{
30613 WDI_UpdateVHTOpMode* pwdiVHTOpModeParams = NULL;
30614 WDI_UpdateVHTOpModeCb wdiVHTOpModeCb = NULL;
30615 wpt_uint8* pSendBuffer = NULL;
30616 wpt_uint16 usDataOffset = 0;
30617 wpt_uint16 usSendSize = 0;
30618
30619 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30620
30621 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030622 "%s", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030623
30624 /*-------------------------------------------------------------------------
30625 Sanity check
30626 -------------------------------------------------------------------------*/
30627 if (( NULL == pEventData ) ||
30628 ( NULL == (pwdiVHTOpModeParams = (WDI_UpdateVHTOpMode*)pEventData->pEventData)) ||
30629 ( NULL == (wdiVHTOpModeCb = (WDI_UpdateVHTOpModeCb)pEventData->pCBfnc)))
30630 {
30631 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030632 "%s: Invalid parameters", __func__);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030633 WDI_ASSERT(0);
30634 return WDI_STATUS_E_FAILURE;
30635 }
30636
30637 /*-----------------------------------------------------------------------
30638 Get message buffer
30639 -----------------------------------------------------------------------*/
30640 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx, WDI_UPDATE_VHT_OP_MODE_REQ,
30641 sizeof(WDI_UpdateVHTOpMode),
30642 &pSendBuffer, &usDataOffset, &usSendSize))||
30643 ( usSendSize < (usDataOffset + sizeof(WDI_UpdateVHTOpMode) )))
30644 {
30645 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30646 "Unable to get send buffer in update vht opMode req");
30647 WDI_ASSERT(0);
30648 return WDI_STATUS_E_FAILURE;
30649 }
30650
30651 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030652 "pwdiVHTOpModeParams->opMode=%d, pwdiVHTOpModeParams->staId=%d", pwdiVHTOpModeParams->opMode, pwdiVHTOpModeParams->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030653
30654 wpalMemoryCopy( pSendBuffer+usDataOffset, pwdiVHTOpModeParams,
30655 sizeof(WDI_UpdateVHTOpMode));
30656
30657 /*-------------------------------------------------------------------------
30658 Send Start Request to HAL
30659 -------------------------------------------------------------------------*/
30660 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
30661 wdiVHTOpModeCb,
30662 pEventData->pUserData, WDI_UPDATE_VHT_OP_MODE_RESP);
30663
30664}
30665
30666WDI_Status
30667WDI_UpdateVHTOpModeReq
30668(
30669 WDI_UpdateVHTOpMode *pData,
30670 WDI_UpdateVHTOpModeCb wdiUpdateVHTOpModeCb,
30671 void* pUserData
30672)
30673{
30674 WDI_EventInfoType wdiEventData;
30675
30676 /*------------------------------------------------------------------------
30677 Sanity Check
30678 ------------------------------------------------------------------------*/
30679 if ( eWLAN_PAL_FALSE == gWDIInitialized )
30680 {
30681 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30682 "WDI API call before module is initialized - Fail request");
30683
30684 return WDI_STATUS_E_NOT_ALLOWED;
30685 }
30686
30687 /*------------------------------------------------------------------------
30688 Fill in Event data and post to the Main FSM
30689 ------------------------------------------------------------------------*/
30690 wdiEventData.wdiRequest = WDI_UPDATE_VHT_OP_MODE_REQ;
30691 wdiEventData.pEventData = pData;
30692 wdiEventData.uEventDataSize = sizeof(WDI_UpdateVHTOpMode);
30693 wdiEventData.pCBfnc = wdiUpdateVHTOpModeCb;
30694 wdiEventData.pUserData = pUserData;
30695
30696 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Arif Hussain9a5d5382013-11-17 22:05:35 -080030697 "pData->opMode=%d, pData->staId=%d", pData->opMode, pData->staId);
Mohit Khanna4a70d262012-09-11 16:30:12 -070030698
30699 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
30700
30701}
30702#endif
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030703
30704/**
30705 @brief WDI_TransportChannelDebug -
30706 Display DXE Channel debugging information
30707 User may request to display DXE channel snapshot
30708 Or if host driver detects any abnormal stcuk may display
Madan Mohan Koyyalamudi8b7f1e62012-10-05 14:56:51 -070030709
Jeff Johnsonb88db982012-12-10 13:34:59 -080030710 @param displaySnapshot : Display DXE snapshot option
Mihir Shete40a55652014-03-02 14:14:47 +053030711 @param debugFlags : Enable stall detect features
30712 defined by WPAL_DeviceDebugFlags
30713 These features may effect
30714 data performance.
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030715 @see
30716 @return none
30717*/
30718void WDI_TransportChannelDebug
30719(
30720 wpt_boolean displaySnapshot,
Mihir Shete40a55652014-03-02 14:14:47 +053030721 wpt_uint8 debugFlags
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030722)
30723{
Mihir Shete40a55652014-03-02 14:14:47 +053030724 WDTS_ChannelDebug(displaySnapshot, debugFlags);
Madan Mohan Koyyalamudi8cb53982012-09-28 14:34:47 -070030725 return;
Madan Mohan Koyyalamudi3352adb2012-09-28 14:57:24 -070030726}
Sravan Kumar Kairam6eac7522015-11-27 23:37:02 +053030727
30728/**
30729 @brief WDI_TransportKickDxe -
30730 Request Kick DXE when HDD TX time out happen
30731
30732 @param none
30733 @see
30734 @return none
30735*/
30736void WDI_TransportKickDxe()
30737{
30738 WDTS_ChannelKickDxe();
30739 return;
30740}
30741
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030742/**
30743 @brief WDI_SsrTimerCB
30744 Callback function for SSR timer, if this is called then the graceful
30745 shutdown for Riva did not happen.
30746
30747 @param pUserData : user data to timer
30748
30749 @see
30750 @return none
30751*/
30752void
30753WDI_SsrTimerCB
30754(
30755 void *pUserData
30756)
30757{
30758 WDI_ControlBlockType* pWDICtx = (WDI_ControlBlockType*)pUserData;
30759 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30760
30761 if (NULL == pWDICtx )
30762 {
30763 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Madan Mohan Koyyalamudi87054ba2012-11-02 13:24:12 -070030764 "%s: Invalid parameters", __func__);
Madan Mohan Koyyalamudi0bfd0002012-10-24 14:39:37 -070030765 WDI_ASSERT(0);
30766 return;
30767 }
30768 wpalRivaSubystemRestart();
30769
30770 return;
30771
30772}/*WDI_SsrTimerCB*/
Gopichand Nakkalae620d5a2013-04-26 05:45:57 -070030773
30774/**
30775 @brief WDI_SetEnableSSR -
30776 This API is called to enable/disable SSR on WDI timeout.
30777
30778 @param enableSSR : enable/disable SSR
30779
30780 @see
30781 @return none
30782*/
30783void WDI_SetEnableSSR(wpt_boolean enableSSR)
30784{
30785 gWDICb.bEnableSSR = enableSSR;
30786}
Leo Chang9056f462013-08-01 19:21:11 -070030787
Agrawal Ashishaf1de652016-03-02 18:03:43 +053030788/**
30789 * WDI_SetMgmtPktViaWQ5() - Set INI params sendMgmtPktViaWQ5 to Control
30790 * Block Type.
30791 * @sendMgmtPktViaWQ5: INI params to enable/disable sending mgmt pkt via WQ5.
30792 *
30793 * Return: void
30794 */
30795void WDI_SetMgmtPktViaWQ5(wpt_boolean sendMgmtPktViaWQ5)
30796{
30797 gWDICb.sendMgmtPktViaWQ5 = sendMgmtPktViaWQ5;
30798}
30799
Leo Chang9056f462013-08-01 19:21:11 -070030800
30801#ifdef FEATURE_WLAN_LPHB
30802/**
Leo Changd9df8aa2013-09-26 13:32:26 -070030803 @brief WDI_ProcessLphbInd -
Leo Chang9056f462013-08-01 19:21:11 -070030804 This function will be invoked when FW detects low power
30805 heart beat failure
30806
30807 @param pWDICtx : wdi context
30808 pEventData : indication data
Leo Chang9056f462013-08-01 19:21:11 -070030809 @see
30810 @return Result of the function call
30811*/
30812WDI_Status
Leo Changd9df8aa2013-09-26 13:32:26 -070030813WDI_ProcessLphbInd
Leo Chang9056f462013-08-01 19:21:11 -070030814(
30815 WDI_ControlBlockType* pWDICtx,
30816 WDI_EventInfoType* pEventData
30817)
30818{
30819 WDI_LowLevelIndType wdiInd;
Leo Changd9df8aa2013-09-26 13:32:26 -070030820 tHalLowPowerHeartBeatIndParam lphbIndicationParam;
Leo Chang9056f462013-08-01 19:21:11 -070030821 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30822
30823 /*-------------------------------------------------------------------------
30824 Sanity check
30825 -------------------------------------------------------------------------*/
30826 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30827 (NULL == pEventData->pEventData))
30828 {
30829 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30830 "%s: Invalid parameters", __func__);
30831 WDI_ASSERT(0);
30832 return WDI_STATUS_E_FAILURE;
30833 }
30834
30835 /*-------------------------------------------------------------------------
30836 Extract indication and send it to UMAC
30837 -------------------------------------------------------------------------*/
Leo Changd9df8aa2013-09-26 13:32:26 -070030838 wpalMemoryCopy(&lphbIndicationParam,
30839 pEventData->pEventData,
30840 sizeof(tHalLowPowerHeartBeatIndParam));
Leo Chang9056f462013-08-01 19:21:11 -070030841
Leo Changd9df8aa2013-09-26 13:32:26 -070030842 wdiInd.wdiIndicationType = WDI_LPHB_IND;
Leo Chang9056f462013-08-01 19:21:11 -070030843 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.bssIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030844 lphbIndicationParam.bssIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030845 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.sessionIdx =
Leo Changd9df8aa2013-09-26 13:32:26 -070030846 lphbIndicationParam.sessionIdx;
Leo Chang9056f462013-08-01 19:21:11 -070030847 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.protocolType =
Leo Changd9df8aa2013-09-26 13:32:26 -070030848 lphbIndicationParam.protocolType;
Leo Chang9056f462013-08-01 19:21:11 -070030849 wdiInd.wdiIndicationData.wdiLPHBTimeoutInd.eventReason =
Leo Changd9df8aa2013-09-26 13:32:26 -070030850 lphbIndicationParam.eventReason;
Leo Chang9056f462013-08-01 19:21:11 -070030851 /*Notify UMAC*/
30852 if (pWDICtx->wdiLowLevelIndCB)
30853 {
30854 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
30855 }
30856
30857 return WDI_STATUS_SUCCESS;
30858}
30859
30860/**
30861 @brief WDI_ProcessLphbCfgRsp -
30862 LPHB configuration response from FW
30863
30864 @param pWDICtx : wdi context
30865 pEventData : indication data
30866
30867 @see
30868 @return Result of the function call
30869*/
30870WDI_Status WDI_ProcessLphbCfgRsp
30871(
30872 WDI_ControlBlockType* pWDICtx,
30873 WDI_EventInfoType* pEventData
30874)
30875{
30876 WDI_Status wdiStatus;
30877 eHalStatus halStatus;
30878 WDI_LphbCfgCb wdiLphbCfgCb;
30879 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30880
30881 /*-------------------------------------------------------------------------
30882 Sanity check
30883 -------------------------------------------------------------------------*/
30884 if ((NULL == pWDICtx) || (NULL == pEventData) ||
30885 (NULL == pEventData->pEventData))
30886 {
30887 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30888 "%s: Invalid parameters", __func__);
30889 WDI_ASSERT(0);
30890 return WDI_STATUS_E_FAILURE;
30891 }
30892
30893 wdiLphbCfgCb = (WDI_LphbCfgCb)pWDICtx->pfncRspCB;
30894
30895 /*-------------------------------------------------------------------------
30896 Extract response and send it to UMAC
30897 -------------------------------------------------------------------------*/
30898 halStatus = *((eHalStatus*)pEventData->pEventData);
30899 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
30900
30901 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
30902 "LPHB Cfg Rsp Return status %d", wdiStatus);
30903 /*Notify UMAC*/
30904 if (NULL != wdiLphbCfgCb)
30905 {
30906 wdiLphbCfgCb(wdiStatus, pWDICtx->pRspCBUserData);
30907 }
30908
30909 return WDI_STATUS_SUCCESS;
30910}
30911
30912/**
30913 @brief WDI_ProcessLPHBConfReq -
30914 LPHB configuration request to FW
30915
30916 @param pWDICtx : wdi context
30917 pEventData : indication data
30918
30919 @see
30920 @return none
30921*/
30922WDI_Status WDI_ProcessLPHBConfReq
30923(
30924 WDI_ControlBlockType* pWDICtx,
30925 WDI_EventInfoType* pEventData
30926)
30927{
30928 WDI_LPHBReq *pLphbReqParams;
30929 WDI_Status wdiStatus;
30930 wpt_uint8* pSendBuffer = NULL;
30931 wpt_uint16 usDataOffset = 0;
30932 wpt_uint16 usSendSize = 0;
30933 tHalLowPowerHeartBeatReq *halLphbReqRarams;
30934 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
30935
30936 /*-------------------------------------------------------------------------
30937 Sanity check
30938 -------------------------------------------------------------------------*/
30939 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
30940 {
30941 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30942 "%s: Invalid parameters in Suspend ind",__func__);
30943 WDI_ASSERT(0);
30944 return WDI_STATUS_E_FAILURE;
30945 }
30946
30947 pLphbReqParams = (WDI_LPHBReq *)pEventData->pEventData;
30948
30949 /*-----------------------------------------------------------------------
30950 Get message buffer
30951 -----------------------------------------------------------------------*/
30952 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
30953 WDI_LPHB_CFG_REQ,
30954 sizeof(tHalLowPowerHeartBeatReqMsg),
30955 &pSendBuffer, &usDataOffset, &usSendSize))||
30956 (usSendSize < (usDataOffset + sizeof(tHalLowPowerHeartBeatReqMsg))))
30957 {
30958 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
30959 "Unable to get send buffer in LPHB Ind ");
30960 WDI_ASSERT(0);
30961 return WDI_STATUS_E_FAILURE;
30962 }
30963
30964 halLphbReqRarams = (tHalLowPowerHeartBeatReq *)(pSendBuffer + usDataOffset);
30965 wpalMemoryZero(halLphbReqRarams, sizeof(tHalLowPowerHeartBeatReq));
30966
30967 halLphbReqRarams->lowPowerHeartBeatCmdType =
30968 (tANI_U16)(++pLphbReqParams->cmd);
30969 switch ((tANI_U16)pLphbReqParams->cmd)
30970 {
30971 case WDI_LPHB_SET_EN_PARAMS_INDID:
30972 halLphbReqRarams->sessionIdx =
30973 pLphbReqParams->params.lphbEnableReq.session;
30974 halLphbReqRarams->options.control.heartBeatEnable =
30975 pLphbReqParams->params.lphbEnableReq.enable;
30976 halLphbReqRarams->options.control.heartBeatType =
30977 pLphbReqParams->params.lphbEnableReq.item;
30978 break;
30979
30980 case WDI_LPHB_SET_TCP_PARAMS_INDID:
30981 halLphbReqRarams->sessionIdx =
30982 pLphbReqParams->params.lphbTcpParamReq.session;
30983 halLphbReqRarams->options.tcpParams.timeOutSec =
30984 pLphbReqParams->params.lphbTcpParamReq.timeout;
30985 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.hostIpv4Addr,
30986 &pLphbReqParams->params.lphbTcpParamReq.dev_ip,
30987 sizeof(v_U32_t));
30988 wpalMemoryCopy(&halLphbReqRarams->options.tcpParams.destIpv4Addr,
30989 &pLphbReqParams->params.lphbTcpParamReq.srv_ip,
30990 sizeof(v_U32_t));
30991
30992 wpalMemoryCopy(halLphbReqRarams->options.tcpParams.gatewayMacAddr,
30993 pLphbReqParams->params.lphbTcpParamReq.gateway_mac,
30994 WDI_MAC_ADDR_LEN);
30995
30996 halLphbReqRarams->options.tcpParams.hostPort =
30997 pLphbReqParams->params.lphbTcpParamReq.src_port;
30998 halLphbReqRarams->options.tcpParams.destPort =
30999 pLphbReqParams->params.lphbTcpParamReq.dst_port;
Leo Changd9df8aa2013-09-26 13:32:26 -070031000 halLphbReqRarams->options.tcpParams.timePeriodSec =
31001 pLphbReqParams->params.lphbTcpParamReq.timePeriodSec;
31002 halLphbReqRarams->options.tcpParams.tcpSn =
31003 pLphbReqParams->params.lphbTcpParamReq.tcpSn;
Leo Chang9056f462013-08-01 19:21:11 -070031004 break;
31005
31006 case WDI_LPHB_SET_TCP_PKT_FILTER_INDID:
31007 halLphbReqRarams->sessionIdx =
31008 pLphbReqParams->params.lphbTcpFilterReq.session;
31009 halLphbReqRarams->options.tcpUdpFilter.offset =
31010 pLphbReqParams->params.lphbTcpFilterReq.offset;
31011 halLphbReqRarams->options.tcpUdpFilter.filterLength =
31012 pLphbReqParams->params.lphbTcpFilterReq.length;
31013 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
31014 pLphbReqParams->params.lphbTcpFilterReq.filter,
31015 WDI_LPHB_FILTER_LEN);
31016 break;
31017
31018 case WDI_LPHB_SET_UDP_PARAMS_INDID:
31019 halLphbReqRarams->sessionIdx =
31020 pLphbReqParams->params.lphbUdpParamReq.session;
31021 halLphbReqRarams->options.udpParams.timeOutSec =
31022 pLphbReqParams->params.lphbUdpParamReq.timeout;
31023 halLphbReqRarams->options.udpParams.timePeriodSec =
31024 pLphbReqParams->params.lphbUdpParamReq.interval;
31025 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.hostIpv4Addr,
31026 &pLphbReqParams->params.lphbUdpParamReq.dev_ip,
31027 sizeof(v_U32_t));
31028 wpalMemoryCopy(&halLphbReqRarams->options.udpParams.destIpv4Addr,
31029 &pLphbReqParams->params.lphbUdpParamReq.srv_ip,
31030 sizeof(v_U32_t));
31031
31032 wpalMemoryCopy(halLphbReqRarams->options.udpParams.gatewayMacAddr,
31033 pLphbReqParams->params.lphbUdpParamReq.gateway_mac,
31034 WDI_MAC_ADDR_LEN);
31035
31036 halLphbReqRarams->options.udpParams.hostPort =
31037 pLphbReqParams->params.lphbUdpParamReq.src_port;
31038 halLphbReqRarams->options.udpParams.destPort =
31039 pLphbReqParams->params.lphbUdpParamReq.dst_port;
31040 break;
31041
31042 case WDI_LPHB_SET_UDP_PKT_FILTER_INDID:
31043 halLphbReqRarams->sessionIdx =
31044 pLphbReqParams->params.lphbUdpFilterReq.session;
31045 halLphbReqRarams->options.tcpUdpFilter.offset =
31046 pLphbReqParams->params.lphbUdpFilterReq.offset;
31047 halLphbReqRarams->options.tcpUdpFilter.filterLength =
31048 pLphbReqParams->params.lphbUdpFilterReq.length;
31049 wpalMemoryCopy(halLphbReqRarams->options.tcpUdpFilter.filter,
31050 pLphbReqParams->params.lphbUdpFilterReq.filter,
31051 WDI_LPHB_FILTER_LEN);
31052 break;
31053
31054 case WDI_LPHB_SET_NETWORK_INFO_INDID:
31055 /* NA */
31056 break;
31057
31058 default:
31059 break;
31060 }
31061
31062 /*-------------------------------------------------------------------------
31063 Send Suspend Request to HAL
31064 -------------------------------------------------------------------------*/
31065 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31066 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31067
31068 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31069 usSendSize, pWDICtx->pfncRspCB,
31070 pWDICtx->pReqStatusUserData,
31071 WDI_LPHB_CFG_RESP);
31072
31073 return wdiStatus;
31074}
31075
31076/**
31077 @brief WDI_LPHBConfReq -
31078 LPHB configuration request API
31079
31080 @param lphbconfParam : configuration parameter
31081 usrData : client context
31082 lphbCfgCb : callback function pointer
31083
31084 @see
31085 @return Success or fail status code
31086*/
31087WDI_Status WDI_LPHBConfReq(void *lphbconfParam,
31088 void *usrData, WDI_LphbCfgCb lphbCfgCb)
31089{
31090 WDI_EventInfoType wdiEventData;
31091
31092 /*------------------------------------------------------------------------
31093 Sanity Check
31094 ------------------------------------------------------------------------*/
31095 if (eWLAN_PAL_FALSE == gWDIInitialized)
31096 {
31097 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31098 "WDI API call before module is initialized - Fail request");
31099
31100 return WDI_STATUS_E_NOT_ALLOWED;
31101 }
31102
31103 /*------------------------------------------------------------------------
31104 Fill in Event data and post to the Main FSM
31105 ------------------------------------------------------------------------*/
31106 wdiEventData.wdiRequest = WDI_LPHB_CFG_REQ;
31107 wdiEventData.pEventData = lphbconfParam;
31108 wdiEventData.uEventDataSize = sizeof(WDI_LPHBReq);
31109 wdiEventData.pCBfnc = lphbCfgCb;
31110 wdiEventData.pUserData = usrData;
31111
31112 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31113}
31114#endif /* FEATURE_WLAN_LPHB */
31115
Ravi Joshid2ca7c42013-07-23 08:37:49 -070031116/**
31117 @brief WDI_ProcessIbssPeerInactivityInd
31118 Process peer inactivity indication coming from HAL
31119
31120 @param pWDICtx: pointer to the WLAN DAL context
31121 pEventData: pointer to the event information structure
31122 @see
31123 @return Result of the function call
31124*/
31125WDI_Status
31126WDI_ProcessIbssPeerInactivityInd
31127(
31128 WDI_ControlBlockType* pWDICtx,
31129 WDI_EventInfoType* pEventData
31130)
31131{
31132 WDI_LowLevelIndType wdiInd;
31133 tIbssPeerInactivityIndMsg halIbssIndMsg;
31134
31135 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31136
31137 /*-------------------------------------------------------------------------
31138 Sanity check
31139 -------------------------------------------------------------------------*/
31140 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31141 ( NULL == pEventData->pEventData ))
31142 {
31143 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31144 "%s: Invalid parameters", __func__);
31145 WDI_ASSERT( 0 );
31146 return WDI_STATUS_E_FAILURE;
31147 }
31148
31149 /*-------------------------------------------------------------------------
31150 Extract indication and send it to UMAC
31151 -------------------------------------------------------------------------*/
31152 wpalMemoryCopy( &halIbssIndMsg.ibssPeerInactivityIndParams,
31153 pEventData->pEventData,
31154 sizeof(halIbssIndMsg.ibssPeerInactivityIndParams) );
31155
31156 /*Fill in the indication parameters*/
31157 wdiInd.wdiIndicationType = WDI_IBSS_PEER_INACTIVITY_IND;
31158
31159 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.bssIdx
31160 = halIbssIndMsg.ibssPeerInactivityIndParams.bssIdx;
31161
31162 wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staIdx
31163 = halIbssIndMsg.ibssPeerInactivityIndParams.staIdx;
31164
31165 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiIbssPeerInactivityInd.staMacAddr,
31166 halIbssIndMsg.ibssPeerInactivityIndParams.staAddr,
31167 sizeof(tSirMacAddr));
31168
31169 /*Notify UMAC*/
31170 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31171
31172 return WDI_STATUS_SUCCESS;
31173
31174} /*WDI_ProcessIbssPeerInactivityInd*/
Rajeev79dbe4c2013-10-05 11:03:42 +053031175
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031176
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031177/**
31178*@brief WDI_RateUpdateInd will be called when the upper MAC
31179 requests the device to set rates.
Rajeev79dbe4c2013-10-05 11:03:42 +053031180
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031181
31182 @param wdiRateUpdateIndParams:
31183
31184
31185 @see
31186 @return Result of the function call
31187*/
31188WDI_Status
31189WDI_RateUpdateInd
31190(
31191 WDI_RateUpdateIndParams *wdiRateUpdateIndParams
31192)
31193{
31194 WDI_EventInfoType wdiEventData;
31195 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31196
31197 /*------------------------------------------------------------------------
31198 Sanity Check
31199 ------------------------------------------------------------------------*/
31200 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31201 {
31202 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31203 "WDI API call before module is initialized - Fail request");
31204
31205 return WDI_STATUS_E_NOT_ALLOWED;
31206 }
31207
31208 /*------------------------------------------------------------------------
31209 Fill in Event data and post to the Main FSM
31210 ------------------------------------------------------------------------*/
31211 wdiEventData.wdiRequest = WDI_RATE_UPDATE_IND;
31212 wdiEventData.pEventData = wdiRateUpdateIndParams;
31213 wdiEventData.uEventDataSize = sizeof(WDI_RateUpdateIndParams);
31214 wdiEventData.pCBfnc = NULL;
31215 wdiEventData.pUserData = NULL;
31216
31217 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31218
31219}/* WDI_RateUpdateInd */
31220
31221/**
31222 @brief Process Rate Update Indication and post it to HAL
31223
31224 @param pWDICtx: pointer to the WLAN DAL context
31225 pEventData: pointer to the event information structure
31226
31227 @see
31228 @return Result of the function call
31229*/
31230WDI_Status
31231WDI_ProcessRateUpdateInd
31232(
31233 WDI_ControlBlockType* pWDICtx,
31234 WDI_EventInfoType* pEventData
31235)
31236{
31237 wpt_uint8* pSendBuffer = NULL;
31238 wpt_uint16 usDataOffset = 0;
31239 wpt_uint16 usSendSize = 0;
31240 WDI_RateUpdateIndParams *pwdiRateUpdateInd = NULL;
31241 tHalRateUpdateInd *pRateUpdateInd;
31242 WDI_Status wdiStatus;
31243
31244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31245
31246 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31247 "%s", __func__);
31248
31249 /*-------------------------------------------------------------------------
31250 Sanity check
31251 -------------------------------------------------------------------------*/
31252 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31253 {
31254 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31255 "%s: Invalid parameters", __func__);
31256 WDI_ASSERT(0);
31257 return WDI_STATUS_E_FAILURE;
31258 }
31259 pwdiRateUpdateInd = (WDI_RateUpdateIndParams *)pEventData->pEventData;
31260 /*-----------------------------------------------------------------------
31261 Get message buffer
31262 -----------------------------------------------------------------------*/
31263
31264 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31265 WDI_RATE_UPDATE_IND,
31266 sizeof(tHalRateUpdateParams),
31267 &pSendBuffer, &usDataOffset, &usSendSize))||
31268 ( usSendSize < (usDataOffset +
31269 sizeof(tHalRateUpdateParams) )))
31270 {
31271 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31272 "Unable to get send buffer in Rate Update Indication %p ",
31273 pEventData);
31274 WDI_ASSERT(0);
31275 return WDI_STATUS_E_FAILURE;
31276 }
31277
31278 pRateUpdateInd = (tHalRateUpdateInd *)pSendBuffer;
31279
31280 /* Copy the bssid */
31281 wpalMemoryCopy(pRateUpdateInd->halRateUpdateParams.bssid,
31282 pwdiRateUpdateInd->bssid, WDI_MAC_ADDR_LEN);
31283
31284 /* Copy the tx flags */
31285 pRateUpdateInd->halRateUpdateParams.ucastDataRateTxFlag =
31286 pwdiRateUpdateInd->ucastDataRateTxFlag;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031287 pRateUpdateInd->halRateUpdateParams.rmcDataRateTxFlag =
31288 pwdiRateUpdateInd->rmcDataRateTxFlag;
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031289 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHzTxFlag =
31290 pwdiRateUpdateInd->mcastDataRate24GHzTxFlag;
31291 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHzTxFlag =
31292 pwdiRateUpdateInd->mcastDataRate5GHzTxFlag;
31293
31294 /* Copy the tx rates */
31295 pRateUpdateInd->halRateUpdateParams.ucastDataRate =
31296 pwdiRateUpdateInd->ucastDataRate;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031297 pRateUpdateInd->halRateUpdateParams.rmcDataRate =
31298 pwdiRateUpdateInd->rmcDataRate;
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031299 pRateUpdateInd->halRateUpdateParams.mcastDataRate24GHz =
31300 pwdiRateUpdateInd->mcastDataRate24GHz;
31301 pRateUpdateInd->halRateUpdateParams.mcastDataRate5GHz =
31302 pwdiRateUpdateInd->mcastDataRate5GHz;
31303
31304 /*-------------------------------------------------------------------------
31305 Send Rate Update Indication to HAL
31306 -------------------------------------------------------------------------*/
31307 pWDICtx->wdiReqStatusCB = pwdiRateUpdateInd->wdiReqStatusCB;
31308 pWDICtx->pReqStatusUserData = pwdiRateUpdateInd->pUserData;
31309
31310 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
31311
31312 return (wdiStatus != WDI_STATUS_SUCCESS) ?
31313 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
31314
31315} /* WDI_ProcessRateUpdateInd */
31316
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031317#ifdef WLAN_FEATURE_RMC
31318WDI_Status
31319WDI_ProcessRMCRulerResp
31320(
31321 WDI_ControlBlockType* pWDICtx,
31322 WDI_EventInfoType* pEventData
31323)
31324{
31325 tHalRmcRulerRspMsg halRmcRulerRspMsg;
31326 WDI_RmcRulerRspCb wdiRmcRulerRspCb;
31327 WDI_RmcRspParamsType wdiRmcRsp;
31328
31329 /* Sanity check */
31330 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31331 ( NULL == pEventData->pEventData ))
31332 {
31333 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31334 "%s: Invalid parameters", __func__);
31335 WDI_ASSERT( 0 );
31336 return WDI_STATUS_E_FAILURE;
31337 }
31338
31339 wdiRmcRulerRspCb = (WDI_RmcRulerRspCb)pWDICtx->pfncRspCB;
31340
31341 /* Extract indication and send it to UMAC */
31342 wpalMemoryCopy( &halRmcRulerRspMsg.rulerRspParams,
31343 pEventData->pEventData,
31344 sizeof(halRmcRulerRspMsg.rulerRspParams) );
31345
31346 wdiRmcRsp.status = halRmcRulerRspMsg.rulerRspParams.status;
31347 wpalMemoryCopy(wdiRmcRsp.mcastTransmitter,
31348 &halRmcRulerRspMsg.rulerRspParams.mcastTransmitter,
31349 sizeof(wdiRmcRsp.mcastTransmitter));
31350 wpalMemoryCopy(wdiRmcRsp.mcastGroup,
31351 &halRmcRulerRspMsg.rulerRspParams.mcastGroup,
31352 sizeof(wdiRmcRsp.mcastGroup));
31353
31354 switch (halRmcRulerRspMsg.rulerRspParams.cmd)
31355 {
31356 default:
31357 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31358 "%s: Invalid command %d", __func__,
31359 halRmcRulerRspMsg.rulerRspParams.cmd);
31360 return WDI_STATUS_E_FAILURE;
31361
31362 case WLAN_HAL_SUGGEST_RULER:
31363 {
31364 /* Fill in the indication parameters */
31365 wdiRmcRsp.cmd = eWDI_SUGGEST_RULER_CMD;
31366 wpalMemoryCopy(wdiRmcRsp.ruler,
31367 &halRmcRulerRspMsg.rulerRspParams.ruler,
31368 sizeof(halRmcRulerRspMsg.rulerRspParams.ruler));
31369 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31370 "%s Suggest_Ruler", __func__);
31371 break;
31372 }
31373
31374 case WLAN_HAL_BECOME_RULER:
31375 {
31376 /* Fill in the indication parameters */
31377 wdiRmcRsp.cmd = eWDI_BECOME_RULER_CMD;
31378 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31379 "%s Become_Ruler", __func__);
31380 break;
31381 }
31382 }
31383
31384 /* Notify UMAC */
31385 wdiRmcRulerRspCb(&wdiRmcRsp, pWDICtx->pRspCBUserData);
31386
31387 return WDI_STATUS_SUCCESS;
31388}
31389
31390WDI_Status
31391WDI_ProcessRMCUpdateIndToHost
31392(
31393 WDI_ControlBlockType* pWDICtx,
31394 WDI_EventInfoType* pEventData
31395)
31396{
31397 WDI_LowLevelIndType wdiInd;
31398 tHalRmcUpdateInd halRmcUpdateInd;
31399
31400 /* Sanity check */
31401 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31402 ( NULL == pEventData->pEventData ))
31403 {
31404 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31405 "%s: Invalid parameters", __func__);
31406 WDI_ASSERT( 0 );
31407 return WDI_STATUS_E_FAILURE;
31408 }
31409
31410 /* Extract indication and send it to UMAC */
31411 wpalMemoryCopy( &halRmcUpdateInd.rulerIndParams,
31412 pEventData->pEventData,
31413 sizeof(halRmcUpdateInd.rulerIndParams) );
31414
31415 switch (halRmcUpdateInd.rulerIndParams.indication)
31416 {
31417 default:
31418 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31419 "%s: Invalid command %d", __func__,
31420 halRmcUpdateInd.rulerIndParams.indication);
31421 return WDI_STATUS_E_FAILURE;
31422
31423 case WLAN_HAL_RULER_PICK_NEW:
31424 {
31425 /* Fill in the indication parameters */
31426 wdiInd.wdiIndicationType = WDI_RMC_RULER_PICK_NEW;
31427 wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.indication
31428 = halRmcUpdateInd.rulerIndParams.indication;
31429 wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.role
31430 = halRmcUpdateInd.rulerIndParams.role;
31431 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd. \
31432 mcastTransmitter,
31433 &halRmcUpdateInd.rulerIndParams.mcastTransmitter,
31434 sizeof(tSirMacAddr) );
31435 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.mcastGroup,
31436 &halRmcUpdateInd.rulerIndParams.mcastGroup,
31437 sizeof(tSirMacAddr) );
31438 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.mcastRuler,
31439 &halRmcUpdateInd.rulerIndParams.mcastRuler,
31440 sizeof(tSirMacAddr) );
31441 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRmcPickNewRulerInd.ruler,
31442 &halRmcUpdateInd.rulerIndParams.ruler,
31443 sizeof(tSirMacAddr) * HAL_NUM_MAX_RULERS );
31444 break;
31445 }
31446 }
31447
31448
31449 /* Notify UMAC */
31450 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
31451
31452 return WDI_STATUS_SUCCESS;
31453}
31454
31455WDI_Status
31456WDI_RmcRulerReq
31457(
31458 WDI_RmcRulerReqParams *wdiRmcRulerReqParams,
31459 WDI_RmcRulerRspCb wdiRmcRulerRspCb,
31460 void *usrData
31461)
31462{
31463 WDI_EventInfoType wdiEventData;
31464 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31465
31466 /*------------------------------------------------------------------------
31467 Sanity Check
31468 ------------------------------------------------------------------------*/
31469 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31470 {
31471 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31472 "WDI API call before module is initialized - Fail request");
31473
31474 return WDI_STATUS_E_NOT_ALLOWED;
31475 }
31476
31477 /*------------------------------------------------------------------------
31478 Fill in Event data and post to the Main FSM
31479 ------------------------------------------------------------------------*/
31480 wdiEventData.wdiRequest = WDI_RMC_RULER_REQ;
31481 wdiEventData.pEventData = wdiRmcRulerReqParams;
31482 wdiEventData.uEventDataSize = sizeof(WDI_RmcRulerReqParams);
31483 wdiEventData.pCBfnc = wdiRmcRulerRspCb;
31484 wdiEventData.pUserData = usrData;
31485
31486 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31487
31488} /* WDI_RmcRulerReq */
31489
31490WDI_Status
31491WDI_RmcUpdateInd
31492(
31493 WDI_RmcUpdateIndParams *wdiRmcUpdateIndParams
31494)
31495{
31496 WDI_EventInfoType wdiEventData;
31497 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31498
31499 /*------------------------------------------------------------------------
31500 Sanity Check
31501 ------------------------------------------------------------------------*/
31502 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31503 {
31504 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31505 "WDI API call before module is initialized - Fail request");
31506
31507 return WDI_STATUS_E_NOT_ALLOWED;
31508 }
31509
31510 /*------------------------------------------------------------------------
31511 Fill in Event data and post to the Main FSM
31512 ------------------------------------------------------------------------*/
31513 wdiEventData.wdiRequest = WDI_RMC_UPDATE_IND;
31514 wdiEventData.pEventData = wdiRmcUpdateIndParams;
31515 wdiEventData.uEventDataSize = sizeof(WDI_RmcUpdateIndParams);
31516 wdiEventData.pCBfnc = NULL;
31517 wdiEventData.pUserData = NULL;
31518
31519 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31520
31521}/* WDI_RmcUpdateInd */
31522
31523WDI_Status
31524WDI_ProcessRMCRulerReq
31525(
31526 WDI_ControlBlockType* pWDICtx,
31527 WDI_EventInfoType* pEventData
31528)
31529{
31530 WDI_Status wdiStatus;
31531 wpt_uint8* pSendBuffer = NULL;
31532 wpt_uint16 usDataOffset = 0;
31533 wpt_uint16 usSendSize = 0;
31534 WDI_RmcRulerReqParams *pwdiRulerReq = NULL;
31535 tHalRmcRulerReqMsg *pRulerReq;
31536
31537 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31538
31539 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31540 "%s", __func__);
31541
31542 /*-------------------------------------------------------------------------
31543 Sanity check
31544 -------------------------------------------------------------------------*/
31545 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31546 {
31547 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31548 "%s: Invalid parameters", __func__);
31549 WDI_ASSERT(0);
31550 return WDI_STATUS_E_FAILURE;
31551 }
31552 pwdiRulerReq = (WDI_RmcRulerReqParams *)pEventData->pEventData;
31553 /*-----------------------------------------------------------------------
31554 Get message buffer
31555 -----------------------------------------------------------------------*/
31556
31557 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31558 WDI_RMC_RULER_REQ,
31559 sizeof(tHalRmcRulerReqParams),
31560 &pSendBuffer, &usDataOffset, &usSendSize))||
31561 ( usSendSize < (usDataOffset +
31562 sizeof(tHalRmcRulerReqParams) )))
31563 {
31564 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31565 "Unable to get send buffer in Ruler Req %p ",
31566 pEventData);
31567 WDI_ASSERT(0);
31568 return WDI_STATUS_E_FAILURE;
31569 }
31570
31571 pRulerReq = (tHalRmcRulerReqMsg *)pSendBuffer;
31572 pRulerReq->rulerReqParams.cmd = pwdiRulerReq->cmd;
31573 wpalMemoryCopy(pRulerReq->rulerReqParams.mcastTransmitter,
31574 pwdiRulerReq->mcastTransmitter, WDI_MAC_ADDR_LEN);
31575 wpalMemoryCopy(pRulerReq->rulerReqParams.mcastGroup,
31576 pwdiRulerReq->mcastGroup, WDI_MAC_ADDR_LEN);
31577 wpalMemoryCopy(pRulerReq->rulerReqParams.blacklist,
31578 pwdiRulerReq->blacklist,
31579 WDI_MAC_ADDR_LEN * HAL_NUM_MAX_RULERS);
31580
31581 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31582 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31583
31584 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31585 usSendSize, pWDICtx->pfncRspCB,
31586 pWDICtx->pReqStatusUserData,
31587 WDI_RMC_RULER_RESP);
31588 return wdiStatus;
31589
31590} /* WDI_ProcessRMCRulerReq */
31591
31592/**
31593 @brief Process Update Indication and post it to HAL
31594
31595 @param pWDICtx: pointer to the WLAN DAL context
31596 pEventData: pointer to the event information structure
31597
31598 @see
31599 @return Result of the function call
31600*/
31601WDI_Status
31602WDI_ProcessRMCUpdateInd
31603(
31604 WDI_ControlBlockType* pWDICtx,
31605 WDI_EventInfoType* pEventData
31606)
31607{
31608 wpt_uint8* pSendBuffer = NULL;
31609 wpt_uint16 usDataOffset = 0;
31610 wpt_uint16 usSendSize = 0;
31611 WDI_RmcUpdateIndParams *pwdiUpdateInd = NULL;
31612 tHalRmcUpdateInd *pUpdateInd;
31613 WDI_Status wdiStatus;
31614
31615 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31616
31617 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31618 "%s", __func__);
31619
31620 /*-------------------------------------------------------------------------
31621 Sanity check
31622 -------------------------------------------------------------------------*/
31623 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31624 {
31625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31626 "%s: Invalid parameters", __func__);
31627 WDI_ASSERT(0);
31628 return WDI_STATUS_E_FAILURE;
31629 }
31630 pwdiUpdateInd = (WDI_RmcUpdateIndParams *)pEventData->pEventData;
31631 /*-----------------------------------------------------------------------
31632 Get message buffer
31633 -----------------------------------------------------------------------*/
31634
31635 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31636 WDI_RMC_UPDATE_IND,
31637 sizeof(tHalRmcUpdateIndParams),
31638 &pSendBuffer, &usDataOffset, &usSendSize))||
31639 ( usSendSize < (usDataOffset +
31640 sizeof(tHalRmcUpdateIndParams) )))
31641 {
31642 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31643 "Unable to get send buffer in RMC Update Indication %p ",
31644 pEventData);
31645 WDI_ASSERT(0);
31646 return WDI_STATUS_E_FAILURE;
31647 }
31648
31649 pUpdateInd = (tHalRmcUpdateInd *)pSendBuffer;
31650
31651 pUpdateInd->rulerIndParams.indication = pwdiUpdateInd->indication;
31652 pUpdateInd->rulerIndParams.role = pwdiUpdateInd->role;
31653
31654 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastTransmitter,
31655 pwdiUpdateInd->mcastTransmitter, WDI_MAC_ADDR_LEN);
31656 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastGroup,
31657 pwdiUpdateInd->mcastGroup, WDI_MAC_ADDR_LEN);
31658 wpalMemoryCopy(pUpdateInd->rulerIndParams.mcastRuler,
31659 pwdiUpdateInd->mcastRuler, WDI_MAC_ADDR_LEN);
31660 /* Zero out parameters not needed for this command */
31661 wpalMemoryZero(pUpdateInd->rulerIndParams.ruler,
31662 WDI_MAC_ADDR_LEN * HAL_NUM_MAX_RULERS);
31663
31664
31665 /*-------------------------------------------------------------------------
31666 Send Update Indication to HAL
31667 -------------------------------------------------------------------------*/
31668 pWDICtx->wdiReqStatusCB = pwdiUpdateInd->wdiReqStatusCB;
31669 pWDICtx->pReqStatusUserData = pwdiUpdateInd->pUserData;
31670
31671 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
31672
31673 return (wdiStatus != WDI_STATUS_SUCCESS) ?
31674 wdiStatus : WDI_STATUS_SUCCESS_SYNC;
31675
31676} /* WDI_ProcessRMCUpdateInd */
31677
31678/**
31679 @brief Process peer info req
31680
31681 @param pWDICtx: pointer to the WLAN DAL context
31682 pEventData: pointer to the event information structure
31683
31684 @see
31685 @return Result of the function call
31686*/
31687WDI_Status
31688WDI_IbssPeerInfoReq
31689(
31690 WDI_IbssPeerInfoReqType* wdiPeerInfoReqParams,
31691 WDI_IbssPeerInfoReqCb wdiIbssPeerInfoReqCb,
31692 void* pUserData
31693)
31694{
31695
31696 WDI_EventInfoType wdiEventData;
31697
31698 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31699 /*------------------------------------------------------------------------
31700 Sanity Check
31701 ------------------------------------------------------------------------*/
31702 if ( eWLAN_PAL_FALSE == gWDIInitialized )
31703 {
31704 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31705 "WDI API call before module is initialized - Fail request");
31706
31707 return WDI_STATUS_E_NOT_ALLOWED;
31708 }
31709
31710 /*------------------------------------------------------------------------
31711 Fill in Event data and post to the Main FSM
31712 ------------------------------------------------------------------------*/
31713 wdiEventData.wdiRequest = WDI_HAL_IBSS_PEER_INFO_REQ;
31714 wdiEventData.pEventData = wdiPeerInfoReqParams;
31715 wdiEventData.uEventDataSize = sizeof(WDI_IbssPeerInfoReqType);
31716 wdiEventData.pCBfnc = wdiIbssPeerInfoReqCb;
31717 wdiEventData.pUserData = pUserData;
31718
31719 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
31720}
31721
31722/**
31723 @brief Process peer info req
31724
31725 @param pWDICtx: pointer to the WLAN DAL context
31726 pEventData: pointer to the event information structure
31727
31728 @see
31729 @return Result of the function call
31730*/
31731WDI_Status
31732WDI_ProcessIbssPeerInfoReq
31733(
31734 WDI_ControlBlockType* pWDICtx,
31735 WDI_EventInfoType* pEventData
31736)
31737{
31738 WDI_Status wdiStatus;
31739 wpt_uint8* pSendBuffer = NULL;
31740 wpt_uint16 usDataOffset = 0;
31741 wpt_uint16 usSendSize = 0;
31742 WDI_IbssPeerInfoReqType *pwdiInfoReq = NULL;
31743 tHalIbssPeerInfoReq *pPeerInfoReq;
31744 WDI_StaStruct* pSTATable = (WDI_StaStruct*) pWDICtx->staTable;
31745
31746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31747
31748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31749 "%s", __func__);
31750
31751 /*-------------------------------------------------------------------------
31752 Sanity check
31753 -------------------------------------------------------------------------*/
31754 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31755 {
31756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31757 "%s: Invalid parameters", __func__);
31758 WDI_ASSERT(0);
31759 return WDI_STATUS_E_FAILURE;
31760 }
31761 pwdiInfoReq = (WDI_IbssPeerInfoReqType *)pEventData->pEventData;
31762 /*-----------------------------------------------------------------------
31763 Get message buffer
31764 -----------------------------------------------------------------------*/
31765
31766 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31767 WDI_HAL_IBSS_PEER_INFO_REQ,
31768 sizeof(tHalIbssPeerInfoReqParams),
31769 &pSendBuffer, &usDataOffset, &usSendSize))||
31770 ( usSendSize < (usDataOffset +
31771 sizeof(tHalIbssPeerInfoReqParams) )))
31772 {
31773 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31774 "Unable to get send buffer in IBSS Peer Info Req %p ",
31775 pEventData);
31776 WDI_ASSERT(0);
31777 return WDI_STATUS_E_FAILURE;
31778 }
31779
31780 pPeerInfoReq = (tHalIbssPeerInfoReq *)pSendBuffer;
31781 if (VOS_FALSE == pwdiInfoReq->wdiAllPeerInfoReqd)
31782 {
31783 if (pSTATable[pwdiInfoReq->wdiStaIdx].valid)
31784 {
31785 pPeerInfoReq->ibssPeerInfoReqParams.bssIdx =
31786 pSTATable[pwdiInfoReq->wdiStaIdx].bssIdx;
31787 }
31788 else
31789 {
31790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31791 "Unable to find BSSIDX for STAIDX %d ",
31792 pwdiInfoReq->wdiStaIdx);
31793 return WDI_STATUS_E_FAILURE;
31794 }
31795 }
31796 else
31797 pPeerInfoReq->ibssPeerInfoReqParams.bssIdx = 0;
31798
31799 pPeerInfoReq->ibssPeerInfoReqParams.staIdx = pwdiInfoReq->wdiStaIdx;
31800 pPeerInfoReq->ibssPeerInfoReqParams.allPeerInfoReqd = pwdiInfoReq->wdiAllPeerInfoReqd;
31801
31802 pWDICtx->pReqStatusUserData = pEventData->pUserData;
31803 pWDICtx->pfncRspCB = pEventData->pCBfnc;
31804
31805 /*-------------------------------------------------------------------------
31806 Send IBSS Peer Info request to HAL
31807 -------------------------------------------------------------------------*/
31808 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
31809 usSendSize, pWDICtx->pfncRspCB,
31810 pWDICtx->pReqStatusUserData,
31811 WDI_HAL_IBSS_PEER_INFO_RSP);
31812 return wdiStatus;
31813}
31814
31815/**
31816 @brief Process peer info resp
31817
31818 @param pWDICtx: pointer to the WLAN DAL context
31819 pEventData: pointer to the event information structure
31820
31821 @see
31822 @return Result of the function call
31823*/
31824WDI_Status
31825WDI_ProcessIbssPeerInfoRsp
31826(
31827 WDI_ControlBlockType* pWDICtx,
31828 WDI_EventInfoType* pEventData
31829)
31830{
31831 WDI_IbssPeerInfoReqCb wdiPeerInfoCb = NULL;
31832 tHalIbssPeerParams *pHalPeerInfoParams;
31833 WDI_IbssPeerInfoRspParams wdiPeerInfoRspParams;
31834 wpt_uint32 allocSize=0;
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031835 WDI_IbssPeerInfoParams *pPeerInfoParams = NULL;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031836 wpt_uint8 wdiCount=0;
31837
31838 /*-------------------------------------------------------------------------
31839 Sanity check
31840 -------------------------------------------------------------------------*/
31841 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
31842 ( NULL == pEventData->pEventData))
31843 {
31844 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
31845 "%s: Invalid parameters", __func__);
31846 WDI_ASSERT(0);
31847 return WDI_STATUS_E_FAILURE;
31848 }
31849
31850 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31851
31852 wdiPeerInfoCb = (WDI_IbssPeerInfoReqCb)pWDICtx->pfncRspCB;
31853
31854 /*-------------------------------------------------------------------------
31855 Extract response and send it to UMAC
31856 -------------------------------------------------------------------------*/
31857 pHalPeerInfoParams =
31858 ((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->ibssPeerParams;
31859 wdiPeerInfoRspParams.wdiStatus =
31860 WDI_HAL_2_WDI_STATUS(((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->status);
31861 wdiPeerInfoRspParams.wdiNumPeers =
31862 ((tHalIbssPeerInfoRspParams *)pEventData->pEventData)->numOfPeers;
31863
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031864 if (!wdiPeerInfoRspParams.wdiNumPeers) {
31865 wdiPeerInfoRspParams.wdiPeerInfoParams = NULL;
31866 goto error;
31867 }
31868 if (wdiPeerInfoRspParams.wdiNumPeers >=
31869 WDI_MAX_IBSS_PEER_SUPPORED_STAS) {
31870 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31871 "Number of stations %d exceed max supported stations %d set max",
31872 wdiPeerInfoRspParams.wdiNumPeers,
31873 WDI_MAX_IBSS_PEER_SUPPORED_STAS);
31874 wdiPeerInfoRspParams.wdiNumPeers =
31875 WDI_MAX_IBSS_PEER_SUPPORED_STAS - 1;
31876 }
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031877 /* Size of peer info data received from DAL */
31878 allocSize = (sizeof(WDI_IbssPeerInfoParams) * (wdiPeerInfoRspParams.wdiNumPeers));
31879
31880 pPeerInfoParams = (WDI_IbssPeerInfoParams*)wpalMemoryAllocate(allocSize);
31881
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031882 if (NULL == pPeerInfoParams)
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031883 {
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031884 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
31885 "Failed to allocate memory in ibss peer info response %p %p %p ",
31886 pWDICtx, pEventData, pEventData->pEventData);
31887 wdiPeerInfoRspParams.wdiPeerInfoParams = NULL;
31888 goto error;
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031889 }
31890
31891 for (wdiCount = 0; wdiCount < wdiPeerInfoRspParams.wdiNumPeers; wdiCount++)
31892 {
31893 tHalIbssPeerParams *pHalTemp = &pHalPeerInfoParams[wdiCount];
31894 WDI_IbssPeerInfoParams *pWdiTemp = &pPeerInfoParams[wdiCount];
31895 pWdiTemp->wdiStaIdx = pHalTemp->staIdx;
31896 pWdiTemp->wdiRssi = pHalTemp->rssi;
31897 pWdiTemp->wdiMcsIndex = pHalTemp->mcsIndex;
31898 pWdiTemp->wdiTxRate = pHalTemp->txRate;
31899 pWdiTemp->wdiTxRateFlags = pHalTemp->txRateFlags;
31900 }
31901
31902 wdiPeerInfoRspParams.wdiPeerInfoParams = pPeerInfoParams;
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031903error:
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031904 /*Notify UMAC*/
31905 if (wdiPeerInfoCb)
31906 {
31907 wdiPeerInfoCb(&wdiPeerInfoRspParams, pWDICtx->pRspCBUserData);
31908 }
31909
31910 /* Free the allocation */
Abhishek Singhad6dc9b2016-02-05 12:46:36 +053031911 if(pPeerInfoParams)
31912 vos_mem_free (pPeerInfoParams);
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031913
31914 return WDI_STATUS_SUCCESS;
31915}
31916#endif
Chittajit Mitraf5413a42013-10-18 14:20:08 -070031917#ifdef FEATURE_WLAN_BATCH_SCAN
Abhishek Singh7cd040e2016-01-07 10:51:04 +053031918
Rajeev79dbe4c2013-10-05 11:03:42 +053031919/**
31920 @brief Process stop batch indication from WDA
31921
31922 @param pWDICtx: pointer to the WLAN DAL context
31923 pEventData: pointer to the event information structure
31924
31925 @see
31926 @return Result of the function call
31927*/
31928WDI_Status
31929WDI_ProcessStopBatchScanInd
31930(
31931 WDI_ControlBlockType* pWDICtx,
31932 WDI_EventInfoType* pEventData
31933)
31934{
31935 wpt_uint8* pSendBuffer = NULL;
31936 wpt_uint16 usDataOffset = 0;
31937 wpt_uint16 usSendSize = 0;
31938 WDI_Status wdiStatus;
31939 tHalBatchScanStopIndParam *pHalInd = NULL;
31940 WDI_StopBatchScanIndType *pWdiInd = NULL;
31941
31942
31943 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
31944
31945 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
31946 "%s", __func__);
31947
31948 /*-------------------------------------------------------------------------
31949 Sanity check
31950 -------------------------------------------------------------------------*/
31951
31952 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
31953 {
31954 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31955 "%s: Invalid parameters", __func__);
31956 WDI_ASSERT(0);
31957 return WDI_STATUS_E_FAILURE;
31958 }
31959 pWdiInd = (WDI_StopBatchScanIndType *)pEventData->pEventData;
31960 /*-----------------------------------------------------------------------
31961 Get message buffer
31962 -----------------------------------------------------------------------*/
31963
31964 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
31965 WDI_STOP_BATCH_SCAN_IND,
31966 sizeof(tHalBatchScanStopIndParam),
31967 &pSendBuffer, &usDataOffset, &usSendSize))||
31968 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanStopIndParam))))
31969 {
31970 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
31971 "Unable to get send buffer in stop batch scan ind %p ",
31972 pEventData);
31973 WDI_ASSERT(0);
31974 return WDI_STATUS_E_FAILURE;
31975 }
31976
31977 pHalInd = (tHalBatchScanStopIndParam *)(pSendBuffer + usDataOffset);
31978 pHalInd->param = pWdiInd->param;
31979
31980 pWDICtx->pReqStatusUserData = NULL;
31981 pWDICtx->pfncRspCB = NULL;
31982 /*-------------------------------------------------------------------------
31983 Send Stop batch scan indication to HAL
31984 -------------------------------------------------------------------------*/
31985 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
31986 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
31987}
31988
31989/**
31990 @brief This API is called to trigger batch scan results from FW
31991
31992 @param pWDICtx: pointer to the WLAN DAL context
31993 pEventData: pointer to the event information structure
31994
31995 @see
31996 @return Result of the function call
31997*/
31998WDI_Status
31999WDI_ProcessTriggerBatchScanResultInd
32000(
32001 WDI_ControlBlockType* pWDICtx,
32002 WDI_EventInfoType* pEventData
32003)
32004{
32005 WDI_Status wdiStatus;
32006 wpt_uint8* pSendBuffer = NULL;
32007 wpt_uint16 usDataOffset = 0;
32008 wpt_uint16 usSendSize = 0;
32009 tHalBatchScanTriggerResultParam *pHalInd = NULL;
32010 WDI_TriggerBatchScanResultIndType *pWdiInd = NULL;
32011
32012
32013 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32014
32015 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32016 "%s", __func__);
32017
32018 /*-------------------------------------------------------------------------
32019 Sanity check
32020 -------------------------------------------------------------------------*/
32021
32022 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32023 {
32024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32025 "%s: Invalid parameters", __func__);
32026 WDI_ASSERT(0);
32027 return WDI_STATUS_E_FAILURE;
32028 }
32029 pWdiInd = (WDI_TriggerBatchScanResultIndType *)pEventData->pEventData;
32030 /*-----------------------------------------------------------------------
32031 Get message buffer
32032 -----------------------------------------------------------------------*/
32033
32034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32035 WDI_TRIGGER_BATCH_SCAN_RESULT_IND,
32036 sizeof(tHalBatchScanTriggerResultParam),
32037 &pSendBuffer, &usDataOffset, &usSendSize))||
32038 ( usSendSize < (usDataOffset + sizeof(tHalBatchScanTriggerResultParam))))
32039 {
32040 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32041 "Unable to get send buffer in stop batch scan ind %p ",
32042 pEventData);
32043 WDI_ASSERT(0);
32044 return WDI_STATUS_E_FAILURE;
32045 }
32046
32047 pHalInd = (tHalBatchScanTriggerResultParam *)(pSendBuffer + usDataOffset);
32048 pHalInd->param = pWdiInd->param;
32049
32050 pWDICtx->pReqStatusUserData = NULL;
32051 pWDICtx->pfncRspCB = NULL;
32052 /*-------------------------------------------------------------------------
32053 Send trigger batch scan result indication to HAL
32054 -------------------------------------------------------------------------*/
32055 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32056 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32057}
32058
32059
32060/**
32061 @brief Process set batch scan response from FW
32062
32063 @param pWDICtx: pointer to the WLAN DAL context
32064 pEventData: pointer to the event information structure
32065
32066 @see
32067 @return Result of the function call
32068*/
32069WDI_Status
32070WDI_ProcessSetBatchScanRsp
32071(
32072 WDI_ControlBlockType* pWDICtx,
32073 WDI_EventInfoType* pEventData
32074)
32075{
32076 WDI_SetBatchScanCb wdiSetBatchScanCb;
32077 WDI_SetBatchScanRspType *pSetBatchScanRsp;
32078
32079 tHalBatchScanSetRspParam *pHalSetBatchScanRsp;
32080 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32081
32082 /*sanity check*/
32083 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32084 ( NULL == pEventData->pEventData))
32085 {
32086 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32087 "%s: Invalid parameters", __func__);
32088 WDI_ASSERT(0);
32089 return WDI_STATUS_E_FAILURE;
32090 }
32091
32092 wdiSetBatchScanCb = (WDI_SetBatchScanCb)pWDICtx->pfncRspCB;
32093 if ( NULL == wdiSetBatchScanCb)
32094 {
32095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32096 "%s: call back function is NULL", __func__);
32097 WDI_ASSERT(0);
32098 return WDI_STATUS_E_FAILURE;
32099 }
32100
32101 pSetBatchScanRsp = wpalMemoryAllocate(sizeof(WDI_SetBatchScanRspType));
32102
32103 if (NULL == pSetBatchScanRsp)
32104 {
32105 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
Jeff Johnsonbf6c4892013-11-03 19:27:59 -080032106 "Failed to allocate memory in set batch scan response %p %p %p ",
Rajeev79dbe4c2013-10-05 11:03:42 +053032107 pWDICtx, pEventData, pEventData->pEventData);
32108 WDI_ASSERT(0);
32109 return WDI_STATUS_E_FAILURE;
32110 }
32111
Sunil Duttbd736ed2014-05-26 21:19:41 +053032112 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032113 pHalSetBatchScanRsp = (tHalBatchScanSetRspParam *)pEventData->pEventData;
32114
32115 pSetBatchScanRsp->nScansToBatch = pHalSetBatchScanRsp->supportedMscan;
32116
Sunil Duttbd736ed2014-05-26 21:19:41 +053032117 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032118 wdiSetBatchScanCb(pSetBatchScanRsp, pWDICtx->pRspCBUserData);
32119
32120 wpalMemoryFree(pSetBatchScanRsp);
32121
32122 return WDI_STATUS_SUCCESS;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032123}/* WDI_ProcessSetBatchScanRsp */
Rajeev79dbe4c2013-10-05 11:03:42 +053032124
32125/**
32126 @brief Process batch scan result indication from FW
32127
32128 @param pWDICtx: pointer to the WLAN DAL context
32129 pEventData: pointer to the event information structure
32130
32131 @see
32132 @return Result of the function call
32133*/
32134WDI_Status
32135WDI_ProcessBatchScanResultInd
32136(
32137 WDI_ControlBlockType* pWDICtx,
32138 WDI_EventInfoType* pEventData
32139)
32140{
32141 void *pBatchScanResultInd;
32142 WDI_LowLevelIndType wdiInd;
32143 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32144
Sunil Duttbd736ed2014-05-26 21:19:41 +053032145 /* sanity check */
Rajeev79dbe4c2013-10-05 11:03:42 +053032146 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32147 ( NULL == pEventData->pEventData))
32148 {
32149 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32150 "%s: Invalid parameters", __func__);
32151 WDI_ASSERT(0);
32152 return WDI_STATUS_E_FAILURE;
32153 }
32154
Sunil Duttbd736ed2014-05-26 21:19:41 +053032155 /* extract response and send it to UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032156 pBatchScanResultInd = (void *)pEventData->pEventData;
32157
Sunil Duttbd736ed2014-05-26 21:19:41 +053032158 /* Fill in the indication parameters */
Rajeev79dbe4c2013-10-05 11:03:42 +053032159 wdiInd.wdiIndicationType = WDI_BATCH_SCAN_RESULT_IND;
32160
32161 wdiInd.wdiIndicationData.pBatchScanResult = pBatchScanResultInd;
32162
Sunil Duttbd736ed2014-05-26 21:19:41 +053032163 /* Notify UMAC */
Rajeev79dbe4c2013-10-05 11:03:42 +053032164 if (pWDICtx->wdiLowLevelIndCB)
32165 {
32166 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32167 }
32168 else
32169 {
32170 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32171 "%s: WDILowLevelIndCb is null", __func__);
32172 WDI_ASSERT(0);
32173 return WDI_STATUS_E_FAILURE;
32174 }
32175
32176 return WDI_STATUS_SUCCESS;
32177} /*End of WDI_ProcessBatchScanResultInd*/
32178
Sunil Duttbd736ed2014-05-26 21:19:41 +053032179#ifdef WLAN_FEATURE_LINK_LAYER_STATS
32180/**
32181 @brief Process Link Layer Statistics Result indication from FW
32182
32183 @param pWDICtx: pointer to the WLAN DAL context
32184 pEventData: pointer to the event information structure
32185
32186 @see
32187 @return Result of the function call
32188*/
32189WDI_Status
32190WDI_ProcessLinkLayerStatsResultsInd
32191(
32192 WDI_ControlBlockType* pWDICtx,
32193 WDI_EventInfoType* pEventData
32194)
32195{
32196 void *pLinkLayerStatsInd;
Dino Mycled3d50022014-07-07 12:58:25 +053032197 WDI_LLstatsResultsType *halLLStatsResults;
32198 wpt_macAddr macAddr;
Sunil Duttbd736ed2014-05-26 21:19:41 +053032199 WDI_LowLevelIndType wdiInd;
32200 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32201
32202 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32203 "%s: Event RESULTS Indication", __func__);
32204
32205 /* sanity check */
32206 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32207 ( NULL == pEventData->pEventData))
32208 {
32209 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32210 "%s: Invalid parameters", __func__);
32211 WDI_ASSERT(0);
32212 return WDI_STATUS_E_FAILURE;
32213 }
32214
32215 /* extract response and send it to UMAC */
32216 pLinkLayerStatsInd = (void *)pEventData->pEventData;
32217
32218 /* Fill in the indication parameters */
32219 wdiInd.wdiIndicationType = WDI_LL_STATS_RESULTS_IND;
32220
Dino Mycled3d50022014-07-07 12:58:25 +053032221 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.pLinkLayerStatsResults
32222 = pLinkLayerStatsInd;
32223
32224 halLLStatsResults = (WDI_LLstatsResultsType *) pLinkLayerStatsInd;
32225
32226
32227 /* Need to fill in the MAC address */
32228 if ( WDI_STATUS_SUCCESS !=
32229 WDI_STATableGetStaMacAddr(pWDICtx,
32230 halLLStatsResults->iface_id,
32231 &macAddr))
32232 {
32233 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
32234 " ifaceId: %u does not exist in the WDI Station Table",
32235 halLLStatsResults->iface_id);
32236
32237 return WDI_STATUS_E_FAILURE;
32238 }
32239 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr,
32240 macAddr, WDI_MAC_ADDR_LEN);
32241
32242 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32243 "ifaceId: %u, macAddr: %pM \n", halLLStatsResults->iface_id,
32244 wdiInd.wdiIndicationData.wdiLinkLayerStatsResults.macAddr);
Sunil Duttbd736ed2014-05-26 21:19:41 +053032245
32246 /* Notify UMAC */
32247 if (pWDICtx->wdiLowLevelIndCB)
32248 {
32249 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32250 }
32251 else
32252 {
32253 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
32254 "%s: WDILowLevelIndCb is null", __func__);
32255 WDI_ASSERT(0);
32256 return WDI_STATUS_E_FAILURE;
32257 }
32258
32259 return WDI_STATUS_SUCCESS;
32260} /* End of WDI_ProcessLinkLayerStatsResultsInd */
32261#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
32262
Rajeev79dbe4c2013-10-05 11:03:42 +053032263/**
32264 @brief WDI_ProcessSetBatchScanReq -
32265 Set batch scan request to FW
32266
32267 @param pWDICtx : wdi context
32268 pEventData : indication data
32269
32270 @see
32271 @return none
32272*/
32273WDI_Status WDI_ProcessSetBatchScanReq
32274(
32275 WDI_ControlBlockType* pWDICtx,
32276 WDI_EventInfoType* pEventData
32277)
32278{
32279 WDI_SetBatchScanReqType *pWdiReq;
32280 WDI_Status wdiStatus;
32281 wpt_uint8* pSendBuffer = NULL;
32282 wpt_uint16 usDataOffset = 0;
32283 wpt_uint16 usSendSize = 0;
32284 tHalBatchScanSetParams *pHalReq;
32285 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32286
32287 /*sanity check*/
32288 if ((NULL == pEventData) || (NULL == pEventData->pEventData))
32289 {
32290 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32291 "%s: Invalid parameters in set batch scan request", __func__);
32292 WDI_ASSERT(0);
32293 return WDI_STATUS_E_FAILURE;
32294 }
32295
32296
32297 pWdiReq = (WDI_SetBatchScanReqType *)pEventData->pEventData;
32298
32299
32300 /*get message buffer*/
32301 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
32302 WDI_SET_BATCH_SCAN_REQ,
32303 sizeof(tHalBatchScanSetParams),
32304 &pSendBuffer, &usDataOffset, &usSendSize))||
32305 (usSendSize < (usDataOffset + sizeof(tHalBatchScanSetParams))))
32306 {
32307 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32308 "Unable to get send buffer for SET_BATCH_SCAN_REQ ");
32309 WDI_ASSERT(0);
32310 return WDI_STATUS_E_FAILURE;
32311 }
32312
32313 pHalReq = (tHalBatchScanSetParams *)(pSendBuffer + usDataOffset);
32314
32315 pHalReq->rtt = pWdiReq->rtt;
32316 pHalReq->rfBand = pWdiReq->rfBand;
32317 pHalReq->bestNetworks = pWdiReq->bestNetwork;
32318 pHalReq->scanInterval = pWdiReq->scanFrequency;
32319 pHalReq->numScan2Batch = pWdiReq->numberOfScansToBatch;
32320
32321 /*send set batch scan request to fw*/
32322 pWDICtx->pfncRspCB = pEventData->pCBfnc;
32323 pWDICtx->pReqStatusUserData = pEventData->pUserData;
32324
32325 wdiStatus = WDI_SendMsg(pWDICtx, pSendBuffer,
32326 usSendSize, pWDICtx->pfncRspCB,
32327 pWDICtx->pReqStatusUserData,
32328 WDI_SET_BATCH_SCAN_RESP);
32329
32330 return wdiStatus;
32331}
32332
32333/**
32334 @brief WDI_SetBatchScanReq
32335 This API is called to set batch scan request in FW
32336
32337 @param pBatchScanReqParam : pointer to set batch scan re param
32338 usrData : Client context
32339 setBatchScanRspCb : set batch scan resp callback
32340 @see
32341 @return SUCCESS or FAIL
32342*/
32343WDI_Status WDI_SetBatchScanReq
32344(
32345 void *pBatchScanReqParam,
32346 void *usrData,
32347 WDI_SetBatchScanCb setBatchScanRspCb
32348)
32349{
32350 WDI_EventInfoType wdiEventData;
32351
32352 /*sanity check*/
32353 if (eWLAN_PAL_FALSE == gWDIInitialized)
32354 {
32355 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32356 "WDI API call before module is initialized - Fail request");
32357
32358 return WDI_STATUS_E_NOT_ALLOWED;
32359 }
32360
32361 /* fill in event data and post to the main FSM */
32362 wdiEventData.wdiRequest = WDI_SET_BATCH_SCAN_REQ;
32363 wdiEventData.pEventData = pBatchScanReqParam;
32364 wdiEventData.uEventDataSize = sizeof(WDI_SetBatchScanReqType);
32365 wdiEventData.pCBfnc = setBatchScanRspCb;
32366 wdiEventData.pUserData = usrData;
32367
32368 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32369}
32370
32371/**
32372 @brief WDI_StopbatchScanInd: Send stop batch scan indication to FW
32373
32374 @param None
32375
32376 @see
32377
32378 @return Status of the request
32379*/
32380WDI_Status
32381WDI_StopBatchScanInd(WDI_StopBatchScanIndType *pWdiReq)
32382{
32383 WDI_EventInfoType wdiEventData;
32384
32385 /*-------------------------------------------------------------------------
32386 Sanity Check
32387 ------------------------------------------------------------------------*/
32388 if (eWLAN_PAL_FALSE == gWDIInitialized)
32389 {
32390 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32391 "WDI API call before module is initialized - Fail request!");
32392
32393 return WDI_STATUS_E_NOT_ALLOWED;
32394 }
32395
32396 /*-------------------------------------------------------------------------
32397 Fill in Event data and post to the Main FSM
32398 ------------------------------------------------------------------------*/
32399 wdiEventData.wdiRequest = WDI_STOP_BATCH_SCAN_IND;
32400 wdiEventData.pEventData = pWdiReq;
32401 wdiEventData.uEventDataSize = sizeof(WDI_StopBatchScanIndType);
32402 wdiEventData.pCBfnc = NULL;
32403 wdiEventData.pUserData = NULL;
32404
32405 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32406}
32407
32408/**
32409 @brief WDI_TriggerBatchScanResultInd
32410 This API is called to pull batch scan result from FW
32411
32412 @param pWdiReq : pointer to get batch scan ind param
32413 @see
32414 @return SUCCESS or FAIL
32415*/
32416WDI_Status WDI_TriggerBatchScanResultInd
32417(
32418 WDI_TriggerBatchScanResultIndType *pWdiReq
32419)
32420{
32421 WDI_EventInfoType wdiEventData;
32422 /*-------------------------------------------------------------------------
32423 Sanity Check
32424 ------------------------------------------------------------------------*/
32425 if (eWLAN_PAL_FALSE == gWDIInitialized)
32426 {
32427 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32428 "WDI API call before module is initialized - Fail request!");
32429
32430 return WDI_STATUS_E_NOT_ALLOWED;
32431 }
32432
32433 /*-------------------------------------------------------------------------
32434 Fill in Event data and post to the Main FSM
32435 ------------------------------------------------------------------------*/
32436 wdiEventData.wdiRequest = WDI_TRIGGER_BATCH_SCAN_RESULT_IND;
32437 wdiEventData.pEventData = pWdiReq;
32438 wdiEventData.uEventDataSize = sizeof(WDI_TriggerBatchScanResultIndType);
32439 wdiEventData.pCBfnc = NULL;
32440 wdiEventData.pUserData = NULL;
32441
32442 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32443}
Rajeev79dbe4c2013-10-05 11:03:42 +053032444#endif /*FEATURE_WLAN_BATCH_SCAN*/
Leo Chang0b0e45a2013-12-15 15:18:55 -080032445
Manjunathappa Prakash86f78ca2014-02-10 18:09:15 -080032446/**
32447 @brief Process Update Channel Rsp function (called when a response is
32448 being received over the bus from HAL)
32449
32450 @param pWDICtx: pointer to the WLAN DAL context
32451 pEventData: pointer to the event information structure
32452
32453 @see
32454 @return Result of the function call
32455*/
32456WDI_Status
32457WDI_ProcessUpdateChanRsp
32458(
32459 WDI_ControlBlockType* pWDICtx,
32460 WDI_EventInfoType* pEventData
32461)
32462{
32463 WDI_Status wdiStatus;
32464 eHalStatus halStatus;
32465 WDI_UpdateChannelRspCb wdiUpdateChanRspCb;
32466 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32467
32468 /*-------------------------------------------------------------------------
32469 Sanity check
32470 -------------------------------------------------------------------------*/
32471 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32472 ( NULL == pEventData->pEventData))
32473 {
32474 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32475 "%s: Invalid parameters", __func__);
32476 WDI_ASSERT(0);
32477 return WDI_STATUS_E_FAILURE;
32478 }
32479
32480 wdiUpdateChanRspCb = (WDI_UpdateChannelRspCb)pWDICtx->pfncRspCB;
32481
32482 /*-------------------------------------------------------------------------
32483 Extract response and send it to UMAC
32484 -------------------------------------------------------------------------*/
32485 halStatus = *((eHalStatus*)pEventData->pEventData);
32486 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
32487
32488 wdiUpdateChanRspCb( wdiStatus, pWDICtx->pRspCBUserData);
32489
32490 return WDI_STATUS_SUCCESS;
32491}/*WDI_ProcessUpdateChanRsp*/
32492
Leo Chang0b0e45a2013-12-15 15:18:55 -080032493#ifdef FEATURE_WLAN_CH_AVOID
32494/**
32495 @brief v -WDI_ProcessChAvoidInd
32496
32497
32498 @param pWDICtx : wdi context
32499 pEventData : indication data
32500 @see
32501 @return Result of the function call
32502*/
32503WDI_Status
32504WDI_ProcessChAvoidInd
32505(
32506 WDI_ControlBlockType* pWDICtx,
32507 WDI_EventInfoType* pEventData
32508)
32509{
32510 WDI_LowLevelIndType wdiInd;
32511 tHalAvoidFreqRangeIndParams chAvoidIndicationParam;
32512 wpt_uint16 rangeLoop;
Abhishek Singhf5590652016-02-09 16:53:03 +053032513 wpt_uint32 dataSize;
Leo Chang0b0e45a2013-12-15 15:18:55 -080032514 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32515
32516 /*-------------------------------------------------------------------------
32517 Sanity check
32518 -------------------------------------------------------------------------*/
32519 if ((NULL == pWDICtx) || (NULL == pEventData) ||
32520 (NULL == pEventData->pEventData))
32521 {
32522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32523 "%s: Invalid parameters", __func__);
32524 WDI_ASSERT(0);
32525 return WDI_STATUS_E_FAILURE;
32526 }
32527
Abhishek Singhf5590652016-02-09 16:53:03 +053032528 dataSize = sizeof(tHalAvoidFreqRangeIndParams);
32529 if (dataSize > pEventData->uEventDataSize)
32530 dataSize = pEventData->uEventDataSize;
32531
Leo Chang0b0e45a2013-12-15 15:18:55 -080032532 /*-------------------------------------------------------------------------
32533 Extract indication and send it to UMAC
32534 -------------------------------------------------------------------------*/
32535 wpalMemoryCopy(&chAvoidIndicationParam,
32536 pEventData->pEventData,
Abhishek Singhf5590652016-02-09 16:53:03 +053032537 dataSize);
Leo Chang0b0e45a2013-12-15 15:18:55 -080032538
Abhishek Singhe34eb552015-06-18 10:12:15 +053032539 /* Avoid Over flow */
32540 if (WLAN_HAL_MAX_AVOID_FREQ_RANGE < chAvoidIndicationParam.avoidCnt)
32541 chAvoidIndicationParam.avoidCnt = WLAN_HAL_MAX_AVOID_FREQ_RANGE;
32542
Leo Chang0b0e45a2013-12-15 15:18:55 -080032543 wdiInd.wdiIndicationType = WDI_CH_AVOID_IND;
32544 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount =
32545 chAvoidIndicationParam.avoidCnt;
32546 wpalMemoryCopy((void *)wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange,
32547 (void *)chAvoidIndicationParam.avoidRange,
32548 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount *
32549 sizeof(WDI_ChAvoidFreqType));
32550 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32551 "%s: band count %d", __func__,
32552 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidRangeCount);
32553 for (rangeLoop = 0; rangeLoop < chAvoidIndicationParam.avoidCnt; rangeLoop++)
32554 {
32555 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32556 "%s: srart freq %d, end freq %d", __func__,
32557 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].startFreq,
32558 wdiInd.wdiIndicationData.wdiChAvoidInd.avoidFreqRange[rangeLoop].endFreq);
32559 }
32560
32561 /*Notify UMAC*/
32562 if (pWDICtx->wdiLowLevelIndCB)
32563 {
32564 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
32565 }
32566
32567 return WDI_STATUS_SUCCESS;
32568}
Atul Mittalc0f739f2014-07-31 13:47:47 +053032569
Leo Chang0b0e45a2013-12-15 15:18:55 -080032570#endif /* FEATURE_WLAN_CH_AVOID */
32571
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053032572/**
32573 @brief Process OBSS Start scan result indication
32574
32575 @param pWDICtx: pointer to the WLAN DAL context
32576 pEventData: pointer to the event information structure
32577
32578 @see
32579 @return Result of the function call
32580*/
32581WDI_Status
32582WDI_ProcessHT40OBSSScanInd
32583(
32584 WDI_ControlBlockType* pWDICtx,
32585 WDI_EventInfoType* pEventData
32586)
32587{
32588 wpt_uint8* pSendBuffer = NULL;
32589 wpt_uint16 usDataOffset = 0;
32590 wpt_uint16 usSendSize = 0;
32591 wpt_uint16 usLen = 0;
32592 WDI_HT40ObssScanIndType *pwdiHT40OBSSScanInd = NULL;
32593 WDI_HT40ObssScanParamsType *pwdiHT40OBSSScanParams = NULL;
32594 tHT40ObssScanIndType* pHT40ObssScanInd = NULL;
32595 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
32596
32597 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32598
Deepthi Gowri2bbf56f2014-12-22 13:15:14 +053032599 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053032600 "%s", __func__);
32601
32602 /*-------------------------------------------------------------------------
32603 Sanity check
32604 -------------------------------------------------------------------------*/
32605 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32606 {
32607 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32608 "%s: Invalid parameters", __func__);
32609 WDI_ASSERT(0);
32610 return WDI_STATUS_E_FAILURE;
32611 }
32612 pwdiHT40OBSSScanParams = (WDI_HT40ObssScanParamsType*)pEventData->pEventData;
32613
32614 pwdiHT40OBSSScanInd = &pwdiHT40OBSSScanParams->wdiHT40ObssScanParam;
32615 /*-----------------------------------------------------------------------
32616 Get message buffer
32617 -----------------------------------------------------------------------*/
32618
32619 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32620 WDI_START_HT40_OBSS_SCAN_IND,
32621 sizeof(tHT40ObssScanIndType),
32622 &pSendBuffer, &usDataOffset, &usSendSize))||
32623 ( usSendSize < (usDataOffset + usLen )))
32624 {
32625 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32626 "Unable to get send buffer in HT40 OBSS Start req %p ",
32627 pEventData);
32628 WDI_ASSERT(0);
32629 return WDI_STATUS_E_FAILURE;
32630 }
32631 pHT40ObssScanInd = (tHT40ObssScanIndType*)(pSendBuffer+usDataOffset);
32632 pHT40ObssScanInd->cmdType = pwdiHT40OBSSScanInd->cmdType;
32633 pHT40ObssScanInd->scanType = pwdiHT40OBSSScanInd->scanType;
32634 pHT40ObssScanInd->OBSSScanPassiveDwellTime =
32635 pwdiHT40OBSSScanInd->OBSSScanPassiveDwellTime;
32636 pHT40ObssScanInd->OBSSScanActiveDwellTime =
32637 pwdiHT40OBSSScanInd->OBSSScanActiveDwellTime;
32638 pHT40ObssScanInd->BSSChannelWidthTriggerScanInterval =
32639 pwdiHT40OBSSScanInd->BSSChannelWidthTriggerScanInterval;
32640 pHT40ObssScanInd->OBSSScanPassiveTotalPerChannel =
32641 pwdiHT40OBSSScanInd->OBSSScanPassiveTotalPerChannel;
32642 pHT40ObssScanInd->OBSSScanActiveTotalPerChannel =
32643 pwdiHT40OBSSScanInd->OBSSScanActiveTotalPerChannel;
32644 pHT40ObssScanInd->BSSWidthChannelTransitionDelayFactor =
32645 pwdiHT40OBSSScanInd->BSSWidthChannelTransitionDelayFactor;
32646 pHT40ObssScanInd->OBSSScanActivityThreshold =
32647 pwdiHT40OBSSScanInd->OBSSScanActivityThreshold;
32648 pHT40ObssScanInd->selfStaIdx =
32649 pwdiHT40OBSSScanInd->selfStaIdx;
32650 pHT40ObssScanInd->bssIdx =
32651 pwdiHT40OBSSScanInd->bssIdx;
Hardik Kantilal Pateld3912032014-11-21 16:54:07 +053032652 pHT40ObssScanInd->currentOperatingClass =
32653 pwdiHT40OBSSScanInd->currentOperatingClass;
Sandeep Puligilla8b8b74b2014-02-10 16:39:05 +053032654 pHT40ObssScanInd->fortyMHZIntolerent =
32655 pwdiHT40OBSSScanInd->fortyMHZIntolerent;
32656 pHT40ObssScanInd->channelCount =
32657 pwdiHT40OBSSScanInd->channelCount;
32658
32659 wpalMemoryCopy(pHT40ObssScanInd->channels, pwdiHT40OBSSScanInd->channels,
32660 WDI_ROAM_SCAN_MAX_CHANNELS);
32661 pHT40ObssScanInd->ieFieldLen =
32662 pwdiHT40OBSSScanInd->ieFieldLen;
32663
32664 wpalMemoryCopy(pHT40ObssScanInd->ieField, pwdiHT40OBSSScanInd->ieField,
32665 WDI_ROAM_SCAN_MAX_PROBE_SIZE);
32666 pWDICtx->pReqStatusUserData = NULL;
32667 pWDICtx->pfncRspCB = NULL;
32668
32669 pWDICtx->wdiReqStatusCB = pwdiHT40OBSSScanParams->wdiReqStatusCB;
32670 pWDICtx->pReqStatusUserData = pwdiHT40OBSSScanParams->pUserData;
32671
32672 /*-------------------------------------------------------------------------
32673 Send OBSS Start Indication to HAL
32674 -------------------------------------------------------------------------*/
32675 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32676 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32677
32678} /*End of WDI_ProcessHT40OBSSStartScanInd*/
32679
32680
32681/**
32682 @brief wdi_HT40OBSSScanInd
32683 This API is called to start OBSS scan
32684
32685 @param pWdiReq : pointer to get ind param
32686 @see
32687 @return SUCCESS or FAIL
32688*/
32689WDI_Status WDI_HT40OBSSScanInd
32690(
32691 WDI_HT40ObssScanParamsType *pWdiReq
32692)
32693{
32694 WDI_EventInfoType wdiEventData;
32695
32696 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32697 "%s", __func__);
32698 /*-------------------------------------------------------------------------
32699 Sanity Check
32700 ------------------------------------------------------------------------*/
32701 if (eWLAN_PAL_FALSE == gWDIInitialized)
32702 {
32703 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32704 "WDI API call before module is initialized - Fail request!");
32705
32706 return WDI_STATUS_E_NOT_ALLOWED;
32707 }
32708
32709 /*-------------------------------------------------------------------------
32710 Fill in Event data and post to the Main FSM
32711 ------------------------------------------------------------------------*/
32712 wdiEventData.wdiRequest = WDI_START_HT40_OBSS_SCAN_IND;
32713 wdiEventData.pEventData = pWdiReq;
32714 wdiEventData.uEventDataSize = sizeof(WDI_HT40ObssScanParamsType);
32715 wdiEventData.pCBfnc = NULL;
32716 wdiEventData.pUserData = NULL;
32717
32718
32719 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32720}
32721
32722/**
32723 @brief Process OBSS Stop scan result
32724
32725 @param pWDICtx: pointer to the WLAN DAL context
32726 pEventData: pointer to the event information structure
32727
32728 @see
32729 @return Result of the function call
32730*/
32731WDI_Status
32732WDI_ProcessHT40OBSSStopScanInd
32733(
32734 WDI_ControlBlockType* pWDICtx,
32735 WDI_EventInfoType* pEventData
32736)
32737{
32738 wpt_uint8* pSendBuffer = NULL;
32739 wpt_uint16 usDataOffset = 0;
32740 wpt_uint16 usSendSize = 0;
32741 wpt_uint16 usLen = 0;
32742 wpt_uint8 *wdiBssIdx = 0;
32743 tANI_U8 *bssIdx = 0;
32744 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
32745
32746 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32747
32748 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32749 "%s", __func__);
32750
32751 /*-------------------------------------------------------------------------
32752 Sanity check
32753 -------------------------------------------------------------------------*/
32754 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
32755 {
32756 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32757 "%s: Invalid parameters", __func__);
32758 WDI_ASSERT(0);
32759 return WDI_STATUS_E_FAILURE;
32760 }
32761 bssIdx = (wpt_uint8*)pEventData->pEventData;
32762 /*-----------------------------------------------------------------------
32763 Get message buffer
32764 -----------------------------------------------------------------------*/
32765
32766 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
32767 WDI_STOP_HT40_OBSS_SCAN_IND,
32768 sizeof(tANI_U8),
32769 &pSendBuffer, &usDataOffset, &usSendSize))||
32770 ( usSendSize < (usDataOffset + usLen )))
32771 {
32772 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32773 "Unable to get send buffer in HT40 OBSS Start req %p ",
32774 pEventData);
32775 WDI_ASSERT(0);
32776 return WDI_STATUS_E_FAILURE;
32777 }
32778
32779 bssIdx = (tANI_U8*)pSendBuffer+usDataOffset;
32780 bssIdx = wdiBssIdx;
32781
32782 pWDICtx->pReqStatusUserData = NULL;
32783 pWDICtx->pfncRspCB = NULL;
32784
32785 /*-------------------------------------------------------------------------
32786 Send DHCP Start Indication to HAL
32787 -------------------------------------------------------------------------*/
32788 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
32789 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
32790} /*End of WDI_ProcessHT40OBSSStopScanInd*/
32791
32792/**
32793 @brief WDI_HT40OBSSStopScanInd
32794 This API is called to start OBSS scan
32795 @param pWdiReq : pointer to get ind param
32796 @see
32797 @return SUCCESS or FAIL
32798*/
32799WDI_Status WDI_HT40OBSSStopScanInd
32800(
32801 wpt_uint8 bssIdx
32802)
32803{
32804 WDI_EventInfoType wdiEventData;
32805
32806 /*-------------------------------------------------------------------------
32807 Sanity Check
32808 ------------------------------------------------------------------------*/
32809 if (eWLAN_PAL_FALSE == gWDIInitialized)
32810 {
32811 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
32812 "WDI API call before module is initialized - Fail request!");
32813
32814 return WDI_STATUS_E_NOT_ALLOWED;
32815 }
32816
32817 /*-------------------------------------------------------------------------
32818 Fill in Event data and post to the Main FSM
32819 ------------------------------------------------------------------------*/
32820 wdiEventData.wdiRequest = WDI_STOP_HT40_OBSS_SCAN_IND;
32821 wdiEventData.pEventData = &bssIdx;
32822 wdiEventData.uEventDataSize = sizeof(wpt_uint8);
32823 wdiEventData.pCBfnc = NULL;
32824 wdiEventData.pUserData = NULL;
32825
32826 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
32827}
32828
c_hpothu86041002014-04-14 19:06:51 +053032829WDI_Status
32830WDI_printRegInfo
32831(
32832 WDI_ControlBlockType* pWDICtx,
32833 WDI_EventInfoType* pEventData
32834)
32835{
32836 tHalRegDebugInfo *pRegTable;
32837 tHalRegDebugInfoParams *pRegParams;
32838 uint32 cnt=0;
32839
32840 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32841 "%s: ", __func__);
32842 /*-------------------------------------------------------------------------
32843 Sanity check
32844 -------------------------------------------------------------------------*/
32845 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32846 ( NULL == pEventData->pEventData))
32847 {
32848 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32849 "%s: Invalid parameters", __func__);
32850 WDI_ASSERT(0);
32851 return WDI_STATUS_E_FAILURE;
32852 }
32853
32854 pRegParams = (tHalRegDebugInfoParams *)pEventData->pEventData;
32855
32856 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32857 "%s: regCount: %x scenario: %x reasonCode: %x", __func__,
32858 pRegParams->regCount, pRegParams->scenario, pRegParams->reasonCode);
32859
32860 pRegTable = (tHalRegDebugInfo *)(pRegParams+1); //data starts after regParams
32861
32862 if (pRegParams->regCount <= 0)
32863 {
32864 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32865 "%s incorrect parameters passed", __func__);
32866 return WDI_STATUS_E_FAILURE;
32867 }
32868
32869 while(pRegParams->regCount--)
32870 {
32871 WPAL_TRACE (eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
32872 "%x: %x", pRegTable[cnt].regAddr, pRegTable[cnt].regValue);
32873 cnt++;
32874 }
32875
32876 return WDI_STATUS_SUCCESS;
32877}
c_hpothu92367912014-05-01 15:18:17 +053032878
32879/*
Abhishek Singh66c16762014-08-14 19:13:19 +053032880 * FUNCTION: WDI_delBaInd
32881 * send the delBA to peer.
32882 */
32883
32884WDI_Status
32885WDI_delBaInd
32886(
32887 WDI_ControlBlockType* pWDICtx,
32888 WDI_EventInfoType* pEventData
32889
32890)
32891{
32892 tHalWlanDelBaIndMsg halDelBaInd;
32893 WDI_LowLevelIndType wdiInd;
32894 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32895
32896 /*-------------------------------------------------------------------------
32897 Sanity check
32898 -------------------------------------------------------------------------*/
32899 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32900 ( NULL == pEventData->pEventData))
32901 {
32902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32903 "%s: Invalid parameters", __func__);
32904 WDI_ASSERT(0);
32905 return WDI_STATUS_E_FAILURE;
32906 }
32907
32908 /*-------------------------------------------------------------------------
32909 Extract indication and send it to UMAC
32910 -------------------------------------------------------------------------*/
32911
32912 /* Parameters need to be unpacked according to HAL struct*/
32913 wpalMemoryCopy( &halDelBaInd,
32914 pEventData->pEventData,
32915 sizeof(halDelBaInd));
32916
32917 /*Fill in the indication parameters*/
32918 wdiInd.wdiIndicationType = WDI_DEL_BA_IND;
32919
32920 wdiInd.wdiIndicationData.wdiDeleteBAInd.staIdx = halDelBaInd.staIdx;
32921 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.peerMacAddr,
32922 halDelBaInd.peerMacAddr, WDI_MAC_ADDR_LEN);
32923
32924 wdiInd.wdiIndicationData.wdiDeleteBAInd.baTID = halDelBaInd.baTID;
32925 wdiInd.wdiIndicationData.wdiDeleteBAInd.baDirection = halDelBaInd.baDirection;
32926 wdiInd.wdiIndicationData.wdiDeleteBAInd.reasonCode = halDelBaInd.reasonCode;
32927
32928 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiDeleteBAInd.bssId,
32929 halDelBaInd.bssId, WDI_MAC_ADDR_LEN);
32930 if ( pWDICtx->wdiLowLevelIndCB )
32931 {
32932 /*Notify UMAC*/
32933 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
32934 }
32935
32936 return WDI_STATUS_SUCCESS;
32937
32938
32939}
32940
32941/*
c_hpothu92367912014-05-01 15:18:17 +053032942 * FUNCTION: WDI_ProcessGetBcnMissRateRsp
32943 * send the response to PE with beacon miss count
32944 * received from WDI.
32945 */
32946WDI_Status
32947WDI_ProcessGetBcnMissRateRsp
32948(
32949 WDI_ControlBlockType* pWDICtx,
32950 WDI_EventInfoType* pEventData
32951)
32952{
32953 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb;
32954 tpHalBcnMissRateRspParams pHalBcnMissRateRsp;
32955
32956 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
32957 "In %s",__func__);
32958 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
32959
32960 /*-------------------------------------------------------------------------
32961 Sanity check
32962 -------------------------------------------------------------------------*/
32963 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
32964 ( NULL == pEventData->pEventData))
32965 {
32966 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
32967 "%s: Invalid parameters", __func__);
32968 WDI_ASSERT(0);
32969 return WDI_STATUS_E_FAILURE;
32970 }
32971
32972 pHalBcnMissRateRsp = (tHalBcnMissRateRspParams *)pEventData->pEventData;
32973 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb)pWDICtx->pfncRspCB;
32974
32975 /*Notify UMAC*/
32976 wdiGetBcnMissRateCb(pHalBcnMissRateRsp->status,
32977 pHalBcnMissRateRsp->bcnMissCnt, pWDICtx->pRspCBUserData);
32978 return WDI_STATUS_SUCCESS;
32979}
32980
32981/*
32982 * FUNCTION: WDI_ProcessGetBcnMissRateReq
32983 * Request to WDI to get missed beacon rate.
32984 */
32985WDI_Status
32986WDI_ProcessGetBcnMissRateReq
32987(
32988 WDI_ControlBlockType* pWDICtx,
32989 WDI_EventInfoType* pEventData
32990)
32991{
32992 wpt_uint8* pSendBuffer = NULL;
32993 wpt_uint16 usDataOffset = 0;
32994 wpt_uint16 usSendSize = 0;
32995 wpt_uint8 ucCurrentBSSSesIdx = 0;
32996 WDI_BSSSessionType* pBSSSes = NULL;
c_hpothu92367912014-05-01 15:18:17 +053032997 WDI_GetBcnMissRateCb *wdiGetBcnMissRateCb;
32998 tHalBcnMissRateReqParams halBcnMissRateReq;
32999
33000/*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33001
33002 /*-------------------------------------------------------------------------
33003 Sanity check
33004 -------------------------------------------------------------------------*/
33005 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33006 ( NULL == pEventData->pCBfnc ) )
33007 {
33008 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33009 "%s: Invalid parameters", __func__);
33010 WDI_ASSERT(0);
33011 return WDI_STATUS_E_FAILURE;
33012 }
33013
33014 wdiGetBcnMissRateCb = (WDI_GetBcnMissRateCb *)pEventData->pCBfnc;
33015
33016 wpalMutexAcquire(&pWDICtx->wptMutex);
33017
33018 ucCurrentBSSSesIdx = WDI_FindAssocSession(pWDICtx,
33019 pEventData->pEventData, &pBSSSes);
33020 if ( NULL == pBSSSes )
33021 {
33022 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33023 "%s: Association sequence for this BSS does not yet exist. macBSSID"
c_hpothu3c986b22014-07-09 14:45:09 +053033024 MAC_ADDRESS_STR, __func__,
33025 MAC_ADDR_ARRAY((wpt_uint8 *)(pEventData->pEventData)));
c_hpothu92367912014-05-01 15:18:17 +053033026 wpalMutexRelease(&pWDICtx->wptMutex);
33027 return WDI_STATUS_E_NOT_ALLOWED;
33028 }
33029 wpalMutexRelease(&pWDICtx->wptMutex);
33030
33031 /*-----------------------------------------------------------------------
33032 Get message buffer
33033 -----------------------------------------------------------------------*/
33034 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33035 pWDICtx, WDI_GET_BCN_MISS_RATE_REQ,
33036 sizeof(tHalBcnMissRateReqParams),
33037 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33038 ( usSendSize < (usDataOffset + sizeof(tHalBcnMissRateReqParams))))
33039 {
33040 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33041 "Unable to get send buffer in get WDI_GET_BCN_MISS_RATE_REQ %p",
33042 pEventData);
33043 WDI_ASSERT(0);
33044 return WDI_STATUS_E_FAILURE;
33045 }
33046
33047 pWDICtx->wdiReqStatusCB = NULL;
33048 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33049
33050 halBcnMissRateReq.bssIdx = ucCurrentBSSSesIdx;
33051
33052 wpalMemoryCopy( pSendBuffer+usDataOffset,
33053 &halBcnMissRateReq,
33054 sizeof(tHalBcnMissRateReqParams));
33055 /*-------------------------------------------------------------------------
33056 Send Get STA Request to HAL
33057 -------------------------------------------------------------------------*/
33058 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetBcnMissRateCb,
33059 pEventData->pUserData, WDI_GET_BCN_MISS_RATE_RSP);
33060}
33061
33062/**
33063 @brief WDI_GetBcnMissRate
33064
33065 @param pUserData: user data will be passed back with the
33066 callback
33067 WDI_GetBcnMissRateCb: callback for passing back the response
33068 of the get stats operation received from the device
33069 bssid: bssid, to send bssIdx to FW
33070
33071 @return SUCCESS or FAIL
33072*/
33073WDI_Status WDI_GetBcnMissRate( void *pUserData,
33074 WDI_GetBcnMissRateCb wdiGetBcnMissRateCb,
33075 tANI_U8 *bssid )
33076{
33077 WDI_EventInfoType wdiEventData;
33078
33079 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33080
33081 /*------------------------------------------------------------------------
33082 Sanity Check
33083 ------------------------------------------------------------------------*/
33084 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33085 {
33086 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33087 "WDI API call before module is initialized - Fail request");
33088
33089 return WDI_STATUS_E_NOT_ALLOWED;
33090 }
33091
33092 /*------------------------------------------------------------------------
33093 Fill in Event data and post to the Main FSM
33094 ------------------------------------------------------------------------*/
33095 wdiEventData.wdiRequest = WDI_GET_BCN_MISS_RATE_REQ;
33096 wdiEventData.pEventData = bssid;
33097 wdiEventData.uEventDataSize = sizeof(tSirMacAddr);
33098 wdiEventData.pCBfnc = wdiGetBcnMissRateCb;
33099 wdiEventData.pUserData = pUserData;
33100
33101 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33102}
Abhishek Singh85b74712014-10-08 11:38:19 +053033103
33104/*
33105 * FUNCTION: WDI_ProcessGetFwStatsRsp
33106 * send the response with FW stats asked.
33107 */
33108WDI_Status
33109 WDI_ProcessGetFwStatsRsp
33110(
33111 WDI_ControlBlockType* pWDICtx,
33112 WDI_EventInfoType* pEventData
33113)
33114{
33115 WDI_FWStatsGetRspCb wdiGetFwstatsCb;
33116 tpHalfwStatsRspParams pHalFwstatsRsp;
33117 WDI_FWStatsResults fwStats;
33118
33119 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33120
33121 /*-------------------------------------------------------------------------
33122 Sanity check
33123 -------------------------------------------------------------------------*/
33124 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33125 ( NULL == pEventData->pEventData))
33126 {
33127 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33128 "%s: Invalid parameters", __func__);
33129 WDI_ASSERT(0);
33130 return WDI_STATUS_E_FAILURE;
33131 }
33132 pHalFwstatsRsp = (tHalfwStatsRspParams *)pEventData->pEventData;
33133 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb) pWDICtx->pfncRspCB;
33134
33135 if(pHalFwstatsRsp->length)
33136 {
33137 switch( pHalFwstatsRsp->type )
33138 {
33139 case FW_UBSP_STATS:
33140 {
33141 ubspFwStats *ubspStatsfromFw;
33142
33143 fwStats.type = pHalFwstatsRsp->type;
33144 ubspStatsfromFw = (ubspFwStats *) pHalFwstatsRsp->data;
33145 fwStats.wdiFwStatsData.ubspStats.ubsp_enter_cnt =
33146 ubspStatsfromFw->ubsp_enter_cnt;
33147 fwStats.wdiFwStatsData.ubspStats.ubsp_jump_ddr_cnt =
33148 ubspStatsfromFw->ubsp_jump_ddr_cnt;
33149 }
33150 break;
33151 default:
33152 {
33153 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33154 "%s: No handling for stats type %d", __func__,
33155 pHalFwstatsRsp->type);
33156 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
33157 NULL, pWDICtx->pRspCBUserData);
33158 return WDI_STATUS_E_FAILURE;
33159 }
33160 }
33161 wdiGetFwstatsCb(WDI_STATUS_SUCCESS, &fwStats , pWDICtx->pRspCBUserData);
33162 }
33163 else
33164 {
33165 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33166 "%s: Length = 0 for type %d return failure ", __func__,
33167 pHalFwstatsRsp->type);
33168 wdiGetFwstatsCb(WDI_STATUS_E_FAILURE,
33169 NULL, pWDICtx->pRspCBUserData);
33170 return WDI_STATUS_E_FAILURE;
33171 }
33172 return WDI_STATUS_SUCCESS;
33173}
33174
33175/*
33176 * FUNCTION: WDI_ProcessGetFwStatsReq
33177 * Request to WDI to get FW Stats.
33178 */
33179WDI_Status
33180 WDI_ProcessGetFwStatsReq
33181(
33182 WDI_ControlBlockType* pWDICtx,
33183 WDI_EventInfoType* pEventData
33184)
33185{
33186 wpt_uint8* pSendBuffer = NULL;
33187 wpt_uint16 usDataOffset = 0;
33188 wpt_uint16 usSendSize = 0;
33189 WDI_FWStatsGetRspCb *wdiGetFwstatsCb;
33190 tHalfwStatsReqParams halFwStatsReq;
33191
33192 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33193
33194 /*-------------------------------------------------------------------------
33195 Sanity check
33196 -------------------------------------------------------------------------*/
33197 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
33198 ( NULL == pEventData->pCBfnc ) )
33199 {
33200 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33201 "%s: Invalid parameters", __func__);
33202 WDI_ASSERT(0);
33203 return WDI_STATUS_E_FAILURE;
33204 }
33205
33206 wdiGetFwstatsCb = (WDI_FWStatsGetRspCb *)pEventData->pCBfnc;
33207
33208 /*-----------------------------------------------------------------------
33209 Get message buffer
33210 -----------------------------------------------------------------------*/
33211 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33212 pWDICtx, WDI_GET_FW_STATS_REQ,
33213 sizeof(tHalfwStatsReqParams),
33214 &pSendBuffer, &usDataOffset, &usSendSize)) ||
33215 ( usSendSize < (usDataOffset + sizeof(tHalfwStatsReqParams))))
33216 {
33217 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33218 "Unable to get send buffer in get WDI_GET_FW_STAS_REQ %p",
33219 pEventData);
33220 WDI_ASSERT(0);
33221 return WDI_STATUS_E_FAILURE;
33222 }
33223
33224 pWDICtx->wdiReqStatusCB = NULL;
33225 pWDICtx->pReqStatusUserData = pEventData->pEventData;
33226 halFwStatsReq.type = *((wpt_uint32 *)(pEventData->pEventData));
33227 wpalMemoryCopy( pSendBuffer+usDataOffset,
33228 &halFwStatsReq,
33229 sizeof(tHalfwStatsReqParams));
33230 /*-------------------------------------------------------------------------
33231 Send Get STA Request to HAL
33232 -------------------------------------------------------------------------*/
33233 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiGetFwstatsCb,
33234 pEventData->pUserData, WDI_GET_FW_STATS_RSP);
33235}
33236
Sunil Duttbd736ed2014-05-26 21:19:41 +053033237#ifdef WLAN_FEATURE_LINK_LAYER_STATS
33238
33239/**
33240 @brief WDI_LLStatsSetReq
33241 This API is called to set link layer stats request in FW
33242
33243 @param pwdiLLStatsSetReqParams : pointer to set link layer request params
33244 wdiLLStatsSetRspCb : set link layer stats resp callback
33245 usrData : Client context
33246 @see
33247 @return SUCCESS or FAIL
33248*/
33249WDI_Status
33250WDI_LLStatsSetReq(WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams,
33251 WDI_LLStatsSetRspCb wdiLLStatsSetRspCb,
33252 void* pUserData)
33253{
33254 WDI_EventInfoType wdiEventData;
33255
33256 /*------------------------------------------------------------------------
33257 Sanity Check
33258 ------------------------------------------------------------------------*/
33259 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33260 {
33261 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33262 "WDI API call before module is initialized - Fail request");
33263
33264 return WDI_STATUS_E_NOT_ALLOWED;
33265 }
33266
33267 wdiEventData.wdiRequest = WDI_LL_STATS_SET_REQ;
33268 wdiEventData.pEventData = pwdiLLStatsSetReqParams;
33269 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsSetReqParams);
33270 wdiEventData.pCBfnc = wdiLLStatsSetRspCb;
33271 wdiEventData.pUserData = pUserData;
33272
33273 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33274}
33275
33276/**
33277 @brief WDI_ProcessLLStatsSetReq -
33278 Set Link Layer Stats request to FW
33279
33280 @param pWDICtx : wdi context
33281 pEventData : indication data
33282
33283 @see
33284 @return none
33285*/
33286WDI_Status
33287WDI_ProcessLLStatsSetReq
33288(
33289 WDI_ControlBlockType* pWDICtx,
33290 WDI_EventInfoType* pEventData
33291)
33292{
33293 WDI_LLStatsSetReqType* pwdiLLStatsSetReqParams;
33294 WDI_LLStatsSetRspCb wdiLLStatsSetCb;
33295 wpt_uint8* pSendBuffer = NULL;
33296 wpt_uint16 usSendSize = 0;
33297 wpt_uint16 usDataOffset = 0;
33298 tHalMacLlSetStatsReqParams halLLStatsSetParams;
33299
33300 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33301 ( NULL == pEventData->pCBfnc ))
33302 {
33303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33304 "%s: Invalid parameters", __func__);
33305 WDI_ASSERT(0);
33306 return WDI_STATUS_E_FAILURE;
33307 }
33308
33309 pwdiLLStatsSetReqParams = (WDI_LLStatsSetReqType*)pEventData->pEventData;
33310 wdiLLStatsSetCb = (WDI_LLStatsSetRspCb)pEventData->pCBfnc;
33311
33312 /*-----------------------------------------------------------------------
33313 Get message buffer
33314 ! TO DO : proper conversion into the HAL Message Request Format
33315 -----------------------------------------------------------------------*/
33316 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33317 pWDICtx,
33318 WDI_LL_STATS_SET_REQ,
33319 sizeof(tHalMacLlSetStatsReqParams),
33320 &pSendBuffer, &usDataOffset,
33321 &usSendSize))||
33322 ( usSendSize < (usDataOffset + sizeof(halLLStatsSetParams) )))
33323 {
33324 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33325 "Unable to get send buffer in %s %p %p %p", __func__,
33326 pEventData, pwdiLLStatsSetReqParams, wdiLLStatsSetCb);
33327 WDI_ASSERT(0);
33328 return WDI_STATUS_E_FAILURE;
33329 }
33330
33331
Dino Mycled3d50022014-07-07 12:58:25 +053033332 /* Need to fill in the self STA Index */
33333 if ( WDI_STATUS_SUCCESS !=
33334 WDI_STATableFindStaidByAddr(pWDICtx,
33335 pwdiLLStatsSetReqParams->macAddr,
33336 &halLLStatsSetParams.sta_id))
33337 {
33338 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33339 MAC_ADDRESS_STR
33340 ": This station does not exist in the WDI Station Table",
33341 MAC_ADDR_ARRAY(pwdiLLStatsSetReqParams->macAddr));
33342
33343 wpalMemoryFree(pSendBuffer);
33344 return WDI_STATUS_E_FAILURE;
33345 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053033346
33347 halLLStatsSetParams.req_id = pwdiLLStatsSetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053033348 halLLStatsSetParams.mpdu_size_threshold =
33349 pwdiLLStatsSetReqParams->mpduSizeThreshold;
33350 halLLStatsSetParams.aggressive_statistics_gathering =
33351 pwdiLLStatsSetReqParams->aggressiveStatisticsGathering;
33352
33353 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33354 " halLLStatsSetParams.req_id = %u",
33355 halLLStatsSetParams.req_id);
33356 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33357 " halLLStatsSetParams.sta_id = %u",
33358 halLLStatsSetParams.sta_id);
33359 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33360 " halLLStatsSetParams.mpdu_size_threshold = %u",
33361 halLLStatsSetParams.mpdu_size_threshold);
33362 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33363 " halLLStatsSetParams.aggressive_statistics_gathering = %u",
33364 halLLStatsSetParams.aggressive_statistics_gathering);
33365
33366 wpalMemoryCopy(pSendBuffer+usDataOffset,
33367 &halLLStatsSetParams,
33368 sizeof(halLLStatsSetParams));
33369
33370 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33371
33372 /*-------------------------------------------------------------------------
33373 Send Clear Link Layer Stats Request to HAL
33374 -------------------------------------------------------------------------*/
33375 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33376 wdiLLStatsSetCb, pEventData->pUserData,
33377 WDI_LL_STATS_SET_RSP);
33378}
33379
33380/**
33381 @brief WDI_LLStatsGetReq
33382 This API is called to get link layer stats request in FW
33383
33384 @param pwdiLLStatsGetReqParams : pointer to set link layer request params
33385 wdiLLStatsGetRspCb : get link layer stats resp callback
33386 usrData : Client context
33387 @see
33388 @return SUCCESS or FAIL
33389*/
33390WDI_Status
33391WDI_LLStatsGetReq(WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams,
33392 WDI_LLStatsGetRspCb wdiLLStatsGetRspCb,
33393 void* pUserData)
33394{
33395 WDI_EventInfoType wdiEventData;
33396
33397 /*------------------------------------------------------------------------
33398 Sanity Check
33399 ------------------------------------------------------------------------*/
33400 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33401 {
33402 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33403 "WDI API call before module is initialized - Fail request");
33404
33405 return WDI_STATUS_E_NOT_ALLOWED;
33406 }
33407
33408 wdiEventData.wdiRequest = WDI_LL_STATS_GET_REQ;
33409 wdiEventData.pEventData = pwdiLLStatsGetReqParams;
33410 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsGetReqParams);
33411 wdiEventData.pCBfnc = wdiLLStatsGetRspCb;
33412 wdiEventData.pUserData = pUserData;
33413
33414 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33415}
33416
33417/**
33418 @brief WDI_ProcessLLStatsGetReq -
33419 Get Link Layer Stats request to FW
33420
33421 @param pWDICtx : wdi context
33422 pEventData : indication data
33423
33424 @see
33425 @return none
33426*/
33427WDI_Status
33428WDI_ProcessLLStatsGetReq
33429(
33430 WDI_ControlBlockType* pWDICtx,
33431 WDI_EventInfoType* pEventData
33432)
33433{
33434 WDI_LLStatsGetReqType* pwdiLLStatsGetReqParams;
33435 WDI_LLStatsGetRspCb wdiLLStatsGetCb;
33436 wpt_uint8* pSendBuffer = NULL;
33437 wpt_uint16 usSendSize = 0;
33438 wpt_uint16 usDataOffset = 0;
33439 tHalMacLlGetStatsReqParams halLLStatsGetParams;
33440
33441 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33442 ( NULL == pEventData->pCBfnc ))
33443 {
33444 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33445 "%s: Invalid parameters", __func__);
33446 WDI_ASSERT(0);
33447 return WDI_STATUS_E_FAILURE;
33448 }
33449
33450 pwdiLLStatsGetReqParams = (WDI_LLStatsGetReqType*)pEventData->pEventData;
33451 wdiLLStatsGetCb = (WDI_LLStatsGetRspCb)pEventData->pCBfnc;
33452
33453 /*-----------------------------------------------------------------------
33454 Get message buffer
33455 ! TO DO : proper conversion into the HAL Message Request Format
33456 -----------------------------------------------------------------------*/
33457 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33458 pWDICtx,
33459 WDI_LL_STATS_GET_REQ,
33460 sizeof(tHalMacLlGetStatsReqParams),
33461 &pSendBuffer, &usDataOffset,
33462 &usSendSize))||
33463 ( usSendSize < (usDataOffset + sizeof(halLLStatsGetParams) )))
33464 {
33465 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33466 "Unable to get send buffer in %s %p %p %p", __func__,
33467 pEventData, pwdiLLStatsGetReqParams, wdiLLStatsGetCb);
33468 WDI_ASSERT(0);
33469 return WDI_STATUS_E_FAILURE;
33470 }
Dino Mycled3d50022014-07-07 12:58:25 +053033471 /* Need to fill in the self STA Index */
33472 if ( WDI_STATUS_SUCCESS !=
33473 WDI_STATableFindStaidByAddr(pWDICtx,
33474 pwdiLLStatsGetReqParams->macAddr,
33475 &halLLStatsGetParams.sta_id))
33476 {
33477 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33478 MAC_ADDRESS_STR
33479 ": This station does not exist in the WDI Station Table",
33480 MAC_ADDR_ARRAY(pwdiLLStatsGetReqParams->macAddr));
33481
33482 wpalMemoryFree(pSendBuffer);
33483 return WDI_STATUS_E_FAILURE;
33484 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053033485
33486 halLLStatsGetParams.req_id = pwdiLLStatsGetReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053033487 halLLStatsGetParams.param_id_mask = pwdiLLStatsGetReqParams->paramIdMask;
33488
33489 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33490 " halLLStatsGetParams.req_id = %u",
33491 halLLStatsGetParams.req_id);
33492 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33493 " halLLStatsGetParams.staId = %u",
33494 halLLStatsGetParams.sta_id);
33495 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33496 " halLLStatsGetParams.Mask = %u",
33497 halLLStatsGetParams.param_id_mask);
33498
33499 wpalMemoryCopy(pSendBuffer+usDataOffset,
33500 &halLLStatsGetParams,
33501 sizeof(halLLStatsGetParams));
33502
33503 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33504
33505 /*-------------------------------------------------------------------------
33506 Send Clear Link Layer Stats Request to HAL
33507 -------------------------------------------------------------------------*/
33508 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33509 wdiLLStatsGetCb, pEventData->pUserData,
33510 WDI_LL_STATS_GET_RSP);
33511}
33512
33513/**
33514 @brief WDI_LLStatsClearReq
33515 This API is called to clear link layer stats request in FW
33516
33517 @param pwdiLLStatsClearReqParams : pointer to clear link layer request params
33518 wdiLLStatsSetRspCb : clear link layer stats resp callback
33519 usrData : Client context
33520 @see
33521 @return SUCCESS or FAIL
33522*/
33523WDI_Status
33524WDI_LLStatsClearReq(WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams,
33525 WDI_LLStatsClearRspCb wdiLLStatsClearRspCb,
33526 void* pUserData)
33527{
33528 WDI_EventInfoType wdiEventData;
33529
33530 /*------------------------------------------------------------------------
33531 Sanity Check
33532 ------------------------------------------------------------------------*/
33533 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33534 {
33535 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33536 "WDI API call before module is initialized - Fail request");
33537
33538 return WDI_STATUS_E_NOT_ALLOWED;
33539 }
33540
33541 wdiEventData.wdiRequest = WDI_LL_STATS_CLEAR_REQ;
33542 wdiEventData.pEventData = pwdiLLStatsClearReqParams;
33543 wdiEventData.uEventDataSize = sizeof(*pwdiLLStatsClearReqParams);
33544 wdiEventData.pCBfnc = wdiLLStatsClearRspCb;
33545 wdiEventData.pUserData = pUserData;
33546
33547 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33548 "%s:%d Enter", __func__, __LINE__);
33549
33550 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33551}
33552
33553/**
33554 @brief WDI_ProcessLLStatsClearReq -
33555 Clear Link Layer Stats request to FW
33556
33557 @param pWDICtx : wdi context
33558 pEventData : indication data
33559
33560 @see
33561 @return none
33562*/
33563WDI_Status
33564WDI_ProcessLLStatsClearReq
33565(
33566 WDI_ControlBlockType* pWDICtx,
33567 WDI_EventInfoType* pEventData
33568)
33569{
33570 WDI_LLStatsClearReqType* pwdiLLStatsClearReqParams;
33571 WDI_LLStatsClearRspCb wdiLLStatsClearCb;
33572 wpt_uint8* pSendBuffer = NULL;
33573 wpt_uint16 usSendSize = 0;
33574 wpt_uint16 usDataOffset = 0;
33575 tHalMacLlClearStatsReqParams halLLStatsClearParams;
33576
33577 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33578 ( NULL == pEventData->pCBfnc ))
33579 {
33580 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33581 "%s: Invalid parameters", __func__);
33582 WDI_ASSERT(0);
33583 return WDI_STATUS_E_FAILURE;
33584 }
33585
33586 pwdiLLStatsClearReqParams = (WDI_LLStatsClearReqType*)pEventData->pEventData;
33587 wdiLLStatsClearCb = (WDI_LLStatsClearRspCb)pEventData->pCBfnc;
33588
33589 /*-----------------------------------------------------------------------
33590 Get message buffer
33591 ! TO DO : proper conversion into the HAL Message Request Format
33592 -----------------------------------------------------------------------*/
33593 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33594 pWDICtx,
33595 WDI_LL_STATS_CLEAR_REQ,
33596 sizeof(tHalMacLlClearStatsReqParams),
33597 &pSendBuffer, &usDataOffset,
33598 &usSendSize))||
33599 ( usSendSize < (usDataOffset + sizeof(halLLStatsClearParams) )))
33600 {
33601 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33602 "Unable to get send buffer in %s %p %p %p", __func__,
33603 pEventData, pwdiLLStatsClearReqParams, wdiLLStatsClearCb);
33604 WDI_ASSERT(0);
33605 return WDI_STATUS_E_FAILURE;
33606 }
Dino Mycled3d50022014-07-07 12:58:25 +053033607 /* Need to fill in the self STA Index */
33608 if ( WDI_STATUS_SUCCESS !=
33609 WDI_STATableFindStaidByAddr(pWDICtx,
33610 pwdiLLStatsClearReqParams->macAddr,
33611 &halLLStatsClearParams.sta_id))
33612 {
33613 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33614 MAC_ADDRESS_STR
33615 ": This station does not exist in the WDI Station Table",
33616 MAC_ADDR_ARRAY(pwdiLLStatsClearReqParams->macAddr));
33617
33618 wpalMemoryFree(pSendBuffer);
33619 return WDI_STATUS_E_FAILURE;
33620 }
Sunil Duttbd736ed2014-05-26 21:19:41 +053033621
33622 halLLStatsClearParams.req_id = pwdiLLStatsClearReqParams->reqId;
Sunil Duttbd736ed2014-05-26 21:19:41 +053033623 halLLStatsClearParams.stats_clear_req_mask =
33624 pwdiLLStatsClearReqParams->statsClearReqMask;
33625 halLLStatsClearParams.stop_req = pwdiLLStatsClearReqParams->stopReq;
33626
33627 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33628 "%s:HAL req_id = %d", __func__, halLLStatsClearParams.req_id);
33629 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33630 "%s: HAL sta_id = %d", __func__, halLLStatsClearParams.sta_id);
33631 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33632 "%s: HAL stats_clear_req_mask = 0x%X", __func__,
33633 halLLStatsClearParams.stats_clear_req_mask);
33634 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33635 "%s: HAL stop_req = %d", __func__, halLLStatsClearParams.stop_req);
33636
33637 wpalMemoryCopy(pSendBuffer+usDataOffset,
33638 &halLLStatsClearParams,
33639 sizeof(halLLStatsClearParams));
33640
33641 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33642
33643 /*-------------------------------------------------------------------------
33644 Send Clear Link Layer Stats Request to HAL
33645 -------------------------------------------------------------------------*/
33646 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33647 wdiLLStatsClearCb, pEventData->pUserData,
33648 WDI_LL_STATS_CLEAR_RSP);
33649}
33650#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
Dino Mycle41bdc942014-06-10 11:30:24 +053033651
Abhishek Singh85b74712014-10-08 11:38:19 +053033652WDI_Status WDI_FWStatsGetReq( void* pUserData,
33653 WDI_FWStatsGetRspCb wdiFWStatsGetRspCb,
33654 wpt_uint32 stats)
33655{
33656 WDI_EventInfoType wdiEventData;
33657
33658 /*------------------------------------------------------------------------
33659 Sanity Check
33660 ------------------------------------------------------------------------*/
33661 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33662 {
33663 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33664 "WDI API call before module is initialized - Fail request");
33665 return WDI_STATUS_E_NOT_ALLOWED;
33666 }
33667 /*------------------------------------------------------------------------
33668 Fill in Event data and post to the Main FSM
33669 ------------------------------------------------------------------------*/
33670 wdiEventData.wdiRequest = WDI_GET_FW_STATS_REQ;
33671 wdiEventData.pEventData = (void *)&stats;
33672 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
33673 wdiEventData.pCBfnc = wdiFWStatsGetRspCb;
33674 wdiEventData.pUserData = pUserData;
33675
33676 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33677
33678}
33679
Katya Nigamf0511f62015-05-05 16:40:57 +053033680WDI_Status
33681WDI_MonStartReq(WDI_MonStartReqType* pwdiMonStartReqParams,
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033682 WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053033683 void* pUserData)
33684{
33685 WDI_EventInfoType wdiEventData;
33686
33687 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33688 "%s", __func__);
33689
33690 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33691 {
33692 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33693 "WDI API call before module is initialized - Fail request");
33694
33695 return WDI_STATUS_E_NOT_ALLOWED;
33696 }
33697
33698 wdiEventData.wdiRequest = WDI_MON_START_REQ;
33699 wdiEventData.pEventData = pwdiMonStartReqParams;
33700 wdiEventData.uEventDataSize = sizeof(*pwdiMonStartReqParams);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033701 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033702 wdiEventData.pUserData = pUserData;
33703
33704 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33705}
33706
33707WDI_Status
33708WDI_ProcessMonStartReq
33709(
33710 WDI_ControlBlockType* pWDICtx,
33711 WDI_EventInfoType* pEventData
33712)
33713{
33714 WDI_MonStartReqType* pwdiMonStartReqParams;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033715 WDI_MonModeRspCb wdiMonStartCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033716 wpt_uint8* pSendBuffer = NULL;
33717 wpt_uint16 usSendSize = 0;
33718 wpt_uint16 usDataOffset = 0;
33719 tHalEnableMonitorModeReqParams halEnableMonitorModeParams;
33720
33721 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33722 "%s", __func__);
33723
33724 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
33725 ( NULL == pEventData->pCBfnc ))
33726 {
33727 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33728 "%s: Invalid parameters", __func__);
33729 WDI_ASSERT(0);
33730 return WDI_STATUS_E_FAILURE;
33731 }
33732
33733 pwdiMonStartReqParams = (WDI_MonStartReqType*)pEventData->pEventData;
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033734 wdiMonStartCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053033735
33736 /*-----------------------------------------------------------------------
33737 Get message buffer
33738 ! TO DO : proper conversion into the HAL Message Request Format
33739 -----------------------------------------------------------------------*/
33740 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33741 pWDICtx,
33742 WDI_MON_START_REQ,
33743 sizeof(tHalEnableMonitorModeReqParams),
33744 &pSendBuffer, &usDataOffset,
33745 &usSendSize))||
33746 ( usSendSize < (usDataOffset + sizeof(halEnableMonitorModeParams) )))
33747 {
33748 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33749 "Unable to get send buffer in %s %p %p %p", __func__,
33750 pEventData, pwdiMonStartReqParams, wdiMonStartCb);
33751 WDI_ASSERT(0);
33752 return WDI_STATUS_E_FAILURE;
33753 }
33754
33755 halEnableMonitorModeParams.channelNumber = pwdiMonStartReqParams->ChannelNo;
33756 halEnableMonitorModeParams.cbState = WDI_selectCbMode(pwdiMonStartReqParams->ChannelNo,
33757 pwdiMonStartReqParams->ChannelBW);
33758 halEnableMonitorModeParams.maxAmpduLen = 0x1FFFF;
33759 halEnableMonitorModeParams.maxMpduInAmpduLen = 0xF20-0x4C;
33760 halEnableMonitorModeParams.crcCheckEnabled = pwdiMonStartReqParams->crcCheckEnabled;
33761 halEnableMonitorModeParams.numMacFilters = pwdiMonStartReqParams->numOfMacFilters;
33762 wpalMemoryCopy(halEnableMonitorModeParams.macFilters[0].macAddr,
33763 pwdiMonStartReqParams->mmFilters[0].macAddr,
33764 sizeof( wpt_macAddr ));
33765 halEnableMonitorModeParams.macFilters[0].isA1filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA1filter;
33766 halEnableMonitorModeParams.macFilters[0].isA2filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA2filter;
33767 halEnableMonitorModeParams.macFilters[0].isA3filteringNeeded = pwdiMonStartReqParams->mmFilters[0].isA3filter;
33768 halEnableMonitorModeParams.typeSubtypeBitmap = pwdiMonStartReqParams->typeSubtypeBitmap;
33769
33770 wpalMemoryCopy(pSendBuffer+usDataOffset,
33771 &halEnableMonitorModeParams,
33772 sizeof(halEnableMonitorModeParams));
33773
33774 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33775
33776 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33777 wdiMonStartCb, pEventData->pUserData,
33778 WDI_MON_START_RSP);
33779}
33780
33781WDI_Status
33782WDI_ProcessMonStartRsp
33783(
33784 WDI_ControlBlockType* pWDICtx,
33785 WDI_EventInfoType* pEventData
33786)
33787{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033788 WDI_MonModeRspCb wdiMonStartRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033789
33790 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33791 "%s: Enter ", __func__);
33792 /*-------------------------------------------------------------------------
33793 Sanity check
33794 -------------------------------------------------------------------------*/
33795 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33796 ( NULL == pEventData->pEventData))
33797 {
33798 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33799 "%s: Invalid parameters", __func__);
33800 WDI_ASSERT(0);
33801 return WDI_STATUS_E_FAILURE;
33802 }
33803
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033804 wdiMonStartRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053033805
33806 wdiMonStartRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
33807
33808 return WDI_STATUS_SUCCESS;
33809}
33810
33811WDI_Status
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033812WDI_MonStopReq(WDI_MonModeRspCb wdiMonModeRspCb,
Katya Nigamf0511f62015-05-05 16:40:57 +053033813 void* pUserData)
33814{
33815 WDI_EventInfoType wdiEventData;
33816
33817 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33818 "%s", __func__);
33819
33820 if ( eWLAN_PAL_FALSE == gWDIInitialized )
33821 {
33822 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
33823 "WDI API call before module is initialized - Fail request");
33824
33825 return WDI_STATUS_E_NOT_ALLOWED;
33826 }
33827
33828 wdiEventData.wdiRequest = WDI_MON_STOP_REQ;
33829 wdiEventData.pEventData = NULL;
33830 wdiEventData.uEventDataSize = sizeof(NULL);
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033831 wdiEventData.pCBfnc = wdiMonModeRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033832 wdiEventData.pUserData = pUserData;
33833
33834 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
33835}
33836
33837WDI_Status
33838WDI_ProcessMonStopReq
33839(
33840 WDI_ControlBlockType* pWDICtx,
33841 WDI_EventInfoType* pEventData
33842)
33843{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033844 WDI_MonModeRspCb wdiMonStopCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033845 wpt_uint8* pSendBuffer = NULL;
33846 wpt_uint16 usSendSize = 0;
33847 wpt_uint16 usDataOffset = 0;
33848 wpt_uint8 resetConfiguration;
33849
33850 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
33851 "%s", __func__);
33852
33853 if (( NULL == pEventData ) || ( NULL == pEventData->pCBfnc ))
33854 {
33855 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33856 "%s: Invalid parameters", __func__);
33857 WDI_ASSERT(0);
33858 return WDI_STATUS_E_FAILURE;
33859 }
33860
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033861 wdiMonStopCb = (WDI_MonModeRspCb)pEventData->pCBfnc;
Katya Nigamf0511f62015-05-05 16:40:57 +053033862
33863 /*-----------------------------------------------------------------------
33864 Get message buffer
33865 ! TO DO : proper conversion into the HAL Message Request Format
33866 -----------------------------------------------------------------------*/
33867 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
33868 pWDICtx,
33869 WDI_MON_STOP_REQ,
33870 sizeof(wpt_uint8),
33871 &pSendBuffer, &usDataOffset,
33872 &usSendSize))||
33873 ( usSendSize < (usDataOffset + sizeof(wpt_uint8) )))
33874 {
33875 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33876 "Unable to get send buffer in %s %p %p", __func__,
33877 pEventData, wdiMonStopCb);
33878 WDI_ASSERT(0);
33879 return WDI_STATUS_E_FAILURE;
33880 }
33881
33882 wpalMemoryCopy(pSendBuffer+usDataOffset,
33883 &resetConfiguration,
33884 sizeof(wpt_uint8));
33885
33886 pWDICtx->pReqStatusUserData = pEventData->pUserData;
33887
33888 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
33889 wdiMonStopCb, pEventData->pUserData,
33890 WDI_MON_STOP_RSP);
33891}
33892
33893WDI_Status
33894WDI_ProcessMonStopRsp
33895(
33896 WDI_ControlBlockType* pWDICtx,
33897 WDI_EventInfoType* pEventData
33898)
33899{
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033900 WDI_MonModeRspCb wdiMonStopRspCb;
Katya Nigamf0511f62015-05-05 16:40:57 +053033901
33902 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33903 "%s: Enter ", __func__);
33904 /*-------------------------------------------------------------------------
33905 Sanity check
33906 -------------------------------------------------------------------------*/
33907 if (( NULL == pWDICtx ) || ( NULL == pEventData ))
33908 {
33909 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
33910 "%s: Invalid parameters", __func__);
33911 WDI_ASSERT(0);
33912 return WDI_STATUS_E_FAILURE;
33913 }
33914
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033915 wdiMonStopRspCb = (WDI_MonModeRspCb)pWDICtx->pfncRspCB;
Katya Nigamf0511f62015-05-05 16:40:57 +053033916
Hanumantha Reddy Pothula91cdd7f2015-09-03 21:25:16 +053033917 wdiMonStopRspCb(pWDICtx->pRspCBUserData, pWDICtx->pRspCBUserData);
Katya Nigamf0511f62015-05-05 16:40:57 +053033918
33919 return WDI_STATUS_SUCCESS;
33920}
33921
Dino Mycle41bdc942014-06-10 11:30:24 +053033922#ifdef WLAN_FEATURE_EXTSCAN
33923
33924/**
33925 @brief Process EXTSCAN BUffer full indication from FW
33926
33927 @param pWDICtx: pointer to the WLAN DAL context
33928 pEventData: pointer to the event information structure
33929
33930 @see
33931 @return Result of the function call
33932*/
33933WDI_Status
33934WDI_ProcessEXTScanProgressInd
33935(
33936 WDI_ControlBlockType* pWDICtx,
33937 WDI_EventInfoType* pEventData
33938)
33939{
33940 WDI_LowLevelIndType wdiInd;
33941 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33942
33943 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33944 "%s: ", __func__);
33945
33946 /* sanity check */
33947 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
33948 ( NULL == pEventData->pEventData))
33949 {
33950 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
33951 "%s: Invalid parameters", __func__);
33952 WDI_ASSERT(0);
33953 return WDI_STATUS_E_FAILURE;
33954 }
33955
33956 /* Fill in the indication parameters */
33957 wdiInd.wdiIndicationType = WDI_EXTSCAN_PROGRESS_IND;
33958
33959 /* extract response and send it to UMAC */
33960 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
33961
33962 /* Notify UMAC */
33963 if (pWDICtx->wdiLowLevelIndCB)
33964 {
33965 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
33966 }
33967 else
33968 {
Dino Mycled3d50022014-07-07 12:58:25 +053033969 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
Dino Mycle41bdc942014-06-10 11:30:24 +053033970 "%s: WDILowLevelIndCb is null", __func__);
33971 WDI_ASSERT(0);
33972 return WDI_STATUS_E_FAILURE;
33973 }
33974 return WDI_STATUS_SUCCESS;
33975
33976} /* End of WDI_ProcessEXTScanProgressInd */
33977
33978
33979/**
33980 @brief Process EXTScan Scan Available indication from FW
33981
33982 @param pWDICtx: pointer to the WLAN DAL context
33983 pEventData: pointer to the event information structure
33984
33985 @see
33986 @return Result of the function call
33987*/
33988WDI_Status
33989WDI_ProcessEXTScanScanAvailableInd
33990(
33991 WDI_ControlBlockType* pWDICtx,
33992 WDI_EventInfoType* pEventData
33993)
33994{
33995 WDI_LowLevelIndType wdiInd;
33996 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
33997
33998 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
33999 "%s: ", __func__);
34000
34001 /* sanity check */
34002 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34003 ( NULL == pEventData->pEventData))
34004 {
34005 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34006 "%s: Invalid parameters", __func__);
34007 WDI_ASSERT(0);
34008 return WDI_STATUS_E_FAILURE;
34009 }
34010
34011
34012
34013 /* Fill in the indication parameters */
34014 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_AVAILABLE_IND;
34015
34016 /* extract response and send it to UMAC */
34017 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34018
34019 /* Notify UMAC */
34020 if (pWDICtx->wdiLowLevelIndCB)
34021 {
34022 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34023 }
34024 else
34025 {
34026 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34027 "%s: WDILowLevelIndCb is null", __func__);
34028 WDI_ASSERT(0);
34029 return WDI_STATUS_E_FAILURE;
34030 }
34031 return WDI_STATUS_SUCCESS;
34032} /* End of WDI_ProcessEXTScanScanDoneInd */
34033
34034/**
34035 @brief Process EXTScan Result Indication indication from FW
34036
34037 @param pWDICtx: pointer to the WLAN DAL context
34038 pEventData: pointer to the event information structure
34039
34040 @see
34041 @return Result of the function call
34042*/
34043WDI_Status
34044WDI_ProcessEXTScanResultInd
34045(
34046 WDI_ControlBlockType* pWDICtx,
34047 WDI_EventInfoType* pEventData
34048)
34049{
34050 WDI_LowLevelIndType wdiInd;
34051 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34052
34053 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34054 "%s: ", __func__);
34055
34056 /* sanity check */
34057 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34058 ( NULL == pEventData->pEventData))
34059 {
34060 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34061 "%s: Invalid parameters", __func__);
34062 WDI_ASSERT(0);
34063 return WDI_STATUS_E_FAILURE;
34064 }
34065
34066 /* Fill in the indication parameters */
34067 wdiInd.wdiIndicationType = WDI_EXTSCAN_SCAN_RESULT_IND;
34068
34069 /* extract response and send it to UMAC */
34070 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34071
34072 /* Notify UMAC */
34073 if (pWDICtx->wdiLowLevelIndCB)
34074 {
34075 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34076 }
34077 else
34078 {
34079 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34080 "%s: WDILowLevelIndCb is null", __func__);
34081 WDI_ASSERT(0);
34082 return WDI_STATUS_E_FAILURE;
34083 }
34084 return WDI_STATUS_SUCCESS;
34085} /* End of WDI_ProcessEXTScanResultInd */
34086
34087/**
34088 @brief Process EXTScan BSSID Hotlist Result Indication indication from FW
34089
34090 @param pWDICtx: pointer to the WLAN DAL context
34091 pEventData: pointer to the event information structure
34092
34093 @see
34094 @return Result of the function call
34095*/
34096WDI_Status
34097WDI_ProcessEXTScanBssidHotListResultInd
34098(
34099 WDI_ControlBlockType* pWDICtx,
34100 WDI_EventInfoType* pEventData
34101)
34102{
34103 WDI_LowLevelIndType wdiInd;
34104 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34105
34106 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34107 "%s: ", __func__);
34108
34109 /* sanity check */
34110 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34111 ( NULL == pEventData->pEventData))
34112 {
34113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34114 "%s: Invalid parameters", __func__);
34115 WDI_ASSERT(0);
34116 return WDI_STATUS_E_FAILURE;
34117 }
34118
34119 /* Fill in the indication parameters */
34120 wdiInd.wdiIndicationType = WDI_EXTSCAN_BSSID_HOTLIST_RESULT_IND;
34121
34122 /* extract response and send it to UMAC */
34123 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34124
34125 /* Notify UMAC */
34126 if (pWDICtx->wdiLowLevelIndCB)
34127 {
34128 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34129 }
34130 else
34131 {
34132 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34133 "%s: WDILowLevelIndCb is null", __func__);
34134 WDI_ASSERT(0);
34135 return WDI_STATUS_E_FAILURE;
34136 }
34137 return WDI_STATUS_SUCCESS;
34138} /* End of WDI_ProcessEXTScanBssidHotListResultInd */
34139
34140/**
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053034141 @brief Process EXTScan SSID Hotlist Result Indication indication from FW
34142
34143 @param pWDICtx: pointer to the WLAN DAL context
34144 pEventData: pointer to the event information structure
34145
34146 @see
34147 @return Result of the function call
34148*/
34149WDI_Status
34150WDI_ProcessEXTScanSsidHotListResultInd
34151(
34152 WDI_ControlBlockType* pWDICtx,
34153 WDI_EventInfoType* pEventData
34154)
34155{
34156 WDI_LowLevelIndType wdiInd;
34157 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
34158
34159 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34160 "%s: ", __func__);
34161
34162 /* sanity check */
34163 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
34164 ( NULL == pEventData->pEventData))
34165 {
34166 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
34167 "%s: Invalid parameters", __func__);
34168 WDI_ASSERT(0);
34169 return WDI_STATUS_E_FAILURE;
34170 }
34171
34172 /* Fill in the indication parameters */
34173 wdiInd.wdiIndicationType = WDI_EXTSCAN_SSID_HOTLIST_RESULT_IND;
34174
34175 /* extract response and send it to UMAC */
34176 wdiInd.wdiIndicationData.pEXTScanIndData = (void *)pEventData->pEventData;
34177
34178 /* Notify UMAC */
34179 if (pWDICtx->wdiLowLevelIndCB)
34180 {
34181 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
34182 }
34183 else
34184 {
34185 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34186 "%s: WDILowLevelIndCb is null", __func__);
34187 WDI_ASSERT(0);
34188 return WDI_STATUS_E_FAILURE;
34189 }
34190 return WDI_STATUS_SUCCESS;
34191} /* End of WDI_ProcessEXTScanSsidHotListResultInd */
34192
34193
34194/**
Dino Mycle41bdc942014-06-10 11:30:24 +053034195 @brief WDI_EXTScanGetCapabilitiesReq
34196
34197 @param WDI_EXTScanGetCapabilitiesReqParams: Req parameter for the FW
34198 WDI_EXTScanGetCapabilitiesRspCb: callback for passing back the response
34199 of the Req operation received from the device
34200 pUserData: user data will be passed back with the callback
34201
34202 @return SUCCESS or FAIL
34203*/
34204WDI_Status
34205WDI_EXTScanGetCapabilitiesReq(
34206 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams,
34207 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb,
34208 void* pUserData)
34209{
34210 WDI_EventInfoType wdiEventData;
34211
34212 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34213 "%s: %d ",__func__, __LINE__);
34214 /*------------------------------------------------------------------------
34215 Sanity Check
34216 ------------------------------------------------------------------------*/
34217 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34218 {
34219 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34220 "WDI API call before module is initialized - Fail request");
34221
34222 return WDI_STATUS_E_NOT_ALLOWED;
34223 }
34224
34225 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CAPABILITIES_REQ;
34226 wdiEventData.pEventData = pwdiEXTScanGetCapabilitiesReqParams;
34227 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCapabilitiesReqParams);
34228 wdiEventData.pCBfnc = wdiEXTScanGetCapabilitiesRspCb;
34229 wdiEventData.pUserData = pUserData;
34230
34231 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34232}
34233
34234/**
34235 @brief WDI_ProcessEXTScanGetCapabilitiesReq -
34236 Extended Scan Get Capability request to FW
34237
34238 @param pWDICtx : wdi context
34239 pEventData : indication data
34240
34241 @see
34242 @return none
34243*/
34244WDI_Status
34245WDI_ProcessEXTScanGetCapabilitiesReq
34246(
34247 WDI_ControlBlockType* pWDICtx,
34248 WDI_EventInfoType* pEventData
34249)
34250{
34251 WDI_EXTScanGetCapabilitiesReqParams* pwdiEXTScanGetCapabilitiesReqParams;
34252 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
34253 wpt_uint8* pSendBuffer = NULL;
34254 wpt_uint16 usSendSize = 0;
34255 wpt_uint16 usDataOffset = 0;
34256 tHalExtScanGetCapReq halEXTScanGetCapReqParams;
34257
34258 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34259 "%s: %d Enter",__func__, __LINE__);
34260
34261 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34262 ( NULL == pEventData->pCBfnc ))
34263 {
34264 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34265 "%s: Invalid parameters", __func__);
34266 WDI_ASSERT(0);
34267 return WDI_STATUS_E_FAILURE;
34268 }
34269
34270 pwdiEXTScanGetCapabilitiesReqParams =
34271 (WDI_EXTScanGetCapabilitiesReqParams* )pEventData->pEventData;
34272 wdiEXTScanGetCapabilitiesRspCb =
34273 (WDI_EXTScanGetCapabilitiesRspCb)pEventData->pCBfnc;
34274
34275 /*-----------------------------------------------------------------------
34276 Get message buffer
34277 ! TO DO : proper conversion into the HAL Message Request Format
34278 -----------------------------------------------------------------------*/
34279 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34280 pWDICtx,
34281 WDI_EXTSCAN_GET_CAPABILITIES_REQ,
34282 sizeof(halEXTScanGetCapReqParams),
34283 &pSendBuffer, &usDataOffset,
34284 &usSendSize))||
34285 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetCapReqParams) )))
34286 {
34287 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34288 "Unable to get send buffer in %s %p %p %p", __func__,
34289 pEventData, pwdiEXTScanGetCapabilitiesReqParams,
34290 wdiEXTScanGetCapabilitiesRspCb);
34291 WDI_ASSERT(0);
34292 return WDI_STATUS_E_FAILURE;
34293 }
34294
34295 halEXTScanGetCapReqParams.requestId =
34296 pwdiEXTScanGetCapabilitiesReqParams->requestId;
34297 halEXTScanGetCapReqParams.sessionId =
34298 pwdiEXTScanGetCapabilitiesReqParams->sessionId;
34299
34300 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34301 " requestId %u "
34302 " sessionId %u ",
34303 halEXTScanGetCapReqParams.requestId,
34304 halEXTScanGetCapReqParams.sessionId);
34305
34306 wpalMemoryCopy(pSendBuffer+usDataOffset,
34307 &halEXTScanGetCapReqParams,
34308 sizeof(halEXTScanGetCapReqParams));
34309
34310 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34311
34312
34313 /*-------------------------------------------------------------------------
34314 Send EXTScan Stop Request to HAL
34315 -------------------------------------------------------------------------*/
34316 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34317 wdiEXTScanGetCapabilitiesRspCb, pEventData->pUserData,
34318 WDI_EXTSCAN_GET_CAPABILITIES_RSP);
34319}
34320
34321/**
34322 @brief WDI_EXTScanGetCachedResultsReq
34323
34324 @param WDI_EXTScanGetCachedResultsReqParams: Req parameter for the FW
34325 WDI_EXTScanGetCachedResultsRspCb: callback for passing back the response
34326 of the Req operation received from the device
34327 pUserData: user data will be passed back with the callback
34328
34329 @return SUCCESS or FAIL
34330*/
34331
34332WDI_Status
34333WDI_EXTScanGetCachedResultsReq(
34334 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams,
34335 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb,
34336 void* pUserData)
34337{
34338 WDI_EventInfoType wdiEventData;
34339
34340 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34341 "%s: %d Enter",__func__, __LINE__);
34342 /*------------------------------------------------------------------------
34343 Sanity Check
34344 ------------------------------------------------------------------------*/
34345 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34346 {
34347 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34348 "WDI API call before module is initialized - Fail request");
34349
34350 return WDI_STATUS_E_NOT_ALLOWED;
34351 }
34352
34353 wdiEventData.wdiRequest = WDI_EXTSCAN_GET_CACHED_RESULTS_REQ;
34354 wdiEventData.pEventData = pwdiEXTScanGetCachedResultsReqParams;
34355 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanGetCachedResultsReqParams);
34356 wdiEventData.pCBfnc = wdiEXTScanGetCachedResultsRspCb;
34357 wdiEventData.pUserData = pUserData;
34358
34359 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34360}
34361
34362/**
34363 @brief WDI_ProcessEXTScanGetCachedResultsReq -
34364 Extended Scan Get Cached Result request to FW
34365
34366 @param pWDICtx : wdi context
34367 pEventData : indication data
34368
34369 @see
34370 @return none
34371*/
34372WDI_Status
34373WDI_ProcessEXTScanGetCachedResultsReq
34374(
34375 WDI_ControlBlockType* pWDICtx,
34376 WDI_EventInfoType* pEventData
34377)
34378{
34379 WDI_EXTScanGetCachedResultsReqParams* pwdiEXTScanGetCachedResultsReqParams;
34380 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsCb;
34381 wpt_uint8* pSendBuffer = NULL;
34382 wpt_uint16 usSendSize = 0;
34383 wpt_uint16 usDataOffset = 0;
34384 tHalExtScanGetScanReq halEXTScanGetScanReqParams;
34385
34386 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34387 "%s: %d Enter",__func__, __LINE__);
34388
34389 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34390 ( NULL == pEventData->pCBfnc ))
34391 {
34392 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34393 "%s: Invalid parameters", __func__);
34394 WDI_ASSERT(0);
34395 return WDI_STATUS_E_FAILURE;
34396 }
34397
34398 pwdiEXTScanGetCachedResultsReqParams =
34399 (WDI_EXTScanGetCachedResultsReqParams*)pEventData->pEventData;
34400 wdiEXTScanGetCachedResultsCb =
34401 (WDI_EXTScanGetCachedResultsRspCb)pEventData->pCBfnc;
34402
34403 /*-----------------------------------------------------------------------
34404 Get message buffer
34405 ! TO DO : proper conversion into the HAL Message Request Format
34406 -----------------------------------------------------------------------*/
34407 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34408 pWDICtx,
34409 WDI_EXTSCAN_GET_CACHED_RESULTS_REQ,
34410 sizeof(tHalExtScanGetScanReq),
34411 &pSendBuffer, &usDataOffset,
34412 &usSendSize))||
34413 ( usSendSize < (usDataOffset + sizeof(halEXTScanGetScanReqParams) )))
34414 {
34415 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34416 "Unable to get send buffer in %s %p %p %p", __func__,
34417 pEventData, pwdiEXTScanGetCachedResultsReqParams,
34418 wdiEXTScanGetCachedResultsCb);
34419 WDI_ASSERT(0);
34420 return WDI_STATUS_E_FAILURE;
34421 }
34422
34423 halEXTScanGetScanReqParams.requestId =
34424 pwdiEXTScanGetCachedResultsReqParams->requestId;
34425 halEXTScanGetScanReqParams.sessionId =
34426 pwdiEXTScanGetCachedResultsReqParams->sessionId;
34427 halEXTScanGetScanReqParams.flush =
34428 pwdiEXTScanGetCachedResultsReqParams->flush;
34429
34430 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34431 " requestId %u "
34432 " sessionId %u "
34433 " flush %u ",
34434 halEXTScanGetScanReqParams.requestId,
34435 halEXTScanGetScanReqParams.sessionId,
34436 halEXTScanGetScanReqParams.flush);
34437
34438 wpalMemoryCopy(pSendBuffer+usDataOffset,
34439 &halEXTScanGetScanReqParams,
34440 sizeof(halEXTScanGetScanReqParams));
34441
34442 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34443
34444
34445 /*-------------------------------------------------------------------------
34446 Send EXTScan Stop Request to HAL
34447 -------------------------------------------------------------------------*/
34448 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34449 wdiEXTScanGetCachedResultsCb, pEventData->pUserData,
34450 WDI_EXTSCAN_GET_CACHED_RESULTS_RSP);
34451}
34452
34453/**
34454 @brief WDI_EXTScanStopReq
34455
34456 @param WDI_EXTScanStopReqParams: Req parameter for the FW
34457 WDI_EXTScanStopRspCb: callback for passing back the response
34458 of the Req operation received from the device
34459 pUserData: user data will be passed back with the callback
34460
34461 @return SUCCESS or FAIL
34462*/
34463WDI_Status
34464WDI_EXTScanStopReq(WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams,
34465 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb,
34466 void* pUserData)
34467{
34468 WDI_EventInfoType wdiEventData;
34469
34470 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34471 "%s: %d ",__func__, __LINE__);
34472 /*------------------------------------------------------------------------
34473 Sanity Check
34474 ------------------------------------------------------------------------*/
34475 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34476 {
34477 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34478 "WDI API call before module is initialized - Fail request");
34479
34480 return WDI_STATUS_E_NOT_ALLOWED;
34481 }
34482
34483 wdiEventData.wdiRequest = WDI_EXTSCAN_STOP_REQ;
34484 wdiEventData.pEventData = pwdiEXTScanStopReqParams;
34485 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStopReqParams);
34486 wdiEventData.pCBfnc = wdiEXTScanStopRspCb;
34487 wdiEventData.pUserData = pUserData;
34488
34489 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34490}
34491
34492/**
34493 @brief WDI_ProcessEXTScanStopReq -
34494 Extended Scan Stop request to FW
34495
34496 @param pWDICtx : wdi context
34497 pEventData : indication data
34498
34499 @see
34500 @return none
34501*/
34502WDI_Status
34503WDI_ProcessEXTScanStopReq
34504(
34505 WDI_ControlBlockType* pWDICtx,
34506 WDI_EventInfoType* pEventData
34507)
34508{
34509 WDI_EXTScanStopReqParams* pwdiEXTScanStopReqParams;
34510 WDI_EXTScanStopRspCb wdiEXTScanStopCb;
34511 wpt_uint8* pSendBuffer = NULL;
34512 wpt_uint16 usSendSize = 0;
34513 wpt_uint16 usDataOffset = 0;
34514 tHalExtScanStopReq halEXTScanStopReqParams;
34515
34516 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34517 "%s: %d ",__func__, __LINE__);
34518
34519 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34520 ( NULL == pEventData->pCBfnc ))
34521 {
34522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34523 "%s: Invalid parameters", __func__);
34524 WDI_ASSERT(0);
34525 return WDI_STATUS_E_FAILURE;
34526 }
34527
34528 pwdiEXTScanStopReqParams = (WDI_EXTScanStopReqParams*)pEventData->pEventData;
34529 wdiEXTScanStopCb = (WDI_EXTScanStopRspCb)pEventData->pCBfnc;
34530
34531 /*-----------------------------------------------------------------------
34532 Get message buffer
34533 ! TO DO : proper conversion into the HAL Message Request Format
34534 -----------------------------------------------------------------------*/
34535 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34536 pWDICtx,
34537 WDI_EXTSCAN_STOP_REQ,
34538 sizeof(tHalExtScanStopReq),
34539 &pSendBuffer, &usDataOffset,
34540 &usSendSize))||
34541 ( usSendSize < (usDataOffset + sizeof(halEXTScanStopReqParams) )))
34542 {
34543 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34544 "Unable to get send buffer in %s %p %p %p", __func__,
34545 pEventData, pwdiEXTScanStopReqParams, wdiEXTScanStopCb);
34546 WDI_ASSERT(0);
34547 return WDI_STATUS_E_FAILURE;
34548 }
34549
34550 halEXTScanStopReqParams.requestId =
34551 pwdiEXTScanStopReqParams->requestId;
34552 halEXTScanStopReqParams.sessionId =
34553 pwdiEXTScanStopReqParams->sessionId;
34554
34555 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34556 " halEXTScanStopReqParams.requestId %u "
34557 " halEXTScanStopReqParams.sessionId %u ",
34558 halEXTScanStopReqParams.requestId,
34559 halEXTScanStopReqParams.sessionId);
34560
34561 wpalMemoryCopy(pSendBuffer+usDataOffset,
34562 &halEXTScanStopReqParams,
34563 sizeof(halEXTScanStopReqParams));
34564
34565 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34566
34567
34568 /*-------------------------------------------------------------------------
34569 Send EXTScan Stop Request to HAL
34570 -------------------------------------------------------------------------*/
34571 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34572 wdiEXTScanStopCb, pEventData->pUserData,
34573 WDI_EXTSCAN_STOP_RSP);
34574}
34575
34576/**
34577 @brief WDI_EXTScanStartReq
34578
34579 @param WDI_EXTScanStartReqParams: Req parameter for the FW
34580 WDI_EXTScanStartRspCb: callback for passing back the response
34581 of the Req operation received from the device
34582 pUserData: user data will be passed back with the callback
34583
34584 @return SUCCESS or FAIL
34585*/
34586WDI_Status
34587WDI_EXTScanStartReq(WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams,
34588 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb,
34589 void* pUserData)
34590{
34591 WDI_EventInfoType wdiEventData;
34592
34593 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34594 "%s: %d Enter",__func__, __LINE__);
34595 /*------------------------------------------------------------------------
34596 Sanity Check
34597 ------------------------------------------------------------------------*/
34598 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34599 {
34600 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34601 "WDI API call before module is initialized - Fail request");
34602
34603 return WDI_STATUS_E_NOT_ALLOWED;
34604 }
34605
34606 wdiEventData.wdiRequest = WDI_EXTSCAN_START_REQ;
34607 wdiEventData.pEventData = pwdiEXTScanStartReqParams;
34608 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanStartReqParams);
34609 wdiEventData.pCBfnc = wdiEXTScanStartRspCb;
34610 wdiEventData.pUserData = pUserData;
34611
34612 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34613}
34614
34615/**
34616 @brief WDI_ProcessEXTScanStartReq -
34617 Extended Scan Start Request to FW
34618
34619 @param pWDICtx : wdi context
34620 pEventData : indication data
34621
34622 @see
34623 @return none
34624*/
34625WDI_Status
34626WDI_ProcessEXTScanStartReq
34627(
34628 WDI_ControlBlockType* pWDICtx,
34629 WDI_EventInfoType* pEventData
34630)
34631{
34632 WDI_EXTScanStartReqParams* pwdiEXTScanStartReqParams;
34633 WDI_EXTScanStartRspCb wdiEXTScanStartCb;
34634 wpt_uint8* pSendBuffer = NULL;
34635 wpt_uint16 usSendSize = 0;
34636 wpt_uint16 usDataOffset = 0;
34637 tpHalExtScanStartReq pHalExtScanStartReqParams;
34638 int i = 0;
34639 int j = 0;
34640
34641 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34642 "%s: %d Enter",__func__, __LINE__);
34643
34644 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34645 ( NULL == pEventData->pCBfnc ))
34646 {
34647 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34648 "%s: Invalid parameters", __func__);
34649 WDI_ASSERT(0);
34650 return WDI_STATUS_E_FAILURE;
34651 }
34652
34653 pwdiEXTScanStartReqParams =
34654 (WDI_EXTScanStartReqParams*)pEventData->pEventData;
34655 wdiEXTScanStartCb = (WDI_EXTScanStartRspCb)pEventData->pCBfnc;
34656
34657 /*-----------------------------------------------------------------------
34658 Get message buffer
34659 ! TO DO : proper conversion into the HAL Message Request Format
34660 -----------------------------------------------------------------------*/
34661 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34662 pWDICtx,
34663 WDI_EXTSCAN_START_REQ,
34664 sizeof(tHalExtScanStartReq),
34665 &pSendBuffer, &usDataOffset,
34666 &usSendSize))||
34667 ( usSendSize < (usDataOffset + sizeof(tHalExtScanStartReq) )))
34668 {
34669 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34670 "Unable to get send buffer in %s %p %p %p", __func__,
34671 pEventData, pwdiEXTScanStartReqParams, wdiEXTScanStartCb);
34672 WDI_ASSERT(0);
34673 return WDI_STATUS_E_FAILURE;
34674 }
34675
34676 pHalExtScanStartReqParams =
34677 (tpHalExtScanStartReq ) (pSendBuffer + usDataOffset);
34678
34679 pHalExtScanStartReqParams->basePeriod = pwdiEXTScanStartReqParams->basePeriod;
34680 pHalExtScanStartReqParams->maxApPerScan =
34681 pwdiEXTScanStartReqParams->maxAPperScan;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034682 pHalExtScanStartReqParams->reportThresholdPercent =
34683 pwdiEXTScanStartReqParams->reportThresholdPercent;
34684 pHalExtScanStartReqParams->reportThresholdNumScans =
34685 pwdiEXTScanStartReqParams->reportThresholdNumScans;
Dino Mycle41bdc942014-06-10 11:30:24 +053034686 pHalExtScanStartReqParams->requestId = pwdiEXTScanStartReqParams->requestId;
34687 pHalExtScanStartReqParams->sessionId = pwdiEXTScanStartReqParams->sessionId;
34688 pHalExtScanStartReqParams->numBuckets = pwdiEXTScanStartReqParams->numBuckets;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034689 pHalExtScanStartReqParams->homeAwayTime = pwdiEXTScanStartReqParams->homeAwayTime;
Dino Mycle41bdc942014-06-10 11:30:24 +053034690
34691 for( i = 0; i < WDI_WLAN_EXTSCAN_MAX_BUCKETS ; i++ )
34692 {
34693 pHalExtScanStartReqParams->bucketData[i].bucketId =
34694 pwdiEXTScanStartReqParams->buckets[i].bucket;
34695 pHalExtScanStartReqParams->bucketData[i].channelBand =
34696 pwdiEXTScanStartReqParams->buckets[i].band;
34697 pHalExtScanStartReqParams->bucketData[i].period =
34698 pwdiEXTScanStartReqParams->buckets[i].period;
34699 pHalExtScanStartReqParams->bucketData[i].reportEvents =
34700 pwdiEXTScanStartReqParams->buckets[i].reportEvents;
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034701 pHalExtScanStartReqParams->bucketData[i].max_period =
34702 pwdiEXTScanStartReqParams->buckets[i].max_period;
34703 pHalExtScanStartReqParams->bucketData[i].exponent =
34704 pwdiEXTScanStartReqParams->buckets[i].exponent;
34705 pHalExtScanStartReqParams->bucketData[i].step_count =
34706 pwdiEXTScanStartReqParams->buckets[i].step_count;
Dino Mycle41bdc942014-06-10 11:30:24 +053034707 pHalExtScanStartReqParams->bucketData[i].numChannels =
34708 pwdiEXTScanStartReqParams->buckets[i].numChannels;
34709
34710 for( j = 0; j< WDI_WLAN_EXTSCAN_MAX_CHANNELS; j++)
34711 {
34712 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel =
34713 pwdiEXTScanStartReqParams->buckets[i].channels[j].channel;
34714 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs =
34715 pwdiEXTScanStartReqParams->buckets[i].channels[j].dwellTimeMs;
34716 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive =
34717 pwdiEXTScanStartReqParams->buckets[i].channels[j].passive;
34718 }
34719
34720 }
34721
34722
34723 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034724 " basePeriod %u maxApPerScan %u reportThresholdPercent %u"
34725 "reportThresholdNumScans %u requestId %u"
34726 " sessionId %u numBuckets%u homeAwayTime %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053034727 pHalExtScanStartReqParams->basePeriod,
34728 pHalExtScanStartReqParams->maxApPerScan,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034729 pHalExtScanStartReqParams->reportThresholdPercent,
34730 pHalExtScanStartReqParams->reportThresholdNumScans,
Dino Mycle41bdc942014-06-10 11:30:24 +053034731 pHalExtScanStartReqParams->requestId,
34732 pHalExtScanStartReqParams->sessionId,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034733 pHalExtScanStartReqParams->numBuckets,
34734 pHalExtScanStartReqParams->homeAwayTime);
Dino Mycle41bdc942014-06-10 11:30:24 +053034735
34736 for( i = 0; i < pHalExtScanStartReqParams->numBuckets ; i++ )
34737 {
34738 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO ,
34739 " %d) bucketId %u channelBand %u period %u "
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034740 " reportEvents %u numChannels %u "
34741 "max_period %u exponent %u step_count %u",i,
Dino Mycle41bdc942014-06-10 11:30:24 +053034742 pHalExtScanStartReqParams->bucketData[i].bucketId,
34743 pHalExtScanStartReqParams->bucketData[i].channelBand,
34744 pHalExtScanStartReqParams->bucketData[i].period,
34745 pHalExtScanStartReqParams->bucketData[i].reportEvents,
Padma, Santhosh Kumar7b9190d2015-08-17 17:45:29 +053034746 pHalExtScanStartReqParams->bucketData[i].numChannels,
34747 pHalExtScanStartReqParams->bucketData[i].max_period,
34748 pHalExtScanStartReqParams->bucketData[i].exponent,
34749 pHalExtScanStartReqParams->bucketData[i].step_count);
Dino Mycle41bdc942014-06-10 11:30:24 +053034750
34751 for( j = 0; j< pHalExtScanStartReqParams->bucketData[i].numChannels; j++)
34752 {
34753 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34754 "%d) channel %u dwellTimeMs %u passive %u ",j,
34755 pHalExtScanStartReqParams->bucketData[i].channelList[j].channel,
34756 pHalExtScanStartReqParams->bucketData[i].channelList[j].dwellTimeMs,
34757 pHalExtScanStartReqParams->bucketData[i].channelList[j].passive);
34758 }
34759
34760 }
34761
Dino Mycle41bdc942014-06-10 11:30:24 +053034762 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34763
34764 /*-------------------------------------------------------------------------
34765 Send EXTSCAN Start Request to HAL
34766 -------------------------------------------------------------------------*/
34767 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34768 wdiEXTScanStartCb, pEventData->pUserData,
34769 WDI_EXTSCAN_START_RSP);
34770}
34771
34772/**
34773 @brief WDI_EXTScanSetBSSIDHotlistReq
34774
34775 @param WDI_EXTScanSetBSSIDHotlistReqParams: Req parameter for the FW
34776 WDI_EXTScanSetBSSIDHotlistRspCb: callback for passing back the response
34777 of the Req operation received from the device
34778 pUserData: user data will be passed back with the callback
34779
34780 @return SUCCESS or FAIL
34781*/
34782WDI_Status
34783WDI_EXTScanSetBSSIDHotlistReq(
34784 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams,
34785 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb,
34786 void* pUserData)
34787{
34788 WDI_EventInfoType wdiEventData;
34789
34790 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34791 "%s: %d Enter ",__func__, __LINE__);
34792 /*------------------------------------------------------------------------
34793 Sanity Check
34794 ------------------------------------------------------------------------*/
34795 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34796 {
34797 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34798 "WDI API call before module is initialized - Fail request");
34799
34800 return WDI_STATUS_E_NOT_ALLOWED;
34801 }
34802
34803 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ;
34804 wdiEventData.pEventData = pwdiEXTScanSetBSSIDHotlistReqParams;
34805 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetBSSIDHotlistReqParams);
34806 wdiEventData.pCBfnc = wdiEXTScanSetBSSIDHotlistRspCb;
34807 wdiEventData.pUserData = pUserData;
34808
34809 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34810}
34811
34812/**
34813 @brief WDI_ProcessEXTScanSetBSSIDHotlistReq -
34814 Extended Scan Set BSSSID Hotlist Request to FW
34815
34816 @param pWDICtx : wdi context
34817 pEventData : indication data
34818
34819 @see
34820 @return none
34821*/
34822WDI_Status
34823WDI_ProcessEXTScanSetBSSIDHotlistReq
34824(
34825 WDI_ControlBlockType* pWDICtx,
34826 WDI_EventInfoType* pEventData
34827)
34828{
34829 WDI_EXTScanSetBSSIDHotlistReqParams* pwdiEXTScanSetBSSIDHotlistReqParams;
34830 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
34831 wpt_uint8* pSendBuffer = NULL;
34832 wpt_uint16 usSendSize = 0;
34833 wpt_uint16 usDataOffset = 0;
34834 tpHalBssidHotlistSetReq pHalBssidHotlistSetReqParams;
34835 int i;
34836
34837 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34838 "%s: %d Enter",__func__, __LINE__);
34839
34840 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34841 ( NULL == pEventData->pCBfnc ))
34842 {
34843 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34844 "%s: Invalid parameters", __func__);
34845 WDI_ASSERT(0);
34846 return WDI_STATUS_E_FAILURE;
34847 }
34848
34849 pwdiEXTScanSetBSSIDHotlistReqParams =
34850 (WDI_EXTScanSetBSSIDHotlistReqParams *)pEventData->pEventData;
34851 wdiEXTScanSetBSSIDHotlistRspCb =
34852 (WDI_EXTScanSetBSSIDHotlistRspCb)pEventData->pCBfnc;
34853
34854 /*-----------------------------------------------------------------------
34855 Get message buffer
34856 ! TO DO : proper conversion into the HAL Message Request Format
34857 -----------------------------------------------------------------------*/
34858 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
34859 pWDICtx,
34860 WDI_EXTSCAN_SET_BSSID_HOTLIST_REQ,
34861 sizeof(tHalBssidHotlistSetReq),
34862 &pSendBuffer, &usDataOffset,
34863 &usSendSize))||
34864 ( usSendSize < (usDataOffset + sizeof(tHalBssidHotlistSetReq) )))
34865 {
34866 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
34867 "Unable to get send buffer in %s %p %p %p", __func__,
34868 pEventData, pwdiEXTScanSetBSSIDHotlistReqParams,
34869 wdiEXTScanSetBSSIDHotlistRspCb);
34870 WDI_ASSERT(0);
34871 return WDI_STATUS_E_FAILURE;
34872 }
34873 pHalBssidHotlistSetReqParams =
34874 (tpHalBssidHotlistSetReq) (pSendBuffer + usDataOffset);
34875
34876 pHalBssidHotlistSetReqParams->requestId =
34877 pwdiEXTScanSetBSSIDHotlistReqParams->requestId;
34878
34879 pHalBssidHotlistSetReqParams->sessionId =
34880 pwdiEXTScanSetBSSIDHotlistReqParams->sessionId;
34881
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034882 pHalBssidHotlistSetReqParams->lostBssidSampleSize =
34883 pwdiEXTScanSetBSSIDHotlistReqParams->lostBssidSampleSize;
34884
34885 pHalBssidHotlistSetReqParams->numBssid =
34886 pwdiEXTScanSetBSSIDHotlistReqParams->numBssid;
Dino Mycle41bdc942014-06-10 11:30:24 +053034887
34888 for( i = 0; i < WLAN_HAL_EXT_SCAN_MAX_HOTLIST_APS; i++){
34889
34890 wpalMemoryCopy(pHalBssidHotlistSetReqParams->ap[i].bssid,
34891 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].bssid,
34892 WDI_MAC_ADDR_LEN);
34893
34894 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold =
34895 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].low;
34896
34897 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold =
34898 pwdiEXTScanSetBSSIDHotlistReqParams->ap[i].high;
34899
Dino Mycle41bdc942014-06-10 11:30:24 +053034900 }
34901
34902 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034903 "ReqID %u sessionId %u numBssid %u lostBssidSampleSize: %u",
Dino Mycle41bdc942014-06-10 11:30:24 +053034904 pHalBssidHotlistSetReqParams->requestId,
34905 pHalBssidHotlistSetReqParams->sessionId,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034906 pHalBssidHotlistSetReqParams->numBssid,
34907 pHalBssidHotlistSetReqParams->lostBssidSampleSize);
Dino Mycle41bdc942014-06-10 11:30:24 +053034908
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034909 for( i = 0; i < pHalBssidHotlistSetReqParams->numBssid; i++){
Dino Mycle41bdc942014-06-10 11:30:24 +053034910
34911 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034912 "%s %d %d) BSSID: %pM lowRssiThreshold %d highRssiThreshold %d",
Dino Mycle41bdc942014-06-10 11:30:24 +053034913 __func__, __LINE__, i,
34914 pHalBssidHotlistSetReqParams->ap[i].bssid,
34915 pHalBssidHotlistSetReqParams->ap[i].lowRssiThreshold,
Padma, Santhosh Kumar37f4fd12015-08-19 14:37:37 +053034916 pHalBssidHotlistSetReqParams->ap[i].highRssiThreshold);
Dino Mycle41bdc942014-06-10 11:30:24 +053034917
34918 }
34919
34920 pWDICtx->pReqStatusUserData = pEventData->pUserData;
34921
34922
34923 /*-------------------------------------------------------------------------
34924 Send EXTScan Stop Request to HAL
34925 -------------------------------------------------------------------------*/
34926 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
34927 wdiEXTScanSetBSSIDHotlistRspCb, pEventData->pUserData,
34928 WDI_EXTSCAN_SET_HOTLIST_BSSID_RSP);
34929}
34930
34931/**
34932 @brief WDI_EXTScanResetBSSIDHotlistReq
34933
34934 @param WDI_EXTScanResetBSSIDHotlistReqParams: Req parameter for the FW
34935 WDI_EXTScanResetBSSIDHotlistRspCb: callback for passing back the response
34936 of the Req operation received from the device
34937 pUserData: user data will be passed back with the callback
34938
34939 @return SUCCESS or FAIL
34940*/
34941WDI_Status
34942WDI_EXTScanResetBSSIDHotlistReq(
34943 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams,
34944 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb,
34945 void* pUserData)
34946{
34947 WDI_EventInfoType wdiEventData;
34948
34949 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34950 "%s: %d",__func__, __LINE__);
34951 /*------------------------------------------------------------------------
34952 Sanity Check
34953 ------------------------------------------------------------------------*/
34954 if ( eWLAN_PAL_FALSE == gWDIInitialized )
34955 {
34956 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
34957 "WDI API call before module is initialized - Fail request");
34958
34959 return WDI_STATUS_E_NOT_ALLOWED;
34960 }
34961
34962 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ;
34963 wdiEventData.pEventData = pwdiEXTScanResetBSSIDHotlistReqParams;
34964 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetBSSIDHotlistReqParams);
34965 wdiEventData.pCBfnc = wdiEXTScanResetBSSIDHotlistRspCb;
34966 wdiEventData.pUserData = pUserData;
34967
34968 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
34969}
34970
34971/**
34972 @brief WDI_ProcessEXTScanResetBSSIDHotlistReq -
34973 Extended Scan reset BSSID hotlist Request to FW
34974
34975 @param pWDICtx : wdi context
34976 pEventData : indication data
34977
34978 @see
34979 @return none
34980*/
34981WDI_Status
34982WDI_ProcessEXTScanResetBSSIDHotlistReq
34983(
34984 WDI_ControlBlockType* pWDICtx,
34985 WDI_EventInfoType* pEventData
34986)
34987{
34988 WDI_EXTScanResetBSSIDHotlistReqParams* pwdiEXTScanResetBSSIDHotlistReqParams;
34989 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
34990 wpt_uint8* pSendBuffer = NULL;
34991 wpt_uint16 usSendSize = 0;
34992 wpt_uint16 usDataOffset = 0;
34993 tpHalHotlistResetReq pHalHotlistResetReqParams;
34994
34995 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
34996 "%s: %d",__func__, __LINE__);
34997
34998 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
34999 ( NULL == pEventData->pCBfnc ))
35000 {
35001 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35002 "%s: Invalid parameters", __func__);
35003 WDI_ASSERT(0);
35004 return WDI_STATUS_E_FAILURE;
35005 }
35006
35007 pwdiEXTScanResetBSSIDHotlistReqParams =
35008 (WDI_EXTScanResetBSSIDHotlistReqParams *)pEventData->pEventData;
35009 wdiEXTScanResetBSSIDHotlistRspCb =
35010 (WDI_EXTScanResetBSSIDHotlistRspCb)pEventData->pCBfnc;
35011
35012 /*-----------------------------------------------------------------------
35013 Get message buffer
35014 ! TO DO : proper conversion into the HAL Message Request Format
35015 -----------------------------------------------------------------------*/
35016 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35017 pWDICtx,
35018 WDI_EXTSCAN_RESET_BSSID_HOTLIST_REQ,
35019 sizeof(tHalHotlistResetReq),
35020 &pSendBuffer, &usDataOffset,
35021 &usSendSize))||
35022 ( usSendSize < (usDataOffset + sizeof(tHalHotlistResetReq) )))
35023 {
35024 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35025 "Unable to get send buffer in %s %p %p %p", __func__,
35026 pEventData, pwdiEXTScanResetBSSIDHotlistReqParams,
35027 wdiEXTScanResetBSSIDHotlistRspCb);
35028 WDI_ASSERT(0);
35029 return WDI_STATUS_E_FAILURE;
35030 }
35031 pHalHotlistResetReqParams =
35032 (tpHalHotlistResetReq) (pSendBuffer+usDataOffset);
35033
35034 pHalHotlistResetReqParams->requestId =
35035 pwdiEXTScanResetBSSIDHotlistReqParams->requestId;
35036
35037 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35038
35039 /*-------------------------------------------------------------------------
35040 Send EXTScan Stop Request to HAL
35041 -------------------------------------------------------------------------*/
35042 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35043 wdiEXTScanResetBSSIDHotlistRspCb, pEventData->pUserData,
35044 WDI_EXTSCAN_RESET_HOTLIST_BSSID_RSP);
35045}
35046
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053035047
35048/**
35049 @brief WDI_EXTScanSetSSIDHotlistReq
35050
35051 @param WDI_EXTScanSetSSIDHotlistReqParams: Req parameter for the FW
35052 WDI_EXTScanSetSSIDHotlistRspCb: callback for passing back the response
35053 of the Req operation received from the device
35054 pUserData: user data will be passed back with the callback
35055
35056 @return SUCCESS or FAIL
35057*/
35058WDI_Status
35059WDI_EXTScanSetSSIDHotlistReq(
35060 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams,
35061 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb,
35062 void* pUserData)
35063{
35064 WDI_EventInfoType wdiEventData;
35065
35066 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35067 "%s: %d Enter ",__func__, __LINE__);
35068 /*------------------------------------------------------------------------
35069 Sanity Check
35070 ------------------------------------------------------------------------*/
35071 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35072 {
35073 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35074 "WDI API call before module is initialized - Fail request");
35075
35076 return WDI_STATUS_E_NOT_ALLOWED;
35077 }
35078
35079 wdiEventData.wdiRequest = WDI_EXTSCAN_SET_SSID_HOTLIST_REQ;
35080 wdiEventData.pEventData = pwdiEXTScanSetSSIDHotlistReqParams;
35081 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanSetSSIDHotlistReqParams);
35082 wdiEventData.pCBfnc = wdiEXTScanSetSSIDHotlistRspCb;
35083 wdiEventData.pUserData = pUserData;
35084
35085 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35086}
35087
35088/**
35089 @brief WDI_ProcessEXTScanSetSSIDHotlistReq -
35090 Extended Scan Set SSSID Hotlist Request to FW
35091
35092 @param pWDICtx : wdi context
35093 pEventData : indication data
35094
35095 @see
35096 @return none
35097*/
35098WDI_Status
35099WDI_ProcessEXTScanSetSSIDHotlistReq
35100(
35101 WDI_ControlBlockType* pWDICtx,
35102 WDI_EventInfoType* pEventData
35103)
35104{
35105 WDI_EXTScanSetSSIDHotlistReqParams* pwdiEXTScanSetSSIDHotlistReqParams;
35106 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
35107 wpt_uint8* pSendBuffer = NULL;
35108 wpt_uint16 usSendSize = 0;
35109 wpt_uint16 usDataOffset = 0;
35110 tpHalSsidHotlistSetReq pHalSsidHotlistSetReqParams;
35111 int i;
35112
35113 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35114 "%s: %d Enter",__func__, __LINE__);
35115
35116 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35117 ( NULL == pEventData->pCBfnc ))
35118 {
35119 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35120 "%s: Invalid parameters", __func__);
35121 WDI_ASSERT(0);
35122 return WDI_STATUS_E_FAILURE;
35123 }
35124
35125 pwdiEXTScanSetSSIDHotlistReqParams =
35126 (WDI_EXTScanSetSSIDHotlistReqParams *)pEventData->pEventData;
35127 wdiEXTScanSetSSIDHotlistRspCb =
35128 (WDI_EXTScanSetSSIDHotlistRspCb)pEventData->pCBfnc;
35129
35130 /*-----------------------------------------------------------------------
35131 Get message buffer
35132 ! TO DO : proper conversion into the HAL Message Request Format
35133 -----------------------------------------------------------------------*/
35134 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35135 pWDICtx,
35136 WDI_EXTSCAN_SET_SSID_HOTLIST_REQ,
35137 sizeof(tHalSsidHotlistSetReq),
35138 &pSendBuffer, &usDataOffset,
35139 &usSendSize))||
35140 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistSetReq) )))
35141 {
35142 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35143 "Unable to get send buffer in %s %p %p %p", __func__,
35144 pEventData, pwdiEXTScanSetSSIDHotlistReqParams,
35145 wdiEXTScanSetSSIDHotlistRspCb);
35146 WDI_ASSERT(0);
35147 return WDI_STATUS_E_FAILURE;
35148 }
35149 pHalSsidHotlistSetReqParams =
35150 (tpHalSsidHotlistSetReq) (pSendBuffer + usDataOffset);
35151
35152 pHalSsidHotlistSetReqParams->requestId =
35153 pwdiEXTScanSetSSIDHotlistReqParams->requestId;
35154
35155 pHalSsidHotlistSetReqParams->sessionId =
35156 pwdiEXTScanSetSSIDHotlistReqParams->sessionId;
35157
35158 pHalSsidHotlistSetReqParams->lostSsidSampleSize =
35159 pwdiEXTScanSetSSIDHotlistReqParams->lostSsidSampleSize;;
35160
35161 pHalSsidHotlistSetReqParams->numSsid =
35162 pwdiEXTScanSetSSIDHotlistReqParams->numSsid;
35163
35164 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
35165
35166 wpalMemoryZero(pHalSsidHotlistSetReqParams->ssid[i].ssid, 33);
35167 wpalMemoryCopy(pHalSsidHotlistSetReqParams->ssid[i].ssid,
35168 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.sSSID,
35169 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].ssid.ucLength);
35170
35171 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold =
35172 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].lowRssiThreshold;
35173
35174 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold =
35175 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].highRssiThreshold;
35176
35177 pHalSsidHotlistSetReqParams->ssid[i].band =
35178 pwdiEXTScanSetSSIDHotlistReqParams->ssid[i].band;
35179 }
35180
35181 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35182 "ReqID %u sessionId %u numSsid %u lost_ssid_sample_size: %u",
35183 pHalSsidHotlistSetReqParams->requestId,
35184 pHalSsidHotlistSetReqParams->sessionId,
35185 pHalSsidHotlistSetReqParams->numSsid,
35186 pHalSsidHotlistSetReqParams->lostSsidSampleSize);
35187
35188 for( i = 0; i < pHalSsidHotlistSetReqParams->numSsid; i++){
35189
35190 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35191 "%s %d %d) SSID = %s lowRssiThreshold %d highRssiThreshold %d band: %d",
35192 __func__, __LINE__, i,
35193 pHalSsidHotlistSetReqParams->ssid[i].ssid,
35194 pHalSsidHotlistSetReqParams->ssid[i].lowRssiThreshold,
35195 pHalSsidHotlistSetReqParams->ssid[i].highRssiThreshold,
35196 pHalSsidHotlistSetReqParams->ssid[i].band);
35197 }
35198
35199 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35200
35201
35202 /*-------------------------------------------------------------------------
35203 Send EXTScan Stop Request to HAL
35204 -------------------------------------------------------------------------*/
35205 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35206 wdiEXTScanSetSSIDHotlistRspCb, pEventData->pUserData,
35207 WDI_EXTSCAN_SET_HOTLIST_SSID_RSP);
35208}
35209
35210/**
35211 @brief WDI_EXTScanResetSSIDHotlistReq
35212
35213 @param WDI_EXTScanResetSSIDHotlistReqParams: Req parameter for the FW
35214 WDI_EXTScanResetSSIDHotlistRspCb: callback for passing back the response
35215 of the Req operation received from the device
35216 pUserData: user data will be passed back with the callback
35217
35218 @return SUCCESS or FAIL
35219*/
35220WDI_Status
35221WDI_EXTScanResetSSIDHotlistReq(
35222 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams,
35223 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb,
35224 void* pUserData)
35225{
35226 WDI_EventInfoType wdiEventData;
35227
35228 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35229 "%s: %d",__func__, __LINE__);
35230 /*------------------------------------------------------------------------
35231 Sanity Check
35232 ------------------------------------------------------------------------*/
35233 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35234 {
35235 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35236 "WDI API call before module is initialized - Fail request");
35237
35238 return WDI_STATUS_E_NOT_ALLOWED;
35239 }
35240
35241 wdiEventData.wdiRequest = WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ;
35242 wdiEventData.pEventData = pwdiEXTScanResetSSIDHotlistReqParams;
35243 wdiEventData.uEventDataSize = sizeof(*pwdiEXTScanResetSSIDHotlistReqParams);
35244 wdiEventData.pCBfnc = wdiEXTScanResetSSIDHotlistRspCb;
35245 wdiEventData.pUserData = pUserData;
35246
35247 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35248}
35249
35250/**
35251 @brief WDI_ProcessEXTScanResetSSIDHotlistReq -
35252 Extended Scan reset SSID hotlist Request to FW
35253
35254 @param pWDICtx : wdi context
35255 pEventData : indication data
35256
35257 @see
35258 @return none
35259*/
35260WDI_Status
35261WDI_ProcessEXTScanResetSSIDHotlistReq
35262(
35263 WDI_ControlBlockType* pWDICtx,
35264 WDI_EventInfoType* pEventData
35265)
35266{
35267 WDI_EXTScanResetSSIDHotlistReqParams* pwdiEXTScanResetSSIDHotlistReqParams;
35268 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
35269 wpt_uint8* pSendBuffer = NULL;
35270 wpt_uint16 usSendSize = 0;
35271 wpt_uint16 usDataOffset = 0;
35272 tpHalSsidHotlistResetReq pHalSsidHotlistResetReqParams;
35273
35274 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35275 "%s: %d",__func__, __LINE__);
35276
35277 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
35278 ( NULL == pEventData->pCBfnc ))
35279 {
35280 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35281 "%s: Invalid parameters", __func__);
35282 WDI_ASSERT(0);
35283 return WDI_STATUS_E_FAILURE;
35284 }
35285
35286 pwdiEXTScanResetSSIDHotlistReqParams =
35287 (WDI_EXTScanResetSSIDHotlistReqParams *)pEventData->pEventData;
35288 wdiEXTScanResetSSIDHotlistRspCb =
35289 (WDI_EXTScanResetSSIDHotlistRspCb)pEventData->pCBfnc;
35290
35291 /*-----------------------------------------------------------------------
35292 Get message buffer
35293 ! TO DO : proper conversion into the HAL Message Request Format
35294 -----------------------------------------------------------------------*/
35295 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35296 pWDICtx,
35297 WDI_EXTSCAN_RESET_SSID_HOTLIST_REQ,
35298 sizeof(tHalSsidHotlistResetReq),
35299 &pSendBuffer, &usDataOffset,
35300 &usSendSize))||
35301 ( usSendSize < (usDataOffset + sizeof(tHalSsidHotlistResetReq) )))
35302 {
35303 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35304 "Unable to get send buffer in %s %p %p %p", __func__,
35305 pEventData, pwdiEXTScanResetSSIDHotlistReqParams,
35306 wdiEXTScanResetSSIDHotlistRspCb);
35307 WDI_ASSERT(0);
35308 return WDI_STATUS_E_FAILURE;
35309 }
35310 pHalSsidHotlistResetReqParams =
35311 (tpHalSsidHotlistResetReq) (pSendBuffer+usDataOffset);
35312
35313 pHalSsidHotlistResetReqParams->requestId =
35314 pwdiEXTScanResetSSIDHotlistReqParams->requestId;
35315
35316 pWDICtx->pReqStatusUserData = pEventData->pUserData;
35317
35318 /*-------------------------------------------------------------------------
35319 Send RESET_HOTLIST_SSID Request to HAL
35320 -------------------------------------------------------------------------*/
35321 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35322 wdiEXTScanResetSSIDHotlistRspCb, pEventData->pUserData,
35323 WDI_EXTSCAN_RESET_HOTLIST_SSID_RSP);
35324}
35325
35326
Dino Mycle41bdc942014-06-10 11:30:24 +053035327/**
Padma, Santhosh Kumarc1f7f052015-08-26 12:29:01 +053035328 @brief WDI_HighPriorityDataInfoInd
35329
35330 @param pHighPriorityDataInfoIndParams: Req parameter for the FW
35331
35332 @return SUCCESS or FAIL
35333*/
35334WDI_Status
35335WDI_HighPriorityDataInfoInd
35336(
35337 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams
35338)
35339{
35340 WDI_EventInfoType wdiEventData;
35341
35342 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35343 "%s: %d",__func__, __LINE__);
35344 /*------------------------------------------------------------------------
35345 Sanity Check
35346 ------------------------------------------------------------------------*/
35347 if ( eWLAN_PAL_FALSE == gWDIInitialized )
35348 {
35349 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
35350 "WDI API call before module is initialized - Fail request");
35351
35352 return WDI_STATUS_E_NOT_ALLOWED;
35353 }
35354
35355 wdiEventData.wdiRequest = WDI_HIGH_PRIORITY_DATA_INFO_IND;
35356 wdiEventData.pEventData = pHighPriorityDataInfoIndParams;
35357 wdiEventData.uEventDataSize = sizeof(*pHighPriorityDataInfoIndParams);
35358 wdiEventData.pCBfnc = NULL;
35359 wdiEventData.pUserData = NULL;
35360
35361 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35362}
35363
35364/**
35365 @brief WDI_ProcessHighPriorityDataInfoInd -
35366 Send WFD indication to FW
35367
35368 @param pWDICtx : wdi context
35369 pEventData : indication data
35370
35371 @see
35372 @return none
35373*/
35374WDI_Status
35375WDI_ProcessHighPriorityDataInfoInd
35376(
35377 WDI_ControlBlockType* pWDICtx,
35378 WDI_EventInfoType* pEventData
35379)
35380{
35381 WDI_HighPriorityDataInfoIndParams* pHighPriorityDataInfoIndParams;
35382 wpt_uint8* pSendBuffer = NULL;
35383 wpt_uint16 usSendSize = 0;
35384 wpt_uint16 usDataOffset = 0;
35385 tpHalHighPriorityDataInfoInd pHalHighPriorityDataInfoIndParams;
35386 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
35387
35388 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35389 "%s: %d",__func__, __LINE__);
35390
35391 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35392 ( NULL == pEventData->pEventData))
35393 {
35394 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35395 "%s: Invalid parameters", __func__);
35396 WDI_ASSERT(0);
35397 return WDI_STATUS_E_FAILURE;
35398 }
35399
35400 pHighPriorityDataInfoIndParams =
35401 (WDI_HighPriorityDataInfoIndParams *)pEventData->pEventData;
35402
35403 /*-----------------------------------------------------------------------
35404 Get message buffer
35405 -----------------------------------------------------------------------*/
35406 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
35407 pWDICtx,
35408 WDI_HIGH_PRIORITY_DATA_INFO_IND,
35409 sizeof(tHalHighPriorityDataInfoInd),
35410 &pSendBuffer, &usDataOffset,
35411 &usSendSize))||
35412 ( usSendSize < (usDataOffset + sizeof(tHalHighPriorityDataInfoInd) )))
35413 {
35414 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35415 "Unable to get send buffer in %s %p %p", __func__,
35416 pEventData, pHighPriorityDataInfoIndParams);
35417 WDI_ASSERT(0);
35418 return WDI_STATUS_E_FAILURE;
35419 }
35420 pHalHighPriorityDataInfoIndParams =
35421 (tpHalHighPriorityDataInfoInd) (pSendBuffer+usDataOffset);
35422
35423 pHalHighPriorityDataInfoIndParams->pause =
35424 pHighPriorityDataInfoIndParams->pause;
35425
35426 pWDICtx->pReqStatusUserData = NULL;
35427 pWDICtx->pfncRspCB = NULL;
35428
35429 /*-------------------------------------------------------------------------
35430 Send HIGH_PRIORITY_DATA_INFO Request to HAL
35431 -------------------------------------------------------------------------*/
35432 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
35433 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
35434}
35435
35436/**
Dino Mycle41bdc942014-06-10 11:30:24 +053035437 @brief Process Extended Scan Start Rsp function (called when a response
35438 is being received over the bus from HAL)
35439
35440 @param pWDICtx: pointer to the WLAN DAL context
35441 pEventData: pointer to the event information structure
35442
35443 @see
35444 @return Result of the function call
35445*/
35446WDI_Status
35447WDI_ProcessEXTScanStartRsp
35448(
35449 WDI_ControlBlockType* pWDICtx,
35450 WDI_EventInfoType* pEventData
35451)
35452{
35453 WDI_EXTScanStartRspCb wdiEXTScanStartRspCb;
35454
35455 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35456 "%s: %d",__func__, __LINE__);
35457 /*-------------------------------------------------------------------------
35458 Sanity check
35459 -------------------------------------------------------------------------*/
35460 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35461 ( NULL == pEventData->pEventData))
35462 {
35463 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35464 "%s: Invalid parameters", __func__);
35465 WDI_ASSERT(0);
35466 return WDI_STATUS_E_FAILURE;
35467 }
35468
35469 wdiEXTScanStartRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
35470 if ( NULL == wdiEXTScanStartRspCb)
35471 {
35472 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35473 "%s: Callback function Invalid", __func__);
35474 WDI_ASSERT(0);
35475 return WDI_STATUS_E_FAILURE;
35476 }
35477
35478 wdiEXTScanStartRspCb((void *)pEventData->pEventData, pWDICtx->pRspCBUserData);
35479
35480 return WDI_STATUS_SUCCESS;
35481}
35482
35483
35484/**
35485 @brief Process Extended Scan Stop Rsp function (called when a response
35486 is being received over the bus from HAL)
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*/
35494WDI_Status
35495WDI_ProcessEXTScanStopRsp
35496(
35497 WDI_ControlBlockType* pWDICtx,
35498 WDI_EventInfoType* pEventData
35499)
35500{
35501 WDI_EXTScanStopRspCb wdiEXTScanStopRspCb;
35502
35503 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35504 "%s: %d",__func__, __LINE__);
35505
35506
35507 /*-------------------------------------------------------------------------
35508 Sanity check
35509 -------------------------------------------------------------------------*/
35510 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35511 ( NULL == pEventData->pEventData))
35512 {
35513 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35514 "%s: Invalid parameters", __func__);
35515 WDI_ASSERT(0);
35516 return WDI_STATUS_E_FAILURE;
35517 }
35518
35519 wdiEXTScanStopRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
35520 if ( NULL == wdiEXTScanStopRspCb)
35521 {
35522 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35523 "%s: Callback function Invalid", __func__);
35524 WDI_ASSERT(0);
35525 return WDI_STATUS_E_FAILURE;
35526 }
35527
35528 wdiEXTScanStopRspCb((void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35529
35530 return WDI_STATUS_SUCCESS;
35531}
35532
35533/**
35534 @brief Process Extended Scan Get Cached Rsp function (called when a response
35535 is being received over the bus from HAL)
35536
35537 @param pWDICtx: pointer to the WLAN DAL context
35538 pEventData: pointer to the event information structure
35539
35540 @see
35541 @return Result of the function call
35542*/
35543WDI_Status
35544WDI_ProcessEXTScanGetCachedResultsRsp
35545(
35546 WDI_ControlBlockType* pWDICtx,
35547 WDI_EventInfoType* pEventData
35548)
35549{
35550 WDI_EXTScanGetCachedResultsRspCb wdiEXTScanGetCachedResultsRspCb;
35551
35552 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35553 "%s: %d Enter",__func__, __LINE__);
35554
35555
35556 /*-------------------------------------------------------------------------
35557 Sanity check
35558 -------------------------------------------------------------------------*/
35559 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35560 ( NULL == pEventData->pEventData))
35561 {
35562 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35563 "%s: Invalid parameters", __func__);
35564 WDI_ASSERT(0);
35565 return WDI_STATUS_E_FAILURE;
35566 }
35567
35568 wdiEXTScanGetCachedResultsRspCb = (WDI_EXTScanStartRspCb)pWDICtx->pfncRspCB;
35569 if ( NULL == wdiEXTScanGetCachedResultsRspCb)
35570 {
35571 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35572 "%s: Callback function Invalid", __func__);
35573 WDI_ASSERT(0);
35574 return WDI_STATUS_E_FAILURE;
35575 }
35576
35577 wdiEXTScanGetCachedResultsRspCb(
35578 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35579
35580 return WDI_STATUS_SUCCESS;
35581}
35582
35583/**
35584 @brief Process Extended Scan Get Capabilityu Rsp function (called when a response
35585 is being received over the bus from HAL)
35586
35587 @param pWDICtx: pointer to the WLAN DAL context
35588 pEventData: pointer to the event information structure
35589
35590 @see
35591 @return Result of the function call
35592*/
35593WDI_Status
35594WDI_ProcessEXTScanGetCapabilitiesRsp
35595(
35596 WDI_ControlBlockType* pWDICtx,
35597 WDI_EventInfoType* pEventData
35598)
35599{
35600 WDI_EXTScanGetCapabilitiesRspCb wdiEXTScanGetCapabilitiesRspCb;
35601
35602 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35603 "%s: %d ",__func__, __LINE__);
35604
35605
35606 /*-------------------------------------------------------------------------
35607 Sanity check
35608 -------------------------------------------------------------------------*/
35609 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35610 ( NULL == pEventData->pEventData))
35611 {
35612 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35613 "%s: Invalid parameters", __func__);
35614 WDI_ASSERT(0);
35615 return WDI_STATUS_E_FAILURE;
35616 }
35617
35618 wdiEXTScanGetCapabilitiesRspCb =
35619 (WDI_EXTScanGetCapabilitiesRspCb)pWDICtx->pfncRspCB;
35620 if ( NULL == wdiEXTScanGetCapabilitiesRspCb)
35621 {
35622 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35623 "%s: Callback function Invalid", __func__);
35624 WDI_ASSERT(0);
35625 return WDI_STATUS_E_FAILURE;
35626 }
35627
35628 wdiEXTScanGetCapabilitiesRspCb(
35629 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35630
35631 return WDI_STATUS_SUCCESS;
35632}
35633
35634/**
35635 @brief Process Extended Scan Set hotlist BSSID Rsp function (called when a
35636 response is being received over the bus from HAL)
35637
35638 @param pWDICtx: pointer to the WLAN DAL context
35639 pEventData: pointer to the event information structure
35640
35641 @see
35642 @return Result of the function call
35643*/
35644WDI_Status
35645WDI_ProcessEXTScanSetHotlistBSSIDRsp
35646(
35647 WDI_ControlBlockType* pWDICtx,
35648 WDI_EventInfoType* pEventData
35649)
35650{
35651 WDI_EXTScanSetBSSIDHotlistRspCb wdiEXTScanSetBSSIDHotlistRspCb;
35652
35653 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35654 "%s: %d ",__func__, __LINE__);
35655
35656
35657 /*-------------------------------------------------------------------------
35658 Sanity check
35659 -------------------------------------------------------------------------*/
35660 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35661 ( NULL == pEventData->pEventData))
35662 {
35663 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35664 "%s: Invalid parameters", __func__);
35665 WDI_ASSERT(0);
35666 return WDI_STATUS_E_FAILURE;
35667 }
35668
35669 wdiEXTScanSetBSSIDHotlistRspCb =
35670 (WDI_EXTScanSetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
35671 if ( NULL == wdiEXTScanSetBSSIDHotlistRspCb)
35672 {
35673 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35674 "%s: Callback function Invalid", __func__);
35675 WDI_ASSERT(0);
35676 return WDI_STATUS_E_FAILURE;
35677 }
35678
35679 wdiEXTScanSetBSSIDHotlistRspCb(
35680 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35681
35682 return WDI_STATUS_SUCCESS;
35683}
35684
35685/**
35686 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
35687 when a response is being received over the bus from HAL)
35688
35689 @param pWDICtx: pointer to the WLAN DAL context
35690 pEventData: pointer to the event information structure
35691
35692 @see
35693 @return Result of the function call
35694*/
35695WDI_Status
35696WDI_ProcessEXTScanResetHotlistBSSIDRsp
35697(
35698 WDI_ControlBlockType* pWDICtx,
35699 WDI_EventInfoType* pEventData
35700)
35701{
35702 WDI_EXTScanResetBSSIDHotlistRspCb wdiEXTScanResetBSSIDHotlistRspCb;
35703
35704 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35705 "%s: %d ",__func__, __LINE__);
35706
35707
35708 /*-------------------------------------------------------------------------
35709 Sanity check
35710 -------------------------------------------------------------------------*/
35711 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35712 ( NULL == pEventData->pEventData))
35713 {
35714 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35715 "%s: Invalid parameters", __func__);
35716 WDI_ASSERT(0);
35717 return WDI_STATUS_E_FAILURE;
35718 }
35719
35720 wdiEXTScanResetBSSIDHotlistRspCb =
35721 (WDI_EXTScanResetBSSIDHotlistRspCb)pWDICtx->pfncRspCB;
35722 if ( NULL == wdiEXTScanResetBSSIDHotlistRspCb)
35723 {
35724 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35725 "%s: Callback function Invalid", __func__);
35726 WDI_ASSERT(0);
35727 return WDI_STATUS_E_FAILURE;
35728 }
35729
35730 wdiEXTScanResetBSSIDHotlistRspCb(
35731 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35732
35733 return WDI_STATUS_SUCCESS;
35734}
Padma, Santhosh Kumar9acee012015-08-21 19:58:01 +053035735
35736/**
35737 @brief Process Extended Scan Set hotlist SSID Rsp function (called when a
35738 response is being received over the bus from HAL)
35739
35740 @param pWDICtx: pointer to the WLAN DAL context
35741 pEventData: pointer to the event information structure
35742
35743 @see
35744 @return Result of the function call
35745*/
35746WDI_Status
35747WDI_ProcessEXTScanSetHotlistSSIDRsp
35748(
35749 WDI_ControlBlockType* pWDICtx,
35750 WDI_EventInfoType* pEventData
35751)
35752{
35753 WDI_EXTScanSetSSIDHotlistRspCb wdiEXTScanSetSSIDHotlistRspCb;
35754
35755 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35756 "%s: %d ",__func__, __LINE__);
35757
35758
35759 /*-------------------------------------------------------------------------
35760 Sanity check
35761 -------------------------------------------------------------------------*/
35762 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35763 ( NULL == pEventData->pEventData))
35764 {
35765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35766 "%s: Invalid parameters", __func__);
35767 WDI_ASSERT(0);
35768 return WDI_STATUS_E_FAILURE;
35769 }
35770
35771 wdiEXTScanSetSSIDHotlistRspCb =
35772 (WDI_EXTScanSetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
35773 if ( NULL == wdiEXTScanSetSSIDHotlistRspCb)
35774 {
35775 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35776 "%s: Callback function Invalid", __func__);
35777 WDI_ASSERT(0);
35778 return WDI_STATUS_E_FAILURE;
35779 }
35780
35781 wdiEXTScanSetSSIDHotlistRspCb(
35782 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35783
35784 return WDI_STATUS_SUCCESS;
35785}
35786
35787
35788/**
35789 @brief Process Extended Scan Reset Hotlist BSSID Rsp function (called
35790 when a response is being received over the bus from HAL)
35791
35792 @param pWDICtx: pointer to the WLAN DAL context
35793 pEventData: pointer to the event information structure
35794
35795 @see
35796 @return Result of the function call
35797*/
35798WDI_Status
35799WDI_ProcessEXTScanResetHotlistSSIDRsp
35800(
35801 WDI_ControlBlockType* pWDICtx,
35802 WDI_EventInfoType* pEventData
35803)
35804{
35805 WDI_EXTScanResetSSIDHotlistRspCb wdiEXTScanResetSSIDHotlistRspCb;
35806
35807 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35808 "%s: %d ",__func__, __LINE__);
35809
35810
35811 /*-------------------------------------------------------------------------
35812 Sanity check
35813 -------------------------------------------------------------------------*/
35814 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35815 ( NULL == pEventData->pEventData))
35816 {
35817 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35818 "%s: Invalid parameters", __func__);
35819 WDI_ASSERT(0);
35820 return WDI_STATUS_E_FAILURE;
35821 }
35822
35823 wdiEXTScanResetSSIDHotlistRspCb =
35824 (WDI_EXTScanResetSSIDHotlistRspCb)pWDICtx->pfncRspCB;
35825 if ( NULL == wdiEXTScanResetSSIDHotlistRspCb)
35826 {
35827 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35828 "%s: Callback function Invalid", __func__);
35829 WDI_ASSERT(0);
35830 return WDI_STATUS_E_FAILURE;
35831 }
35832
35833 wdiEXTScanResetSSIDHotlistRspCb(
35834 (void *) pEventData->pEventData, pWDICtx->pRspCBUserData);
35835
35836 return WDI_STATUS_SUCCESS;
35837}
Dino Mycle41bdc942014-06-10 11:30:24 +053035838#endif /* WLAN_FEATURE_EXTSCAN */
Siddharth Bhal171788a2014-09-29 21:02:40 +053035839
35840/**
35841 @brief WDI_SetSpoofMacAddrReq: Send Spoof Mac Addr request to FW
35842
35843 @param None
35844
35845 @see
35846
35847 @return Status of the request
35848*/
35849WDI_Status
35850WDI_SetSpoofMacAddrReq
35851(
35852 WDI_SpoofMacAddrInfoType* pWdiReq,
35853 WDI_SetSpoofMacAddrRspCb spoofMacAddrRspCb,
35854 void* pUserData)
35855{
35856 WDI_EventInfoType wdiEventData;
35857
35858 /*-------------------------------------------------------------------------
35859 Sanity Check
35860 ------------------------------------------------------------------------*/
35861 if (eWLAN_PAL_FALSE == gWDIInitialized)
35862 {
35863 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
35864 "WDI API call before module is initialized - Fail request!");
35865
35866 return WDI_STATUS_E_NOT_ALLOWED;
35867 }
35868
35869 /*-------------------------------------------------------------------------
35870 Fill in Event data and post to the Main FSM
35871 ------------------------------------------------------------------------*/
35872 wdiEventData.wdiRequest = WDI_SPOOF_MAC_ADDR_REQ;
35873 wdiEventData.pEventData = pWdiReq;
35874 wdiEventData.uEventDataSize = sizeof(WDI_SpoofMacAddrInfoType);
35875 wdiEventData.pCBfnc = spoofMacAddrRspCb;
35876 wdiEventData.pUserData = pUserData;
35877
35878 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
35879}
35880
35881/**
35882 @brief Process SpoofMacAddr Request
35883
35884 @param pWDICtx: pointer to the WLAN DAL context
35885 pEventData: pointer to the event information structure
35886
35887 @see
35888 @return Result of the function call
35889*/
35890WDI_Status
35891WDI_ProcessSpoofMacAddrReq
35892(
35893 WDI_ControlBlockType* pWDICtx,
35894 WDI_EventInfoType* pEventData
35895)
35896{
35897 WDI_SpoofMacAddrInfoType* wdiSpoofMacAddr;
35898 wpt_uint8* pSendBuffer = NULL;
35899 wpt_uint16 usDataOffset = 0;
35900 wpt_uint16 usSendSize = 0;
35901 WDI_Status wdiStatus;
35902 tMacSpoofedScanReqMsg halWlanSpoofMacAddr;
35903 WDI_SetSpoofMacAddrRspCb wdiMacAddrSpoofCb;
35904
35905
35906 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35907 "%s: %d Enter",__func__, __LINE__);
35908
35909 /*-------------------------------------------------------------------------
35910 Sanity check
35911 -------------------------------------------------------------------------*/
35912 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35913 ( NULL == pEventData->pEventData))
35914 {
35915 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35916 "%s: Invalid parameters", __func__);
35917 WDI_ASSERT(0);
35918 return WDI_STATUS_E_FAILURE;
35919 }
35920 wdiSpoofMacAddr = (WDI_SpoofMacAddrInfoType *)pEventData->pEventData;
35921
35922 /*-----------------------------------------------------------------------
35923 Get message buffer
35924 -----------------------------------------------------------------------*/
35925 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
35926 WDI_SPOOF_MAC_ADDR_REQ,
35927 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams),
35928 &pSendBuffer, &usDataOffset, &usSendSize))||
35929 (usSendSize < (usDataOffset +
35930 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams))))
35931 {
35932 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
35933 "Unable to get send buffer in Process Spoof Mac Addr Req");
35934 WDI_ASSERT(0);
35935 return WDI_STATUS_E_FAILURE;
35936 }
35937
35938 wpalMemoryCopy(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr,
35939 wdiSpoofMacAddr->macAddr,
35940 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams.macAddr));
35941
35942 wdiMacAddrSpoofCb = (WDI_SetSpoofMacAddrRspCb)pEventData->pCBfnc;
35943
35944 wpalMemoryCopy( pSendBuffer+usDataOffset,
35945 &halWlanSpoofMacAddr.tMacSpoofedScanReqParams,
35946 sizeof(halWlanSpoofMacAddr.tMacSpoofedScanReqParams));
35947
35948 /*-------------------------------------------------------------------------
35949 Send Suspend Request to HAL
35950 -------------------------------------------------------------------------*/
35951 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
35952 wdiMacAddrSpoofCb, pEventData->pUserData, WDI_SPOOF_MAC_ADDR_RSP);
35953
35954 return wdiStatus;
35955}
35956
35957/**
35958 @brief Process Spoof Mac Address Rsp function
35959 (called when a response is being received over the bus from HAL)
35960
35961 @param pWDICtx: pointer to the WLAN DAL context
35962 pEventData: pointer to the event information structure
35963
35964 @see
35965 @return Result of the function call
35966*/
35967WDI_Status
35968WDI_ProcessSpoofMacAddrRsp
35969(
35970 WDI_ControlBlockType* pWDICtx,
35971 WDI_EventInfoType* pEventData
35972)
35973{
35974 tMacSpoofedScanResp halRsp;
35975 WDI_SetSpoofMacAddrRspCb wdiSpoofMacAddrRspCb;
35976 WDI_SpoofMacAddrRspParamType wdiSpoofMacAddrRsp;
35977
35978 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
35979 "%s: %d Enter",__func__, __LINE__);
35980
35981 /*-------------------------------------------------------------------------
35982 Sanity check
35983 -------------------------------------------------------------------------*/
35984 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
35985 ( NULL == pEventData->pEventData))
35986 {
35987 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
35988 "%s: Invalid parameters", __func__);
35989 WDI_ASSERT(0);
35990 return WDI_STATUS_E_FAILURE;
35991 }
35992 wdiSpoofMacAddrRspCb = (WDI_SetSpoofMacAddrRspCb)pWDICtx->pfncRspCB;
35993
35994 /*-------------------------------------------------------------------------
35995 Extract response and send it to UMAC
35996 -------------------------------------------------------------------------*/
35997 wpalMemoryCopy( &halRsp,
35998 pEventData->pEventData, sizeof(halRsp));
35999
36000 wdiSpoofMacAddrRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36001
36002 /*Notify UMAC*/
36003 wdiSpoofMacAddrRspCb(
36004 &wdiSpoofMacAddrRsp, pWDICtx->pRspCBUserData);
36005
36006 return WDI_STATUS_SUCCESS;
36007}
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053036008
36009/**
Siddharth Bhal64246172015-02-27 01:04:37 +053036010 @brief Process Get Frame Log Rsp function
36011 (called when a response is being received over the bus from HAL)
36012
36013 @param pWDICtx: pointer to the WLAN DAL context
36014 pEventData: pointer to the event information structure
36015
36016 @see
36017 @return Result of the function call
36018*/
36019WDI_Status
36020WDI_ProcessGetFrameLogRsp
36021(
36022 WDI_ControlBlockType* pWDICtx,
36023 WDI_EventInfoType* pEventData
36024)
36025{
36026 tGetFrameLogResp halRsp;
36027 WDI_GetFrameLogRspCb wdiGetFrameLogRspCb;
36028 WDI_GetFrameLogRspParamType wdiGetFrameLogRsp;
36029
36030 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36031 "%s: %d Enter",__func__, __LINE__);
36032
36033 /*-------------------------------------------------------------------------
36034 Sanity check
36035 -------------------------------------------------------------------------*/
36036 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36037 ( NULL == pEventData->pEventData))
36038 {
36039 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36040 "%s: Invalid parameters", __func__);
36041 WDI_ASSERT(0);
36042 return WDI_STATUS_E_FAILURE;
36043 }
36044
36045 wdiGetFrameLogRspCb = (WDI_GetFrameLogRspCb)pWDICtx->pfncRspCB;
36046
36047 /*-------------------------------------------------------------------------
36048 Extract response and send it to UMAC
36049 -------------------------------------------------------------------------*/
36050 wpalMemoryCopy( &halRsp,
36051 pEventData->pEventData, sizeof(halRsp));
36052
36053 wdiGetFrameLogRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36054
36055 /*Notify UMAC*/
36056 wdiGetFrameLogRspCb( &wdiGetFrameLogRsp, pWDICtx->pRspCBUserData );
36057
36058 return WDI_STATUS_SUCCESS;
36059}
Gupta, Kapil7c34b322015-09-30 13:12:35 +053036060
36061/**
36062 @brief Process RssiMonitorStartReq Request
36063
36064 @param pWDICtx: pointer to the WLAN DAL context
36065 pEventData: pointer to the event information structure
36066
36067 @see
36068 @return Result of the function call
36069*/
36070WDI_Status
36071WDI_ProcessRssiMonitorStartReq
36072(
36073 WDI_ControlBlockType* pWDICtx,
36074 WDI_EventInfoType* pEventData
36075)
36076{
36077 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStartReq;
36078 wpt_uint8* pSendBuffer = NULL;
36079 wpt_uint16 usDataOffset = 0;
36080 wpt_uint16 usSendSize = 0;
36081 WDI_Status wdiStatus;
36082 tHalStartRssimonitoringReq halStartRssiMonitorReq;
36083 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartReqCb;
36084
36085
36086 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36087 "%s: %d Enter",__func__, __LINE__);
36088
36089 /*-------------------------------------------------------------------------
36090 Sanity check
36091 ------------------------------------------------------------------------*/
36092 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36093 ( NULL == pEventData->pEventData))
36094 {
36095 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36096 "%s: Invalid parameters", __func__);
36097 WDI_ASSERT(0);
36098 return WDI_STATUS_E_FAILURE;
36099 }
36100
36101 wdiRssiMonitorStartReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
36102
36103 /*-----------------------------------------------------------------------
36104 Get message buffer
36105 -----------------------------------------------------------------------*/
36106 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36107 WDI_START_RSSI_MONITOR_REQ,
36108 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams),
36109 &pSendBuffer, &usDataOffset, &usSendSize))||
36110 (usSendSize < (usDataOffset +
36111 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams))))
36112 {
36113 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36114 "Unable to get send buffer in GetFrameLog Req");
36115 WDI_ASSERT(0);
36116 return WDI_STATUS_E_FAILURE;
36117 }
36118
36119 halStartRssiMonitorReq.startRssiMonitoringReqParams.request_id =
36120 wdiRssiMonitorStartReq->requestId;
36121
36122 halStartRssiMonitorReq.startRssiMonitoringReqParams.min_rssi =
36123 wdiRssiMonitorStartReq->minRssi;
36124
36125 halStartRssiMonitorReq.startRssiMonitoringReqParams.max_rssi =
36126 wdiRssiMonitorStartReq->maxRssi;
36127 wpalMemoryCopy(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId,
36128 &(wdiRssiMonitorStartReq->currentBssId),
36129 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams.bssId));
36130
36131 wdiRssiMonitorStartReqCb = (WDI_RssiMonitorStartRspCb)pEventData->pCBfnc;
36132
36133 wpalMemoryCopy(pSendBuffer+usDataOffset,
36134 &halStartRssiMonitorReq.startRssiMonitoringReqParams,
36135 sizeof(halStartRssiMonitorReq.startRssiMonitoringReqParams));
36136
36137 /*-------------------------------------------------------------------------
36138 Send Suspend Request to HAL
36139 ------------------------------------------------------------------------*/
36140 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36141 wdiRssiMonitorStartReqCb, pEventData->pUserData, WDI_START_RSSI_MONITOR_RSP);
36142
36143 return wdiStatus;
36144}
36145
36146
36147/**
36148 @brief Process FWLoggingInit Request
36149
36150 @param pWDICtx: pointer to the WLAN DAL context
36151 pEventData: pointer to the event information structure
36152
36153 @see
36154 @return Result of the function call
36155*/
36156WDI_Status
36157WDI_ProcessRssiMonitorStopReq
36158(
36159 WDI_ControlBlockType* pWDICtx,
36160 WDI_EventInfoType* pEventData
36161)
36162{
36163 WDI_RssiMonitorReqInfoType* wdiRssiMonitorStopReq;
36164 wpt_uint8* pSendBuffer = NULL;
36165 wpt_uint16 usDataOffset = 0;
36166 wpt_uint16 usSendSize = 0;
36167 WDI_Status wdiStatus;
36168 tHalStopRssimonitoringReq halStopRssiMonitorReq;
36169 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopReqCb;
36170
36171
36172 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36173 "%s: %d Enter",__func__, __LINE__);
36174
36175 /*-------------------------------------------------------------------------
36176 Sanity check
36177 ------------------------------------------------------------------------*/
36178 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36179 ( NULL == pEventData->pEventData))
36180 {
36181 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36182 "%s: Invalid parameters", __func__);
36183 WDI_ASSERT(0);
36184 return WDI_STATUS_E_FAILURE;
36185 }
36186 wdiRssiMonitorStopReq = (WDI_RssiMonitorReqInfoType *)pEventData->pEventData;
36187
36188 /*-----------------------------------------------------------------------
36189 Get message buffer
36190 -----------------------------------------------------------------------*/
36191 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36192 WDI_STOP_RSSI_MONITOR_REQ,
36193 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams),
36194 &pSendBuffer, &usDataOffset, &usSendSize))||
36195 (usSendSize < (usDataOffset +
36196 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams))))
36197 {
36198 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36199 "Unable to get send buffer in GetFrameLog Req");
36200 WDI_ASSERT(0);
36201 return WDI_STATUS_E_FAILURE;
36202 }
36203
36204 halStopRssiMonitorReq.stopRssiMonitoringParams.request_id =
36205 wdiRssiMonitorStopReq->requestId;
36206
36207 wpalMemoryCopy(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId,
36208 &(wdiRssiMonitorStopReq->currentBssId),
36209 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams.bssId));
36210
36211 wdiRssiMonitorStopReqCb = (WDI_RssiMonitorStopRspCb)pEventData->pCBfnc;
36212
36213 wpalMemoryCopy(pSendBuffer+usDataOffset,
36214 &halStopRssiMonitorReq.stopRssiMonitoringParams,
36215 sizeof(halStopRssiMonitorReq.stopRssiMonitoringParams));
36216
36217 /*-------------------------------------------------------------------------
36218 Send Suspend Request to HAL
36219 ------------------------------------------------------------------------*/
36220 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36221 wdiRssiMonitorStopReqCb, pEventData->pUserData, WDI_STOP_RSSI_MONITOR_RSP);
36222
36223 return wdiStatus;
36224}
36225
36226/**
36227 @brief Process MgmtFrame Logging Init Rsp function
36228 (called when a response is being received over the bus from HAL)
36229
36230 @param pWDICtx: pointer to the WLAN DAL context
36231 pEventData: pointer to the event information structure
36232
36233 @see
36234 @return Result of the function call
36235*/
36236WDI_Status
36237WDI_ProcessRssiMonitorStopRsp
36238(
36239 WDI_ControlBlockType* pWDICtx,
36240 WDI_EventInfoType* pEventData
36241)
36242{
36243 tHalStopRssimonitoringRspParams halRsp;
36244 WDI_RssiMonitorStopRspCb wdiRssiMonitorStopRspCb;
36245 WDI_RssiMonitorStopRspParamType wdiRssiMonitorStopRsp;
36246
36247 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36248 "%s: %d Enter",__func__, __LINE__);
36249
36250 /*-------------------------------------------------------------------------
36251 Sanity check
36252 -------------------------------------------------------------------------*/
36253 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36254 ( NULL == pEventData->pEventData))
36255 {
36256 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36257 "%s: Invalid parameters", __func__);
36258 WDI_ASSERT(0);
36259 return WDI_STATUS_E_FAILURE;
36260 }
36261 wdiRssiMonitorStopRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
36262
36263 /*-------------------------------------------------------------------------
36264 Extract response and send it to UMAC
36265 -------------------------------------------------------------------------*/
36266 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36267
36268 wdiRssiMonitorStopRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36269
36270 /*Notify UMAC*/
36271 wdiRssiMonitorStopRspCb( &wdiRssiMonitorStopRsp, pWDICtx->pRspCBUserData);
36272
36273 return WDI_STATUS_SUCCESS;
36274}
36275
36276
36277/**
36278 @brief Process MgmtFrame Logging Init Rsp function
36279 (called when a response is being received over the bus from HAL)
36280
36281 @param pWDICtx: pointer to the WLAN DAL context
36282 pEventData: pointer to the event information structure
36283
36284 @see
36285 @return Result of the function call
36286*/
36287WDI_Status
36288WDI_ProcessRssiMonitorStartRsp
36289(
36290 WDI_ControlBlockType* pWDICtx,
36291 WDI_EventInfoType* pEventData
36292)
36293{
36294 tHalStartRssimonitoringRspParams halRsp;
36295 WDI_RssiMonitorStartRspCb wdiRssiMonitorStartRspCb;
36296 WDI_RssiMonitorStartRspParamType wdiRssiMonitorStartRsp;
36297
36298 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36299 "%s: %d Enter",__func__, __LINE__);
36300
36301 /*-------------------------------------------------------------------------
36302 Sanity check
36303 -------------------------------------------------------------------------*/
36304 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36305 ( NULL == pEventData->pEventData))
36306 {
36307 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36308 "%s: Invalid parameters", __func__);
36309 WDI_ASSERT(0);
36310 return WDI_STATUS_E_FAILURE;
36311 }
36312 wdiRssiMonitorStartRspCb = (WDI_RssiMonitorStopRspCb)pWDICtx->pfncRspCB;
36313
36314 /*-------------------------------------------------------------------------
36315 Extract response and send it to UMAC
36316 -------------------------------------------------------------------------*/
36317 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36318
36319 wdiRssiMonitorStartRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
36320
36321 /*Notify UMAC*/
36322 wdiRssiMonitorStartRspCb( &wdiRssiMonitorStartRsp, pWDICtx->pRspCBUserData);
36323
36324 return WDI_STATUS_SUCCESS;
36325}
36326
Siddharth Bhal64246172015-02-27 01:04:37 +053036327/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036328 @brief Process FWLoggingInit Request
Siddharth Bhal64246172015-02-27 01:04:37 +053036329
36330 @param pWDICtx: pointer to the WLAN DAL context
36331 pEventData: pointer to the event information structure
36332
36333 @see
36334 @return Result of the function call
36335*/
36336WDI_Status
36337WDI_ProcessGetFrameLogReq
36338(
36339 WDI_ControlBlockType* pWDICtx,
36340 WDI_EventInfoType* pEventData
36341)
36342{
36343 WDI_GetFrameLogReqInfoType* wdiGetFrameLogReq;
36344 wpt_uint8* pSendBuffer = NULL;
36345 wpt_uint16 usDataOffset = 0;
36346 wpt_uint16 usSendSize = 0;
36347 WDI_Status wdiStatus;
36348 tGetFrameLogReqMsg halGetFrameLogReq;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036349 WDI_FWLoggingInitRspCb wdiGetFrameLogRspCb;
Siddharth Bhal64246172015-02-27 01:04:37 +053036350
36351
36352 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36353 "%s: %d Enter",__func__, __LINE__);
36354
36355 /*-------------------------------------------------------------------------
36356 Sanity check
36357 ------------------------------------------------------------------------*/
36358 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36359 ( NULL == pEventData->pEventData))
36360 {
36361 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36362 "%s: Invalid parameters", __func__);
36363 WDI_ASSERT(0);
36364 return WDI_STATUS_E_FAILURE;
36365 }
36366
36367 wdiGetFrameLogReq = (WDI_GetFrameLogReqInfoType *)pEventData->pEventData;
36368
36369 /*-----------------------------------------------------------------------
36370 Get message buffer
36371 -----------------------------------------------------------------------*/
36372 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36373 WDI_GET_FRAME_LOG_REQ,
36374 sizeof(halGetFrameLogReq.tGetFrameLogReqParams),
36375 &pSendBuffer, &usDataOffset, &usSendSize))||
36376 (usSendSize < (usDataOffset +
36377 sizeof(halGetFrameLogReq.tGetFrameLogReqParams))))
36378 {
36379 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36380 "Unable to get send buffer in GetFrameLog Req");
36381 WDI_ASSERT(0);
36382 return WDI_STATUS_E_FAILURE;
36383 }
36384
36385 halGetFrameLogReq.tGetFrameLogReqParams.flags =
36386 wdiGetFrameLogReq->flags;
36387
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036388 wdiGetFrameLogRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhal64246172015-02-27 01:04:37 +053036389
36390 wpalMemoryCopy( pSendBuffer+usDataOffset,
36391 &halGetFrameLogReq.tGetFrameLogReqParams,
36392 sizeof(halGetFrameLogReq.tGetFrameLogReqParams));
36393
36394 /*-------------------------------------------------------------------------
36395 Send Suspend Request to HAL
36396 ------------------------------------------------------------------------*/
36397 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36398 wdiGetFrameLogRspCb, pEventData->pUserData, WDI_GET_FRAME_LOG_RSP);
36399
36400 return wdiStatus;
36401}
36402/**
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036403 @brief Process MgmtFrame Logging Init Rsp function
36404 (called when a response is being received over the bus from HAL)
36405
36406 @param pWDICtx: pointer to the WLAN DAL context
36407 pEventData: pointer to the event information structure
36408
36409 @see
36410 @return Result of the function call
36411*/
36412WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036413WDI_ProcessFWFrameLoggingInitRsp
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036414(
36415 WDI_ControlBlockType* pWDICtx,
36416 WDI_EventInfoType* pEventData
36417)
36418{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036419 tFWLoggingInitResp halRsp;
36420 WDI_FWLoggingInitRspCb wdiFWFrameLoggingInitRspCb;
36421 WDI_FWLoggingInitRspParamType wdiFWLogginginitRsp;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036422
36423 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36424 "%s: %d Enter",__func__, __LINE__);
36425
36426 /*-------------------------------------------------------------------------
36427 Sanity check
36428 -------------------------------------------------------------------------*/
36429 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36430 ( NULL == pEventData->pEventData))
36431 {
36432 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36433 "%s: Invalid parameters", __func__);
36434 WDI_ASSERT(0);
36435 return WDI_STATUS_E_FAILURE;
36436 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036437 wdiFWFrameLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pWDICtx->pfncRspCB;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036438
36439 /*-------------------------------------------------------------------------
36440 Extract response and send it to UMAC
36441 -------------------------------------------------------------------------*/
36442 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36443
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036444 wdiFWLogginginitRsp.status = WDI_HAL_2_WDI_STATUS(halRsp.status);
c_manjeecfd1efb2015-09-25 19:32:34 +053036445 wdiFWLogginginitRsp.fw_mem_dump_max_size = halRsp.fw_dump_max_size;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036446
36447 /*Notify UMAC*/
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036448 wdiFWFrameLoggingInitRspCb( &wdiFWLogginginitRsp, pWDICtx->pRspCBUserData);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036449
36450 return WDI_STATUS_SUCCESS;
36451}
36452
c_manjeecfd1efb2015-09-25 19:32:34 +053036453/**
36454 @brief Process Fwr Mem Dump Rsp function
36455 (called when a response is being received over the bus from HAL)
36456
36457 @param pWDICtx: pointer to the WLAN DAL context
36458 pEventData: pointer to the event information structure
36459
36460 @see
36461 @return Result of the function call
36462*/
36463WDI_Status
36464 WDI_ProcessFwrMemDumpRsp
36465
36466(
36467 WDI_ControlBlockType* pWDICtx,
36468 WDI_EventInfoType* pEventData
36469)
36470{
36471 tHalFwMemoryDumpRespMsg halRsp;
36472 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
36473 WDI_FwrMemDumpRsp wdiFwrMemDumpRsp;
36474
36475 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36476 "%s: %d Enter",__func__, __LINE__);
36477
36478 /*-------------------------------------------------------------------------
36479 Sanity check
36480 -------------------------------------------------------------------------*/
36481 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36482 ( NULL == pEventData->pEventData))
36483 {
36484 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36485 "%s: Invalid parameters", __func__);
36486 WDI_ASSERT(0);
36487 return WDI_STATUS_E_FAILURE;
36488 }
36489 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pWDICtx->pfncRspCB;
36490
36491 /*-------------------------------------------------------------------------
36492 Extract response and send it to UMAC
36493 -------------------------------------------------------------------------*/
c_manjee107ae7a2015-11-13 22:28:50 +053036494 wpalMemoryCopy( &halRsp.tFwMemoryDumpResp, pEventData->pEventData, sizeof(halRsp.tFwMemoryDumpResp));
c_manjeecfd1efb2015-09-25 19:32:34 +053036495
36496 wdiFwrMemDumpRsp.dump_status = WDI_HAL_2_WDI_STATUS(halRsp.tFwMemoryDumpResp.status);
36497
36498 /*Notify UMAC*/
36499 wdiFwrMemDumpRspCb( &wdiFwrMemDumpRsp, pWDICtx->pRspCBUserData);
36500
36501 return WDI_STATUS_SUCCESS;
36502}
36503
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036504WDI_Status
36505WDI_ProcessFWLoggingDXEdoneInd
36506(
36507 WDI_ControlBlockType* pWDICtx,
36508 WDI_EventInfoType* pEventData
36509)
36510{
36511 wpt_uint8* pSendBuffer = NULL;
36512 wpt_uint16 usDataOffset = 0;
36513 wpt_uint16 usSendSize = 0;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036514 tFWLoggingDxeDoneInd *FWLoggingDxeDoneIndParams;
Mihir Shete5affadc2015-05-29 20:54:57 +053036515 WDI_DS_LoggingSessionType *pLoggingSession;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036516 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053036517 wpt_uint32 *pLogType;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036518
36519
36520 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
36521
36522 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
36523 "%s", __func__);
36524
36525 /*-------------------------------------------------------------------------
36526 Sanity check
36527 -------------------------------------------------------------------------*/
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053036528 if (NULL == pEventData ||
36529 NULL == pEventData->pEventData)
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036530 {
36531 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36532 "%s: Invalid parameters", __func__);
36533 WDI_ASSERT(0);
36534 return WDI_STATUS_E_FAILURE;
36535 }
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053036536 pLogType = (wpt_uint32 *)pEventData->pEventData;
36537
Mihir Shete5affadc2015-05-29 20:54:57 +053036538 pLoggingSession = (WDI_DS_LoggingSessionType *)
36539 WDI_DS_GetLoggingSession(WDI_DS_GetDatapathContext(
36540 (void *)pWDICtx));
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036541 /*-----------------------------------------------------------------------
36542 Get message buffer
36543 -----------------------------------------------------------------------*/
36544
36545 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36546 WDI_FW_LOGGING_DXE_DONE_IND,
Mihir Shete5affadc2015-05-29 20:54:57 +053036547 sizeof(tFWLoggingDxeDoneInd),
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036548 &pSendBuffer, &usDataOffset, &usSendSize))||
Mihir Shete5affadc2015-05-29 20:54:57 +053036549 ( usSendSize < (usDataOffset + sizeof(tFWLoggingDxeDoneInd) )))
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036550 {
36551 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36552 "Unable to get send buffer in RTS CTS ind %p ",
36553 pEventData);
36554 WDI_ASSERT(0);
36555 return WDI_STATUS_E_FAILURE;
36556 }
36557 FWLoggingDxeDoneIndParams =
36558 (tFWLoggingDxeDoneInd*)(pSendBuffer + usDataOffset);
36559
36560 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffAddress,
Mihir Shete5affadc2015-05-29 20:54:57 +053036561 &pLoggingSession->logBuffAddress, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036562 sizeof(FWLoggingDxeDoneIndParams->logBuffAddress[0]));
Mihir Shete5affadc2015-05-29 20:54:57 +053036563
Sravan Kumar Kairam80d06ee2015-09-28 12:53:20 +053036564 FWLoggingDxeDoneIndParams->status = pLoggingSession->status;
Hanumantha Reddy Pothulae00a7e22015-09-15 20:11:30 +053036565 FWLoggingDxeDoneIndParams->doneIndicationForSource = (wpt_uint16)*pLogType;
Mihir Shete5affadc2015-05-29 20:54:57 +053036566
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036567 wpalMemoryCopy(&FWLoggingDxeDoneIndParams->logBuffLength,
Mihir Shete5affadc2015-05-29 20:54:57 +053036568 &pLoggingSession->logBuffLength, MAX_NUM_OF_BUFFER *
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036569 sizeof(FWLoggingDxeDoneIndParams->logBuffLength[0]));
36570
36571 pWDICtx->pReqStatusUserData = NULL;
36572 pWDICtx->pfncRspCB = NULL;
36573 /*-------------------------------------------------------------------------
36574 Send FW_LOGGING_DXE_DONE_IND Indication to HAL
36575 -------------------------------------------------------------------------*/
36576 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
36577 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
36578}
36579
Sachin Ahuja715aafc2015-07-21 23:35:10 +053036580
36581/**
36582 @brief Process Fatal Event Logs Rsp function
36583 (called when a response is being received over the bus from HAL)
36584
36585 @param pWDICtx: pointer to the WLAN DAL context
36586 pEventData: pointer to the event information structure
36587
36588 @see
36589 @return Result of the function call
36590*/
36591WDI_Status
36592WDI_ProcessFatalEventLogsRsp
36593(
36594 WDI_ControlBlockType* pWDICtx,
36595 WDI_EventInfoType* pEventData
36596)
36597{
36598 tHalFatalEventLoggingRspParams halRsp;
36599 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
36600 WDI_FatalEventLogsRspParamType wdiFatalEventLogsRsp;
36601
36602 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36603 "%s: %d Enter",__func__, __LINE__);
36604
36605 /*-------------------------------------------------------------------------
36606 Sanity check
36607 -------------------------------------------------------------------------*/
36608 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36609 ( NULL == pEventData->pEventData))
36610 {
36611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36612 "%s: Invalid parameters", __func__);
36613 WDI_ASSERT(0);
36614 return WDI_STATUS_E_FAILURE;
36615 }
36616 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pWDICtx->pfncRspCB;
36617
36618 /*-------------------------------------------------------------------------
36619 Extract response and send it to UMAC
36620 -------------------------------------------------------------------------*/
36621 wpalMemoryCopy( &halRsp, pEventData->pEventData, sizeof(halRsp));
36622
36623 wdiFatalEventLogsRsp.wdiStatus = WDI_HAL_2_WDI_STATUS(halRsp.status);
36624
36625 /*Notify UMAC*/
36626 wdiFatalEventLogsRspCb( &wdiFatalEventLogsRsp,
36627 pWDICtx->pRspCBUserData);
36628
36629 return WDI_STATUS_SUCCESS;
36630}
36631
36632/**
36633 @brief Process FatalEventLogs Request
36634
36635 @param pWDICtx: pointer to the WLAN DAL context
36636 pEventData: pointer to the event information structure
36637
36638 @see
36639 @return Result of the function call
36640*/
36641
36642WDI_Status
36643WDI_ProcessFatalEventLogsReq
36644
36645(
36646 WDI_ControlBlockType* pWDICtx,
36647 WDI_EventInfoType* pEventData
36648)
36649{
36650 WDI_FatalEventLogsReqInfoType* wdiFatalEventLogsReq;
36651 wpt_uint8* pSendBuffer = NULL;
36652 wpt_uint16 usDataOffset = 0;
36653 wpt_uint16 usSendSize = 0;
36654 WDI_Status wdiStatus;
36655 tHalFatalEventLoggingReqMsg halFatalEventLoggingReq;
36656 WDI_FatalEventLogsRspCb wdiFatalEventLogsRspCb;
36657
36658
36659 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36660 "%s: %d Enter",__func__, __LINE__);
36661
36662 /*-------------------------------------------------------------------------
36663 Sanity check
36664 ------------------------------------------------------------------------*/
36665 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36666 ( NULL == pEventData->pEventData))
36667 {
36668 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36669 "%s: Invalid parameters", __func__);
36670 WDI_ASSERT(0);
36671 return WDI_STATUS_E_FAILURE;
36672 }
36673 wdiFatalEventLogsReq =
36674 (WDI_FatalEventLogsReqInfoType *)pEventData->pEventData;
36675
36676 /*-----------------------------------------------------------------------
36677 Get message buffer
36678 -----------------------------------------------------------------------*/
36679 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36680 WDI_FATAL_EVENT_LOGGING_REQ,
36681 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams),
36682 &pSendBuffer, &usDataOffset, &usSendSize))||
36683 (usSendSize < (usDataOffset +
36684 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams))))
36685 {
36686 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36687 "Unable to get send buffer in Fatal Event Req");
36688 WDI_ASSERT(0);
36689 return WDI_STATUS_E_FAILURE;
36690 }
36691 halFatalEventLoggingReq.tFatalEventLoggingReqParams.reasonCode =
36692 wdiFatalEventLogsReq->reason_code;
36693
36694 wdiFatalEventLogsRspCb = (WDI_FatalEventLogsRspCb)pEventData->pCBfnc;
36695
36696 wpalMemoryCopy( pSendBuffer+usDataOffset,
36697 &halFatalEventLoggingReq.tFatalEventLoggingReqParams,
36698 sizeof(halFatalEventLoggingReq.tFatalEventLoggingReqParams));
36699
36700 /*-------------------------------------------------------------------------
36701 Send Mgmt Logging Init Request to HAL
36702 ------------------------------------------------------------------------*/
36703 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36704 wdiFatalEventLogsRspCb, pEventData->pUserData,
36705 WDI_FATAL_EVENT_LOGGING_RSP);
36706
36707 return wdiStatus;
36708
36709
36710}
36711
36712
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036713/**
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036714 @brief Process FWLoggingInit Request
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036715
36716 @param pWDICtx: pointer to the WLAN DAL context
36717 pEventData: pointer to the event information structure
36718
36719 @see
36720 @return Result of the function call
36721*/
36722WDI_Status
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036723WDI_ProcessFWLoggingInitReq
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036724(
36725 WDI_ControlBlockType* pWDICtx,
36726 WDI_EventInfoType* pEventData
36727)
36728{
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036729 WDI_FWLoggingInitReqInfoType* wdiFWLoggingInitReq;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036730 wpt_uint8* pSendBuffer = NULL;
36731 wpt_uint16 usDataOffset = 0;
36732 wpt_uint16 usSendSize = 0;
36733 WDI_Status wdiStatus;
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036734 tHalFWLoggingInitReqMsg halFWLoggingInitReq;
36735 WDI_FWLoggingInitRspCb wdiFWLoggingInitRspCb;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036736
36737
36738 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36739 "%s: %d Enter",__func__, __LINE__);
36740
36741 /*-------------------------------------------------------------------------
36742 Sanity check
36743 ------------------------------------------------------------------------*/
36744 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36745 ( NULL == pEventData->pEventData))
36746 {
36747 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36748 "%s: Invalid parameters", __func__);
36749 WDI_ASSERT(0);
36750 return WDI_STATUS_E_FAILURE;
36751 }
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036752 wdiFWLoggingInitReq =
36753 (WDI_FWLoggingInitReqInfoType *)pEventData->pEventData;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036754
36755 /*-----------------------------------------------------------------------
36756 Get message buffer
36757 -----------------------------------------------------------------------*/
36758 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036759 WDI_FW_LOGGING_INIT_REQ,
36760 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams),
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036761 &pSendBuffer, &usDataOffset, &usSendSize))||
36762 (usSendSize < (usDataOffset +
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036763 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams))))
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036764 {
36765 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36766 "Unable to get send buffer in Process Mgmt Logging Init Req");
36767 WDI_ASSERT(0);
36768 return WDI_STATUS_E_FAILURE;
36769 }
36770
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036771 halFWLoggingInitReq.tFWLoggingInitReqParams.enableFlag=
36772 wdiFWLoggingInitReq->enableFlag;
36773 halFWLoggingInitReq.tFWLoggingInitReqParams.frameSize=
36774 wdiFWLoggingInitReq->frameSize;
36775 halFWLoggingInitReq.tFWLoggingInitReqParams.frameType=
36776 wdiFWLoggingInitReq->frameType;
36777 halFWLoggingInitReq.tFWLoggingInitReqParams.bufferMode=
36778 wdiFWLoggingInitReq->bufferMode;
36779 halFWLoggingInitReq.tFWLoggingInitReqParams.continuousFrameLogging=
36780 wdiFWLoggingInitReq->continuousFrameLogging;
36781 halFWLoggingInitReq.tFWLoggingInitReqParams.minLogBuffSize=
36782 wdiFWLoggingInitReq->minLogBufferSize;
36783 halFWLoggingInitReq.tFWLoggingInitReqParams.maxLogBuffSize=
36784 wdiFWLoggingInitReq->maxLogBufferSize;
Mihir Shete5affadc2015-05-29 20:54:57 +053036785 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxAddr=
36786 (tANI_U64)(uintptr_t)(WDI_DS_GetLoggingMbPhyAddr(pWDICtx));
36787 halFWLoggingInitReq.tFWLoggingInitReqParams.logMailBoxVer=
36788 MAILBOX_VERSION_V1;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036789
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036790 wdiFWLoggingInitRspCb = (WDI_FWLoggingInitRspCb)pEventData->pCBfnc;
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036791
36792 wpalMemoryCopy( pSendBuffer+usDataOffset,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036793 &halFWLoggingInitReq.tFWLoggingInitReqParams,
36794 sizeof(halFWLoggingInitReq.tFWLoggingInitReqParams));
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036795
36796 /*-------------------------------------------------------------------------
36797 Send Mgmt Logging Init Request to HAL
36798 ------------------------------------------------------------------------*/
36799 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
Siddharth Bhald1be97f2015-05-27 22:39:59 +053036800 wdiFWLoggingInitRspCb, pEventData->pUserData,
36801 WDI_FW_LOGGING_INIT_RSP);
Siddharth Bhalb7c421c2015-02-27 00:26:09 +053036802
36803 return wdiStatus;
36804}
36805
36806/**
c_manjeecfd1efb2015-09-25 19:32:34 +053036807 @brief Process FwrMemDumpReq Request
36808
36809 @param pWDICtx: pointer to the WLAN DAL context
36810 pEventData: pointer to the event information structure
36811
36812 @see
36813 @return Result of the function call
36814*/
36815WDI_Status
36816 WDI_ProcessFwrMemDumpReq
36817
36818(
36819 WDI_ControlBlockType* pWDICtx,
36820 WDI_EventInfoType* pEventData
36821)
36822{
36823 WDI_FwrMemDumpReqType * wdiFwrMemDumpReq;
36824 wpt_uint8* pSendBuffer = NULL;
36825 wpt_uint16 usDataOffset = 0;
36826 wpt_uint16 usSendSize = 0;
36827 WDI_Status wdiStatus;
36828 tHalFwMemoryDumpReqMsg halFwrMemDumpReq;
36829 WDI_FwrMemDumpRspCb wdiFwrMemDumpRspCb;
36830
36831 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36832 "%s: %d Enter",__func__, __LINE__);
36833
36834 /*-------------------------------------------------------------------------
36835 Sanity check
36836 ------------------------------------------------------------------------*/
36837 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
36838 ( NULL == pEventData->pEventData))
36839 {
36840 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36841 "%s: Invalid parameters", __func__);
36842 WDI_ASSERT(0);
36843 return WDI_STATUS_E_FAILURE;
36844 }
36845
36846 wdiFwrMemDumpReq = (WDI_FwrMemDumpReqType *)pEventData->pEventData;
36847
36848 /*-----------------------------------------------------------------------
36849 Get message buffer
36850 -----------------------------------------------------------------------*/
36851 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
36852 WDI_FWR_MEM_DUMP_REQ,
36853 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam),
36854 &pSendBuffer, &usDataOffset, &usSendSize))||
36855 (usSendSize < (usDataOffset +
36856 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam))))
36857 {
36858 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
36859 "Unable to get send buffer in Process Fwr Mem Dump Req");
36860 WDI_ASSERT(0);
36861 return WDI_STATUS_E_FAILURE;
36862 }
36863
36864 wdiFwrMemDumpRspCb = (WDI_FwrMemDumpRspCb)pEventData->pCBfnc;
36865 wpalMemoryCopy( pSendBuffer+usDataOffset,
36866 &halFwrMemDumpReq.tFwMemoryDumpReqParam,
36867 sizeof(halFwrMemDumpReq.tFwMemoryDumpReqParam));
36868
36869 /*-------------------------------------------------------------------------
36870 Send Fwr Mem Dump Request to HAL
36871 ------------------------------------------------------------------------*/
36872 wdiStatus = WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
36873 wdiFwrMemDumpRspCb, pEventData->pUserData,
36874 WDI_FWR_MEM_DUMP_RSP);
36875 return wdiStatus;
36876}
36877
36878/**
Srinivas Dasari4dae48f2014-11-26 21:14:16 +053036879 @brief WDI_EncryptMsgReq
36880
36881 @param pwdiEncryptMsgParams: Req parameter for the FW
36882 wdiEncryptMsgCbRsp: callback for passing back the response
36883 of the Req operation received from the device
36884 pUserData: user data will be passed back with the callback
36885
36886 @return SUCCESS or FAIL
36887*/
36888WDI_Status
36889WDI_EncryptMsgReq(void* pwdiEncryptMsgParams,
36890 WDI_EncryptMsgRspCb wdiEncryptMsgCbRsp,
36891 void* pUserData)
36892{
36893 WDI_EventInfoType wdiEventData;
36894
36895 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
36896 "%s: %d Enter" ,__func__, __LINE__);
36897 /*------------------------------------------------------------------------
36898 Sanity Check
36899 ------------------------------------------------------------------------*/
36900 if ( eWLAN_PAL_FALSE == gWDIInitialized )
36901 {
36902 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
36903 "WDI API call before module is initialized - Fail request");
36904
36905 return WDI_STATUS_E_NOT_ALLOWED;
36906 }
36907
36908 wdiEventData.wdiRequest = WDI_ENCRYPT_MSG_REQ;
36909 wdiEventData.pEventData = pwdiEncryptMsgParams;
36910 wdiEventData.uEventDataSize = sizeof(wpt_pkt80211);
36911 wdiEventData.pCBfnc = wdiEncryptMsgCbRsp;
36912 wdiEventData.pUserData = pUserData;
36913
36914 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
36915}
36916
36917/*
36918 * FUNCTION: WDI_ProcessEncryptMsgReq
36919 * Request to WDI to encrypt the given message.
36920 *
36921 * @param pWDICtx: pointer to the WLAN DAL context
36922 * pEventData: pointer to the event information structure
36923 *
36924 * @return Result of the function call
36925 */
36926
36927WDI_Status
36928WDI_ProcessEncryptMsgReq
36929(
36930 WDI_ControlBlockType* pWDICtx,
36931 WDI_EventInfoType* pEventData
36932)
36933{
36934 wpt_uint8* pSendBuffer = NULL;
36935 wpt_uint16 usDataOffset = 0;
36936 wpt_uint16 usSendSize = 0;
36937 WDI_EncryptMsgRspCb* wdiEncMsgCb;
36938 tSetEncryptedDataParams *pHalEncryptDataReq;
36939 wpt_pkt80211 *pkt = NULL;
36940
36941 /*-------------------------------------------------------------------------
36942 Sanity check
36943 -------------------------------------------------------------------------*/
36944 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData) ||
36945 ( NULL == pEventData->pCBfnc ) )
36946 {
36947 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36948 "%s: Invalid parameters", __func__);
36949 WDI_ASSERT(0);
36950 return WDI_STATUS_E_FAILURE;
36951 }
36952
36953 wdiEncMsgCb = (WDI_EncryptMsgRspCb*)pEventData->pCBfnc;
36954
36955 /*-----------------------------------------------------------------------
36956 Get message buffer
36957 -----------------------------------------------------------------------*/
36958 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
36959 pWDICtx, WDI_ENCRYPT_MSG_REQ,
36960 sizeof(tSetEncryptedDataReqMsg),
36961 &pSendBuffer, &usDataOffset, &usSendSize)) ||
36962 ( usSendSize < (usDataOffset + sizeof(tSetEncryptedDataReqMsg))))
36963 {
36964 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
36965 "Unable to get send buffer in get WDI_ENCRYPT_MSG_REQ %p",
36966 pEventData);
36967 WDI_ASSERT(0);
36968 return WDI_STATUS_E_FAILURE;
36969 }
36970
36971 pWDICtx->wdiReqStatusCB = NULL;
36972 pWDICtx->pReqStatusUserData = pEventData->pUserData;
36973 pkt = (wpt_pkt80211 *)pEventData->pEventData;
36974
36975 pHalEncryptDataReq = &((tSetEncryptedDataReqMsg *)(pSendBuffer))->encryptedDataParams;
36976 wpalMemoryZero(pHalEncryptDataReq, sizeof(tSetEncryptedDataParams));
36977
36978 wpalMemoryCopy(&pHalEncryptDataReq->macHeader, &pkt->macHeader, 32);
36979
36980 pHalEncryptDataReq->encParams.keyParams.key[0].keyId =
36981 pkt->encParams.keyParams.key[0].keyId;
36982
36983 wpalMemoryCopy(&pHalEncryptDataReq->encParams.keyParams.key[0].key[0],
36984 &pkt->encParams.keyParams.key[0].key[0], 16);
36985
36986 wpalMemoryCopy(&pHalEncryptDataReq->encParams.pn, &pkt->encParams.pn, 6);
36987
36988 pHalEncryptDataReq->data.length = pkt->data.length;
36989 wpalMemoryCopy(&pHalEncryptDataReq->data.data[0], &pkt->data.data[0], pkt->data.length);
36990
36991 /*-------------------------------------------------------------------------
36992 Send Get STA Request to HAL
36993 -------------------------------------------------------------------------*/
36994 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize, wdiEncMsgCb,
36995 pEventData->pUserData, WDI_ENCRYPT_MSG_RSP);
36996}
36997
36998/*
36999 * FUNCTION: WDI_ProcessEncryptMsgRsp
37000 * Receives the encrypted message from the firmware
37001 * @param pWDICtx: pointer to the WLAN DAL context
37002 * pEventData: pointer to the event information structure
37003 *
37004 * @return Result of the function call
37005 */
37006WDI_Status
37007WDI_ProcessEncryptMsgRsp
37008(
37009 WDI_ControlBlockType* pWDICtx,
37010 WDI_EventInfoType* pEventData
37011)
37012{
37013 tpSetEncryptedDataRspParams pSetEncryptedDataRsp;
37014 WDI_EncryptMsgRspCb wdiEncryptMsgRspCb;
37015
37016 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37017 "In %s",__func__);
37018
37019 /*-------------------------------------------------------------------------
37020 Sanity check
37021 -------------------------------------------------------------------------*/
37022 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37023 ( NULL == pEventData->pEventData))
37024 {
37025 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37026 "%s: Invalid parameters", __func__);
37027 WDI_ASSERT(0);
37028 return WDI_STATUS_E_FAILURE;
37029 }
37030
37031 pSetEncryptedDataRsp = (tpSetEncryptedDataRspParams)pEventData->pEventData;
37032
37033 wdiEncryptMsgRspCb = (WDI_EncryptMsgRspCb)pWDICtx->pfncRspCB;
37034
37035 wdiEncryptMsgRspCb(WDI_STATUS_SUCCESS,
37036 pEventData->pEventData,
37037 pWDICtx->pRspCBUserData);
37038 return WDI_STATUS_SUCCESS;
37039}
Srinivas Dasari32a79262015-02-19 13:04:49 +053037040
37041WDI_Status
37042WDI_NanRequest
37043(
37044 WDI_NanRequestType *pwdiNanRequest,
37045 void *usrData
37046)
37047{
37048 WDI_EventInfoType wdiEventData;
37049
37050 /*------------------------------------------------------------------------
37051 Sanity Check
37052 ------------------------------------------------------------------------*/
37053 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37054 {
37055 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37056 "WDI API call before module is initialized - Fail request");
37057
37058 return WDI_STATUS_E_NOT_ALLOWED;
37059 }
37060
37061 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37062 "WDI_NanRequest %zu %d", sizeof(*pwdiNanRequest),
37063 pwdiNanRequest->request_data_len);
37064
37065 /*------------------------------------------------------------------------
37066 Fill in Event data and post to the Main FSM
37067 ------------------------------------------------------------------------*/
37068 wdiEventData.wdiRequest = WDI_NAN_REQUEST;
37069 wdiEventData.pEventData = pwdiNanRequest;
37070 wdiEventData.uEventDataSize = sizeof(*pwdiNanRequest)
37071 + pwdiNanRequest->request_data_len;
37072 wdiEventData.pUserData = usrData;
37073 wdiEventData.pCBfnc = NULL;
37074
37075
37076 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37077}
37078
37079WDI_Status
37080WDI_ProcessNanRequest
37081(
37082 WDI_ControlBlockType* pWDICtx,
37083 WDI_EventInfoType* pEventData
37084)
37085{
37086 WDI_NanRequestType *pwdiNanRequest = NULL;
37087 wpt_uint8* pSendBuffer = NULL;
37088 wpt_uint16 usDataOffset = 0;
37089 wpt_uint16 usSendSize = 0;
37090
37091 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37092 "WDI_ProcessNanRequest");
37093
37094 /*-------------------------------------------------------------------------
37095 Sanity check
37096 -------------------------------------------------------------------------*/
37097 if (( NULL == pEventData ) ||
37098 ( NULL == (pwdiNanRequest = (WDI_NanRequestType*)pEventData->pEventData)))
37099 {
37100 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37101 "%s: Invalid parameters", __FUNCTION__);
37102 WDI_ASSERT(0);
37103 return WDI_STATUS_E_FAILURE;
37104 }
37105
37106 /*-----------------------------------------------------------------------
37107 Get message buffer
37108 -----------------------------------------------------------------------*/
37109 if (( WDI_STATUS_SUCCESS
37110 != WDI_GetMessageBuffer( pWDICtx,
37111 WDI_NAN_REQUEST,
37112 pwdiNanRequest->request_data_len,
37113 &pSendBuffer,
37114 &usDataOffset,
37115 &usSendSize))||
37116 ( usSendSize < (usDataOffset + pwdiNanRequest->request_data_len)))
37117 {
37118 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37119 "Unable to get send buffer in NAN request %p %p",
37120 pEventData, pwdiNanRequest);
37121 WDI_ASSERT(0);
37122 return WDI_STATUS_E_FAILURE;
37123 }
37124
37125 wpalMemoryCopy( pSendBuffer+usDataOffset,
37126 pwdiNanRequest->request_data,
37127 pwdiNanRequest->request_data_len);
37128
37129 pWDICtx->pReqStatusUserData = NULL;
37130 pWDICtx->pfncRspCB = NULL;
37131 vos_mem_free( pEventData->pUserData);
37132
37133 /*-------------------------------------------------------------------------
37134 Send NAN Request to HAL
37135 -------------------------------------------------------------------------*/
37136 return WDI_SendMsg( pWDICtx,
37137 pSendBuffer,
37138 usSendSize,
37139 NULL,
37140 NULL,
37141 WDI_NAN_RESPONSE);
37142}
37143
37144/**
37145 @brief Process NAN Response function (called when a
37146 response is being received over the bus from HAL)
37147
37148 @param pWDICtx: pointer to the WLAN DAL context
37149 pEventData: pointer to the event information structure
37150
37151 @see
37152 @return Result of the function call
37153*/
37154WDI_Status
37155WDI_ProcessNanResponse
37156(
37157 WDI_ControlBlockType* pWDICtx,
37158 WDI_EventInfoType* pEventData
37159)
37160{
37161 WDI_Status wdiStatus;
37162 eHalStatus halStatus;
37163
37164 /*-------------------------------------------------------------------------
37165 Sanity check
37166 -------------------------------------------------------------------------*/
37167 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37168 ( NULL == pEventData->pEventData))
37169 {
37170 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37171 "%s: Invalid parameters", __func__);
37172 WDI_ASSERT(0);
37173 return WDI_STATUS_E_FAILURE;
37174 }
37175
37176 halStatus = *((eHalStatus*)pEventData->pEventData);
37177 wdiStatus = WDI_HAL_2_WDI_STATUS(halStatus);
37178
37179 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37180 "%s : Received NAN response, status : %d", __FUNCTION__, wdiStatus);
37181
37182 return WDI_STATUS_SUCCESS;
37183}/*WDI_ProcessNanResponse*/
37184
37185
37186/**
37187 @brief Process NAN Event function (called when
37188 an indication is being received over the
37189 bus from HAL)
37190
37191 @param pWDICtx: pointer to the WLAN DAL context
37192 pEventData: pointer to the event information structure
37193
37194 @see
37195 @return Result of the function call
37196*/
37197WDI_Status
37198WDI_ProcessNanEvent
37199(
37200 WDI_ControlBlockType* pWDICtx,
37201 WDI_EventInfoType* pEventData
37202)
37203{
37204 WDI_LowLevelIndType wdiInd;
37205
37206 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37207
37208 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37209 ( NULL == pEventData->pEventData ))
37210 {
37211 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37212 "%s: Invalid parameters", __func__);
37213 WDI_ASSERT( 0 );
37214 return WDI_STATUS_E_FAILURE;
37215 }
37216
37217 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37218 "%s: Received NAN event", __func__);
37219 /*-------------------------------------------------------------------------
37220 Extract indication and send it to UMAC
37221 -------------------------------------------------------------------------*/
37222 wdiInd.wdiIndicationType = WDI_NAN_EVENT_IND;
37223 wdiInd.wdiIndicationData.wdiNanEvent.event_data_len =
37224 pEventData->uEventDataSize;
37225 wdiInd.wdiIndicationData.wdiNanEvent.event_data =
37226 pEventData->pEventData;
37227
37228 /*Notify UMAC*/
37229 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
37230
37231 return WDI_STATUS_SUCCESS;
37232}/*WDI_ProcessNanEvent*/
37233
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053037234
Gupta, Kapil7c34b322015-09-30 13:12:35 +053037235WDI_Status
37236WDI_Process_RssiBreachedInd
37237(
37238 WDI_ControlBlockType* pWDICtx,
37239 WDI_EventInfoType* pEventData
37240)
37241{
37242 WDI_LowLevelIndType wdiInd;
Abhishek Singhe3636482016-02-10 17:43:32 +053037243 tHalRssiMonitorIndParams *halRssiBreachedInd;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053037244 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37245
37246 /*-------------------------------------------------------------------------
37247 Sanity check
37248 -------------------------------------------------------------------------*/
37249 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37250 ( NULL == pEventData->pEventData))
37251 {
37252 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37253 "%s: Invalid parameters", __func__);
37254 WDI_ASSERT(0);
37255 return WDI_STATUS_E_FAILURE;
37256 }
37257
37258 /*-------------------------------------------------------------------------
37259 Extract indication and send it to UMAC
37260 -------------------------------------------------------------------------*/
Abhishek Singhe3636482016-02-10 17:43:32 +053037261 halRssiBreachedInd = pEventData->pEventData;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053037262
37263 /*Fill in the indication parameters*/
37264 wdiInd.wdiIndicationType = WDI_RSSI_BREACHED_IND;
Abhishek Singhe3636482016-02-10 17:43:32 +053037265 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id =
37266 halRssiBreachedInd->request_id;
37267 wpalMemoryCopy(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId,
37268 halRssiBreachedInd->bssId,
37269 WDI_MAC_ADDR_LEN);
37270 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi =
37271 halRssiBreachedInd->rssi;
Gupta, Kapil7c34b322015-09-30 13:12:35 +053037272 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37273 "%s: session_id %d, rssi : %d, bssId: " MAC_ADDRESS_STR" ", __func__,
37274 wdiInd.wdiIndicationData.wdiRssiBreachedInd.request_id,
37275 wdiInd.wdiIndicationData.wdiRssiBreachedInd.rssi,
37276 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiRssiBreachedInd.bssId));
37277 /*Notify UMAC*/
37278 if (pWDICtx->wdiLowLevelIndCB)
37279 {
37280 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
37281 }
37282
37283 return WDI_STATUS_SUCCESS;
37284
37285}
37286
Sachin Ahuja3d47fcd2015-08-28 16:02:06 +053037287
37288WDI_Status
37289WDI_Process_LostLinkParamInd
37290(
37291 WDI_ControlBlockType* pWDICtx,
37292 WDI_EventInfoType* pEventData
37293)
37294{
37295 WDI_LowLevelIndType wdiInd;
37296 tHalLostLinkParametersIndParams halLostLinkParamInd;
37297 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37298
37299 /*-------------------------------------------------------------------------
37300 Sanity check
37301 -------------------------------------------------------------------------*/
37302 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37303 ( NULL == pEventData->pEventData))
37304 {
37305 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37306 "%s: Invalid parameters", __func__);
37307 WDI_ASSERT(0);
37308 return WDI_STATUS_E_FAILURE;
37309 }
37310
37311 /*-------------------------------------------------------------------------
37312 Extract indication and send it to UMAC
37313 -------------------------------------------------------------------------*/
37314 wpalMemoryCopy( (void *)&halLostLinkParamInd,
37315 pEventData->pEventData,
37316 sizeof(tHalLostLinkParametersIndParams));
37317
37318
37319 /*Fill in the indication parameters*/
37320 wdiInd.wdiIndicationType = WDI_LOST_LINK_PARAMS_IND;
37321 wpalMemoryCopy((void *)&wdiInd.wdiIndicationData.wdiLostLinkParamsInd,
37322 (void *)&halLostLinkParamInd,
37323 sizeof(WDI_LostLinkParamsIndType));
37324 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37325 "%s: bssIdx %d, rssi : %d, selfMacAddr: " MAC_ADDRESS_STR", linkFlCnt: %d,"
37326 "linkFlTx : %d,lastDataRate : %d", __func__,
37327 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.bssIdx,
37328 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.rssi,
37329 MAC_ADDR_ARRAY(wdiInd.wdiIndicationData.wdiLostLinkParamsInd.selfMacAddr),
37330 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlCnt,
37331 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.linkFlTx,
37332 wdiInd.wdiIndicationData.wdiLostLinkParamsInd.lastDataRate);
37333 /*Notify UMAC*/
37334 if (pWDICtx->wdiLowLevelIndCB)
37335 {
37336 pWDICtx->wdiLowLevelIndCB(&wdiInd, pWDICtx->pIndUserData);
37337 }
37338
37339 return WDI_STATUS_SUCCESS;
37340
37341}
37342
Abhishek Singh41988ba2015-05-25 19:42:29 +053037343WDI_Status
37344WDI_ProcessSetRtsCtsHtvhtInd
37345(
37346 WDI_ControlBlockType* pWDICtx,
37347 WDI_EventInfoType* pEventData
37348)
37349{
37350 wpt_uint8* pSendBuffer = NULL;
37351 wpt_uint16 usDataOffset = 0;
37352 wpt_uint16 usSendSize = 0;
37353 wpt_uint32 *rtsCtsVal;
37354 tHalRtsCtsHtvhtIndParams *rtsCtsHtvhtIndParams;
37355 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
37356
37357
37358 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37359
37360 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37361 "%s", __func__);
37362
37363 /*-------------------------------------------------------------------------
37364 Sanity check
37365 -------------------------------------------------------------------------*/
37366 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
37367 {
37368 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37369 "%s: Invalid parameters", __func__);
37370 WDI_ASSERT(0);
37371 return WDI_STATUS_E_FAILURE;
37372 }
37373 rtsCtsVal = (wpt_uint32*)pEventData->pEventData;
37374 /*-----------------------------------------------------------------------
37375 Get message buffer
37376 -----------------------------------------------------------------------*/
37377
37378 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37379 WDI_SET_RTS_CTS_HTVHT_IND,
37380 sizeof(tHalRtsCtsHtvhtIndParams),
37381 &pSendBuffer, &usDataOffset, &usSendSize))||
37382 ( usSendSize < (usDataOffset + sizeof(tHalRtsCtsHtvhtIndParams) )))
37383 {
37384 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37385 "Unable to get send buffer in RTS CTS ind %p ",
37386 pEventData);
37387 WDI_ASSERT(0);
37388 return WDI_STATUS_E_FAILURE;
37389 }
37390 rtsCtsHtvhtIndParams =
37391 (tHalRtsCtsHtvhtIndParams*)(pSendBuffer + usDataOffset);
37392 rtsCtsHtvhtIndParams->rtsCtsValue = *rtsCtsVal;
37393
37394 pWDICtx->pReqStatusUserData = NULL;
37395 pWDICtx->pfncRspCB = NULL;
37396 /*-------------------------------------------------------------------------
37397 Send SET_RTS_CTS_HTVHT Indication to HAL
37398 -------------------------------------------------------------------------*/
37399 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
37400 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
37401}
37402
37403WDI_Status
37404WDI_SetRtsCtsHTVhtInd
37405(
37406 wpt_uint32 rtsCtsVal
37407)
37408{
37409 WDI_EventInfoType wdiEventData;
37410 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37411
37412 /*------------------------------------------------------------------------
37413 Sanity Check
37414 ------------------------------------------------------------------------*/
37415 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37416 {
37417 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37418 "WDI API call before module is initialized - Fail request");
37419 return WDI_STATUS_E_NOT_ALLOWED;
37420 }
37421
37422 /*------------------------------------------------------------------------
37423 Fill in Event data and post to the Main FSM
37424 ------------------------------------------------------------------------*/
37425 wdiEventData.wdiRequest = WDI_SET_RTS_CTS_HTVHT_IND;
37426 wdiEventData.pEventData = (void *) &rtsCtsVal;
37427 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
37428 wdiEventData.pCBfnc = NULL;
37429 wdiEventData.pUserData = NULL;
37430
37431 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37432
37433}/* WDI_SetRtsCtsHTVhtInd */
Mahesh A Saptasagarbeca12c2015-09-07 16:21:06 +053037434
37435WDI_Status
37436WDI_ProcessEnableDisableCAEventInd
37437(
37438 WDI_ControlBlockType* pWDICtx,
37439 WDI_EventInfoType* pEventData
37440)
37441{
37442 wpt_uint8* pSendBuffer = NULL;
37443 wpt_uint16 usDataOffset = 0;
37444 wpt_uint16 usSendSize = 0;
37445 wpt_uint32 *val;
37446 tHalAvoidFreqRangeCtrlParam *avoidFreqRangeCtrlParam;
37447 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
37448
37449
37450 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37451
37452 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37453 "%s", __func__);
37454
37455 /*-------------------------------------------------------------------------
37456 Sanity check
37457 -------------------------------------------------------------------------*/
37458 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
37459 {
37460 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37461 "%s: Invalid parameters", __func__);
37462 WDI_ASSERT(0);
37463 return WDI_STATUS_E_FAILURE;
37464 }
37465 val = (wpt_uint32*)pEventData->pEventData;
37466 /*-----------------------------------------------------------------------
37467 Get message buffer
37468 -----------------------------------------------------------------------*/
37469
37470 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37471 WDI_SEND_FREQ_RANGE_CONTROL_IND,
37472 sizeof(tHalAvoidFreqRangeCtrlParam),
37473 &pSendBuffer, &usDataOffset, &usSendSize))||
37474 ( usSendSize < (usDataOffset + sizeof(tHalAvoidFreqRangeCtrlParam) )))
37475 {
37476 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37477 "Unable to get send buffer in Channel Avoidance Ind %p ",
37478 pEventData);
37479 WDI_ASSERT(0);
37480 return WDI_STATUS_E_FAILURE;
37481 }
37482 avoidFreqRangeCtrlParam =
37483 (tHalAvoidFreqRangeCtrlParam*)(pSendBuffer + usDataOffset);
37484 avoidFreqRangeCtrlParam->status = *val;
37485
37486 pWDICtx->pReqStatusUserData = NULL;
37487 pWDICtx->pfncRspCB = NULL;
37488 /*-------------------------------------------------------------------------
37489 Send AVOID_FREQ_RANGE_CONTROL_IND Indication to HAL
37490 -------------------------------------------------------------------------*/
37491 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
37492 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
37493}
37494
37495WDI_Status
37496WDI_EnableDisableCAEventInd
37497(
37498 wpt_uint32 val
37499)
37500{
37501 WDI_EventInfoType wdiEventData;
37502 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37503
37504 /*------------------------------------------------------------------------
37505 Sanity Check
37506 ------------------------------------------------------------------------*/
37507 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37508 {
37509 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37510 "WDI API call before module is initialized - Fail request");
37511 return WDI_STATUS_E_NOT_ALLOWED;
37512 }
37513
37514 /*------------------------------------------------------------------------
37515 Fill in Event data and post to the Main FSM
37516 ------------------------------------------------------------------------*/
37517 wdiEventData.wdiRequest = WDI_SEND_FREQ_RANGE_CONTROL_IND;
37518 wdiEventData.pEventData = (void *) &val;
37519 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
37520 wdiEventData.pCBfnc = NULL;
37521 wdiEventData.pUserData = NULL;
37522
37523 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37524
37525} /* WDI_EnableDisableCAEventInd */
Arun Khandavalli7eeb1592015-10-19 21:36:57 +053037526
37527/**
37528 @brief WDI_WifiConfigSetReq
37529 This API is called to set WifiConfig params request in FW
37530
37531 @param pwdiWifiConfigSetReqParams : pointer to set WifiCofig request params
37532 wdiWifiConfigSetRspCb : WifiConfig stats resp callback
37533 usrData : Client context
37534 @see
37535 @return SUCCESS or FAIL
37536*/
37537WDI_Status
37538WDI_WifiConfigSetReq(WDI_WifiConfigSetReqType* pwdiWifConfigSetReqParams,
37539 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb,
37540 void* pUserData)
37541{
37542 WDI_EventInfoType wdiEventData;
37543
37544 /*------------------------------------------------------------------------
37545 Sanity Check
37546 ------------------------------------------------------------------------*/
37547 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37548 {
37549 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
37550 "WDI API call before module is initialized - Fail request");
37551
37552 return WDI_STATUS_E_NOT_ALLOWED;
37553 }
37554
37555 wdiEventData.wdiRequest = WDI_WIFI_CONFIG_SET_REQ;
37556 wdiEventData.pEventData = pwdiWifConfigSetReqParams;
37557 wdiEventData.uEventDataSize = sizeof(*pwdiWifConfigSetReqParams);
37558 wdiEventData.pCBfnc = wdiWifiConfigSetRspCb;
37559 wdiEventData.pUserData = pUserData;
37560
37561 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37562}
37563
37564/**
37565 @brief WDI_ProcessWifiConfigReq -
37566 Set WifiConfig request to FW
37567
37568 @param pWDICtx : wdi context
37569 pEventData : indication data
37570
37571 @see
37572 @return none
37573*/
37574 WDI_Status
37575 WDI_ProcessWifiConfigReq
37576 (
37577 WDI_ControlBlockType* pWDICtx,
37578 WDI_EventInfoType* pEventData
37579 )
37580 {
37581 WDI_WifiConfigSetReqType* pwdiWifiConfigSetReqParams;
37582 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
37583 wpt_uint8* pSendBuffer = NULL;
37584 wpt_uint16 usSendSize = 0;
37585 wpt_uint16 usDataOffset = 0;
37586 tSetWifiConfigParamsReq halWifiConfigSetParams;
37587
37588 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
37589 ( NULL == pEventData->pCBfnc ))
37590 {
37591 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37592 "%s: Invalid parameters", __func__);
37593 WDI_ASSERT(0);
37594 return WDI_STATUS_E_FAILURE;
37595 }
37596 pwdiWifiConfigSetReqParams = (WDI_WifiConfigSetReqType*)pEventData->pEventData;
37597 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pEventData->pCBfnc;
37598
37599 /*-----------------------------------------------------------------------
37600 Get message buffer
37601 ! TO DO : proper conversion into the HAL Message Request Format
37602 -----------------------------------------------------------------------*/
37603 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
37604 pWDICtx,
37605 WDI_WIFI_CONFIG_SET_REQ,
37606 sizeof(halWifiConfigSetParams.wifiConfigParams),
37607 &pSendBuffer, &usDataOffset,
37608 &usSendSize))||
37609 ( usSendSize < (usDataOffset + sizeof(halWifiConfigSetParams.wifiConfigParams) )))
37610 {
37611 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37612 "Unable to get send buffer in %s %p %p %p", __func__,
37613 pEventData, pwdiWifiConfigSetReqParams, wdiWifiConfigSetRspCb);
37614 WDI_ASSERT(0);
37615 return WDI_STATUS_E_FAILURE;
37616 }
37617
37618 halWifiConfigSetParams.wifiConfigParams.paramType = pwdiWifiConfigSetReqParams->paramType;
37619 halWifiConfigSetParams.wifiConfigParams.paramValue =
37620 pwdiWifiConfigSetReqParams->paramValue;
37621 vos_mem_copy(halWifiConfigSetParams.wifiConfigParams.bssid, &(pwdiWifiConfigSetReqParams->bssId),
37622 sizeof(tSirMacAddr));
37623
37624 wpalMemoryCopy(pSendBuffer+usDataOffset,
37625 &halWifiConfigSetParams.wifiConfigParams,
37626 sizeof(halWifiConfigSetParams.wifiConfigParams));
37627
37628 pWDICtx->pReqStatusUserData = pEventData->pUserData;
37629
37630 /*-------------------------------------------------------------------------
37631 Send Clear Link Layer Stats Request to HAL
37632 -------------------------------------------------------------------------*/
37633 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
37634 wdiWifiConfigSetRspCb, pEventData->pUserData,
37635 WDI_WIFI_CONFIG_SET_RSP);
37636 }
37637
37638WDI_Status
37639WDI_ProcessWificonfigSetRsp
37640( WDI_ControlBlockType* pWDICtx,
37641 WDI_EventInfoType* pEventData )
37642
37643{
37644 tHalSetWifiConfigRspParams halRsp;
37645 WDI_WifiConfigSetRspCb wdiWifiConfigSetRspCb;
37646 WDI_WifconfigSetRsp wdiWifconfigSetRsp;
37647
37648 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37649 "%s: %d Enter",__func__, __LINE__);
37650
37651 /*-------------------------------------------------------------------------
37652 Sanity check
37653 -------------------------------------------------------------------------*/
37654 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37655 ( NULL == pEventData->pEventData))
37656 {
37657 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37658 "%s: Invalid parameters", __func__);
37659 WDI_ASSERT(0);
37660 return WDI_STATUS_E_FAILURE;
37661 }
37662 wdiWifiConfigSetRspCb = (WDI_WifiConfigSetRspCb)pWDICtx->pfncRspCB;
37663
37664 /*-------------------------------------------------------------------------
37665 Extract response and send it to UMAC
37666 -------------------------------------------------------------------------*/
37667 wpalMemoryCopy(&halRsp, pEventData->pEventData, sizeof(halRsp));
37668
37669 wdiWifconfigSetRsp.wificonfigset_status = WDI_HAL_2_WDI_STATUS(halRsp.status);
37670
37671 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37672 "WifiConfig RSP status = %d",
37673 wdiWifconfigSetRsp.wificonfigset_status);
37674 /*Notify UMAC*/
37675 wdiWifiConfigSetRspCb( &wdiWifconfigSetRsp, pWDICtx->pRspCBUserData);
37676
37677 return WDI_STATUS_SUCCESS;
37678}
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037679
37680#ifdef FEATURE_OEM_DATA_SUPPORT
37681
37682/**
37683 @brief WDI_StartOemDataReqIndNew
37684
37685 @param pOemDataReqNewConfig: Req parameter for the FW
37686
37687 @return SUCCESS or FAIL
37688*/
37689WDI_Status
37690WDI_StartOemDataReqIndNew
37691(
37692 WDI_OemDataReqNewConfig *pOemDataReqNewConfig
37693)
37694{
37695 WDI_EventInfoType wdiEventData;
37696
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037697 /*------------------------------------------------------------------------
37698 Sanity Check
37699 ------------------------------------------------------------------------*/
37700 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37701 {
37702 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_ERROR,
37703 "WDI API call before module is initialized - Fail request");
37704
37705 return WDI_STATUS_E_NOT_ALLOWED;
37706 }
37707
37708 wdiEventData.wdiRequest = WDI_START_OEM_DATA_REQ_IND_NEW;
37709 wdiEventData.pEventData = pOemDataReqNewConfig;
37710 wdiEventData.uEventDataSize = sizeof(*pOemDataReqNewConfig);
37711 wdiEventData.pCBfnc = NULL;
37712 wdiEventData.pUserData = NULL;
37713
37714 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
37715}
37716
37717/**
37718 @brief WDI_ProcessStartOemDataReqIndNew -
37719 Send OEM Data request new indication to FW
37720
37721 @param pWDICtx : wdi context
37722 pEventData : indication data
37723
37724 @see
37725 @return none
37726*/
37727WDI_Status
37728WDI_ProcessStartOemDataReqIndNew
37729(
37730 WDI_ControlBlockType* pWDICtx,
37731 WDI_EventInfoType* pEventData
37732)
37733{
37734 WDI_OemDataReqNewConfig* wdiOemDataReqNewConfig;
37735 wpt_uint8* pSendBuffer = NULL;
37736 wpt_uint16 usSendSize = 0;
37737 wpt_uint16 usDataOffset = 0;
37738 tpStartOemDataReqParamsNew pHalStartOemDataReqParamsNew;
37739 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
37740
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037741 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37742 ( NULL == pEventData->pEventData))
37743 {
37744 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37745 "%s: Invalid parameters", __func__);
37746 WDI_ASSERT(0);
37747 return WDI_STATUS_E_FAILURE;
37748 }
37749
37750 wdiOemDataReqNewConfig =
37751 (WDI_OemDataReqNewConfig *)pEventData->pEventData;
37752
37753 /*-----------------------------------------------------------------------
37754 Get message buffer
37755 -----------------------------------------------------------------------*/
37756 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(
37757 pWDICtx,
37758 WDI_START_OEM_DATA_REQ_IND_NEW,
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037759 sizeof(*pHalStartOemDataReqParamsNew),
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037760 &pSendBuffer, &usDataOffset,
37761 &usSendSize))||
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037762 ( usSendSize < (usDataOffset + sizeof(*pHalStartOemDataReqParamsNew) )))
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037763 {
37764 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37765 "Unable to get send buffer in %s %p %p", __func__,
37766 pEventData, wdiOemDataReqNewConfig);
37767 WDI_ASSERT(0);
37768 return WDI_STATUS_E_FAILURE;
37769 }
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037770
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037771 pHalStartOemDataReqParamsNew =
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037772 (tpStartOemDataReqParamsNew) (pSendBuffer + usDataOffset);
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037773
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037774 wpalMemoryCopy(pHalStartOemDataReqParamsNew,
37775 wdiOemDataReqNewConfig,
37776 sizeof(*pHalStartOemDataReqParamsNew));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037777
Padma, Santhosh Kumar5d2f76b2016-01-11 18:42:20 +053037778 VOS_TRACE(VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37779 "%s: selfMacAddr: " MAC_ADDRESS_STR" ", __func__,
37780 MAC_ADDR_ARRAY(pHalStartOemDataReqParamsNew->selfMacAddr));
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037781
37782 pWDICtx->pReqStatusUserData = NULL;
37783 pWDICtx->pfncRspCB = NULL;
37784
37785 /*-------------------------------------------------------------------------
37786 Send WDI_START_OEM_DATA_REQ_IND_NEW Request to HAL
37787 -------------------------------------------------------------------------*/
37788 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
37789 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
37790}
37791
37792/**
37793 @brief Process OemDataRsp New Indication indication from FW
37794
37795 @param pWDICtx: pointer to the WLAN DAL context
37796 pEventData: pointer to the event information structure
37797
37798 @see
37799 @return Result of the function call
37800*/
37801WDI_Status
37802WDI_ProcessStartOemDataRspIndNew
37803(
37804 WDI_ControlBlockType* pWDICtx,
37805 WDI_EventInfoType* pEventData
37806)
37807{
37808 WDI_LowLevelIndType wdiInd;
37809 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37810
37811 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37812 "%s: ", __func__);
37813
37814 /* sanity check */
37815 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37816 ( NULL == pEventData->pEventData))
37817 {
37818 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37819 "%s: Invalid parameters", __func__);
37820 WDI_ASSERT(0);
37821 return WDI_STATUS_E_FAILURE;
37822 }
37823
37824 /* Fill in the indication parameters */
37825 wdiInd.wdiIndicationType = WDI_START_OEM_DATA_RSP_IND_NEW;
37826
Padma, Santhosh Kumarf75c37b2016-01-25 10:36:08 +053037827 wdiInd.wdiIndicationData.wdiOemDataRspNew.pOemRspNewIndData =
37828 (void *)pEventData->pEventData;
37829 wdiInd.wdiIndicationData.wdiOemDataRspNew.OemRspNewLen =
37830 pEventData->uEventDataSize;
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053037831 /* Notify UMAC */
37832 if (pWDICtx->wdiLowLevelIndCB)
37833 {
37834 pWDICtx->wdiLowLevelIndCB( &wdiInd, pWDICtx->pIndUserData );
37835 }
37836 else
37837 {
37838 VOS_TRACE( VOS_MODULE_ID_WDI, VOS_TRACE_LEVEL_INFO,
37839 "%s: WDILowLevelIndCb is null", __func__);
37840 WDI_ASSERT(0);
37841 return WDI_STATUS_E_FAILURE;
37842 }
37843 return WDI_STATUS_SUCCESS;
37844} /* End of WDI_ProcessEXTScanResultInd */
37845
Mahesh A Saptasagarb63b3e22015-12-22 15:06:10 +053037846/**
37847 @brief Process Current Antenna Index information from FW
37848
37849 @param pWDICtx: pointer to the WLAN DAL context
37850 pEventData: pointer to the event information structure
37851
37852 @see
37853 @return Result of the function call
37854*/
37855WDI_Status
37856WDI_ProcessGetCurrentAntennaIndexRsp
37857(
37858 WDI_ControlBlockType* pWDICtx,
37859 WDI_EventInfoType* pEventData
37860)
37861{
37862 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
37863 tHalAntennaDiversitySelectionRspParams *pHalAntDivSelRsp;
37864
37865 /*-------------------------------------------------------------------------
37866 Sanity check
37867 -------------------------------------------------------------------------*/
37868 if (( NULL == pWDICtx ) || ( NULL == pEventData ) ||
37869 ( NULL == pEventData->pEventData))
37870 {
37871 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_WARN,
37872 "%s: Invalid parameters", __func__);
37873 WDI_ASSERT(0);
37874 return WDI_STATUS_E_FAILURE;
37875 }
37876 pHalAntDivSelRsp =
37877 (tHalAntennaDiversitySelectionRspParams*)pEventData->pEventData;
37878 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pWDICtx->pfncRspCB;
37879
37880 if (pHalAntDivSelRsp->status != 0)
37881 {
37882 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_E_FAILURE,
37883 (void *)pHalAntDivSelRsp, pWDICtx->pRspCBUserData);
37884 }
37885 else
37886 {
37887 wdiGetCurrentAntennaIndexRspCb(WDI_STATUS_SUCCESS,
37888 (void *)pHalAntDivSelRsp,
37889 pWDICtx->pRspCBUserData);
37890 }
37891
37892 return WDI_STATUS_SUCCESS;
37893}
37894
37895/**
37896 @brief Process Get Current Antenna Index request command
37897
37898 @param pWDICtx: pointer to the WLAN DAL context
37899 pEventData: pointer to the event information structure
37900
37901 @see
37902 @return Result of the function call
37903*/
37904WDI_Status
37905WDI_ProcessGetCurrentAntennaIndex
37906(
37907 WDI_ControlBlockType* pWDICtx,
37908 WDI_EventInfoType* pEventData
37909)
37910{
37911 wpt_uint8* pSendBuffer = NULL;
37912 wpt_uint16 usDataOffset = 0;
37913 wpt_uint16 usSendSize = 0;
37914 tHalAntennaDiversitySelectionReqParams halAntDivSelReq;
37915 WDI_AntennaDivSelRspCb wdiGetCurrentAntennaIndexRspCb;
37916
37917 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
37918 "%s", __func__);
37919
37920 /*-------------------------------------------------------------------------
37921 Sanity check
37922 -------------------------------------------------------------------------*/
37923 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ) ||
37924 ( NULL == pEventData->pCBfnc ))
37925 {
37926 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37927 "%s: Invalid parameters", __func__);
37928 WDI_ASSERT(0);
37929 return WDI_STATUS_E_FAILURE;
37930 }
37931 wdiGetCurrentAntennaIndexRspCb = (WDI_AntennaDivSelRspCb)pEventData->pCBfnc;
37932
37933 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
37934 WDI_ANTENNA_DIVERSITY_SELECTION_REQ,
37935 sizeof(tHalAntennaDiversitySelectionReqParams),
37936 &pSendBuffer, &usDataOffset, &usSendSize))||
37937 ( usSendSize < (usDataOffset +
37938 sizeof(tHalAntennaDiversitySelectionReqParams) )))
37939 {
37940 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
37941 "Unable to get send buffer in GetCurrentAntennaIndex %p",
37942 pEventData);
37943 WDI_ASSERT(0);
37944 return WDI_STATUS_E_FAILURE;
37945 }
37946 pWDICtx->wdiReqStatusCB = NULL;
37947 pWDICtx->pReqStatusUserData = pEventData->pEventData;
37948 halAntDivSelReq.reserved = *((wpt_uint32 *)(pEventData->pEventData));
37949 wpalMemoryCopy( pSendBuffer+usDataOffset,
37950 &halAntDivSelReq,
37951 sizeof(tHalAntennaDiversitySelectionReqParams));
37952
37953 /*-------------------------------------------------------------------------
37954 Send Get STA Request to HAL
37955 -------------------------------------------------------------------------*/
37956 return WDI_SendMsg( pWDICtx, pSendBuffer, usSendSize,
37957 wdiGetCurrentAntennaIndexRspCb,
37958 pEventData->pUserData,
37959 WDI_ANTENNA_DIVERSITY_SELECTION_RSP);
37960}
37961
37962/**
37963 @brief WDI_GetCurrentAntennaIndex
37964
37965 @param pOemDataReqNewConfig: Req parameter for the FW
37966
37967 @return SUCCESS or FAIL
37968*/
37969WDI_Status
37970WDI_GetCurrentAntennaIndex
37971(
37972 void *pUserData,
37973 WDI_AntennaDivSelRspCb wdiAntennaDivSelRspCb,
37974 wpt_uint32 reserved
37975)
37976{
37977 WDI_EventInfoType wdiEventData;
37978
37979 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
37980
37981 /*------------------------------------------------------------------------
37982 Sanity Check
37983 ------------------------------------------------------------------------*/
37984 if ( eWLAN_PAL_FALSE == gWDIInitialized )
37985 {
37986 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
37987 "WDI API call before module is initialized - Fail request");
37988 return WDI_STATUS_E_NOT_ALLOWED;
37989 }
37990 /*------------------------------------------------------------------------
37991 Fill in Event data and post to the Main FSM
37992 ------------------------------------------------------------------------*/
37993 wdiEventData.wdiRequest = WDI_ANTENNA_DIVERSITY_SELECTION_REQ;
37994 wdiEventData.pEventData = (void *)&reserved;
37995 wdiEventData.uEventDataSize = sizeof(wpt_uint32);
37996 wdiEventData.pCBfnc = wdiAntennaDivSelRspCb;
37997 wdiEventData.pUserData = pUserData;
37998
37999 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38000}
Mahesh A Saptasagar41f9ddd2016-02-09 14:01:03 +053038001
38002/**
38003 @brief Process Set beacon miss penalty count command
38004
38005 @param pWDICtx: pointer to the WLAN DAL context
38006 pEventData: pointer to the event information structure
38007
38008 @see
38009 @return Result of the function call
38010*/
38011WDI_Status
38012WDI_ProcessBcnMissPenaltyCount
38013(
38014 WDI_ControlBlockType* pWDICtx,
38015 WDI_EventInfoType* pEventData
38016)
38017{
38018 wpt_uint8* pSendBuffer = NULL;
38019 wpt_uint16 usDataOffset = 0;
38020 wpt_uint16 usSendSize = 0;
38021 tHalModifyRoamParamsIndParams halModifyRoamParams;
38022 WDI_ModifyRoamParamsReqType *modifyRoamParams;
38023 WDI_Status wdiStatus = WDI_STATUS_SUCCESS;
38024
38025 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38026
38027 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38028 "%s", __func__);
38029 /*-------------------------------------------------------------------------
38030 Sanity check
38031 -------------------------------------------------------------------------*/
38032 if (( NULL == pEventData ) || ( NULL == pEventData->pEventData ))
38033 {
38034 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38035 "%s: Invalid parameters", __func__);
38036 WDI_ASSERT(0);
38037 return WDI_STATUS_E_FAILURE;
38038 }
38039
38040 /*-----------------------------------------------------------------------
38041 Get message buffer
38042 -----------------------------------------------------------------------*/
38043
38044 if (( WDI_STATUS_SUCCESS != WDI_GetMessageBuffer( pWDICtx,
38045 WDI_MODIFY_ROAM_PARAMS_IND,
38046 sizeof(tHalModifyRoamParamsIndParams),
38047 &pSendBuffer, &usDataOffset, &usSendSize))||
38048 ( usSendSize < (usDataOffset + sizeof(tHalModifyRoamParamsIndParams) )))
38049 {
38050 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38051 "Unable to get send buffer for Modify roam req params %p ",
38052 pEventData);
38053 WDI_ASSERT(0);
38054 return WDI_STATUS_E_FAILURE;
38055 }
38056
38057 modifyRoamParams = (WDI_ModifyRoamParamsReqType *)pEventData->pEventData;
38058 halModifyRoamParams.param = modifyRoamParams->param;
38059 halModifyRoamParams.value = modifyRoamParams->value;
38060 wpalMemoryCopy( pSendBuffer+usDataOffset, &halModifyRoamParams,
38061 sizeof(halModifyRoamParams));
38062 pWDICtx->pReqStatusUserData = NULL;
38063 pWDICtx->pfncRspCB = NULL;
38064
38065 /*-------------------------------------------------------------------------
38066 Send WDI_MODIFY_ROAM_PARAMS_IND to HAL
38067 -------------------------------------------------------------------------*/
38068 wdiStatus = WDI_SendIndication( pWDICtx, pSendBuffer, usSendSize);
38069 return (wdiStatus != WDI_STATUS_SUCCESS) ? wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38070
38071}
38072
38073/**
38074 @brief WDI_SetBcnMissPenaltyCount
38075
38076 @param params: Req parameter for the FW
38077
38078 @return SUCCESS or FAIL
38079*/
38080
38081WDI_Status
38082WDI_SetBcnMissPenaltyCount
38083(
38084 WDI_ModifyRoamParamsReqType *params
38085)
38086{
38087 WDI_EventInfoType wdiEventData;
38088
38089 /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
38090
38091 /*------------------------------------------------------------------------
38092 Sanity Check
38093 ------------------------------------------------------------------------*/
38094 if ( eWLAN_PAL_FALSE == gWDIInitialized )
38095 {
38096 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38097 "WDI API call before module is initialized - Fail request");
38098 return WDI_STATUS_E_NOT_ALLOWED;
38099 }
38100
38101 /*------------------------------------------------------------------------
38102 Fill in Event data and post to the Main FSM
38103 ------------------------------------------------------------------------*/
38104 wdiEventData.wdiRequest = WDI_MODIFY_ROAM_PARAMS_IND;
38105 wdiEventData.pEventData = (void *)params;
38106 wdiEventData.uEventDataSize = sizeof(*params);
38107 wdiEventData.pCBfnc = NULL;
38108 wdiEventData.pUserData = NULL;
38109
38110 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38111
38112} /* WDI_SetBcnMissPenaltyCount */
38113
Padma, Santhosh Kumar2ccac212015-10-20 17:27:27 +053038114#endif
Selvaraj, Sridharbb07d5b2016-04-06 12:22:35 +053038115
38116/**
38117 * WDI_ProcessSetAllowedActionFramesInd() - Process Allowed action frames
38118 * Indication message and post it to HAL
38119 *
38120 * @pWDICtx: pointer to the WLAN DAL context
38121 * @pEventData: pointer to the event information structure
38122 *
38123 * Return: WDI_Status enumeration
38124 */
38125WDI_Status WDI_ProcessSetAllowedActionFramesInd(WDI_ControlBlockType *pWDICtx,
38126 WDI_EventInfoType *pEventData)
38127{
38128 wpt_uint8 *pSendBuffer;
38129 wpt_uint16 usDataOffset;
38130 wpt_uint16 usSendSize;
38131 wpt_uint16 usLen;
38132 struct WDI_AllowedActionFramesInd* pwdiAllowedActionFramesInd;
38133 tHalAllowedActionFrames* pAllowedActionFrames;
38134 WDI_Status wdiStatus;
38135
38136 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_INFO,
38137 "%s", __func__);
38138
38139 if ((!pEventData) || (!pEventData->pEventData))
38140 {
38141 WPAL_TRACE( eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38142 "%s: Invalid parameters", __func__);
38143 WDI_ASSERT(0);
38144 return WDI_STATUS_E_FAILURE;
38145 }
38146
38147 if ((WDI_STATUS_SUCCESS != WDI_GetMessageBuffer(pWDICtx,
38148 WDI_SET_ALLOWED_ACTION_FRAMES_IND,
38149 sizeof(tHalAllowedActionFrames),
38150 &pSendBuffer, &usDataOffset,
38151 &usSendSize))||
38152 (usSendSize < (usDataOffset + usLen)))
38153 {
38154 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_FATAL,
38155 "Unable to get send buffer in Allowed Action Frames req %p",
38156 pEventData);
38157 return WDI_STATUS_E_FAILURE;
38158 }
38159
38160 pwdiAllowedActionFramesInd =
38161 (struct WDI_AllowedActionFramesInd*)pEventData->pEventData;
38162 pAllowedActionFrames =
38163 (tHalAllowedActionFrames*)(pSendBuffer+usDataOffset);
38164 pAllowedActionFrames->actionFramesBitMask =
38165 pwdiAllowedActionFramesInd->bitmask;
38166 pAllowedActionFrames->reserved = pwdiAllowedActionFramesInd->reserved;
38167
38168 pWDICtx->pReqStatusUserData = NULL;
38169 pWDICtx->pfncRspCB = NULL;
38170
38171 wdiStatus = WDI_SendIndication(pWDICtx, pSendBuffer, usSendSize);
38172 return (wdiStatus != WDI_STATUS_SUCCESS) ?
38173 wdiStatus:WDI_STATUS_SUCCESS_SYNC;
38174}/*WDI_ProcessSetAllowedActionFramesInd*/
38175
38176/**
38177 * WDI_SetAllowedActionFramesInd() - Post Allowed Action Frames Indication to
38178 * WDI Main Event Handler
38179 * @params: pointer to the WDI_AllowedActionFramesInd structure
38180 *
38181 * Return: WDI_Status enumeration
38182 */
38183WDI_Status WDI_SetAllowedActionFramesInd(
38184 struct WDI_AllowedActionFramesInd *params)
38185{
38186 WDI_EventInfoType wdiEventData;
38187
38188 if (eWLAN_PAL_FALSE == gWDIInitialized)
38189 {
38190 WPAL_TRACE(eWLAN_MODULE_DAL_CTRL, eWLAN_PAL_TRACE_LEVEL_ERROR,
38191 "WDI API call before module is initialized - Fail req");
38192 return WDI_STATUS_E_NOT_ALLOWED;
38193 }
38194
38195 wdiEventData.wdiRequest = WDI_SET_ALLOWED_ACTION_FRAMES_IND;
38196 wdiEventData.pEventData = params;
38197 wdiEventData.uEventDataSize = sizeof(*params);
38198 wdiEventData.pCBfnc = NULL;
38199 wdiEventData.pUserData = NULL;
38200
38201 return WDI_PostMainEvent(&gWDICb, WDI_REQUEST_EVENT, &wdiEventData);
38202}